mine.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051
  1. <template>
  2. <view class="Body">
  3. <!-- <navbar :config="config">
  4. <template v-slot:right>
  5. <view class="nav_r">
  6. <view class="nav_r_item " :class="myUnReadSum>0?'dian':''" @click="goToMsg()">
  7. <image class="news" src="/static/czd/news.png" mode=""></image>
  8. <view v-if="myUnReadSum>0">{{myUnReadSum>99?'99+':myUnReadSum}}</view>
  9. </view>
  10. <view class="nav_r_item" @click="goToSet()">
  11. <image class="set" src="/static/czd/set.png" mode=""></image>
  12. </view>
  13. </view>
  14. </template>
  15. </navbar> -->
  16. <view :class="['mine-fixed' , showFixed ? '' : 'hide-fixed' ]">
  17. <view class="fixed-status" :style="{'height':statusBarHeight + 'px'}"></view>
  18. <view class="fixed-nav">
  19. <view class="fixed-info">
  20. <image class="mine-left-img" v-if="user.headPhoto" :src="$getImgPath(user.headPhoto)"></image>
  21. <image class="mine-left-img" v-else src="/static/default-avatar.png" mode="aspectFit"></image>
  22. <text
  23. class="name-text">{{ $onDesensitization('name', user.realName || user.nickname || '')}}</text>
  24. <image class="certification" v-if="user.certification" src="@/static/czd/authentication.png"
  25. mode="aspectFit"></image>
  26. <image class="certification" v-else src="@/static/czd/authentication_01.png" mode="aspectFit">
  27. </image>
  28. </view>
  29. <view class="fixed-right nav_r">
  30. <view class="nav_r_item" :class="myUnReadSum>0?'dian':''" @click="goToMsg()">
  31. <image class="news" src="/static/czd/news.png" mode="aspectFit"></image>
  32. <view v-if="myUnReadSum>0">{{myUnReadSum>99?'99+':myUnReadSum}}</view>
  33. </view>
  34. <view class="nav_r_item" @click="goToSet()">
  35. <image class="set" src="/static/czd/set.png" mode="aspectFit"></image>
  36. </view>
  37. </view>
  38. </view>
  39. </view>
  40. <view class="top-box">
  41. <view class="" :style="{'width': '100%','height':statusBarHeight + 'px'}">
  42. </view>
  43. <view class="mine-top">
  44. <view class="mine-left" @click.stop="goPersonalData()">
  45. <image class="mine-left-img" v-if="user.headPhoto" :src="$getImgPath(user.headPhoto)"></image>
  46. <image class="mine-left-img" v-else src="/static/default-avatar.png" mode="aspectFit"></image>
  47. <view class="name-info">
  48. <view class="name-box">
  49. <text
  50. class="name-text">{{ $onDesensitization('name', user.realName || user.nickname || '')}}</text>
  51. <!-- <text class="name-tag">{{user.certification?'已实名':'未实名'}}</text> -->
  52. <image class="certification" v-if="user.certification" src="@/static/czd/authentication.png"
  53. mode="aspectFit"></image>
  54. <image class="certification" v-else src="@/static/czd/authentication_01.png"
  55. mode="aspectFit"></image>
  56. </view>
  57. <text class="mobile-info">{{$onDesensitization('tel', user.mobile || '')}}</text>
  58. </view>
  59. </view>
  60. <view class="nav_r">
  61. <!-- <u-icon name="arrow-right"></u-icon> -->
  62. <!-- <view class="nav_r">
  63. </view> -->
  64. <view class="nav_r_item" :class="myUnReadSum>0?'dian':''" @click="goToMsg()">
  65. <image class="news" src="/static/czd/news.png" mode="aspectFit"></image>
  66. <view v-if="myUnReadSum>0">{{myUnReadSum>99?'99+':myUnReadSum}}</view>
  67. </view>
  68. <view class="nav_r_item" @click="goToSet()">
  69. <image class="set" src="/static/czd/set.png" mode="aspectFit"></image>
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="zw-pages-content">
  75. <!-- 我的管理 -->
  76. <view class="integral-box" @click.stop="$u.route('/pages/research/community/mypoints')">
  77. <view class="integral-item">
  78. <text class="integral-icon iconfont_yige">&#xe684;</text>
  79. <text class="integral-title">我的积分</text>
  80. </view>
  81. <view class="integral-item integral-info">
  82. <text class="integral-num zw-one-row">{{user.integralAble || 0}}积分</text>
  83. <text class="integral-more iconfont_yige">&#xe65f;</text>
  84. </view>
  85. </view>
  86. <view class="class-type" @click.stop="e => {return false}">
  87. <view class="class-type-item" v-for="(v,i) in myManagementList" :key="'a'+i" @click.stop="$openPage(v)">
  88. <image class="class-item-img" :src="$getImgPath(v.moduleImage)"></image>
  89. <text class="class-item-text">{{v.moduleName}}</text>
  90. </view>
  91. <view class="class-type-item" @click.stop="$u.route('/pages/user/wallet/myWallet')">
  92. <image class="class-item-img" src="/static/czd/myData_2.png"></image>
  93. <text class="class-item-text">我的钱包</text>
  94. </view>
  95. <view class="class-type-item" @click.stop="$u.route('/pages/government/beautiful-code?codeType=券包')">
  96. <image class="class-item-img" src="/static/czd/myData_3.png"></image>
  97. <text class="class-item-text">我的券包</text>
  98. </view>
  99. <view class="class-type-item" @click.stop="goOrder()">
  100. <image class="class-item-img" src="/static/czd/myData_4.png"></image>
  101. <text class="class-item-text">我的订单</text>
  102. </view>
  103. </view>
  104. <!-- 任务 / 勋章 -->
  105. <view class="task-box">
  106. <view class="task-item" @click.stop="$u.route('/pages/government/medal')">
  107. <view class="task-icon" v-if="myMedal">
  108. <!-- <text style="color: #3DC8DF;" class="iconfont_yige">&#xe6af;</text> -->
  109. <image class="task-icon" :src="myMedal.medalPicture" mode="aspectFit"></image>
  110. </view>
  111. <view class="task-content">
  112. <view class="task-content-title">
  113. 我的勋章
  114. </view>
  115. <view class="task-value task-level">
  116. <template v-if="myMedal">
  117. <text class="task-level-num">LV.{{myMedal.medalLevel}}</text>
  118. <template v-if="myMedal.next_">
  119. <view class="task-level-line">
  120. <text class="line-color" :style="{width: myMedal.percent_num}"></text>
  121. </view>
  122. <text class="task-level-num">LV.{{ myMedal.next_.medalLevel }}</text>
  123. </template>
  124. </template>
  125. </view>
  126. </view>
  127. </view>
  128. <view class="task-item" @click.stop="$u.route('/pages/task/task-list')">
  129. <view class="task-icon">
  130. <text style="color: #0B71E1;" class="iconfont_yige">&#xe7b1;</text>
  131. </view>
  132. <!-- <image class="task-icon" src="../icon.png" mode="aspectFit"></image> -->
  133. <view class="task-content">
  134. <view class="task-content-title">
  135. 任务中心
  136. </view>
  137. <view class="task-value">
  138. 进行中 {{myTackCountNum}}
  139. </view>
  140. </view>
  141. </view>
  142. </view>
  143. <view class="myData">
  144. <view class="myData_title">我的数据</view>
  145. <view class="myData_box">
  146. <view class="myData_list">
  147. <view class="myData_item" v-for="(v,i) in myData" :key="'b'+i" @click="$openPage(v)">
  148. <!-- <view class="myData_item_tit">{{v.moduleName}}</view>
  149. <view class="myData_item_tig">去看看></view> -->
  150. <image :src="$getImgPath(v.moduleImage)" mode=""></image>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. <view class="service" v-if="inCommonUseList&&inCommonUseList.length>0">
  156. <view class="service_title">常用服务</view>
  157. <view class="service_box">
  158. <view class="service_list">
  159. <swiper class="swiper" indicator-dots indicator-color="#999999"
  160. indicator-active-color="#0B71E1">
  161. <swiper-item v-for="(item,index) in inCommonUseList" :key="'inCommonUseList'+index">
  162. <view class="itemBox">
  163. <view class="service_item" v-for="(v,i) in item" :key="'c'+i" @click="$openPage(v)">
  164. <view class="service_item_img">
  165. <image :src="$getImgPath(v.icon)" mode="aspectFit"></image>
  166. </view>
  167. <view class="service_item_tit">
  168. {{v.thirdName.length>4?v.thirdName.substr(0,4)+'...':v.thirdName}}
  169. </view>
  170. </view>
  171. </view>
  172. </swiper-item>
  173. </swiper>
  174. </view>
  175. </view>
  176. </view>
  177. <view class="moreCls">
  178. <view class="moreCls_title">
  179. <view>更多功能</view>
  180. </view>
  181. <view class="moreCls_list">
  182. <!-- <view class="moreCls_item" v-for="(v,i) in moreList" :key="'c'+i" @click="$openPage(v)">
  183. <view class="moreCls_item_img">
  184. <image :src="$getImgPath(v.moduleImage)" mode=""></image>
  185. </view>
  186. <view class="moreCls_item_title">{{v.moduleName}}</view>
  187. </view> -->
  188. <view class="moreCls_item" @click="$u.route('/pages/government/customer-center')">
  189. <view class="moreCls_item_img">
  190. <image src="/static/czd/more_1.png" mode=""></image>
  191. </view>
  192. <view class="moreCls_item_title">常见问题</view>
  193. </view>
  194. <view class="moreCls_item" @click="$u.route('/pages/government/feedback')">
  195. <view class="moreCls_item_img">
  196. <image src="/static/czd/more_2_.png" mode=""></image>
  197. </view>
  198. <view class="moreCls_item_title">建议反馈</view>
  199. </view>
  200. <view class="moreCls_item" @click="$u.route('/pages/government/attention')">
  201. <view class="moreCls_item_img">
  202. <image src="/static/czd/more_2.png" mode=""></image>
  203. </view>
  204. <view class="moreCls_item_title">我的关注</view>
  205. </view>
  206. <view class="moreCls_item" @click="$u.route('/pages/government/collect')">
  207. <view class="moreCls_item_img">
  208. <image src="/static/czd/more_4.png" mode=""></image>
  209. </view>
  210. <view class="moreCls_item_title">我的收藏</view>
  211. </view>
  212. <view class="moreCls_item" @click="share()">
  213. <view class="moreCls_item_img">
  214. <image src="/static/czd/invite.png" mode=""></image>
  215. </view>
  216. <view class="moreCls_item_title">邀请好友</view>
  217. </view>
  218. </view>
  219. </view>
  220. </view>
  221. <technical-support />
  222. <!-- <iframe src="https://www.wejointimes.com/multi/h5#/subpackages/rankingList/pages/overall" frameborder="0"></iframe> -->
  223. <share ref="shares" :contentHeight="580" v-if="isvisible"></share>
  224. </view>
  225. </template>
  226. <script>
  227. import {
  228. myUserInfo
  229. } from "@/api/government.js"
  230. // import share from '@/common/share.js';
  231. import share from "@/pages/public/share";
  232. import {
  233. getAccountInfo
  234. } from "@/api/login.js"
  235. import {
  236. myTackCount_Api,
  237. getUserMedal_Api
  238. } from "@/api/task.js"
  239. let app = getApp()
  240. export default {
  241. components: {
  242. share,
  243. },
  244. data() {
  245. return {
  246. config: {
  247. back: false, //false是tolbar页面 是则不写
  248. title: '我的',
  249. color: '#fff',
  250. //背景颜色;参数一:透明度(0-1);参数二:背景颜色(array则为线性渐变,string为单色背景)
  251. backgroundColor: 'transparent',
  252. rightSlot: true
  253. },
  254. statusBarHeight: app.globalData.statusBarHeight,
  255. // head: "https://img2.baidu.com/it/u=1297740018,2772695612&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703350800&t=bbe26f969cf1a55c18b211c29cba6bfe",
  256. user: {},
  257. myManagementList: [],
  258. myData: [],
  259. moreList: [],
  260. inCommonUseList: [],
  261. myUnReadSum: 0,
  262. isvisible: false,
  263. apiToken: null,
  264. showFixed: false,
  265. integralNum: 0, // 我的积分
  266. myTackCountNum: 0, // 我的任务数量
  267. myMedal: null
  268. }
  269. },
  270. onShow() {
  271. // return
  272. let apiToken = uni.getStorageSync('apiToken');
  273. if (!apiToken) {
  274. this.user = {};
  275. this.myManagementList = [];
  276. this.myData = [];
  277. this.moreList = [];
  278. this.inCommonUseList = [];
  279. this.myUnReadSum = 0
  280. this.myMedal = null;
  281. } else if (!this.apiToken && apiToken) {
  282. this.getThemeModuleList('my_management', 'myManagementList');
  283. this.getThemeModuleList('my_data', 'myData');
  284. this.getThemeModuleList('more', 'moreList');
  285. }
  286. this.apiToken = apiToken;
  287. this.getUserData();
  288. this.getNewNum();
  289. this.getInCommonUseList();
  290. },
  291. onLoad() {
  292. this.getThemeModuleList('my_management', 'myManagementList');
  293. this.getThemeModuleList('my_data', 'myData');
  294. this.getThemeModuleList('more', 'moreList');
  295. },
  296. onPullDownRefresh() {
  297. this.getUserData();
  298. this.getNewNum();
  299. this.getInCommonUseList();
  300. this.getThemeModuleList('my_management', 'myManagementList');
  301. this.getThemeModuleList('my_data', 'myData');
  302. this.getThemeModuleList('more', 'moreList')
  303. },
  304. onPageScroll: function(e) {
  305. const u = uni.upx2px(100)
  306. console.log('e.scrollTop = ', e.scrollTop, u)
  307. this.showFixed = e.scrollTop > u ? true : false
  308. },
  309. methods: {
  310. // go(){
  311. // uni.navigateTo({
  312. // // url:"/pages/web-view/Apps?path=http://192.168.0.136:8084/yige-h5/#/pages/payCentre"
  313. // url:"/pages/web-view/Apps?path=http://192.168.0.136:8084/yige-h5/#/pages/payCentre&title=222"
  314. // })
  315. // },
  316. myTackCount() {
  317. myTackCount_Api().then(res => {
  318. console.log('res.data = ', res.data)
  319. this.myTackCountNum = res.data.myTackCount || 0
  320. })
  321. },
  322. getUserMedal() {
  323. getUserMedal_Api().then(res => {
  324. const list = res.data || [];
  325. let myMedal_ = null;
  326. try {
  327. list.forEach((el, index) => {
  328. if (el.currentLevel) {
  329. const next_ = list[index + 1];
  330. const percent_num = (el.userScore / el.medalScore).toFixed(2) * 100;
  331. myMedal_ = {
  332. ...el,
  333. next_: next_
  334. };
  335. myMedal_.percent_num = `${percent_num}%`
  336. if (percent_num <= 0) myMedal_.percent_num = '0%';
  337. if (percent_num > 100) myMedal_.percent_num = '100%';
  338. throw new Error()
  339. }
  340. })
  341. } catch (e) {
  342. //TODO handle the exception
  343. }
  344. myMedal_ = list[0];
  345. const next_ = list[1];
  346. const percent_num = (myMedal_.userScore / myMedal_.medalScore).toFixed(2) * 100;
  347. myMedal_ = {
  348. ...myMedal_,
  349. next_: next_
  350. };
  351. myMedal_.percent_num = `${percent_num}%`
  352. if (percent_num <= 0) myMedal_.percent_num = '0%';
  353. if (percent_num > 100) myMedal_.percent_num = '100%';
  354. this.myMedal = myMedal_ || null;
  355. })
  356. },
  357. goOrder() {
  358. uni.navigateTo({
  359. url: "/pages/government/myOrder"
  360. })
  361. },
  362. goToMsg() {
  363. uni.navigateTo({
  364. url: "/pages/government/myMsg"
  365. })
  366. },
  367. goToSet() {
  368. uni.navigateTo({
  369. url: "/pages/government/set"
  370. })
  371. },
  372. goPersonalData() {
  373. uni.navigateTo({
  374. url: "/pages/government/personalData"
  375. })
  376. },
  377. share() {
  378. this.isvisible = true;
  379. this.$nextTick(() => {
  380. this.$refs.shares.shareInfo(
  381. // '/?pageType=1&type=3&id=' + this.activity_goods_id + '&shareId=' + user.id + '&teamId=' + this.teamId,
  382. // 'pages/down',
  383. // this.orderList[0].goods_title,
  384. // '',
  385. // this.orderList[0].goods_img
  386. );
  387. });
  388. },
  389. // 邀请
  390. shareInfo(params, url, title, des, images, noHome = false) {
  391. // return this.$mUtil.toast('暂无法使用分享功能')
  392. let shareList = [{
  393. icon: '/static/czd/wx.png',
  394. text: '微信好友'
  395. },
  396. {
  397. icon: '/static/czd/pyq.png',
  398. text: '朋友圈'
  399. }
  400. ];
  401. let shareInfo = {
  402. href: $config.hostUrls,
  403. title: title || '"宜格服务"懂宜昌,更懂你!',
  404. summary: des || '打造宜昌政务、医疗、交通、旅游、教育、生活等综合城市服务平台!',
  405. imgUrl: images || '/logo.png'
  406. };
  407. this.shareObj = share(shareInfo, shareList, index => {
  408. if (index == 0) {
  409. uni.share({
  410. provider: 'weixin',
  411. scene: 'WXSceneSession',
  412. type: 0,
  413. href: shareInfo.href,
  414. title: shareInfo.title,
  415. summary: shareInfo.summary,
  416. imageUrl: shareInfo.imgUrl,
  417. success: res => {
  418. this.shareObj.shareMenu.hide();
  419. this.shareObj.alphaBg.hide();
  420. },
  421. fail: function(err) {
  422. this.shareObj.shareMenu.hide();
  423. this.shareObj.alphaBg.hide();
  424. }
  425. });
  426. } else if (index == 1) {
  427. uni.share({
  428. provider: 'weixin',
  429. scene: 'WXSenceTimeline',
  430. type: 0,
  431. href: shareInfo.href,
  432. title: shareInfo.title,
  433. summary: shareInfo.summary,
  434. imageUrl: shareInfo.imgUrl,
  435. success: res => {
  436. this.shareObj.shareMenu.hide();
  437. this.shareObj.alphaBg.hide();
  438. },
  439. fail: function(err) {
  440. this.shareObj.shareMenu.hide();
  441. this.shareObj.alphaBg.hide();
  442. }
  443. });
  444. } else {
  445. this.shareObj.shareMenu.hide();
  446. this.shareObj.alphaBg.hide();
  447. }
  448. });
  449. this.$nextTick(() => {
  450. this.shareObj.alphaBg.show();
  451. this.shareObj.shareMenu.show();
  452. });
  453. },
  454. getUserData() {
  455. myUserInfo().then(res => {
  456. this.user = res.data;
  457. if (res.data) {
  458. this.getMyMsg()
  459. }
  460. }).finally(() => {
  461. uni.stopPullDownRefresh();
  462. })
  463. this.myTackCount();
  464. this.getUserMedal()
  465. },
  466. // 获取我的应用
  467. getThemeModuleList(markCode, key) {
  468. this.$yghttp.get(`/themeModule/list/${markCode}`).then(res => {
  469. const {
  470. data
  471. } = res
  472. if (data) {
  473. this[key] = data?.themeModuleVoList;
  474. }
  475. })
  476. },
  477. // 获取我的未读消息总数
  478. getNewNum() {
  479. this.$yghttp.get('/message/myUnReadSum').then(res => {
  480. this.myUnReadSum = res.data
  481. })
  482. },
  483. openMore() {
  484. uni.navigateTo({
  485. url: `/pages/government/more-app?type=zhengwujihe`
  486. });
  487. },
  488. // 获取常用应用
  489. getInCommonUseList() {
  490. this.$yghttp.get('/third/in_common_use').then(res => {
  491. // res.data= res.data.splice(0,3);
  492. let arr = [];
  493. this.inCommonUseList = []
  494. res.data.map((v, i) => {
  495. arr.push(v)
  496. if (arr.length == 4 && i < res.data.length - 1 || i == res.data.length - 1) {
  497. let arr1 = JSON.parse(JSON.stringify(arr))
  498. arr = [];
  499. this.inCommonUseList.push(arr1);
  500. }
  501. })
  502. })
  503. },
  504. //获取我的信息/我积分
  505. getMyMsg() {
  506. this.$http.get(getAccountInfo).then(res => {
  507. if (res && res.code == 200) {
  508. this.integralNum = res.data?.integral_able || 0;
  509. }
  510. })
  511. }
  512. }
  513. }
  514. </script>
  515. <style>
  516. page {
  517. background-color: #F8F8F8;
  518. }
  519. </style>
  520. <style lang="scss" scoped>
  521. .hide-fixed {
  522. display: none !important;
  523. }
  524. .mine-fixed {
  525. position: fixed;
  526. left: 0;
  527. top: 0;
  528. right: 0;
  529. background: url("../../static/czd/mineTBg.png") no-repeat;
  530. background-size: 100% 350rpx;
  531. z-index: 1;
  532. overflow: hidden;
  533. // display: none;
  534. .fixed-status {
  535. width: 100%;
  536. }
  537. .fixed-nav {
  538. width: 100%;
  539. height: 88rpx;
  540. display: flex;
  541. justify-content: space-between;
  542. align-items: center;
  543. padding: 0 30rpx;
  544. .fixed-info {
  545. display: flex;
  546. align-items: center;
  547. .mine-left-img {
  548. flex-shrink: 0;
  549. width: 70rpx;
  550. height: 70rpx;
  551. border-radius: 50%;
  552. }
  553. .name-text {
  554. padding-left: 20rpx;
  555. display: block;
  556. font-size: 28rpx;
  557. color: #fff;
  558. font-weight: 600;
  559. padding-right: 10rpx;
  560. }
  561. .certification {
  562. flex-shrink: 0;
  563. width: 78.4rpx;
  564. height: 33.6rpx;
  565. }
  566. }
  567. .fixed-right {
  568. image {
  569. width: 38rpx !important;
  570. height: 38rpx !important;
  571. }
  572. }
  573. }
  574. }
  575. .top-box {
  576. width: 100%;
  577. }
  578. // /deep/ .hx-navbar__fixed {
  579. // width: 100%;
  580. // background: url("../../static/czd/mineTBg.png");
  581. // background-size: 100% 400rpx;
  582. // }
  583. .Body {
  584. background: url("../../static/czd/mineTBg.png") no-repeat;
  585. background-size: 100% 350rpx;
  586. padding-bottom: 60rpx;
  587. }
  588. .nav_r {
  589. display: flex;
  590. align-items: center;
  591. .nav_r_item {
  592. .news {
  593. width: 37rpx;
  594. height: 37rpx;
  595. margin-right: 30rpx;
  596. }
  597. .set {
  598. width: 44rpx;
  599. height: 42rpx;
  600. // margin-right: 40rpx;
  601. }
  602. }
  603. .dian {
  604. font-size: 0;
  605. position: relative;
  606. >view {
  607. position: absolute;
  608. width: 37rpx;
  609. height: 22rpx;
  610. background: #FB1B1B;
  611. border-radius: 11rpx 11rpx 11rpx 0;
  612. font-size: 20rpx;
  613. display: flex;
  614. justify-content: center;
  615. align-items: center;
  616. top: -14rpx;
  617. right: 22rpx;
  618. color: #fff;
  619. }
  620. }
  621. }
  622. .mine-top {
  623. display: flex;
  624. justify-content: space-between;
  625. align-items: stretch;
  626. padding: $zw-gap $zw-gap 0;
  627. .mine-left {
  628. display: flex;
  629. align-items: center;
  630. .mine-left-img {
  631. width: 100rpx;
  632. height: 100rpx;
  633. border-radius: 50%;
  634. border: 4rpx solid #fff;
  635. }
  636. .name-info {
  637. padding: 0 20rpx;
  638. .name-box {
  639. display: flex;
  640. align-items: center;
  641. .name-text {
  642. display: block;
  643. font-size: 32rpx;
  644. color: #fff;
  645. font-weight: 700;
  646. padding-right: 10rpx;
  647. }
  648. .name-tag {
  649. display: block;
  650. font-size: 24rpx;
  651. margin-top: 6rpx;
  652. color: #fff;
  653. }
  654. .certification {
  655. flex-shrink: 0;
  656. width: 112rpx;
  657. height: 48rpx;
  658. }
  659. }
  660. .mobile-info {
  661. display: block;
  662. font-size: 24rpx;
  663. margin-top: 6rpx;
  664. color: #fff;
  665. }
  666. }
  667. }
  668. // .mine-right {
  669. // display: flex;
  670. // align-items: center;
  671. // justify-content: flex-end;
  672. // // font-size: 32rpx;
  673. // color: #fff;
  674. // // margin-right: 40rpx;
  675. // .nav_r_item {
  676. // .news {
  677. // width: 37rpx;
  678. // height: 37rpx;
  679. // margin-right: 30rpx;
  680. // }
  681. // .set {
  682. // width: 44rpx;
  683. // height: 42rpx;
  684. // margin-right: 20rpx;
  685. // }
  686. // }
  687. // }
  688. }
  689. .integral-box {
  690. margin-top: 30rpx;
  691. width: 100%;
  692. height: 140rpx;
  693. background: linear-gradient(42deg, #3cb7d2 0%, #45c7d5 100%) #ffffff;
  694. border-radius: 20rpx 20rpx 0 0;
  695. box-shadow: 0px 3rpx 23.49rpx 3.51rpx rgba(207, 207, 207, 0.23);
  696. display: flex;
  697. justify-content: space-between;
  698. align-items: center;
  699. padding: 0 40rpx 40rpx 40rpx;
  700. color: #fff;
  701. .integral-item {
  702. display: flex;
  703. align-items: center;
  704. flex-shrink: 0;
  705. .integral-icon {
  706. font-size: 36rpx;
  707. }
  708. .integral-title {
  709. font-size: 28rpx;
  710. font-family: PingFang SC, PingFang SC-Bold;
  711. font-weight: 700;
  712. padding-left: 17rpx;
  713. }
  714. .integral-num {
  715. font-size: 28rpx;
  716. font-family: PingFang SC, PingFang SC-Regular;
  717. font-weight: 400;
  718. padding-right: 15rpx;
  719. }
  720. .integral-more {
  721. font-size: 30rpx;
  722. }
  723. }
  724. .integral-info {
  725. flex: 1;
  726. width: 1px;
  727. justify-content: flex-end;
  728. }
  729. }
  730. .class-type {
  731. display: flex;
  732. justify-content: space-between;
  733. align-items: stretch;
  734. background-color: #fff;
  735. padding: 40rpx;
  736. border-radius: 20rpx;
  737. margin-top: -40rpx;
  738. .class-type-item {
  739. display: flex;
  740. flex-direction: column;
  741. justify-content: center;
  742. align-items: center;
  743. .class-item-img {
  744. width: 80rpx;
  745. height: 80rpx;
  746. }
  747. .class-item-text {
  748. font-size: 24rpx;
  749. padding-top: 20rpx;
  750. }
  751. }
  752. }
  753. .myData {
  754. background-color: #fff;
  755. padding: 40rpx 40rpx 20rpx 40rpx;
  756. border-radius: 20rpx;
  757. margin-top: 20rpx;
  758. .myData_box {
  759. box-sizing: border-box;
  760. overflow: auto;
  761. }
  762. .myData_title {
  763. font-weight: 700;
  764. padding-bottom: 40rpx;
  765. font-size: 32rpx;
  766. }
  767. .myData_list {
  768. width: max-content;
  769. .myData_item {
  770. // width: 230rpx;
  771. // height: 150rpx;
  772. // margin: 20rpx 20rpx 0 0;
  773. display: inline-block;
  774. font-size: 0;
  775. // background: rgb(249,248,253);
  776. // padding: 30rpx 0 0 20rpx;
  777. // .myData_item_tit{
  778. // }
  779. // .myData_item_tig{
  780. // margin-top: 10rpx;
  781. // font-size: 24rpx;
  782. // }
  783. image {
  784. width: 245rpx;
  785. height: 156rpx;
  786. margin-right: 23rpx;
  787. }
  788. }
  789. .myData_item:last-child {
  790. margin-right: 0rpx;
  791. }
  792. }
  793. }
  794. .service {
  795. background-color: #fff;
  796. padding: 40rpx 40rpx 20rpx;
  797. border-radius: 20rpx;
  798. margin-top: 20rpx;
  799. .service_title {
  800. font-weight: 700;
  801. padding-bottom: 40rpx;
  802. font-size: 32rpx;
  803. }
  804. .service_box {
  805. overflow: auto;
  806. .service_list {
  807. .itemBox {
  808. display: flex;
  809. }
  810. // width: max-content;
  811. .swiper {
  812. width: 100%;
  813. height: 170rpx;
  814. /deep/ .uni-swiper-dots-horizontal {
  815. bottom: 8rpx;
  816. .uni-swiper-dot {
  817. width: 10rpx;
  818. height: 10rpx;
  819. border-radius: 50%;
  820. transition: 0.3s all ease;
  821. }
  822. .uni-swiper-dot-active {
  823. width: 26rpx;
  824. height: 8rpx;
  825. border-radius: 10rpx;
  826. transition: 0.3s all ease;
  827. }
  828. }
  829. }
  830. .service_item {
  831. width: 25%;
  832. text-align: center;
  833. display: inline-block;
  834. // flex: 1;
  835. // margin: 0 22rpx;
  836. .service_item_img {
  837. font-size: 0;
  838. margin: 0 22rpx;
  839. image {
  840. width: 80rpx;
  841. height: 80rpx;
  842. }
  843. }
  844. .service_item_tit {
  845. font-size: 24rpx;
  846. margin-top: 20rpx;
  847. }
  848. }
  849. }
  850. }
  851. }
  852. .moreCls {
  853. background-color: #fff;
  854. padding: 40rpx;
  855. border-radius: 20rpx;
  856. margin-top: 20rpx;
  857. .moreCls_title {
  858. padding-bottom: 40rpx;
  859. display: flex;
  860. justify-content: space-between;
  861. align-items: center;
  862. >view {
  863. font-size: 32rpx;
  864. font-weight: 700;
  865. display: flex;
  866. align-items: center;
  867. image {
  868. width: 17rpx;
  869. height: 19rpx;
  870. }
  871. }
  872. }
  873. .moreCls_list {
  874. display: flex;
  875. justify-content: space-between;
  876. .moreCls_item {
  877. text-align: center;
  878. .moreCls_item_img {
  879. image {
  880. width: 50rpx;
  881. height: 50rpx;
  882. }
  883. }
  884. .moreCls_item_title {
  885. font-size: 24rpx;
  886. margin-top: 10rpx;
  887. }
  888. }
  889. }
  890. }
  891. .task-box {
  892. width: 100%;
  893. display: flex;
  894. justify-content: space-between;
  895. align-items: stretch;
  896. margin-top: 20rpx;
  897. .task-item {
  898. width: calc(50% - 10rpx);
  899. background-color: #fff;
  900. display: flex;
  901. // justify-content: space-between;
  902. align-items: center;
  903. border-radius: 20rpx;
  904. padding: 20rpx;
  905. .task-icon {
  906. width: 60rpx;
  907. height: 60rpx;
  908. .iconfont_yige {
  909. font-size: 50rpx;
  910. line-height: 60rpx;
  911. }
  912. }
  913. .task-content {
  914. padding-left: 20rpx;
  915. max-width: calc(100% - 60rpx);
  916. display: flex;
  917. flex-direction: column;
  918. justify-content: space-between;
  919. .task-content-title {
  920. width: 100%;
  921. font-size: 28rpx;
  922. }
  923. .task-value {
  924. width: 100%;
  925. font-size: 24rpx;
  926. color: #9A9A9A;
  927. }
  928. .task-level {
  929. width: 100%;
  930. display: flex;
  931. flex-direction: row;
  932. justify-content: space-between;
  933. align-items: center;
  934. // padding-right: 10rpx;
  935. .task-level-line {
  936. flex: 1;
  937. width: 50rpx;
  938. height: 2rpx;
  939. background-color: #BBBBBB;
  940. margin: 0 10rpx;
  941. .line-color {
  942. display: block;
  943. height: 100%;
  944. background-color: #01DBFF;
  945. }
  946. }
  947. }
  948. }
  949. }
  950. }
  951. </style>