index.vue 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519
  1. <template>
  2. <view>
  3. <zj-page-layout
  4. :hasFooter="false"
  5. :isScroll="true"
  6. :isLoading="isLoading"
  7. :refresherTriggered="refresherTriggered"
  8. @refresherrefresh="refresherrefresh"
  9. >
  10. <!-- <view style="color: #fff; background: red; height: 50px" @click="quzhifu">支付测试</view> -->
  11. <Loading v-if="isError || !isLogin" :type="3" :loadStatus="2" :showText="'加载失败,请下拉重新加载'" />
  12. <view class="all-container" v-else>
  13. <view class="noticebar-container" v-if="noticeContent">
  14. <u-notice-bar :text="noticeContent"></u-notice-bar>
  15. </view>
  16. <!-- 去除商城和服务业务 -->
  17. <!-- <view class="swiper-container" v-if="bannerList.length > 0">
  18. <u-swiper
  19. :list="bannerList"
  20. keyName="imgSrc"
  21. autoplay
  22. circular
  23. indicator
  24. indicatorMode="line"
  25. height="175"
  26. @click="clickBanner"
  27. ></u-swiper>
  28. </view>
  29. <view class="noticebar-container" v-if="noticeContent">
  30. <u-notice-bar :text="noticeContent"></u-notice-bar>
  31. </view>
  32. <block v-if="categoryList.length > 0">
  33. <view
  34. class="service-container card"
  35. v-for="(item, index) in categoryList.filter(o => o.sub.length > 0)"
  36. :key="index"
  37. >
  38. <view class="home-title">
  39. <view class="left">{{ item.name }}</view>
  40. <view class="right" @tap="toClassifyList(item.categoryId)">
  41. <text class="text">查看更多</text>
  42. <text class="iconfont icon-jinru"></text>
  43. </view>
  44. </view>
  45. <view class="list">
  46. <view
  47. class="item"
  48. v-for="(it, idx) in item.sub.slice(0, 4)"
  49. :key="idx"
  50. @tap="toGoodsList(item.categoryId, it.categoryId, it.name)"
  51. >
  52. <image :src="it.imgUrl" mode="aspectFill"></image>
  53. <text>{{ it.name }}</text>
  54. </view>
  55. </view>
  56. </view>
  57. </block> -->
  58. <!-- 自助服务 -->
  59. <!-- <view class="service-container card">
  60. <view class="home-title">
  61. <view class="left">自助服务</view>
  62. <view class="right" @tap="toWorkorder">
  63. <text class="text">我的服务单</text>
  64. <text class="iconfont icon-jinru"></text>
  65. </view>
  66. </view>
  67. <view class="list">
  68. <view class="item" v-for="(item, index) in serviceList" :key="index" @tap="toPage(item.url)">
  69. <image :src="item.icon" mode="aspectFill" v-if="item.icon"></image>
  70. <image
  71. :src="require(`@/static/images/home/service-icon${item.code}.png`)"
  72. mode="aspectFill"
  73. v-else-if="item.code"
  74. ></image>
  75. <text>{{ item.title }}</text>
  76. </view>
  77. <view class="item" v-if="userInfo.isShowLease" @tap="toPage('/packageHome/pages/service/tenancy')">
  78. <image :src="require(`@/static/images/home/service-icon5.png`)" mode="aspectFill"></image>
  79. <text>设备租赁</text>
  80. </view>
  81. </view>
  82. </view> -->
  83. <!-- 扫码活动 -->
  84. <view class="swiper2-container" v-if="codeActivityList.length > 0">
  85. <u-swiper
  86. :list="codeActivityList"
  87. keyName="banner"
  88. autoplay
  89. circular
  90. indicator
  91. indicatorMode="line"
  92. height="100"
  93. @click="toCodeActivityList"
  94. ></u-swiper>
  95. </view>
  96. <!-- 增值服务 -->
  97. <!-- <view class="other-container card" v-if="userInfo.moduleYb">
  98. <view class="home-title">
  99. <view class="left">增值服务</view>
  100. </view>
  101. <view class="list">
  102. <view
  103. class="item"
  104. v-for="(item, index) in addvalueList.filter(o => !o.root || (o.root && o.root.includes(userInfo.type)))"
  105. :key="index"
  106. @tap="item.fn ? toFn(item.fn) : toPage(item.url)"
  107. >
  108. <image :src="require(`@/static/images/home/other-icon${item.code}.png`)" mode=""></image>
  109. <text>{{ item.title }}</text>
  110. </view>
  111. </view>
  112. </view> -->
  113. <!-- 工程维保服务 -->
  114. <!-- <view
  115. class="other-container card"
  116. v-if="(isWorkerUser || isShowMaintenance) && userInfo.moduleWb && userInfo.mobile"
  117. >
  118. <view class="home-title">
  119. <view class="left">工程维保服务</view>
  120. </view>
  121. <view class="list">
  122. <view
  123. class="item"
  124. v-for="(item, index) in maintenanceList"
  125. :key="index"
  126. @tap="item.fn ? toFn(item.fn) : toPage(item.url)"
  127. >
  128. <image :src="require(`@/static/images/home/other-icon${item.code}.png`)" mode=""></image>
  129. <text>{{ item.title }}</text>
  130. </view>
  131. </view>
  132. </view> -->
  133. <!-- 二手商城 -->
  134. <!-- <view class="other-container card" v-if="(isServiceUser || isWorkerUser) && userInfo.moduleEs">
  135. <view class="home-title">
  136. <view class="left">二手商城</view>
  137. </view>
  138. <view class="list">
  139. <view
  140. class="item"
  141. v-for="(item, index) in recycleList.filter(
  142. o => !o.root || (o.root == 1 && userInfo.isEs) || (o.root == 2 && !userInfo.isEs)
  143. )"
  144. :key="index"
  145. @tap="item.fn ? toFn(item.fn) : toPage(item.url)"
  146. >
  147. <image :src="require(`@/static/images/home/other-icon${item.code}.png`)" mode=""></image>
  148. <text>{{ item.title }}</text>
  149. </view>
  150. </view>
  151. </view> -->
  152. <!-- 分享收益 -->
  153. <!-- <view class="share-container card" v-if="isServiceUser || isWorkerUser">
  154. <view class="home-title">
  155. <view class="left">分享收益</view>
  156. <view class="right" @tap="toPage(`/packageMine/pages/order/list?tab=`)">
  157. <text class="text">我的订单</text>
  158. <text class="iconfont icon-jinru"></text>
  159. </view>
  160. </view>
  161. <view class="list">
  162. <view class="item" @tap="toMall()">
  163. <image src="@/static/images/home/share-icon1.png"></image>
  164. <view class="text">分销商城</view>
  165. </view>
  166. <view class="item" @tap="toActivityList(5)">
  167. <image src="@/static/images/home/share-icon2.png"></image>
  168. <view class="text">活动专区</view>
  169. </view>
  170. </view>
  171. </view> -->
  172. <!-- 工单管理 -->
  173. <view class="order-container card">
  174. <view class="home-title">
  175. <view class="left">工单管理</view>
  176. </view>
  177. <view class="list">
  178. <view class="item" v-for="(item, index) in orderList" :key="index" @tap="toPage(item.url)">
  179. <image :src="require(`@/static/images/home/order-icon${item.code}.png`)" mode=""></image>
  180. <text>{{ item.title }}</text>
  181. </view>
  182. </view>
  183. </view>
  184. <!-- 其他 -->
  185. <view class="other-container card">
  186. <view class="home-title">
  187. <view class="left">辅材</view>
  188. <view class="right" @tap="toPage(`/packageMaterial/pages/index?type=M`)">
  189. <text class="text">查看详细</text>
  190. <text class="iconfont icon-jinru"></text>
  191. </view>
  192. </view>
  193. <view class="list">
  194. <view class="item" v-for="(item, index) in otherList" :key="index" @tap="toPage(item.url)">
  195. <image :src="require(`@/static/images/home/other-icon${item.code}.png`)" mode=""></image>
  196. <text>{{ item.title }}</text>
  197. </view>
  198. </view>
  199. </view>
  200. <view class="other-container card">
  201. <view class="home-title">
  202. <view class="left">配件</view>
  203. <view class="right" @tap="toPage(`/packageMaterial/pages/index?type=P`)">
  204. <text class="text">查看详细</text>
  205. <text class="iconfont icon-jinru"></text>
  206. </view>
  207. </view>
  208. <view class="list">
  209. <view class="item" v-for="(item, index) in otherList2" :key="index" @tap="toPage(item.url)">
  210. <image :src="require(`@/static/images/home/other-icon${item.code}.png`)" mode=""></image>
  211. <text>{{ item.title }}</text>
  212. </view>
  213. </view>
  214. </view>
  215. <!-- 联系我们 -->
  216. <view class="contact-container card">
  217. <view class="home-title">
  218. <view class="left">联系我们</view>
  219. </view>
  220. <view class="list">
  221. <!-- <button open-type="contact" class="item bb">
  222. <image src="@/static/images/home/home-icon1.png"></image>
  223. <view class="title">在线客服</view>
  224. <text class="iconfont icon-jinru"></text>
  225. </button> -->
  226. <view class="item" :class="isShowContact1 ? '' : 'bb'" @tap="isShowContact1 = !isShowContact1">
  227. <image src="@/static/images/home/home-icon2.png"></image>
  228. <view class="title">服务网点</view>
  229. <text class="iconfont icon-jinru"></text>
  230. </view>
  231. <view class="wrap1" v-if="isShowContact1">
  232. <view class="it" v-for="(item, index) in websitList" :key="index">
  233. <view class="top">
  234. <view class="left">{{ item.name }} {{ item.websitPhone || '' }}</view>
  235. <view class="right" @tap="$callPhone(item.websitPhone)" v-if="item.websitPhone"
  236. ><text class="iconfont icon-call"></text
  237. ></view>
  238. </view>
  239. <view class="address">{{ item.address }}</view>
  240. </view>
  241. </view>
  242. <view class="item" @tap="isShowContact2 = !isShowContact2">
  243. <image src="@/static/images/home/home-icon3.png"></image>
  244. <view class="title">投诉热线</view>
  245. <text class="iconfont icon-jinru"></text>
  246. </view>
  247. <view class="wrap2" v-if="isShowContact2">
  248. <view class="left">投诉电话:{{ userInfo.companyWechatMobile || '暂无' }}</view>
  249. <view class="right" @tap="$callPhone(userInfo.companyWechatMobile)" v-if="userInfo.companyWechatMobile"
  250. ><text class="iconfont icon-call"></text
  251. ></view>
  252. </view>
  253. </view>
  254. </view>
  255. </view>
  256. </zj-page-layout>
  257. <!-- <view class="dialog-container" v-if="couponDialogImgUrl && isShowCouponDialog">
  258. <uni-transition ref="dialog" mode-class="zoom-in" :duration="500" :show="couponDialogImgUrl && isShowCouponDialog">
  259. <image class="image" :src="couponDialogImgUrl" mode="widthFix" @tap="handleCoupon()"></image>
  260. </uni-transition>
  261. <uni-transition ref="dialogBtn" mode-class="fade" :duration="500" :show="couponDialogImgUrl && isShowCouponDialog">
  262. <text class="iconfont icon-close2" @tap="closeDialog()"></text>
  263. </uni-transition>
  264. </view> -->
  265. <view class="top-tooltip" v-if="isShowTopTooltip">
  266. <view class="content">
  267. <view class="left">
  268. <view>点击<text class="iconfont icon-gengduo"></text>添加到我的小程序</view>
  269. <view>微信下拉使用更方便哟!</view>
  270. </view>
  271. <text class="iconfont icon-close2 close" @tap="isShowTopTooltip = false"></text>
  272. </view>
  273. <view class="arrow"></view>
  274. </view>
  275. <view class="bottom-tooltip" v-if="isShowBottomTooltip">
  276. <view class="left">
  277. <text class="iconfont icon-close2 close" @tap="isShowBottomTooltip = false"></text>
  278. <view class="text">关注公众号及时获取服务进度</view>
  279. </view>
  280. <view class="btn" @tap="toWxLink()">前往关注</view>
  281. </view>
  282. <!-- 保险过期提示弹窗 -->
  283. <insuranceDialog ref="insuranceDialog" :data="baoxiandangqianxianxitishi"> </insuranceDialog>
  284. </view>
  285. </template>
  286. <script>
  287. import { getNoticeNum, getOrderNum, selectionChange, mini_env } from '@/common/utils/util.js'
  288. import insuranceDialog from '@/components/insuranceDialog'
  289. export default {
  290. components: {
  291. insuranceDialog
  292. },
  293. data() {
  294. return {
  295. isLoading: true,
  296. refresherTriggered: false, // 下拉刷新状态
  297. userInfo: {},
  298. configInfo: {},
  299. scene: {
  300. // 页面参数(扫码进入小程序时产生)
  301. type: '',
  302. goodsId: '',
  303. orderId: '',
  304. serviceId: '',
  305. couponId: ''
  306. },
  307. isCouponDialog: false, // 是否显示过期优惠券弹窗
  308. isReceiveDialog: false,
  309. isSmsReceive: false,
  310. isShowTopTooltip: false,
  311. isShowBottomTooltip: false,
  312. noticeContent: '', // 公告内容
  313. categoryList: [],
  314. serviceList: [],
  315. baseServiceList: [
  316. // 自助服务列表
  317. { code: 3, title: '收费标准', url: `/packageHome/pages/service/chargeStandard` },
  318. { code: 4, title: '故障自查', url: `/packageHome/pages/service/troubleshoot` }
  319. ],
  320. addvalueList: [
  321. // 增值服务列表
  322. { code: 1, title: '延保服务', fn: 'toServiceIndex' },
  323. { code: 2, title: '我的延保', url: `/packageHome/pages/addvalue/orderList` },
  324. { code: 3, title: '服务记录', fn: `toServiceRecods` },
  325. { code: 3, title: '延保查询', url: `/packageHome/pages/addvalue/check`, root: ['WORKER'] }
  326. ],
  327. maintenanceList: [
  328. // 工程维保服务列表
  329. { code: 1, title: '创建维保单', fn: `toMaintenanceCreate` },
  330. { code: 2, title: '维保单记录', fn: `toMaintenanceRecods` },
  331. { code: 3, title: '费用申请单', url: `/packageHome/pages/maintenance/applyList` }
  332. ],
  333. recycleList: [
  334. { code: 1, title: '二手商城', url: `/packageHome/pages/recycle/index`, root: 0 },
  335. { code: 2, title: '已发布的', url: `/packageHome/pages/recycle/issue/list`, root: 1 },
  336. { code: 3, title: '我买到的', url: `/packageHome/pages/recycle/order/list`, root: 2 }
  337. ],
  338. orderList: [
  339. // 工单管理列表
  340. { code: 1, title: '待接单', url: `/packageWorkorder/pages/orderList?tab=DJD` },
  341. { code: 2, title: '服务中', url: `/packageWorkorder/pages/orderList?tab=FWZ` },
  342. { code: 3, title: '已完成', url: `/packageWorkorder/pages/orderList?tab=YWG` },
  343. { code: 4, title: '异常单', url: `/packageWorkorder/pages/orderList?tab=YCD` }
  344. ],
  345. otherList: [
  346. // 其他列表
  347. { code: 1, title: '辅材管理', url: `/packageMaterial/pages/stock/index` },
  348. { code: 2, title: '辅材收款', url: `/packageMaterial/pages/sale/index?type=M` }
  349. ],
  350. otherList2: [
  351. // 其他列表
  352. { code: 1, title: '配件管理', url: `/packageAttachment/pages/fittingsManagement/index` },
  353. { code: 2, title: '配件收款', url: `/packageMaterial/pages/newSale/index?type=P` }
  354. ],
  355. bannerList: [], // 轮播图列表
  356. couponList: [], // 可领取优惠券列表
  357. codeActivityList: [],
  358. couponDialogImgUrl: '',
  359. isShowCouponDialog: true,
  360. isError: false,
  361. websitList: [],
  362. isShowContact1: false,
  363. isShowContact2: false,
  364. isShowMaintenance: false,
  365. baoxiandangqianxianxitishi: []
  366. }
  367. },
  368. computed: {
  369. isLogin() {
  370. return this.$store.state.user.token ? true : false
  371. },
  372. isServiceUser() {
  373. // 是否业务员
  374. return this.userInfo && this.userInfo.type === 'SERVICE'
  375. },
  376. isWorkerUser() {
  377. // 是否师傅
  378. return this.userInfo && this.userInfo.type === 'WORKER'
  379. }
  380. },
  381. async onShow() {
  382. selectionChange()
  383. try {
  384. await this.$onLaunched
  385. this.configInfo = await this.$getConfigInfo()
  386. await this.getBannerList()
  387. this.getNoticebar()
  388. if (this.isLogin) {
  389. this.userInfo = await this.$getUserInfo()
  390. this.isShowMaintenance = await this.checkMaintenance()
  391. this.getCategoryList()
  392. this.getServiceList()
  393. this.getCouponList()
  394. this.getWebsitList()
  395. this.getCodeActivityList()
  396. getNoticeNum()
  397. getOrderNum()
  398. }
  399. this.$nextTick(() => {
  400. this.isError = false
  401. this.isLoading = false
  402. this.refresherTriggered = false
  403. })
  404. } catch {
  405. this.isError = true
  406. this.isLoading = false
  407. }
  408. },
  409. async onLoad({
  410. scene, // 扫码进入的参数
  411. goodsId, // 商品id
  412. serviceId, // 业务员id
  413. smsServiceId, // 短信业务员id
  414. otherType, // 类型:groupbuyList=团购活动,activityList=专区活动,orderList=订单列表,workOrderList=工单列表,couponList=优惠券列表,workOrderDetail
  415. activityType, // 专区活动类型
  416. appOrderId, // 师傅端app订单id(下单支付)
  417. orderId, // 订单id(进入订单详情)
  418. workOrderId, // 工单id(进入工单详情)
  419. workOrderTypeId,
  420. workOrderType,
  421. workOrderImgUrl,
  422. mpOpenId,
  423. type,
  424. objId,
  425. isYB,
  426. isWB,
  427. sharerOpenId
  428. }) {
  429. await this.$onLaunched
  430. setTimeout(() => {
  431. this.isShowTopTooltip = false
  432. this.isShowBottomTooltip = false
  433. }, 10000)
  434. if (this.isLogin) {
  435. this.checkCoupon()
  436. }
  437. if (mpOpenId) {
  438. uni.login({
  439. provider: 'weixin',
  440. success: loginRes => {
  441. this.$api.post('/user/auth', {
  442. code: loginRes.code,
  443. mpOpenId: mpOpenId
  444. })
  445. }
  446. })
  447. }
  448. if (sharerOpenId) {
  449. this.$api
  450. .post('/user/bind', {
  451. serviceOpenId: sharerOpenId,
  452. userId: this.$store.state.user.userId
  453. })
  454. .then(res => {
  455. console.log('绑定成功:' + res.message)
  456. })
  457. }
  458. // 点击短信链接进入小程序
  459. if (smsServiceId) {
  460. this.bindUser(smsServiceId)
  461. if (this.userInfo.type !== 'SERVICE') {
  462. this.isSmsReceive = true
  463. this.isReceiveDialog = true
  464. }
  465. }
  466. // 从链接进入小程序
  467. if (serviceId) {
  468. this.bindUser(serviceId)
  469. }
  470. if (goodsId) {
  471. setTimeout(() => {
  472. this.toGoodsDetail(goodsId)
  473. }, 1000)
  474. }
  475. if (isYB) {
  476. setTimeout(() => {
  477. this.toServiceIndex()
  478. }, 1000)
  479. }
  480. if (isWB) {
  481. setTimeout(() => {
  482. this.toMaintenanceCreate()
  483. }, 1000)
  484. }
  485. if (otherType) {
  486. // 团购列表
  487. if (otherType === 'groupbuyList') {
  488. this.navToPage('/packageMine/pages/groupbuy/list')
  489. }
  490. // 活动专区列表
  491. if (otherType === 'activityList') {
  492. this.navToPage('/packageGoods/pages/activity?type=' + activityType)
  493. }
  494. // 订单列表
  495. if (otherType === 'orderList') {
  496. this.navToPage('/packageMine/pages/order/list')
  497. }
  498. // 工单列表
  499. if (otherType === 'workOrderList') {
  500. this.navToPage('/packageMine/pages/workOrder/list')
  501. }
  502. // 优惠券列表
  503. if (otherType === 'couponList') {
  504. this.navToPage('/packageMine/pages/coupon/list')
  505. }
  506. }
  507. if (orderId) {
  508. this.navToPage(`/packageMine/pages/order/detail?orderId=${orderId}`)
  509. } else if (workOrderId && workOrderTypeId && workOrderType) {
  510. workOrderType = workOrderType.replace(/\\\\/g, '\\')
  511. this.navToPage(
  512. `/packageMine/pages/workOrder/detail?id=${workOrderTypeId}&type=${workOrderType}&orderNo=${workOrderId}`
  513. )
  514. } else if (workOrderId) {
  515. this.navToPage(`/packageMine/pages/workOrder/list`)
  516. } else if (workOrderImgUrl) {
  517. this.navToPage(`/packageMine/pages/workOrder/receipt?imgurl=${workOrderImgUrl}`)
  518. }
  519. // 扫码进入小程序
  520. if (scene) {
  521. console.log(scene)
  522. // 拿scene的id去获取
  523. this.$api
  524. .get('/common/scene', {
  525. scene: scene
  526. })
  527. .then(res => {
  528. let newScene = res.data.split('&')
  529. this.scene.type = newScene[0]
  530. this.scene.serviceId = newScene[2] || ''
  531. // 如果是商品
  532. if (newScene[0] == 'goods') {
  533. this.scene.goodsId = newScene[1]
  534. this.toGoodsDetail(this.scene.goodsId)
  535. }
  536. // 如果是优惠券
  537. else if (newScene[0] == 'coupon') {
  538. this.scene.couponId = newScene[1]
  539. this.isReceiveDialog = true
  540. // this.receiveCoupon(this.scene.couponId);
  541. }
  542. // 如果是团购分享码
  543. else if (newScene[0] == 'promotion_group') {
  544. this.navToPage('/packageMine/pages/groupbuy/list')
  545. }
  546. // 如果是活动专区分享码
  547. else if (newScene[0] == 'HDZQ') {
  548. this.navToPage('/packageGoods/pages/activity?type=' + newScene[1])
  549. }
  550. // 如果是工程维保
  551. else if (newScene[0] == 'ENGIN_PROJECT_REPAIR') {
  552. this.$navToPage({
  553. url: `/packageHome/pages/maintenance/create?projectId=${newScene[1]}`
  554. })
  555. }
  556. console.log(this.scene)
  557. if (this.scene.serviceId) {
  558. this.bindUser(this.scene.serviceId)
  559. }
  560. })
  561. }
  562. this.$api.post('/worker/remind').then(res => {
  563. this.baoxiandangqianxianxitishi = res.data
  564. console.log(res.data, '--------------------')
  565. })
  566. },
  567. methods: {
  568. // 测试支付
  569. quzhifu() {
  570. mini_env(bool => {
  571. this.$api
  572. .post('/order/buytest', {
  573. orderId: Date.now(),
  574. amount: 0.01
  575. })
  576. .then(res => {
  577. // 小程序环境
  578. if (bool) {
  579. uniWebview.navigateTo({
  580. url: `/pages/pay/pay?${Object.entries({
  581. ...res.data,
  582. payPackage: res.data.payPackage.split('=')[0] || '',
  583. payPackageVal: res.data.payPackage.split('=')[1] || ''
  584. })
  585. .map(item => item.join('='))
  586. .join('&')}`
  587. })
  588. }
  589. })
  590. })
  591. },
  592. // 获取公告栏
  593. getNoticebar() {
  594. this.$api.get('/shpping/cart/notice').then(res => {
  595. this.noticeContent = res.data
  596. })
  597. },
  598. // 触发下拉刷新
  599. async refresherrefresh(e) {
  600. this.refresherTriggered = true
  601. this.configInfo = await this.$getConfigInfo()
  602. await this.getBannerList()
  603. if (this.isLogin) {
  604. this.userInfo = await this.$getUserInfo()
  605. this.getCategoryList()
  606. this.getServiceList()
  607. this.getCouponList()
  608. this.getWebsitList()
  609. this.getCodeActivityList()
  610. } else {
  611. await this.wxLogin()
  612. this.userInfo = await this.$getUserInfo()
  613. this.getCategoryList()
  614. this.getServiceList()
  615. this.getCouponList()
  616. this.getWebsitList()
  617. this.getCodeActivityList()
  618. }
  619. this.$nextTick(() => {
  620. this.$isResolve()
  621. this.isError = false
  622. this.refresherTriggered = false
  623. })
  624. },
  625. async wxLogin() {
  626. return new Promise((resolve, reject) => {
  627. uni.login({
  628. provider: 'weixin',
  629. success: loginRes => {
  630. this.$api
  631. .post('/user/auth', {
  632. code: loginRes.code
  633. })
  634. .then(async res => {
  635. this.$store.commit('user/set_token', res.data.token)
  636. this.$store.commit('user/set_openId', res.data.openId)
  637. this.$store.commit('user/set_name', res.data.nickName)
  638. this.$store.commit('user/set_avatar', res.data.avatar)
  639. this.$store.commit('user/set_userId', res.data.userId)
  640. if (res.data.mobile) {
  641. this.$store.commit('user/set_mobile', res.data.mobile)
  642. }
  643. if (!res.data.avatar || !res.data.nickName) {
  644. await this.saveUserInfo(res.data)
  645. }
  646. resolve(1)
  647. })
  648. .catch(() => {
  649. this.refresherTriggered = false
  650. reject(0)
  651. })
  652. }
  653. })
  654. })
  655. },
  656. // 保存用户信息
  657. async saveUserInfo(userInfo) {
  658. let randomNum = new Date().getTime().toString().substr(-6)
  659. let configInfo = await this.$getConfigInfo()
  660. return new Promise((resolve, reject) => {
  661. this.$api
  662. .post('/user/userinfo/save', {
  663. userId: userInfo.userId,
  664. avatarUrl: configInfo.minLogo3,
  665. nickName: `微信用户_${randomNum}`
  666. })
  667. .then(res => {
  668. resolve(res.data)
  669. })
  670. })
  671. },
  672. getCategoryList() {
  673. this.$api
  674. .get('/goods/category/list/all', {
  675. isServiceShow: true
  676. })
  677. .then(res => {
  678. this.categoryList = res.data
  679. })
  680. },
  681. getServiceList() {
  682. this.$api.post('/pg/order/base/type/list').then(res => {
  683. let list = res.data.map(item => {
  684. return {
  685. title: item.orderSmallTypeText,
  686. icon: item.imgUrl,
  687. url: `/packageWorkorder/pages/create/index?typeId=${item.id}&typeName=${item.orderSmallTypeText}`
  688. }
  689. })
  690. this.serviceList = [...list, ...this.baseServiceList]
  691. })
  692. },
  693. getWebsitList() {
  694. this.$api
  695. .get('/user/apply/websit', {
  696. isAll: false
  697. })
  698. .then(res => {
  699. this.websitList = res.data || []
  700. })
  701. },
  702. toPage(url) {
  703. if (!url) return this.$toast('敬请期待~')
  704. this.navToPage(url)
  705. },
  706. toFn(fn) {
  707. if (!fn) return this.$toast('敬请期待~')
  708. this[fn]()
  709. },
  710. toServiceIndex() {
  711. if (this.isWorkerUser) {
  712. this.navToPage(`/packageHome/pages/addvalue/serviceBuy`)
  713. } else {
  714. this.navToPage(`/packageHome/pages/addvalue/explainList`)
  715. }
  716. },
  717. toServiceRecods() {
  718. if (this.isWorkerUser) {
  719. this.navToPage(`/packageWorkorder/pages/orderList?isYb=true`)
  720. } else {
  721. this.navToPage(`/packageWorkorder/pages/userWorkorderList`)
  722. }
  723. },
  724. async checkMaintenance() {
  725. const hasApply = await this.$api
  726. .post('/engin/material/list/page', {
  727. pageNum: 1,
  728. pageSize: -1,
  729. examineStatus: ''
  730. })
  731. .then(res => {
  732. return res.data.records && res.data.records.length > 0
  733. })
  734. const hasOrder = await this.$api
  735. .post('/pg/order/base/list', {
  736. pageNum: 1,
  737. pageSize: -1,
  738. isWb: true
  739. })
  740. .then(res => {
  741. return res.data.records && res.data.records.length > 0
  742. })
  743. return hasApply || hasOrder
  744. },
  745. toMaintenanceCreate() {
  746. if ((this.isWorkerUser || this.isShowMaintenance) && this.userInfo.mobile) {
  747. this.navToPage(`/packageHome/pages/maintenance/create`)
  748. } else {
  749. this.$tips('您暂无维保工程')
  750. }
  751. },
  752. toMaintenanceRecods() {
  753. if (this.isWorkerUser) {
  754. this.navToPage(`/packageWorkorder/pages/orderList?isWb=true`)
  755. } else {
  756. this.navToPage(`/packageWorkorder/pages/userWorkorderList?isWb=1`)
  757. }
  758. },
  759. toMall() {
  760. this.$navToPage(
  761. {
  762. url: '/pages/goods/index'
  763. },
  764. 'switchTab'
  765. )
  766. },
  767. // 获取轮播图列表
  768. async getBannerList() {
  769. return new Promise((resolve, reject) => {
  770. this.$api
  771. .get('/common/list/page', {
  772. pageNum: 1,
  773. pageSize: 10,
  774. state: true,
  775. port: 'SHOP'
  776. })
  777. .then(res => {
  778. this.bannerList = res.data.records
  779. resolve(1)
  780. })
  781. .catch(res => {
  782. reject(0)
  783. })
  784. })
  785. },
  786. // 点击轮播图
  787. clickBanner(index) {
  788. let item = this.bannerList[index]
  789. if (item.type == 3) {
  790. this.toActivityList(item.goodsId)
  791. } else {
  792. this.toGoodsDetail(item.goodsId)
  793. }
  794. },
  795. // 获取扫码活动列表
  796. async getCodeActivityList() {
  797. return new Promise((resolve, reject) => {
  798. this.$api
  799. .post('/promotion/questionnaire/list', {
  800. state: 1
  801. })
  802. .then(res => {
  803. this.codeActivityList = res.data
  804. resolve(1)
  805. })
  806. .catch(res => {
  807. reject(0)
  808. })
  809. })
  810. },
  811. // 获取可领优惠券列表
  812. getCouponList() {
  813. this.$api
  814. .get('/coupon/list/all', {
  815. userId: this.$store.state.user.userId
  816. })
  817. .then(res => {
  818. this.couponList = res.data.filter(item => {
  819. return item.obtainType === 1
  820. })
  821. if (this.couponList && this.couponList.length > 0) {
  822. this.couponDialogImgUrl = this.couponList[0].imgSrc
  823. }
  824. })
  825. },
  826. // 关闭弹窗
  827. closeDialog() {
  828. this.$refs.dialog.step(
  829. {
  830. scale: 0
  831. },
  832. {
  833. duration: 400
  834. }
  835. )
  836. this.$refs.dialog.run(() => {
  837. this.isShowCouponDialog = false
  838. })
  839. this.$refs.dialogBtn.step(
  840. {
  841. scale: 0
  842. },
  843. {
  844. duration: 400
  845. }
  846. )
  847. this.$refs.dialogBtn.run(() => {
  848. this.isShowCouponDialog = false
  849. })
  850. },
  851. // 领取优惠券
  852. handleCoupon() {
  853. let ids = this.couponList.map(item => {
  854. return item.couponId
  855. })
  856. this.$api
  857. .post('/coupon/obtain', {
  858. userId: this.$store.state.user.userId,
  859. couponIds: ids.join(',')
  860. })
  861. .then(res => {
  862. this.closeDialog()
  863. setTimeout(() => {
  864. this.$tips('优惠券领取成功,请及时使用!')
  865. }, 500)
  866. })
  867. },
  868. // 进入商品详情
  869. toGoodsDetail(id) {
  870. if (!id) {
  871. return false
  872. }
  873. this.$navToPage({
  874. url: '/packageGoods/pages/detail?id=' + id
  875. })
  876. },
  877. // 进入活动列表
  878. toActivityList(type) {
  879. this.$navToPage({
  880. url: '/packageGoods/pages/activity?type=' + type
  881. })
  882. },
  883. // 进入扫码活动列表
  884. toCodeActivityList() {
  885. this.$navToPage({
  886. url: '/packageHome/pages/codeActivity/activityList'
  887. })
  888. },
  889. // 绑定用户关系
  890. bindUser(serviceId) {
  891. this.$api
  892. .post('/user/bind', {
  893. serviceId: serviceId,
  894. userId: this.$store.state.user.userId
  895. })
  896. .then(res => {
  897. console.log('绑定成功:' + res.message)
  898. })
  899. },
  900. // 去分类列表
  901. toClassifyList(categoryId) {
  902. this.navToPage(`/packageGoods/pages/classify?categoryId=${categoryId}`)
  903. },
  904. // 点击二级分类
  905. toGoodsList(pid, cid, cname) {
  906. this.$navToPage({
  907. url: `/packageGoods/pages/list?pid=${pid}&cid=${cid}&cname=${cname}`
  908. })
  909. },
  910. // 进入商品详情
  911. toGoodsDetail(id) {
  912. if (!id) {
  913. return false
  914. }
  915. this.$navToPage({
  916. url: '/packageGoods/pages/detail?id=' + id
  917. })
  918. },
  919. // 检查是否有优惠券过期
  920. checkCoupon() {
  921. this.$api.get('/coupon/timeout').then(res => {
  922. if (res.data) {
  923. this.isCouponDialog = true
  924. }
  925. })
  926. },
  927. // 进入我的优惠券
  928. toMyCoupon() {
  929. this.isCouponDialog = false
  930. this.navToPage('/packageMine/pages/coupon/list')
  931. },
  932. // 领取优惠券
  933. receiveCoupon(id) {
  934. if (!this.isLogin) {
  935. return this.navToPage('/pages/login/indexs')
  936. }
  937. if (this.isSmsReceive) {
  938. this.$api
  939. .get('/coupon/obtain')
  940. .then(res => {
  941. this.isReceiveDialog = false
  942. this.$modal({
  943. content: '领取成功',
  944. confirmText: '去看看'
  945. })
  946. .then(() => {
  947. this.toMyCoupon()
  948. })
  949. .catch(() => {})
  950. })
  951. .catch(res => {
  952. this.isReceiveDialog = false
  953. this.$tips(`领取失败:${res.message}`)
  954. })
  955. } else {
  956. this.$api
  957. .get('/coupon/transfer/coupon2', {
  958. userCouponId: this.scene.couponId,
  959. shareUserId: this.scene.serviceId
  960. })
  961. .then(res => {
  962. this.isReceiveDialog = false
  963. this.$modal({
  964. content: '领取成功',
  965. confirmText: '去看看'
  966. })
  967. .then(() => {
  968. this.toMyCoupon()
  969. })
  970. .catch(() => {})
  971. })
  972. .catch(res => {
  973. this.isReceiveDialog = false
  974. this.$tips(`领取失败:${res.message}`)
  975. })
  976. }
  977. },
  978. // 跳转微信公众号链接
  979. toWxLink() {
  980. let link = this.configInfo.pubOfficeAddr
  981. if (!link) return false
  982. this.navToPage('/pages/index/webview?link=' + link)
  983. },
  984. navToPage(url) {
  985. this.$navToPage({
  986. url
  987. })
  988. },
  989. toWorkorder() {
  990. this.$navToPage({
  991. url: `/packageWorkorder/pages/userWorkorderList`
  992. })
  993. }
  994. }
  995. }
  996. </script>
  997. <style lang="scss" scoped>
  998. .all-container {
  999. box-sizing: border-box;
  1000. padding: 1rpx 20rpx 20rpx;
  1001. }
  1002. .top-tooltip {
  1003. width: 390rpx;
  1004. transform-origin: center bottom;
  1005. z-index: 1025;
  1006. position: fixed;
  1007. top: 20rpx;
  1008. right: 20rpx;
  1009. background: rgba(0, 0, 0, 0.8);
  1010. min-width: 150px;
  1011. border-radius: 8rpx;
  1012. padding: 15rpx 20rpx;
  1013. color: #ffffff;
  1014. text-align: justify;
  1015. box-shadow: 0 4rpx 24rpx 0 rgba(0, 0, 0, 0.1);
  1016. word-break: break-all;
  1017. box-sizing: border-box;
  1018. .content {
  1019. display: flex;
  1020. align-items: center;
  1021. justify-content: space-between;
  1022. .left {
  1023. view {
  1024. color: #ffffff;
  1025. font-size: 24rpx;
  1026. display: flex;
  1027. align-items: center;
  1028. &:last-child {
  1029. margin-top: 8rpx;
  1030. }
  1031. }
  1032. .iconfont {
  1033. color: #ffffff;
  1034. font-size: 36rpx;
  1035. margin: 0 4rpx;
  1036. }
  1037. }
  1038. .close {
  1039. flex-shrink: 0;
  1040. font-size: 34rpx;
  1041. color: #ffffff;
  1042. margin-left: 20rpx;
  1043. }
  1044. }
  1045. .arrow {
  1046. top: -6px;
  1047. right: 110rpx;
  1048. margin-right: 3px;
  1049. border-top-width: 0;
  1050. border-bottom-color: #ebeef5;
  1051. border-width: 6px;
  1052. filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
  1053. position: absolute;
  1054. display: block;
  1055. width: 0;
  1056. height: 0;
  1057. border-color: transparent;
  1058. border-style: solid;
  1059. &::after {
  1060. position: absolute;
  1061. display: block;
  1062. width: 0;
  1063. height: 0;
  1064. border-color: transparent;
  1065. border-style: solid;
  1066. top: -12px;
  1067. margin-left: -6px;
  1068. border-top-width: 0;
  1069. border-bottom-color: rgba(0, 0, 0, 0.8);
  1070. content: ' ';
  1071. border-width: 6px;
  1072. }
  1073. }
  1074. }
  1075. .bottom-tooltip {
  1076. z-index: 1025;
  1077. position: fixed;
  1078. bottom: 20rpx;
  1079. left: 20rpx;
  1080. width: 710rpx;
  1081. background: rgba(0, 0, 0, 0.8);
  1082. border-radius: 8rpx;
  1083. display: flex;
  1084. align-items: center;
  1085. justify-content: space-between;
  1086. height: 72rpx;
  1087. padding: 0 20rpx 0 30rpx;
  1088. box-sizing: border-box;
  1089. .left {
  1090. display: flex;
  1091. align-items: center;
  1092. .close {
  1093. font-size: 34rpx;
  1094. color: #ffffff;
  1095. }
  1096. .text {
  1097. font-size: 24rpx;
  1098. color: #ffffff;
  1099. margin-left: 16rpx;
  1100. }
  1101. }
  1102. .btn {
  1103. font-size: 24rpx;
  1104. color: #ffffff;
  1105. background: #ff3f42;
  1106. padding: 0 16rpx;
  1107. height: 48rpx;
  1108. line-height: 48rpx;
  1109. border-radius: 48rpx;
  1110. }
  1111. }
  1112. .home-title {
  1113. display: flex;
  1114. align-items: center;
  1115. justify-content: space-between;
  1116. .left {
  1117. font-size: 34rpx;
  1118. color: $main-font;
  1119. font-weight: bold;
  1120. }
  1121. .right {
  1122. display: flex;
  1123. align-items: center;
  1124. .text {
  1125. color: $sec-font;
  1126. font-size: 28rpx;
  1127. }
  1128. .iconfont {
  1129. font-size: 24rpx;
  1130. color: $sec-font;
  1131. margin-left: 8rpx;
  1132. }
  1133. }
  1134. }
  1135. .home-container {
  1136. background: #f5f5f5;
  1137. }
  1138. .all-container {
  1139. padding: 1rpx 20rpx 20rpx;
  1140. }
  1141. .card {
  1142. @include zj-card;
  1143. padding: 30rpx;
  1144. margin-top: 20rpx;
  1145. background: linear-gradient(180deg, #f3f9fe 0%, #ffffff 100%);
  1146. }
  1147. .swiper-container {
  1148. @include zj-card;
  1149. margin-top: 20rpx;
  1150. padding: 0 20rpx;
  1151. ::v-deep .u-swiper {
  1152. height: 350rpx !important;
  1153. .u-swiper__wrapper {
  1154. height: 350rpx !important;
  1155. }
  1156. .u-swiper__wrapper__item__wrapper__image {
  1157. height: 350rpx !important;
  1158. }
  1159. }
  1160. }
  1161. .swiper2-container {
  1162. @include zj-card;
  1163. position: relative;
  1164. margin-top: 20rpx;
  1165. ::v-deep .u-swiper {
  1166. height: 188rpx !important;
  1167. .u-swiper__wrapper {
  1168. height: 188rpx !important;
  1169. }
  1170. .u-swiper__wrapper__item__wrapper__image {
  1171. height: 188rpx !important;
  1172. }
  1173. }
  1174. }
  1175. .noticebar-container {
  1176. margin-top: 30rpx;
  1177. }
  1178. .service-container {
  1179. padding: 0;
  1180. .home-title {
  1181. padding: 30rpx 30rpx 0;
  1182. }
  1183. .list {
  1184. display: flex;
  1185. margin-top: 40rpx;
  1186. flex-wrap: wrap;
  1187. padding-bottom: 30rpx;
  1188. .item {
  1189. width: 25%;
  1190. display: flex;
  1191. flex-direction: column;
  1192. align-items: center;
  1193. box-sizing: border-box;
  1194. margin-bottom: 20rpx;
  1195. &:nth-child(5),
  1196. &:nth-child(6),
  1197. &:nth-child(7),
  1198. &:nth-child(8) {
  1199. margin-bottom: 0;
  1200. }
  1201. image {
  1202. width: 76rpx;
  1203. height: 76rpx;
  1204. }
  1205. text {
  1206. font-size: 26rpx;
  1207. font-weight: 500;
  1208. margin-top: 16rpx;
  1209. }
  1210. }
  1211. }
  1212. }
  1213. .share-container {
  1214. .list {
  1215. display: flex;
  1216. margin-top: 40rpx;
  1217. .item {
  1218. flex: 1;
  1219. padding: 20rpx;
  1220. border-radius: 12rpx;
  1221. display: flex;
  1222. align-items: center;
  1223. image {
  1224. flex-shrink: 0;
  1225. width: 88rpx;
  1226. height: 88rpx;
  1227. }
  1228. .text {
  1229. margin-left: 20rpx;
  1230. font-size: 32rpx;
  1231. }
  1232. &:first-child {
  1233. margin-right: 30rpx;
  1234. background: #e8f5fe;
  1235. .text {
  1236. color: #6ca2f8;
  1237. }
  1238. }
  1239. &:last-child {
  1240. background: #fff9f4;
  1241. .text {
  1242. color: #d87e3b;
  1243. }
  1244. }
  1245. }
  1246. }
  1247. }
  1248. .order-container {
  1249. .list {
  1250. display: flex;
  1251. justify-content: space-between;
  1252. margin-top: 40rpx;
  1253. .item {
  1254. display: flex;
  1255. flex-direction: column;
  1256. align-items: center;
  1257. box-sizing: border-box;
  1258. padding: 0 10rpx;
  1259. image {
  1260. width: 76rpx;
  1261. height: 76rpx;
  1262. }
  1263. text {
  1264. font-size: 26rpx;
  1265. font-weight: 500;
  1266. margin-top: 16rpx;
  1267. }
  1268. }
  1269. }
  1270. }
  1271. .other-container {
  1272. padding: 30rpx 0;
  1273. .home-title {
  1274. padding: 0 30rpx;
  1275. }
  1276. .list {
  1277. display: flex;
  1278. margin-top: 40rpx;
  1279. .item {
  1280. width: 25%;
  1281. display: flex;
  1282. flex-direction: column;
  1283. align-items: center;
  1284. box-sizing: border-box;
  1285. padding: 0 10rpx;
  1286. image {
  1287. width: 76rpx;
  1288. height: 76rpx;
  1289. }
  1290. text {
  1291. font-size: 26rpx;
  1292. font-weight: 500;
  1293. margin-top: 16rpx;
  1294. }
  1295. }
  1296. }
  1297. }
  1298. .contact-container {
  1299. .list {
  1300. margin-top: 20rpx;
  1301. .item {
  1302. display: flex;
  1303. align-items: center;
  1304. height: 100rpx;
  1305. background: none;
  1306. padding: 0;
  1307. &.bb {
  1308. border-bottom: 1px solid #eaeaea;
  1309. }
  1310. &::after {
  1311. border: none;
  1312. }
  1313. image {
  1314. width: 44rpx;
  1315. height: 44rpx;
  1316. margin-right: 20rpx;
  1317. }
  1318. .title {
  1319. flex: 1;
  1320. font-size: 30rpx;
  1321. font-weight: 500;
  1322. text-align: left;
  1323. line-height: 1;
  1324. }
  1325. .iconfont {
  1326. font-size: 26rpx;
  1327. color: $sec-font;
  1328. }
  1329. }
  1330. .wrap1 {
  1331. border-bottom: 1px solid #eaeaea;
  1332. padding-bottom: 20rpx;
  1333. padding-left: 60rpx;
  1334. .it {
  1335. padding: 20rpx 0;
  1336. border-bottom: 1px solid #f5f5f5;
  1337. &:last-child {
  1338. border-bottom: none;
  1339. }
  1340. .top {
  1341. display: flex;
  1342. align-items: center;
  1343. justify-content: space-between;
  1344. .left {
  1345. font-size: 28rpx;
  1346. }
  1347. .right {
  1348. .iconfont {
  1349. font-size: 36rpx;
  1350. color: $theme-color;
  1351. }
  1352. }
  1353. }
  1354. .address {
  1355. margin-top: 12rpx;
  1356. font-size: 28rpx;
  1357. color: $sec-font;
  1358. }
  1359. }
  1360. }
  1361. .wrap2 {
  1362. display: flex;
  1363. align-items: center;
  1364. justify-content: space-between;
  1365. padding-left: 60rpx;
  1366. .left {
  1367. font-size: 28rpx;
  1368. }
  1369. .right {
  1370. .iconfont {
  1371. font-size: 36rpx;
  1372. color: $theme-color;
  1373. }
  1374. }
  1375. }
  1376. }
  1377. }
  1378. .dialog-container {
  1379. position: fixed;
  1380. z-index: 1000000;
  1381. top: 0;
  1382. left: 0;
  1383. width: 100%;
  1384. height: 100vh;
  1385. display: flex;
  1386. align-items: center;
  1387. justify-content: center;
  1388. flex-direction: column;
  1389. background: rgba($color: #000000, $alpha: 0.6);
  1390. .image {
  1391. width: 600rpx;
  1392. display: block;
  1393. border-radius: 20rpx;
  1394. margin-top: 40rpx;
  1395. }
  1396. .iconfont {
  1397. font-size: 68rpx;
  1398. color: #ffffff;
  1399. margin-top: 40rpx;
  1400. }
  1401. }
  1402. </style>
  1403. <style>
  1404. ::-webkit-scrollbar {
  1405. display: none;
  1406. width: 0 !important;
  1407. height: 0 !important;
  1408. -webkit-appearance: none;
  1409. background: transparent;
  1410. color: transparent;
  1411. }
  1412. </style>