my.vue 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069
  1. <template>
  2. <view>
  3. <!-- 公共组件-每个页面必须引入 -->
  4. <public-module></public-module>
  5. <!-- 头部信息Start -->
  6. <view class="headers " :style="headerStyle">
  7. <view class="dis a-c j-c">
  8. <text>我的</text>
  9. <image @tap="tool" src="/static/image/my/Frame.png" mode=""></image>
  10. </view>
  11. </view>
  12. <view class="Personnel">
  13. <image src="../../static/image/my/decor1.png" class="decor" mode="widthFix"></image>
  14. <view class="promotion dis a-c j-c " @click="promotionQrde">
  15. <image src="../../static/image/my/qrcode.png" mode="widthFix"></image>
  16. <text>我的推广码</text>
  17. </view>
  18. <view class="dis a-c" @tap.stop="openDetail">
  19. <image :src="avatar" class="avatar" mode=""></image>
  20. <view class="info dis f-c a-start">
  21. <view class="dis a-end">
  22. <view class="dis a-c">
  23. <text
  24. style="margin-right: 10px;color: #082E5D;font-size: 18px;font-weight: bold;">{{userInfo.sysUser.name}}</text>
  25. <image v-if="userInfo.sysUser.status=='1'" src="../../static/image/my/renzheng.png" mode="">
  26. </image>
  27. </view>
  28. <view v-if="userInfo.sysUser.status!='1'" class="cloudAlert dis a-c j-c"
  29. @click.stop="cloudAlert">
  30. {{getStatusInfo(userInfo.sysUser.status,userInfo.sysUser.factorVerify,userInfo.sysUser.managementSource).message}}
  31. </view>
  32. </view>
  33. <text>专属领地 开心溢满 绽放璀璨</text>
  34. </view>
  35. </view>
  36. <view class="my-wallet">
  37. <view class="wallet-body dis f-c">
  38. <view class="dis a-c j-s route">
  39. <view class="bg dis f-c" @tap="accountTool('/pages/wallet/wallet')">
  40. <text>我的钱包</text>
  41. <view class="dis a-c details" style="margin-top: 7rpx;">
  42. <text>查看详情</text>
  43. <image src="../../static/image/my/qianbao-icon.png" mode=""></image>
  44. </view>
  45. <image class="imgIcon" src="../../static/image/my/qianbao.png" mode=""></image>
  46. <image class="shape" src="../../static/image/my/qianbao-shape.png" mode=""></image>
  47. </view>
  48. <view class="bg dis f-c" @tap="accountTool('/pages/wallet/bankCard')">
  49. <text>我的银行卡</text>
  50. <view class="dis a-c details" style="margin-top: 7rpx;">
  51. <text>查看详情</text>
  52. <image src="../../static/image/my/ka-icon.png" mode=""></image>
  53. </view>
  54. <image class="imgIcon" src="../../static/image/my/ka.png" mode=""></image>
  55. <image class="shape" src="../../static/image/my/ka-shape.png" mode=""></image>
  56. </view>
  57. <view class="bg dis f-c" @tap="accountTool()">
  58. <text>我的充值</text>
  59. <view class="dis a-c details" style="margin-top: 7rpx;">
  60. <text>查看详情</text>
  61. <image src="../../static/image/my/chongzhi-icon.png" mode=""></image>
  62. </view>
  63. <image class="imgIcon" src="../../static/image/my/chongzhi.png" mode=""></image>
  64. <image class="shape" src="../../static/image/my/chongzhi-shape.png" mode=""></image>
  65. </view>
  66. </view>
  67. </view>
  68. </view>
  69. </view>
  70. <view class="my-tools mb-2" style="margin-top: -126rpx;">
  71. <view class="order-body dis f-c ">
  72. <view class="header dis a-c">
  73. <view class="tag"></view>
  74. <text>我的工具</text>
  75. </view>
  76. <!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
  77. <uni-swiper-dot :info="info" :current="current" field="content" :mode="mode" :dots-styles="dotsStyles">
  78. <swiper style="height:calc(324upx)" class="swiper" @change="change">
  79. <swiper-item class="swiper" v-for="(count,cindex) of toolsListLength" :key="count">
  80. <uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
  81. @change="toTools($event,'toolsList')">
  82. <uni-grid-item class="" v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
  83. v-for="(item ,index) in toolsList" :index="index" :key="item.text">
  84. <view class="grid-item-box dis a-c j-c f-c">
  85. <image :src="item.image" mode=""
  86. style="width: 30px;height: 30px;margin: 10px 9px 4px;"></image>
  87. <text class="text">{{item.text}}</text>
  88. <u-badge v-if="item.text=='客户管理'" size="mini" type="error" :count="InsureCount"
  89. :offset="[10, 10]"></u-badge>
  90. </view>
  91. </uni-grid-item>
  92. </uni-grid>
  93. </swiper-item>
  94. </swiper>
  95. </uni-swiper-dot>
  96. </view>
  97. </view>
  98. <!-- 我的工具End -->
  99. <!-- 售后管理Start -->
  100. <view class="my-tools mb-2">
  101. <view class="order-body dis f-c">
  102. <view class="header dis a-c">
  103. <view class="tag"></view>
  104. <text>后台管理</text>
  105. </view>
  106. <!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
  107. <swiper style="height:calc(162upx)" class="swiper" :indicator-dots="(serviceListLength!=1)?true:false">
  108. <swiper-item class="swiper dis a-c" v-for="(count,cindex) of serviceListLength" :key="count">
  109. <uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
  110. @change="toTools($event,'serviceList')">
  111. <uni-grid-item v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
  112. v-for="(item ,index) in serviceList" :index="index" :key="item.text">
  113. <view class="grid-item-box dis a-c f-c">
  114. <image :src="item.image" mode="" style="width: 24px;height: 24px;margin: 5px 12px;">
  115. </image>
  116. <text class="text">{{item.text}}</text>
  117. </view>
  118. </uni-grid-item>
  119. </uni-grid>
  120. </swiper-item>
  121. </swiper>
  122. </view>
  123. </view>
  124. <!-- 售后管理End -->
  125. <!-- 我的关于Start -->
  126. <view class="my-tools mb-2">
  127. <view class="order-body dis f-c">
  128. <view class="header dis a-c">
  129. <view class="tag"></view>
  130. <text>关于掌柜</text>
  131. </view>
  132. <view class="shopKeeper mt-2">
  133. <view class="item dis a-c j-s" v-for="(item,index) in aboutList" :key="index"
  134. @click="toTools(index,'aboutList')">
  135. <view class="dis a-c ">
  136. <image :src="item.image" mode=""></image>
  137. <text>{{item.text}}</text>
  138. </view>
  139. <image :src="item.icon" mode="" style="width: 15px;height: 15px;"></image>
  140. </view>
  141. </view>
  142. </view>
  143. </view>
  144. <!-- 我的关于End -->
  145. <!-- 菜单Start -->
  146. <!-- <block v-for="(item,index) in menusList" :key="index">
  147. <my-list-item :item="item" :index="index"></my-list-item>
  148. </block> -->
  149. <!-- 菜单End -->
  150. <u-modal v-model="modalshow" :show-title="false">
  151. <view class="slot-content dis a-c j-c" style="padding: 20px;">
  152. <img :src="promoImage" alt="" style="width: 150px;height: 150px;" />
  153. </view>
  154. </u-modal>
  155. <service-widget @btnClick="btn_click"></service-widget>
  156. <auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
  157. </view>
  158. </template>
  159. <script>
  160. import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
  161. import store from '@/store';
  162. import {
  163. mapState,
  164. mapMutations
  165. } from "vuex"
  166. import zPopup from '@/components/common/z-popup.vue'
  167. import {
  168. pathToBase64,
  169. base64ToPath
  170. } from '@/common/image-tools-base64.js';
  171. import myListItem from "@/components/modules/my/my-list-item.vue";
  172. import QR from "@/common/wxqrcode.js"
  173. export default {
  174. components: {
  175. zPopup,
  176. myListItem,
  177. authModal,
  178. },
  179. data() {
  180. return {
  181. authShow: false,
  182. promoImage: "",
  183. modalshow: false,
  184. info: ["", ""],
  185. dotsStyles: {
  186. backgroundColor: '#E5E5E5',
  187. selectedBackgroundColor: '#0052FF',
  188. },
  189. current: 0,
  190. mode: 'default',
  191. headerStyle: {
  192. backgroundColor: '',
  193. backgroundImage: '',
  194. backgroundSize: '',
  195. backgroundPosition: '',
  196. boxShadow: ''
  197. // 其他样式属性...
  198. },
  199. showBackground: false,
  200. prevScrollTop: 0,
  201. popupShow: false, //头像是否展示
  202. mystatusText: "已认证",
  203. prodetIntroShow: true, //显示滚动公告
  204. avatar: "",
  205. orderTypeList: [{
  206. icon: 'icon-jixurenwu',
  207. orderstatus: 0,
  208. text: '报价中',
  209. badge: '0',
  210. type: "primary",
  211. orderStage: 0,
  212. iconColor: '#0696FF'
  213. },
  214. {
  215. icon: 'icon-hebaozhong',
  216. orderstatus: 1,
  217. text: '待核保',
  218. badge: '0',
  219. type: "success",
  220. orderStage: 1,
  221. iconColor: '#FFA22A'
  222. },
  223. {
  224. icon: 'icon-querenzhifu',
  225. orderstatus: 2,
  226. text: '待缴费',
  227. badge: '0',
  228. type: "error",
  229. orderStage: 2,
  230. },
  231. {
  232. icon: 'icon-peisong',
  233. orderstatus: 3,
  234. text: '已承保',
  235. badge: '0',
  236. type: "error",
  237. orderStage: 3,
  238. },
  239. ],
  240. toolsList: [{
  241. image: '/static/image/my/icon1.png',
  242. text: '闪电增员',
  243. url: '/pages/tools/addStaff/addStaff',
  244. },
  245. {
  246. image: '/static/image/my/icon2.png',
  247. text: '团队管理',
  248. url: '/pages/tools/team/team1',
  249. },
  250. {
  251. image: '/static/image/my/icon3.png',
  252. text: '客户管理',
  253. url: '/pages/tools/customer/customer',
  254. },
  255. {
  256. image: '/static/image/my/icon4.png',
  257. text: '业绩管理',
  258. url: '/pages/tools/achievement/achievement',
  259. },
  260. {
  261. image: '/static/image/my/icon5.png',
  262. text: '报案电话',
  263. url: '/pages/tools/insuranceClaims/insuranceClaims',
  264. },
  265. {
  266. image: '/static/image/my/icon6.png',
  267. text: '掌柜秘书',
  268. url: '/pages/tools/messageReminder/messageReminder',
  269. },
  270. {
  271. image: '/static/image/my/icon7.png',
  272. text: '保单管理',
  273. url: '/pages/tools/policy/policy',
  274. },
  275. {
  276. image: '/static/image/my/icon8.png',
  277. text: '计算器',
  278. url: '/pages/tools/calculator/calculator',
  279. },
  280. {
  281. image: '/static/image/my/icon9.png',
  282. text: '海报管理',
  283. url: '/pages/tools/poster/poster',
  284. },
  285. {
  286. image: '/static/image/my/icon10.png',
  287. text: '优惠劵',
  288. url: '/pages/tools/coupon/coupon',
  289. },
  290. {
  291. image: '/static/image/my/icon11.png',
  292. text: '掌柜商城',
  293. },
  294. {
  295. image: '/static/image/my/icon12.png',
  296. text: '车险之家',
  297. url: "/pages/carInsure/entry",
  298. },
  299. {
  300. image: '/static/image/my/icon13.png',
  301. text: '任务中心',
  302. url: "/pages/ad/index",
  303. }
  304. ],
  305. aboutList: [{
  306. image: '/static/image/my/Frame5.png',
  307. text: '常见问题',
  308. url: '/pages/set/question',
  309. icon: '/static/image/my/right-jiantou.png'
  310. },
  311. {
  312. image: '/static/image/my/Frame6.png',
  313. text: '意见反馈',
  314. url: '',
  315. icon: '/static/image/my/right-jiantou.png'
  316. },
  317. {
  318. image: '/static/image/my/Frame7.png',
  319. text: '联系客服',
  320. tel: '4006333016',
  321. icon: '/static/image/my/right-jiantou.png'
  322. },
  323. {
  324. image: '/static/image/my/Frame8.png',
  325. text: '关于我们',
  326. url: '/pages/set/about',
  327. icon: '/static/image/my/right-jiantou.png'
  328. }
  329. ],
  330. serviceList: [{
  331. image: '/static/image/my/Frame1.png',
  332. text: '发票申请',
  333. popup: '此功能还未开放,有需要请联系客服',
  334. },
  335. {
  336. image: '/static/image/my/Frame2.png',
  337. text: '保单批改',
  338. popup: '此功能还未开放,有需要请联系客服',
  339. },
  340. {
  341. image: '/static/image/my/Frame3.png',
  342. text: '申请退保',
  343. popup: '此功能还未开放,有需要请联系客服',
  344. },
  345. {
  346. image: '/static/image/my/Frame4.png',
  347. text: '自助理赔',
  348. popup: '此功能还未开放,有需要请联系客服',
  349. }
  350. ],
  351. menusList: [{
  352. icon: "shangcheng",
  353. name: "掌柜商场",
  354. clicktype: "nothing",
  355. url: "",
  356. auth: true
  357. },
  358. {
  359. icon: "chexiandingdan",
  360. name: "车险之家",
  361. clicktype: "navigateTo",
  362. url: "/pages/carInsure/entry",
  363. auth: true
  364. }
  365. ],
  366. InsureCount: 0,
  367. }
  368. },
  369. computed: {
  370. ...mapState(['userInfo', "userCheckInfo"]),
  371. toolsListLength() {
  372. // let length = Math.ceil(this.toolsList.length / 8);
  373. let list = ["1", "2"]
  374. return list;
  375. },
  376. aboutListLength() {
  377. return Math.ceil(this.aboutList.length / 4);
  378. },
  379. serviceListLength() {
  380. return Math.ceil(this.serviceList.length / 4);
  381. }
  382. },
  383. async onShow() {
  384. await this.loginUser();
  385. await this.getInsureCount();
  386. if (this.userInfo.sysUser.headSculpture) {
  387. this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
  388. } else {
  389. this.avatar = "/static/image/my/avatar1.png"
  390. }
  391. if (this.userInfo.sysUser.status == '1') {
  392. this.mystatusText = "已认证";
  393. } else if (this.userStatus == '2') {
  394. this.mystatusText = "未认证";
  395. }
  396. },
  397. async onPullDownRefresh() {
  398. await this.loginUser();
  399. uni.stopPullDownRefresh();
  400. },
  401. async onload() {
  402. await this.getInsureCount();
  403. },
  404. onPageScroll(e) {
  405. this.handleScroll(e);
  406. },
  407. mounted() {
  408. uni.pageScrollTo({
  409. scrollTop: 0,
  410. duration: 0
  411. });
  412. uni.$on('scroll', this.handleScroll);
  413. },
  414. destroyed() {
  415. uni.$off('scroll', this.handleScroll);
  416. },
  417. methods: {
  418. ...mapMutations(['setUserModules', 'setOrderType', 'setOrderStage']),
  419. //头部颜色变化js
  420. btn_click() {
  421. uni.navigateTo({
  422. url: '/pages/chat/chat'
  423. })
  424. },
  425. promotionQrde() {
  426. uni.navigateTo({
  427. url: '/pages/tools/addStaff/addStaff'
  428. })
  429. },
  430. async loginUser() {
  431. let userInfoRes = await this.$http.get('/user/loginUser')
  432. store.commit('setUserModules', {
  433. title: 'userInfo',
  434. data: {
  435. sysUser: {
  436. ...userInfoRes.data
  437. }
  438. }
  439. })
  440. },
  441. getStatusInfo(status, factorVerify, managementSource) {
  442. // 定义状态与页面路径及消息的映射
  443. const statusInfo = {
  444. 0: {
  445. page: '',
  446. message: '您还未实名认证 请去实名认证',
  447. status: 0,
  448. },
  449. 2: {
  450. page: '/pages/user/authResult1',
  451. message: '入司资料审核中 请耐心等待',
  452. status: 2,
  453. },
  454. 3: {
  455. page: '/pages/user/practitionerInfo',
  456. message: '入司资料审核不通过,请查看详情',
  457. status: 3,
  458. },
  459. 8: {
  460. page: '/pages/user/practitionerInfo',
  461. message: '入司待补充资料 请去补充资料',
  462. status: 8,
  463. },
  464. };
  465. const factorVerifyInfo = {
  466. 2: {
  467. page: '/pages/user/authInfo',
  468. message: '您的实名认证失败,请查看详情',
  469. status: 2,
  470. },
  471. };
  472. if (status == '0' && managementSource == '2') {
  473. if (factorVerify == '2') {
  474. return factorVerifyInfo[factorVerify];
  475. } else {
  476. return statusInfo[status];
  477. }
  478. } else {
  479. return statusInfo[status];
  480. }
  481. },
  482. cloudAlert() {
  483. let info = this.getStatusInfo(this.userInfo.sysUser.status, this.userInfo.sysUser.factorVerify, this
  484. .userInfo.sysUser
  485. .managementSource)
  486. switch (info.status) {
  487. case 0:
  488. this.authShow = true;
  489. break;
  490. case 2:
  491. case 3:
  492. case 8:
  493. uni.navigateTo({
  494. url: info.page
  495. })
  496. break;
  497. }
  498. },
  499. change(e) {
  500. this.current = e.detail.current;
  501. },
  502. async getInsureCount() {
  503. let res = await this.$http.post('/insurance/order/getExpirationInsureCount');
  504. if (res.code == '200') {
  505. this.InsureCount = res.data;
  506. }
  507. },
  508. handleScroll(e) {
  509. const scrollTop = e.scrollTop;
  510. if (scrollTop > this.prevScrollTop) {
  511. // 向下滚动
  512. this.showBackground = true; // 显示背景图
  513. } else if (scrollTop < 50) {
  514. // 在顶部附近,隐藏背景图
  515. this.showBackground = false;
  516. } else {
  517. // 向上滚动
  518. this.showBackground = true; // 显示背景图
  519. }
  520. this.headerStyle.backgroundColor = this.showBackground ? '#fff' : 'transparent';
  521. this.headerStyle.backgroundImage = this.showBackground ? 'url("/static/image/my/banner.png")' : '';
  522. this.headerStyle.backgroundSize = this.showBackground ? 'cover' : '';
  523. this.headerStyle.backgroundPosition = this.showBackground ? 'center' : '';
  524. this.prevScrollTop = scrollTop;
  525. },
  526. tool() {
  527. uni.navigateTo({
  528. url: "/pages/set/set"
  529. })
  530. },
  531. //去工具页面
  532. async toTools(e, listName) {
  533. let index = e.detail ? e.detail.index : e;
  534. if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
  535. if (this.userInfo.sysUser.factorVerify == '2') {
  536. uni.navigateTo({
  537. url: "/pages/user/authInfo"
  538. })
  539. } else {
  540. this.authShow = true;
  541. }
  542. } else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
  543. uni.navigateTo({
  544. url: "/pages/user/practitionerInfo"
  545. })
  546. } else if (this.userInfo.sysUser.status == '2') {
  547. uni.navigateTo({
  548. url: "/pages/user/authResult1"
  549. })
  550. } else if (this.userInfo.sysUser.status == '1') {
  551. if (this[listName][index].url) {
  552. this.navigate({
  553. url: this[listName][index].url
  554. }, "navigateTo", true)
  555. } else if (this[listName][index].tel) {
  556. uni.makePhoneCall({
  557. phoneNumber: this[listName][index].tel,
  558. })
  559. } else if (this[listName][index].popup) {
  560. let res = await this.$http.get('/sys/qy/wechat/find/picture');
  561. if (res.code == '200') {
  562. this.promoImage = QR.createQrCodeImg(res.data.wechatPictureUrl, {
  563. size: parseInt(200) //二维码大小
  564. })
  565. this.modalshow = true;
  566. } else {
  567. uni.showModal({
  568. showCancel: false,
  569. content: this[listName][index].popup,
  570. });
  571. }
  572. } else {
  573. uni.showToast({
  574. title: this[listName][index].text + '更新中...',
  575. icon: 'none'
  576. })
  577. }
  578. }
  579. },
  580. async accountTool(path) {
  581. if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
  582. if (this.userInfo.sysUser.factorVerify == '2') {
  583. uni.navigateTo({
  584. url: "/pages/user/authInfo"
  585. })
  586. } else {
  587. this.authShow = true;
  588. }
  589. } else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
  590. uni.navigateTo({
  591. url: "/pages/user/practitionerInfo"
  592. })
  593. } else if (this.userInfo.sysUser.status == '2') {
  594. uni.navigateTo({
  595. url: "/pages/user/authResult1"
  596. })
  597. } else if (this.userInfo.sysUser.status == '1') {
  598. if (path) {
  599. if (path == '/pages/wallet/bankCard') {
  600. let res = await this.$http.post('/userBank/getUserBankList', {
  601. auditStatus: '',
  602. });
  603. if (!res.data.length) {
  604. this.navigate({
  605. url: '/pages/wallet/bindBank',
  606. complete: () => {
  607. setTimeout(() => {
  608. uni.showToast({
  609. title: '请先绑定银行卡',
  610. duration: 3000,
  611. icon: "none"
  612. });
  613. }, 500);
  614. }
  615. }, "navigateTo", true)
  616. } else {
  617. this.navigate({
  618. url: path,
  619. }, "navigateTo", true)
  620. }
  621. } else {
  622. this.navigate({
  623. url: path,
  624. }, "navigateTo", true)
  625. }
  626. } else {
  627. uni.showToast({
  628. title: '功能待开发...',
  629. icon: "none"
  630. });
  631. }
  632. }
  633. },
  634. //跳转个人信息页面
  635. openDetail() {
  636. this.navigate({
  637. url: "/pages/user/userInfo"
  638. }, "navigateTo", false)
  639. },
  640. }
  641. }
  642. </script>
  643. <style lang="scss" scoped>
  644. @import '@/style/mixin.scss';
  645. page {
  646. background-color: #EEF1F7;
  647. }
  648. .headers {
  649. position: fixed;
  650. top: 0;
  651. left: 0;
  652. height: auto;
  653. width: 100%;
  654. z-index: 999999;
  655. padding: 16px;
  656. padding-top: 50px;
  657. >view {
  658. width: 100%;
  659. height: 100%;
  660. position: relative;
  661. }
  662. image {
  663. position: absolute;
  664. right: 0;
  665. width: 20px;
  666. height: 20px;
  667. }
  668. text {
  669. font-size: 18px;
  670. font-weight: bold;
  671. color: #000;
  672. }
  673. }
  674. .Personnel {
  675. height: auto;
  676. width: 100%;
  677. background: #fff;
  678. background-image: url("/static/image/my/banner.png");
  679. background-size: 100% 100%;
  680. padding: 110px 16px 73px 16px;
  681. position: relative;
  682. .decor {
  683. position: absolute;
  684. width: 230rpx;
  685. height: 210rpx;
  686. right: 21px;
  687. top: 58px;
  688. }
  689. .promotion {
  690. position: absolute;
  691. background: rgba(0, 82, 255, 0.7);
  692. border-radius: 50px 0px 0px 50px;
  693. right: 0;
  694. top: 114px;
  695. color: #fff;
  696. font-size: 20rpx;
  697. padding: 9rpx 10rpx;
  698. line-height: 1;
  699. letter-spacing: 1px;
  700. image {
  701. width: 13px;
  702. height: 13px;
  703. margin-right: 2px;
  704. }
  705. }
  706. .avatar {
  707. width: 42px;
  708. height: 42px;
  709. border-radius: 50%;
  710. }
  711. .info {
  712. margin-left: 12px;
  713. text {
  714. margin-right: 10px;
  715. color: #082E5D;
  716. font-size: 18px;
  717. font-weight: bold;
  718. }
  719. text:last-child {
  720. color: rgba(8, 46, 93, 0.9);
  721. font-size: 22rpx;
  722. }
  723. image {
  724. width: 95rpx;
  725. height: 40rpx;
  726. }
  727. .cloudAlert {
  728. position: relative;
  729. width: 85px;
  730. background: rgba(0, 0, 0, 0.6);
  731. border-radius: 2px;
  732. margin-left: 10px;
  733. color: #fff;
  734. font-size: 22rpx;
  735. padding: 3px 4px;
  736. line-height: 1.5;
  737. }
  738. .cloudAlert::before {
  739. content: '';
  740. position: absolute;
  741. top: 40%;
  742. /* 箭头垂直位置 */
  743. left: -10px;
  744. /* 箭头左侧位置 */
  745. border-width: 5px;
  746. /* 箭头大小 */
  747. border-style: solid;
  748. /* 实心箭头 */
  749. border-color: transparent rgba(0, 0, 0, 0.6) transparent transparent;
  750. /* 左边框有色,其他透明 */
  751. }
  752. }
  753. }
  754. .my-tools {
  755. padding: 0 16px;
  756. position: relative;
  757. .header {
  758. padding: 10px 0 0;
  759. font-size: 16px;
  760. color: #232832;
  761. font-weight: bold;
  762. .tag {
  763. width: 4px;
  764. height: 16px;
  765. background: #0052FF;
  766. border-radius: 0 6px 6px 0;
  767. margin-right: 11px;
  768. }
  769. }
  770. .order-body {
  771. background: #fff;
  772. box-shadow: 0px 4px 10px 0px #DAE3F4;
  773. border-radius: 6px;
  774. }
  775. .shopKeeper {
  776. padding: 0 15px;
  777. .item {
  778. padding: 25rpx 0;
  779. color: #333;
  780. font-size: 28rpx;
  781. border-top: 1px solid #EEEEEE;
  782. image {
  783. width: 40rpx;
  784. height: 40rpx;
  785. margin-right: 10px;
  786. }
  787. }
  788. }
  789. }
  790. /* 产品介绍Start */
  791. .prodet-intro {
  792. width: 100%;
  793. height: 70upx;
  794. background-color: #333;
  795. color: #3ae;
  796. white-space: nowrap;
  797. border-top: 1upx solid #666;
  798. border-bottom: 1upx solid #666;
  799. box-sizing: border-box;
  800. }
  801. .prodet-intro>view:nth-of-type(1) {
  802. width: 60upx;
  803. height: 100%;
  804. flex-shrink: 1;
  805. padding-left: 20upx;
  806. font-size: 36upx;
  807. }
  808. .prodet-intro>view:nth-of-type(2) {
  809. overflow: hidden;
  810. line-height: 70upx;
  811. font-size: 24upx;
  812. }
  813. .prodet-intro>view:nth-of-type(3) {
  814. width: 60upx;
  815. padding-right: 20upx;
  816. flex-shrink: 1;
  817. height: 100%;
  818. font-size: 36upx;
  819. }
  820. .animate {
  821. padding-left: 40rpx;
  822. display: inline-block;
  823. white-space: nowrap;
  824. animation: 20s wordsLoop linear infinite normal;
  825. }
  826. @keyframes wordsLoop {
  827. 0% {
  828. transform: translateX(750rpx);
  829. -webkit-transform: translateX(750rpx);
  830. }
  831. 100% {
  832. transform: translateX(-100%);
  833. -webkit-transform: translateX(-100%);
  834. }
  835. }
  836. /* 产品介绍End */
  837. /* 个人信息Start */
  838. /* 个人信息End */
  839. /* 我的订单Start */
  840. .my-orders {
  841. display: flex;
  842. justify-content: center;
  843. align-items: center;
  844. }
  845. .my-orders,
  846. .wallet-body {
  847. position: relative;
  848. width: 95%;
  849. height: 180upx;
  850. background: #FFFFFF;
  851. border-radius: 20upx;
  852. box-shadow: 0upx 0upx 10upx #efeff4;
  853. overflow: hidden;
  854. }
  855. /* 我的订单End */
  856. /* 我的钱包Start */
  857. .my-wallet {
  858. .wallet-body {
  859. width: 100%;
  860. height: auto;
  861. padding: 12px;
  862. background: #FFFFFF;
  863. box-shadow: 0px 4px 10px 0px #DAE3F4;
  864. border-radius: 6px;
  865. margin-top: 10px;
  866. .route {
  867. .bg {
  868. width: 31%;
  869. border-radius: 4px;
  870. padding: 10px 6px;
  871. position: relative;
  872. background: linear-gradient(180deg, #FFF1E3 0%, #FCF6EF 100%);
  873. .imgIcon {
  874. position: absolute;
  875. right: 0;
  876. bottom: 6rpx;
  877. width: 68rpx;
  878. height: 72rpx;
  879. }
  880. .shape {
  881. position: absolute;
  882. left: 12rpx;
  883. bottom: 0;
  884. width: 50rpx;
  885. height: 18rpx;
  886. }
  887. >text {
  888. color: #FF9520;
  889. font-size: 26rpx;
  890. font-weight: bold;
  891. }
  892. .details {
  893. margin-top: 7rpx;
  894. >text {
  895. color: #FFB767;
  896. font-size: 18rpx;
  897. margin-right: 4rpx;
  898. }
  899. image {
  900. width: 16rpx;
  901. height: 16rpx;
  902. }
  903. }
  904. }
  905. .bg:nth-child(2) {
  906. background: linear-gradient(180deg, #E0F1FF 0%, #F6FBFF 100%);
  907. text {
  908. color: #2099FE;
  909. }
  910. .imgIcon {
  911. width: 71rpx;
  912. height: 72rpx;
  913. }
  914. }
  915. .bg:nth-child(3) {
  916. background: linear-gradient(180deg, #FDEBE4 0%, #FFF7F3 100%);
  917. text {
  918. color: #FF5D52;
  919. }
  920. .imgIcon {
  921. width: 65rpx;
  922. height: 72rpx;
  923. }
  924. }
  925. }
  926. .money {
  927. padding: 8px 0;
  928. background-color: #F9F8FD;
  929. border-radius: 4px;
  930. margin-top: 8px;
  931. text {
  932. font-size: 12px;
  933. color: #333;
  934. font-weight: 400;
  935. }
  936. }
  937. }
  938. }
  939. /* 我的钱包End */
  940. /* 小的分项标题Start */
  941. /* 小的分项标题End */
  942. .grid-item-box {
  943. .icon {
  944. font-size: 26px;
  945. }
  946. .text {
  947. font-size: 12px;
  948. color: #232832;
  949. }
  950. }
  951. .swiper {
  952. width: 100%;
  953. }
  954. .swiper-view .keep-out {
  955. width: 100%;
  956. height: 30upx;
  957. border-radius: 100% 100% 0 0;
  958. margin-top: -15upx;
  959. position: absolute;
  960. }
  961. .swiper-view .swiper {
  962. overflow: hidden;
  963. padding: 30upx 20upx 0;
  964. box-sizing: border-box;
  965. width: 100%;
  966. height: 200upx;
  967. }
  968. .swiper-view .swiper image {
  969. width: 100%;
  970. height: 200upx;
  971. }
  972. </style>