workbench.vue 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306
  1. <template>
  2. <view>
  3. <block v-if="loginStyle == 0">
  4. <view style="width:100vw;height:500upx;display:flex;align-items:center;justify-content:center;">
  5. <button class="admin-button-com big blue" @click="pageTo({url:'/admin/home/login'})">点我登录</button>
  6. <view style="position:absolute;top:380upx;font-size:36upx;color:green;text-decoration: underline;" @click="pageTo({url:'/pagesClient/official/apply'})">注册账号</view>
  7. </view>
  8. </block>
  9. <block v-else>
  10. <view class="app-main app-content" v-if="loginStyle == 2">
  11. <template v-if="lookMoney == 1">
  12. <view class="user-wrap" :style="{ backgroundImage: `url(${constant.imgUrl}/home/bg_hd_home2.png)` }">
  13. <view class="user-top">
  14. <view class="app-size-28">今日概况</view>
  15. </view>
  16. <view class="income-amount" @click="pageTo({url:'/admin/stat/kdIncome'})">
  17. <view>收入</view>
  18. <view class="price">{{ $util.numberFormat(data.todayData.income) }}</view>
  19. </view>
  20. <view class="user-bottom">
  21. <view class="info-list">
  22. <view class="info-list-name">访客</view>
  23. <view class="info-list-value">
  24. {{ $util.numberFormat(data.todayData.visit) || 0 }}
  25. </view>
  26. </view>
  27. <navigator url="/admin/home/order" open-type="switchTab" class="info-list">
  28. <view class="info-list-name">订单</view>
  29. <view class="info-list-value">
  30. {{ $util.numberFormat(data.todayData.order) || 0 }}
  31. </view>
  32. </navigator>
  33. <view class="info-list">
  34. <view class="info-list-name">昨天</view>
  35. <view class="info-list-value">
  36. {{ $util.numberFormat(0) || 0 }}
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. </template>
  42. <view class="module-com news-wrap">
  43. <view class="news-list" v-for="(item, index) in data.notice" :key="index" @click="noticeFn(item)" >
  44. <view class="news-left">
  45. <i class="iconfont iconxiaoxi2 ling"></i>
  46. <span>{{ item.title }}</span>
  47. </view>
  48. <view class="news-right">
  49. <span>{{ item.action }}</span>
  50. <i class="iconfont iconxiangyou"></i>
  51. </view>
  52. </view>
  53. </view>
  54. <view style="text-align: center;font-size:34upx;font-weight:bold;color:red;margin-bottom:20upx;" @click="setRecharge" v-if="shopInfo.rechargeWeal == 0">
  55. 请先设置充值活动的规则
  56. <text style="color:#3385ff;text-decoration: underline;margin-left:10upx;">去设置</text>
  57. </view>
  58. <view v-if="!$util.isEmpty(data.warning)" style="color:red;font-size:36upx;font-weight:bold;text-align: center;margin-bottom:15upx;">{{ data.warning }}</view>
  59. <view class="module-com flower-module">
  60. <!-- 花束花礼 -->
  61. <view class="flower-section">
  62. <view class="section-header">
  63. <view class="header-line"></view>
  64. <view class="header-title">花束花礼</view>
  65. <view class="header-line"></view>
  66. </view>
  67. <view class="icon-grid">
  68. <view class="icon-item" @click="goPage({url: '/admin/cg/mall'})">
  69. <view class="icon-wrapper">
  70. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  71. </view>
  72. <view class="icon-text">商城</view>
  73. </view>
  74. <view class="icon-item" @click="goPage({url: '/admin/goods/list'})">
  75. <view class="icon-wrapper">
  76. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  77. </view>
  78. <view class="icon-text">图集</view>
  79. </view>
  80. <view class="icon-item" @click="goPage({url: '/admin/order/workOrder'})">
  81. <view class="icon-wrapper">
  82. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  83. </view>
  84. <view class="icon-text">开单</view>
  85. </view>
  86. <view class="icon-item" @click="goPage({url: '/admin/order/quickOrder'})">
  87. <view class="icon-wrapper">
  88. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  89. </view>
  90. <view class="icon-text">快捷开单</view>
  91. </view>
  92. <view class="icon-item" @click="goPage({url: '/admin/work/list'})">
  93. <view class="icon-wrapper">
  94. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  95. </view>
  96. <view class="icon-text">任务</view>
  97. </view>
  98. <view class="icon-item" @click="goPage({url: '/admin/item/list2'})">
  99. <view class="icon-wrapper">
  100. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  101. </view>
  102. <view class="icon-text">花束管理</view>
  103. </view>
  104. <view class="icon-item" @click="goPage({url: '/admin/item/addGroup'})">
  105. <view class="icon-wrapper">
  106. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  107. </view>
  108. <view class="icon-text">添加花束</view>
  109. </view>
  110. </view>
  111. </view>
  112. <!-- 盆栽花材 -->
  113. <view class="flower-section">
  114. <view class="section-header">
  115. <view class="header-line"></view>
  116. <view class="header-title">盆栽花材</view>
  117. <view class="header-line"></view>
  118. </view>
  119. <view class="icon-grid">
  120. <view class="icon-item" @click="goPage({url: '/admin/cg/mall'})">
  121. <view class="icon-wrapper">
  122. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  123. </view>
  124. <view class="icon-text">商城</view>
  125. </view>
  126. <view class="icon-item" @click="goPage({url: '/admin/changePrice/list2'})">
  127. <view class="icon-wrapper">
  128. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  129. </view>
  130. <view class="icon-text">改价</view>
  131. </view>
  132. <view class="icon-item" @click="goPage({url: '/admin/order/workOrder'})">
  133. <view class="icon-wrapper">
  134. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  135. </view>
  136. <view class="icon-text">开单</view>
  137. </view>
  138. <view class="icon-item" @click="goPage({url: '/admin/order/quickOrder'})">
  139. <view class="icon-wrapper">
  140. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  141. </view>
  142. <view class="icon-text">快捷开单</view>
  143. </view>
  144. <view class="icon-item" @click="goPage({url: '/admin/part/list'})">
  145. <view class="icon-wrapper">
  146. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  147. </view>
  148. <view class="icon-text">拆散</view>
  149. </view>
  150. <view class="icon-item" @click="goPage({url: '/admin/breakage/list'})">
  151. <view class="icon-wrapper">
  152. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  153. </view>
  154. <view class="icon-text">损耗</view>
  155. </view>
  156. <view class="icon-item" @click="goPage({url: '/admin/item/list2'})">
  157. <view class="icon-wrapper">
  158. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  159. </view>
  160. <view class="icon-text">花材列表</view>
  161. </view>
  162. <view class="icon-item" @click="goPage({url: '/pagesPurchase/order'})">
  163. <view class="icon-wrapper">
  164. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  165. </view>
  166. <view class="icon-text">买花</view>
  167. </view>
  168. <view class="icon-item" @click="goPage({url: '/pagesPurchase/shopping'})">
  169. <view class="icon-wrapper">
  170. <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
  171. </view>
  172. <view class="icon-text">买花记录</view>
  173. </view>
  174. </view>
  175. </view>
  176. </view>
  177. <template v-if="lookMoney == 1">
  178. <view class="module-com total-wrap">
  179. <view class="total-tit">总览</view>
  180. <view class="total-blo">
  181. <view class="total-list" v-for="(item, index) in overview" :key="index" @click="pageTo(item)">
  182. <view class="list-num">{{ $util.numberFormat(item.value) }}</view>
  183. <view class="app-color-3">{{ item.name }}</view>
  184. </view>
  185. </view>
  186. </view>
  187. </template>
  188. </view>
  189. <view class="order-page" v-else>
  190. <view class="ghs_list_page flex-col">
  191. <view style="background-color:white;margin-bottom:20upx;">
  192. <button class="admin-button-com mini-btn blue" style="margin-left:11upx;padding-top:17upx;padding-bottom:17upx;" @click="pageTo({url:'/admin/shop/myShop'})">我的门店</button>
  193. <button class="admin-button-com mini-btn blue" style="margin-left:11upx;padding-top:17upx;padding-bottom:17upx;" @click="pageTo({url:'/admin/staff/list'})">我的员工</button>
  194. <button class="admin-button-com mini-btn blue" style="margin-left:11upx;padding-top:17upx;padding-bottom:17upx;" @click="pageTo({url:'/admin/shop/add?id='+loginInfo.shopId})">我的地址</button>
  195. <button class="admin-button-com mini-btn blue" style="margin-left:11upx;padding-top:17upx;padding-bottom:17upx;" @click="pageTo({url:'/admin/stat/cgItem'})">采购统计</button>
  196. <button class="admin-button-com mini-btn blue" style="margin-left:11upx;padding-top:17upx;padding-bottom:17upx;" @click="goMore()">更多</button>
  197. </view>
  198. <view style="text-align:center;font-size:29upx;">您好,{{ loginInfo.admin && loginInfo.admin.name ? loginInfo.admin.name : '' }} {{ loginInfo.admin && loginInfo.admin.mobile ? loginInfo.admin.mobile : '' }}</view>
  199. <view v-if="!$util.isEmpty(data.warning)" style="color:red;font-size:36upx;font-weight:bold;text-align: center;margin-bottom:15upx;margin-top:20upx;">{{ data.warning }}</view>
  200. <template v-if="!$util.isEmpty(ad)">
  201. <block v-for="(adInfo, adIndex) in ad" :key="adIndex">
  202. <view style="text-align:center;" @click.stop="pageTo({url:adInfo.url})">
  203. <image :src="adInfo.banner" mode="widthFix" style="width:97%;margin:0 auto;"></image>
  204. </view>
  205. </block>
  206. </template>
  207. <template v-if="!$util.isEmpty(supplierList)">
  208. <view class="ghs_list_area flex-col justify-end">
  209. <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
  210. <view class="image-text_7 flex-row justify-between">
  211. <view class="section_1 flex-col">
  212. <image class="logo" :src="ghsInfo.smallAvatar" @click="enterShop(ghsInfo)" />
  213. </view>
  214. <view class="text-group_7 flex-col justify-between" @click="enterShop(ghsInfo)">
  215. <text class="text_8">{{ghsInfo.name}}</text>
  216. <text class="text_9">
  217. <block v-if="ghsInfo.cutStyle && ghsInfo.cutStyle == 1">
  218. <block v-if="ghsInfo.meetNum == 1 || ghsInfo.meetAmount == 1">
  219. <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
  220. <text style="color:red;font-weight:bold;">
  221. 全场{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
  222. </text>
  223. </block>
  224. <block v-else>
  225. <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
  226. 全场{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
  227. </text>
  228. </block>
  229. </block>
  230. <block v-else>
  231. <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
  232. <text style="color:red;font-weight:bold;">
  233. 满{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
  234. </text>
  235. </block>
  236. <block v-else>
  237. <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
  238. 满{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
  239. </text>
  240. </block>
  241. </block>
  242. </block>
  243. <block v-else>
  244. <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
  245. <text style="color:red;font-weight:bold;">
  246. 满{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
  247. </text>
  248. </block>
  249. <block v-else>
  250. <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
  251. 满{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
  252. </text>
  253. </block>
  254. </block>
  255. </text>
  256. </view>
  257. </view>
  258. <view class="box_4 flex-col"></view>
  259. <view class="box_9">
  260. <view class="tag_2" @click="pageTo({ url: '/admin/ghs/debtChange?ghsId='+ghsInfo.id})"> <text>欠款变动记录</text> </view>
  261. <view class="tag_2" @click="pageTo({ url: '/admin/clear/list?ghsId='+ghsInfo.id})"> <text>结账记录</text> </view>
  262. <view class="tag_2" @click="pageTo({url:'/pagesPurchase/shopping?ghsId='+ghsInfo.id+'&ghsName='+ghsInfo.name})"> <text>买花记录</text> </view>
  263. <view class="tag_2" @click.stop="callUp(ghsInfo)" style="color:green;font-weight:bold;"> <text>联系我们</text> </view>
  264. </view>
  265. <view class="box_6 flex-row" @click="settleAccounts(ghsInfo)" v-if="Number(ghsInfo.debtAmount)>0">
  266. <view class="show_clear_area flex-row justify-between">
  267. <text class="waite_clear_order">
  268. 待结订单 {{ghsInfo.debtNum}}笔 合计¥{{ghsInfo.debtAmount?parseFloat(ghsInfo.debtAmount):0}}
  269. <text style="margin-left:30upx;" v-if="ghsInfo.remainDebtAmount>0">选订单结 》</text>
  270. </text>
  271. </view>
  272. </view>
  273. <block v-if="Number(ghsInfo.balance)>0">
  274. <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount>0" @click.stop="recharge(ghsInfo)">
  275. <view class="show_clear_area flex-row justify-between">
  276. <text class="waite_clear_order" style="color:#3385ff;">
  277. <text v-if="Number(ghsInfo.balance)>0">减去余额¥{{ ghsInfo.balance ? parseFloat(ghsInfo.balance) : 0 }}</text>
  278. <text v-if="ghsInfo.remainDebtAmount>0" style="margin-left:15upx;">实欠¥{{ ghsInfo.remainDebtAmount }}</text>
  279. <text style="margin-left:30upx;">按金额结 》</text>
  280. </text>
  281. </view>
  282. </view>
  283. <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount<0" @click.stop="recharge(ghsInfo)">
  284. <view class="show_clear_area flex-row justify-between">
  285. <text class="waite_clear_order" style="color:#3385ff;">
  286. <text>账户余额¥{{ Math.abs(ghsInfo.remainDebtAmount) }}</text>
  287. <text style="margin-left:30upx;">已结清</text>
  288. </text>
  289. </view>
  290. </view>
  291. </block>
  292. <block v-if="ghsInfo.live == 1">
  293. <view class="button_7 flex-col" @click.stop="goKmCg(ghsInfo)" v-if="ghsInfo.openKmCg && ghsInfo.openKmCg == 1"><text class="text_13">昆明直采</text></view>
  294. <view class="button_4 flex-col" v-if="ghsInfo.isOpen == 1" @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
  295. <view class="button_5 flex-col" v-else @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
  296. </block>
  297. <block v-else>
  298. <view class="button_6 flex-col" @click="fillCg(ghsInfo)"><text class="text_13">买花</text></view>
  299. </block>
  300. <text style="position:absolute;left:677upx;top:17upx;color:#CCCCCC;" @click.stop="getMore(ghsInfo)">更多</text>
  301. </view>
  302. </view>
  303. </template>
  304. <block v-else>
  305. <view style="margin:60upx auto 40upx auto;font-weight:bold;font-size:36upx;text-align: center;">暂无供货商</view>
  306. </block>
  307. <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:28upx;">
  308. <text style="margin-right:20upx;">中花汇提供技术支持</text>
  309. <text style="margin-right:20upx;">|</text>
  310. <text @click="toPhone()">联系软件公司</text>
  311. </view>
  312. </view>
  313. </view>
  314. </block>
  315. <uni-popup ref="toShowMore" background-color="#fff" type="center" :animation="true" class="class-popup-style">
  316. <view style="display:flex;width:100vw;padding:20upx 20upx 40upx 20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
  317. <view style="width:100vw;margin-top:8upx;"><button @click="rechargeChange()">充值记录</button></view>
  318. <view style="width:100vw;margin-top:8upx;"><button @click="balanceChange()">余额变动</button></view>
  319. <view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">屏蔽此商家</button></view>
  320. <view style="width:100vw;margin-top:30upx;"><button @click="closeToShow()">取消</button></view>
  321. </view>
  322. </uni-popup>
  323. <!-- 多供货商提示弹框 -->
  324. <uni-popup ref="supplierNoticePopup" background-color="#fff" type="center" :animation="true" class="supplier-notice-popup">
  325. <view class="supplier-notice-container">
  326. <!-- 头部 -->
  327. <view class="supplier-notice-header">
  328. <text class="supplier-notice-title">您已有多个供货商</text>
  329. </view>
  330. <!-- 中间供货商列表 -->
  331. <view class="supplier-notice-content">
  332. <view class="supplier-list">
  333. <view class="supplier-item" v-for="(supplier, index) in displaySupplierList" :key="index">
  334. <view class="supplier-icon">🏪</view>
  335. <text class="supplier-name">{{ supplier.name }}</text>
  336. </view>
  337. </view>
  338. </view>
  339. <!-- 底部提示 -->
  340. <view class="supplier-notice-footer">
  341. <text class="supplier-notice-tip">买花时注意区分,避免下错</text>
  342. <view class="supplier-notice-buttons">
  343. <button class="admin-button-com default" @click="remindLater">下次提醒</button>
  344. <button class="admin-button-com blue" @click="closeSupplierNotice">知道了</button>
  345. </view>
  346. </view>
  347. </view>
  348. </uni-popup>
  349. </view>
  350. </template>
  351. <script>
  352. import { mapGetters } from "vuex";
  353. import { getWeixinId } from "@/api/invite";
  354. import { getStat,getStrokeCount } from '@/api/console'
  355. import { consoleIndex } from "@/api/workbench";
  356. import NotLogin from "@/components/not-login";
  357. import autoUpdateMixins from "@/mixins/autoUpdate";
  358. import { ghsList } from "@/api/purchase";
  359. import { changeDelStatus,hasMoreGhs } from "@/api/ghs";
  360. import {currentShop} from "@/api/shop";
  361. import { clearLogin,hasNotice } from "@/api/admin";
  362. export default {
  363. name: "workbench",
  364. components: { NotLogin },
  365. mixins: [autoUpdateMixins],
  366. data () {
  367. return {
  368. overview:[],
  369. ad:[],
  370. showAd:1,
  371. constant: this.$constant,
  372. getappIdList: {},
  373. data: {
  374. admin: {},
  375. asset: {},
  376. notice: {},
  377. todayData: { income:0.00, order:0, custom:0, expend:0.00 },
  378. isMini:0
  379. },
  380. tabsData: [
  381. { name: "商城", img: `ghs/home/shop2.png`, url: "/admin/cg/mall",pf:1},
  382. { name: "改价", img: `ghs/home/gj2.png`, url: "/admin/changePrice/list2",pf:1},
  383. { name: "花材绿植", img: `ghs/home/hcgl2.png`, url: "/admin/item/list2",pf:1 },
  384. { name: "接花束", img: `ghs/home/shop2.png`, url: "/admin/order/workOrder",pf:1 },
  385. { name: "拆散", img: `ghs/home/kcyjs2.png`, url: "/admin/part/list",pf:1},
  386. { name: "损耗", img: `ghs/home/kcyjs2.png`, url: "/admin/breakage/list",pf:1},
  387. { name: "任务", img: `ghs/home/kcyjs2.png`, url: "/admin/work/list",pf:1 },
  388. { name: "买花", img: `ghs/home/shop2.png`, url: "/pagesPurchase/order",pf:1 },
  389. { name: "买花记录", img: `ghs/home/shop2.png`, url: "/pagesPurchase/shopping",pf:1 },
  390. { name: "花束", img: `ghs/home/hcgl2.png`, url: "/admin/goods/list",pf:1 },
  391. { name: "客户充值", img: `ghs/home/kcyjs2.png`, url: "/admin/recharge/rechargeCode",pf:1 },
  392. ],
  393. totalData: [
  394. { name: "客户数", value: 0 },
  395. { name: "总访客", value: 0 },
  396. { name: "总订单", value: 0 },
  397. { name: "总收入(元)", value: 0 },
  398. { name: "总支出(元)", value: 0 },
  399. { name: "总采购(元)", value: 0 }
  400. ],
  401. lskd1: `${this.$constant.imgUrl}/ghs/home/lskd001.jpg`,
  402. lskd2: `${this.$constant.imgUrl}/ghs/home/lskd002.jpg`,
  403. lskd3: `${this.$constant.imgUrl}/ghs/home/lskd003.jpg`,
  404. supplierList: [],
  405. //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
  406. loginStyle :0,
  407. backAction:'',
  408. countStat:{systemIncome:0,systemCount:0,debtCount:0,debtIncome:0,kfWxCount:0,kfWxIncome:0},
  409. lookMoney:1,
  410. currentGhs:{},
  411. displaySupplierList: [],// 用于显示在弹框中的供货商列表
  412. shopInfo:[]
  413. };
  414. },
  415. computed: {
  416. ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
  417. },
  418. watch: {
  419. //只需要采购花材的花店不显示底部菜单
  420. loginInfo(newVal) {
  421. if(!this.$util.isEmpty(newVal.admin) && newVal.admin.currentShopId > 0){
  422. if(!this.$util.isEmpty(newVal.onlyCg)){
  423. if(Number(newVal.onlyCg) == 1){
  424. this.loginStyle = 1
  425. uni.hideTabBar()
  426. this.toRemindCustom()
  427. }else{
  428. this.loginStyle = 2
  429. uni.showTabBar()
  430. }
  431. }
  432. }
  433. }
  434. },
  435. onPullDownRefresh () {
  436. this.init();
  437. uni.stopPullDownRefresh();
  438. },
  439. onShow () {
  440. if(this.backAction == 'login'){
  441. this.init()
  442. }
  443. if(this.backAction == 'cacelMask'){
  444. this.init()
  445. this.backAction = ''
  446. }
  447. if(!this.$util.isEmpty(this.loginInfo.admin) && this.loginInfo.admin.currentShopId > 0){
  448. if(!this.$util.isEmpty(this.loginInfo.onlyCg)){
  449. if(Number(this.loginInfo.onlyCg) == 1){
  450. this.loginStyle = 1
  451. uni.hideTabBar()
  452. this.toRemindCustom()
  453. }else{
  454. this.loginStyle = 2
  455. uni.showTabBar()
  456. }
  457. }
  458. }
  459. this.showShopName()
  460. },
  461. methods: {
  462. setRecharge(){
  463. this.$util.pageTo({url:'/admin/recharge/discount'})
  464. },
  465. closeToShow(){
  466. this.$refs.toShowMore.close()
  467. },
  468. // 显示供货商提示弹框
  469. showSupplierNotice() {
  470. // 设置要显示的供货商列表,最多显示5个
  471. this.displaySupplierList = this.supplierList.filter(item => item.name).slice(0, 5)
  472. this.$refs.supplierNoticePopup.open('center')
  473. },
  474. // 关闭供货商提示弹框
  475. closeSupplierNotice() {
  476. this.$refs.supplierNoticePopup.close()
  477. // 调用已有的接口标记已通知
  478. hasNotice().then(res => { })
  479. },
  480. // 下次提醒
  481. remindLater() {
  482. this.$refs.supplierNoticePopup.close()
  483. // 不调用hasNotice接口,保持提醒状态
  484. },
  485. getMore(info){
  486. this.currentGhs = info
  487. this.$refs.toShowMore.open('top')
  488. },
  489. callUp (ghs) {
  490. let mobileList = []
  491. if (!this.$util.isEmpty(ghs.telephone)){
  492. mobileList.push(ghs.telephone)
  493. }
  494. if (!this.$util.isEmpty(ghs.telephone2)){
  495. mobileList.push(ghs.telephone2)
  496. }
  497. if(this.$util.isEmpty(mobileList)){
  498. this.$msg('没有联系电话')
  499. return false
  500. }
  501. uni.showActionSheet({
  502. itemList: mobileList,
  503. success: function (respond) {
  504. let currentIndex = respond.tapIndex
  505. let mobile = mobileList[currentIndex]
  506. uni.makePhoneCall({ phoneNumber: mobile })
  507. }
  508. })
  509. },
  510. toPhone(){
  511. this.$util.pageTo({url: '/pagesPurchase/contact'})
  512. },
  513. showShopName(){
  514. currentShop().then(res => {
  515. if(res.code == 1){
  516. let sjName = res.data.merchantName ? res.data.merchantName : ''
  517. let shopName = res.data.shopName ? res.data.shopName : ''
  518. let title = shopName == '首店' ? sjName : sjName+' '+shopName
  519. uni.setNavigationBarTitle({ title: title })
  520. this.shopInfo = res.data?res.data:[]
  521. }
  522. })
  523. },
  524. goMore(){
  525. let that = this
  526. let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
  527. let items = ['已屏蔽商家', '我已离职', '开关商城', '也要一个此商城', '修改密码', '退出登录'];
  528. if(shopkeeper) {
  529. items = ['已屏蔽商家', '改进建议', '开关商城', '也要一个此商城', '修改密码', '退出登录'];
  530. }
  531. uni.showActionSheet({
  532. itemList: items,
  533. success: function (res) {
  534. if(res.tapIndex == 0){
  535. that.$util.pageTo({url: '/pagesPurchase/pb'})
  536. }
  537. if(res.tapIndex == 1){
  538. if(shopkeeper){
  539. // 店主显示改进建议
  540. that.suggest()
  541. }else{
  542. // 员工显示离职
  543. that.$util.pageTo({url: '/admin/staff/dimission'})
  544. }
  545. }
  546. if(res.tapIndex == 2){
  547. that.$util.pageTo({url:'/pagesPurchase/open'})
  548. }
  549. if(res.tapIndex == 3){
  550. that.openPfShop()
  551. }
  552. if(res.tapIndex == 4){
  553. that.$util.pageTo({url:'/admin/shop/password'})
  554. }
  555. if(res.tapIndex == 5){
  556. that.$util.confirmModal({content:'确认退出?'},() => {
  557. // #ifdef APP-PLUS
  558. uni.clearStorage()
  559. that.$store.commit("setLoginInfo", {})
  560. plus.runtime.restart()
  561. // #endif
  562. // #ifdef MP-WEIXIN
  563. clearLogin().then(res=>{
  564. if(res.code == 1){
  565. uni.clearStorage()
  566. that.$store.commit("setLoginInfo", {})
  567. uni.reLaunch({url:'/admin/home/workbench'})
  568. }
  569. })
  570. // #endif
  571. })
  572. }
  573. }
  574. });
  575. },
  576. openPfShop(){
  577. let that = this
  578. that.$util.confirmModal({content:'请添加客服微信申请:15280215347',okText:'复制微信'},() => {
  579. uni.setClipboardData({
  580. data: '15280215347',
  581. success: function() {
  582. that.$msg("复制成功")
  583. }
  584. })
  585. })
  586. },
  587. suggest(){
  588. let that = this
  589. that.$util.confirmModal({content:'请添加客服微信反馈:15280215347',okText:'复制微信'},() => {
  590. uni.setClipboardData({
  591. data: '15280215347',
  592. success: function() {
  593. that.$msg("复制成功")
  594. }
  595. })
  596. })
  597. },
  598. bookItem(item){
  599. const { id } = item
  600. this.pageTo({url: '/pagesPurchase/bookProduct?id='+id})
  601. },
  602. goBalanceChange(info){
  603. this.closeToShow()
  604. this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+info.id})
  605. },
  606. rechargeChange(){
  607. this.closeToShow()
  608. this.pageTo({url: '/admin/ghs/rechargeChange?ghsId='+this.currentGhs.id})
  609. },
  610. balanceChange(){
  611. this.closeToShow()
  612. this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+this.currentGhs.id})
  613. },
  614. bpSj(){
  615. let that = this
  616. that.$util.confirmModal({content:'确认屏蔽此商家?',okText:'确认'},() => {
  617. that.confirmPb(that.currentGhs)
  618. })
  619. },
  620. recharge(currentGhs){
  621. this.pageTo({url: '/admin/ghs/pay?id='+currentGhs.id+'&salt='+currentGhs.salt})
  622. },
  623. confirmPb(ghs){
  624. let that = this
  625. changeDelStatus({delStatus:1,ghsId:ghs.id}).then(res=>{
  626. if(res.code == 1){
  627. that.closeToShow()
  628. that.getGHSList()
  629. }
  630. })
  631. },
  632. fillCg(item){
  633. this.pageTo({url:'/pagesPurchase/addCg?ghsId='+item.id+'&ghsName='+item.name})
  634. },
  635. goKmCg(currentGhs){
  636. let self = this
  637. // #ifdef MP-WEIXIN
  638. uni.navigateToMiniProgram({
  639. appId: currentGhs.kmCgAppId,
  640. path: currentGhs.kmCgUrl,
  641. //develop 开发版 trial 体验版 release 正式版
  642. envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
  643. extraData: {},
  644. success (res) {}
  645. })
  646. // #endif
  647. // #ifdef APP-PLUS
  648. self.$msg('开发中')
  649. // #endif
  650. },
  651. enterShop(item) {
  652. let that = this
  653. if(item.isOpen == 0){
  654. this.$msg('已休店,请选择其它门店')
  655. return false
  656. }
  657. that.pageTo({url: '/pagesPurchase/ghsProduct?id='+item.id})
  658. },
  659. enterShop2(item) {
  660. let that = this
  661. if(item.isOpen == 0){
  662. this.$msg('已休店,请选择其它门店')
  663. return false
  664. }
  665. that.pageTo({url: '/pagesPurchase/ghsProduct2?id='+item.id})
  666. },
  667. whyHave(){
  668. this.$util.confirmModal({content:'付款金额不足消欠款单时,存为余额下次使用'},() => {})
  669. },
  670. settleAccounts (item) {
  671. this.pageTo({ url: '/pagesPurchase/gathering?id='+item.id})
  672. },
  673. gotoDetails (val) {
  674. this.pageTo({ url: '/pagesPurchase/purDetails?status=' + val.status + '&id=' + val.id, type:2 })
  675. },
  676. getGHSList () {
  677. return ghsList().then(res => {
  678. this.supplierList = res.data.list
  679. this.ad = res.data.ad ? res.data.ad : []
  680. this.showAd = res.data.showAd ? res.data.showAd : 0
  681. })
  682. },
  683. goGd(){
  684. //选择花材生成制作单和订单
  685. this.$util.pageTo({url:'/admin/order/workOrder'})
  686. },
  687. goKjKd(){
  688. if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
  689. this.$util.pageTo({url:'/admin/billing/index2?customId='+this.myShopInfo.defaultCustomId})
  690. }else{
  691. this.$msg('请设置快捷开单的对应客户')
  692. }
  693. },
  694. goShKd(){
  695. this.$util.pageTo({url:'/admin/custom/selectCustom'})
  696. },
  697. goPage (item) {
  698. if (item.url === '/admin/billing/priceChange') {
  699. this.goToMallPt('pages/pay/index')
  700. return true
  701. }
  702. if(this.getLoginInfo.pfShopId && Number(this.getLoginInfo.pfShopId)>0){
  703. if(item.pf == 0){
  704. this.$msg('请在批发端操作')
  705. return false
  706. }
  707. }
  708. this.$util.pageTo(item)
  709. },
  710. init () {
  711. this.getGHSList()
  712. getWeixinId().then(res => {
  713. this.getappIdList = res.data
  714. })
  715. // #ifdef MP-WEIXIN
  716. this.isMini = 1
  717. // #endif
  718. let that = this
  719. consoleIndex({isMini:this.isMini}).then(res => {
  720. this.data = res.data
  721. this.lookMoney = res.data.lookMoney
  722. })
  723. getStrokeCount().then(res=>{
  724. if(res.code == 1){
  725. this.countStat = res.data
  726. }
  727. })
  728. getStat().then(res=>{
  729. if(res.code == 1){
  730. that.overview = res.data.overview
  731. }
  732. })
  733. this.showShopName()
  734. },
  735. toRemindCustom(){
  736. if(this.loginStyle==1){
  737. hasMoreGhs().then(ret=>{
  738. if(ret.data.needNotice == 1){
  739. this.showSupplierNotice()
  740. }
  741. })
  742. }
  743. },
  744. noticeFn (item) {
  745. this.$util.pageTo({ url: item.page })
  746. },
  747. goToWastage () {
  748. this.$util.pageTo({url:'/admin/breakage/list'})
  749. },
  750. goToKindStat(){
  751. this.$util.pageTo({url:'/admin/stat/kind'})
  752. },
  753. goToProfit () {
  754. this.$util.pageTo({url:'/admin/stat/profit'})
  755. },
  756. goToMallPt (url) {
  757. let self = this
  758. uni.navigateToMiniProgram({
  759. appId: this.getappIdList.mall.miniAppId,
  760. path: url + '?account=' + self.loginInfo.shopId,
  761. //develop 开发版 trial 体验版 release 正式版
  762. envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
  763. extraData: {
  764. 'hdShopAdminId': self.loginInfo.shopAdminId
  765. },
  766. success (res) {
  767. }
  768. })
  769. }
  770. }
  771. };
  772. </script>
  773. <style lang="scss" scoped>
  774. .app-content {
  775. padding-bottom: 10upx;
  776. }
  777. .module-com {
  778. margin-bottom: 20upx;
  779. background-color: #fff;
  780. }
  781. .user-wrap {
  782. padding: 20upx 30upx 34upx 30upx;
  783. color: #fff;
  784. text-align: center;
  785. background-size: 100% 380upx;
  786. background-repeat: no-repeat;
  787. .user-top {
  788. @include disFlex(center, space-between);
  789. .open-bt_bx {
  790. display: flex;
  791. align-items: center;
  792. line-height: 1upx;
  793. & > button {
  794. padding: 0;
  795. line-height: auto;
  796. background-color: transparent;
  797. border: 1px solid #ffffff;
  798. border-radius: 22upx;
  799. padding: 10upx 17upx !important;
  800. font-size: 24upx;
  801. font-family: PingFang SC;
  802. font-weight: 400;
  803. color: #ffffff;
  804. & > .iconfont {
  805. font-size: 25upx;
  806. padding-right: 10upx;
  807. }
  808. }
  809. }
  810. }
  811. .income-amount {
  812. margin-top: 36upx;
  813. margin-bottom: 37upx;
  814. .price {
  815. font-size: 50upx;
  816. font-weight: bold;
  817. margin-top: 4upx;
  818. }
  819. }
  820. .user-bottom {
  821. @include disFlex(center, space-around);
  822. .info-list-name {
  823. color: white;
  824. }
  825. .info-list-value {
  826. font-size: 36upx;
  827. font-weight: bold;
  828. margin-top: 4upx;
  829. }
  830. }
  831. }
  832. // 消息
  833. .news-wrap {
  834. .news-list {
  835. @include disFlex(center, space-between);
  836. padding: 30upx 24upx 30upx 30upx;
  837. border-bottom: 1px solid $borderColor;
  838. font-size: 26upx;
  839. color: $fontColor2;
  840. &:active {
  841. background-color: $backColor;
  842. }
  843. & > div {
  844. @include disFlex(center, flex-start);
  845. }
  846. .news-left {
  847. .iconfont {
  848. color: $mainColor;
  849. margin-right: 10upx;
  850. }
  851. .ling {
  852. font-size: 28upx;
  853. }
  854. span{
  855. font-size:29upx;
  856. }
  857. }
  858. .news-right {
  859. font-size: 26upx;
  860. color: $mainColor;
  861. transform: scale(0.9);
  862. @include disFlex(flex-end, flex-start);
  863. .iconfont {
  864. font-size: 24upx;
  865. margin-left: 10upx;
  866. margin-bottom: 6upx;
  867. }
  868. }
  869. }
  870. }
  871. // 总览
  872. .total-wrap,
  873. .order-wrap {
  874. .total-tit {
  875. padding: 18upx 0 18upx 20upx;
  876. border-bottom: 1upx solid $borderColor;
  877. font-weight: 600;
  878. font-size: 24upx;
  879. color: #333333;
  880. }
  881. .total-blo {
  882. @include disFlex(center, space-between);
  883. flex-wrap: wrap;
  884. padding: 20upx 0 0;
  885. .total-list {
  886. width: 33%;
  887. text-align: center;
  888. margin: 20upx 0upx;
  889. border-right: 1upx solid $borderColor;
  890. .list-num {
  891. margin-bottom: 8upx;
  892. font-size:26upx;
  893. font-weight: bold;
  894. }
  895. }
  896. .total-list:nth-child(3n) {
  897. border-right: none;
  898. }
  899. .total-list:nth-child(n + 4) {
  900. padding-bottom: 0;
  901. }
  902. .total-list2 {
  903. width: 24%;
  904. text-align: center;
  905. margin: 20upx 0upx;
  906. border-right: 1upx solid $borderColor;
  907. .list-num {
  908. margin-top:10upx;
  909. margin-bottom:8upx;
  910. font-size:26upx;
  911. font-weight:normal;
  912. }
  913. }
  914. .total-list2:nth-child(4n) {
  915. border-right: none;
  916. }
  917. .total-list2:nth-child(n + 4) {
  918. padding-bottom: 0;
  919. }
  920. }
  921. }
  922. // 新的花束花礼和盆栽花材样式
  923. .flower-module {
  924. padding: 0;
  925. .flower-section {
  926. padding: 30upx 20upx;
  927. .section-header {
  928. display: flex;
  929. align-items: center;
  930. justify-content: center;
  931. margin-bottom: 30upx;
  932. .header-line {
  933. flex: 1;
  934. height: 1upx;
  935. background: linear-gradient(to right, transparent, #e0e0e0);
  936. &:last-child {
  937. background: linear-gradient(to left, transparent, #e0e0e0);
  938. }
  939. }
  940. .header-title {
  941. padding: 0 30upx;
  942. font-size: 32upx;
  943. font-weight: 600;
  944. color: #333;
  945. }
  946. }
  947. .icon-grid {
  948. display: flex;
  949. flex-wrap: wrap;
  950. margin: -10upx;
  951. .icon-item {
  952. width: 25%;
  953. padding: 10upx;
  954. text-align: center;
  955. .icon-wrapper {
  956. width: 120upx;
  957. height: 120upx;
  958. margin: 0 auto 4upx;
  959. display: flex;
  960. align-items: center;
  961. justify-content: center;
  962. transition: all 0.3s ease;
  963. &:active {
  964. transform: scale(0.95);
  965. }
  966. .icon-image {
  967. width: 95upx;
  968. height: 95upx;
  969. }
  970. }
  971. .icon-text {
  972. font-size: 26upx;
  973. color: #333;
  974. line-height: 1.2;
  975. }
  976. }
  977. }
  978. }
  979. }
  980. .order-page {
  981. .ghs_list_page {
  982. background-color: rgba(255, 255, 255, 1);
  983. position: relative;
  984. width: 750upx;
  985. overflow: hidden;
  986. .flex-col {
  987. display: flex;
  988. flex-direction: column;
  989. }
  990. .flex-row {
  991. display: flex;
  992. flex-direction: row;
  993. }
  994. .justify-end {
  995. display: flex;
  996. justify-content: flex-end;
  997. }
  998. .justify-between {
  999. display: flex;
  1000. justify-content: space-between;
  1001. }
  1002. .ghs_list_area {
  1003. width: 750upx;
  1004. background-color: #ece5e5;
  1005. .ghs_box {
  1006. background-color: rgba(255, 255, 255, 1);
  1007. position: relative;
  1008. width: 750upx;
  1009. height: auto;
  1010. margin-bottom:35upx;
  1011. .image-text_7 {
  1012. width: 674upx;
  1013. height: 120upx;
  1014. margin: 40upx 0 0 31upx;
  1015. .section_1 {
  1016. width: 120upx;
  1017. height: 120upx;
  1018. .logo{
  1019. width:120upx;
  1020. height:120upx;
  1021. border-radius:10upx;
  1022. }
  1023. }
  1024. .text-group_7 {
  1025. width: 533upx;
  1026. height: 99upx;
  1027. margin-top: 5upx;
  1028. .text_8 {
  1029. display:inline-block;
  1030. width: 550upx;
  1031. height: 38upx;
  1032. color: rgba(51, 51, 51, 1);
  1033. font-size: 36upx;
  1034. font-weight:bold;
  1035. text-align: left;
  1036. white-space: nowrap;
  1037. line-height:38upx;
  1038. overflow:hidden;
  1039. }
  1040. .text_9 {
  1041. width: 533upx;
  1042. height: 25upx;
  1043. overflow-wrap: break-word;
  1044. color: rgba(153, 153, 153, 1);
  1045. font-size: 28upx;
  1046. text-align: left;
  1047. white-space: nowrap;
  1048. line-height: 24upx;
  1049. margin-top: 10upx;
  1050. }
  1051. }
  1052. }
  1053. .box_4 {
  1054. background-color: rgba(238, 238, 238, 1);
  1055. width: 750upx;
  1056. height: 1upx;
  1057. margin-top: 40upx;
  1058. }
  1059. .box_9 {
  1060. width: 100%;
  1061. height: 60upx;
  1062. margin: 23upx 0 22upx 15upx;
  1063. .tag_2 {
  1064. background-color: rgba(255, 255, 255, 1);
  1065. border-radius: 8px;
  1066. height: 60upx;
  1067. line-height:60upx;
  1068. border: 2px solid rgba(221, 221, 221, 1);
  1069. color: rgba(51, 51, 51, 1);
  1070. font-size: 30upx;
  1071. margin:0 16upx 0 0;
  1072. text-align:center;
  1073. float:left;
  1074. padding-left:15upx;
  1075. padding-right:15upx;
  1076. }
  1077. }
  1078. .box_6 {
  1079. background-color: rgb(248, 242, 242);
  1080. width: 750upx;
  1081. height:95upx;
  1082. .show_clear_area {
  1083. width: 247upx;
  1084. height: 29upx;
  1085. margin: 26upx 0 0 30upx;
  1086. .waite_clear_order {
  1087. width: 214upx;
  1088. height: 29upx;
  1089. overflow-wrap: break-word;
  1090. color: rgba(255, 40, 66, 1);
  1091. font-size: 31upx;
  1092. font-weight:bold;
  1093. text-align: left;
  1094. white-space: nowrap;
  1095. line-height: 29upx;
  1096. }
  1097. }
  1098. }
  1099. .button_4 {
  1100. height: 80upx;
  1101. line-height:80upx;
  1102. text-align:center;
  1103. background-color:#09C567;
  1104. background-size: 137upx 137upx;
  1105. width: 130upx;
  1106. position: absolute;
  1107. left: 570upx;
  1108. top: 95upx;
  1109. border-radius:39upx;
  1110. .text_13 {
  1111. color: rgba(255, 255, 255, 1);
  1112. font-size: 30upx;
  1113. font-weight:bold;
  1114. }
  1115. }
  1116. .button_5 {
  1117. height: 80upx;
  1118. line-height:80upx;
  1119. text-align:center;
  1120. background-color:#CCCCCC;
  1121. background-size: 137upx 137upx;
  1122. width: 130upx;
  1123. position: absolute;
  1124. left: 570upx;
  1125. top: 95upx;
  1126. border-radius:39upx;
  1127. .text_13 {
  1128. color: rgba(255, 255, 255, 1);
  1129. font-size: 30upx;
  1130. font-weight:bold;
  1131. }
  1132. }
  1133. .button_6 {
  1134. height: 80upx;
  1135. line-height:80upx;
  1136. text-align:center;
  1137. background-color:rgb(152, 153, 197);
  1138. background-size: 137upx 137upx;
  1139. width: 170upx;
  1140. position: absolute;
  1141. left: 540upx;
  1142. top: 95upx;
  1143. border-radius:39upx;
  1144. .text_13 {
  1145. color: rgba(255, 255, 255, 1);
  1146. font-size: 30upx;
  1147. font-weight:bold;
  1148. }
  1149. }
  1150. .button_7 {
  1151. height: 80upx;
  1152. line-height:80upx;
  1153. text-align:center;
  1154. background-color:#09C567;
  1155. background-size: 137upx 137upx;
  1156. width: 180upx;
  1157. position: absolute;
  1158. left: 330upx;
  1159. top: 95upx;
  1160. border-radius:39upx;
  1161. .text_13 {
  1162. color: rgba(255, 255, 255, 1);
  1163. font-size: 30upx;
  1164. font-weight:bold;
  1165. }
  1166. }
  1167. }
  1168. }
  1169. }
  1170. }
  1171. /* 供货商提示弹框样式 */
  1172. .supplier-notice-popup {
  1173. .supplier-notice-container {
  1174. width: 650upx;
  1175. background-color: #fff;
  1176. border-radius: 20upx;
  1177. overflow: hidden;
  1178. .supplier-notice-header {
  1179. padding: 40upx 30upx 20upx;
  1180. text-align: center;
  1181. background-color: #f8f9fa;
  1182. border-bottom: 1upx solid #e9ecef;
  1183. .supplier-notice-title {
  1184. font-size: 36upx;
  1185. font-weight: bold;
  1186. color: #333;
  1187. }
  1188. }
  1189. .supplier-notice-content {
  1190. padding: 20upx 0;
  1191. .supplier-list {
  1192. padding: 0 30upx;
  1193. .supplier-item {
  1194. display: flex;
  1195. align-items: center;
  1196. padding: 20upx 0;
  1197. border-bottom: 1upx solid #f0f0f0;
  1198. &:last-child {
  1199. border-bottom: none;
  1200. }
  1201. .supplier-icon {
  1202. width: 60upx;
  1203. height: 60upx;
  1204. background-color: #e3f2fd;
  1205. border-radius: 50%;
  1206. display: flex;
  1207. align-items: center;
  1208. justify-content: center;
  1209. font-size: 32upx;
  1210. margin-right: 20upx;
  1211. }
  1212. .supplier-name {
  1213. font-size: 32upx;
  1214. color: #333;
  1215. flex: 1;
  1216. font-weight: 500;
  1217. }
  1218. }
  1219. }
  1220. }
  1221. .supplier-notice-footer {
  1222. padding: 30upx;
  1223. text-align: center;
  1224. background-color: #f8f9fa;
  1225. border-top: 1upx solid #e9ecef;
  1226. .supplier-notice-tip {
  1227. display: block;
  1228. font-size: 40upx;
  1229. font-weight: bold;
  1230. color: red;
  1231. margin-bottom: 30upx;
  1232. line-height: 1.4;
  1233. }
  1234. .supplier-notice-buttons {
  1235. display: flex;
  1236. justify-content: space-between;
  1237. gap: 20upx;
  1238. .admin-button-com {
  1239. flex: 1;
  1240. margin: 0;
  1241. padding: 20upx 0;
  1242. height: auto;
  1243. line-height: normal;
  1244. font-size: 34upx;
  1245. font-weight: bold;
  1246. }
  1247. }
  1248. }
  1249. }
  1250. }
  1251. </style>