index.vue 42 KB

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