選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.vue 18KB

2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
2年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <template>
  2. <view class="statusBar" :style="{height:statusBarHeight+'px'}" v-show="isShowBar"></view>
  3. <view class="wrapper">
  4. <!-- Banner -->
  5. <view class="banner">
  6. <swiper class="swiper" circular>
  7. <swiper-item class="swiper-item">
  8. <image :src="fileURL + 'image/index/banner-1.png'" mode="widthFix"></image>
  9. </swiper-item>
  10. </swiper>
  11. <view class="notice">
  12. <image class="icon" :src="fileURL + 'image/index/icon-notice.png'" lazy-load="false">
  13. </image>
  14. <text class="notice-text">{{state.notice}}</text>
  15. <!-- <u-notice-bar mode="horizontal" :is-circular="false" :list="list"></u-notice-bar> -->
  16. </view>
  17. </view>
  18. <!-- 按钮导航 -->
  19. <view class="nav">
  20. <view class="item-box" @click="$util.navTo('/pages/recharge/select-car',true)">
  21. <view class="item item-1">
  22. <image :src="fileURL + 'image/index/item-1.png'" />
  23. </view>
  24. <view class="text">储值卡充值</view>
  25. </view>
  26. <view class="item-box" @click="$util.msg('该功能正在开发中,敬请期待!')">
  27. <view class="item item-2">
  28. <image :src="fileURL + 'image/index/item-2.png'" />
  29. </view>
  30. <view class="text">账单查询</view>
  31. </view>
  32. <view class="item-box" @click="$util.msg('该功能正在开发中,敬请期待!')">
  33. <view class="item item-3">
  34. <image :src="fileURL + 'image/index/item-3.png'" />
  35. </view>
  36. <view class="text">通行发票</view>
  37. </view>
  38. <view class="item-box" @click="$util.navTo('/issueActivation/install-activation-order',true)">
  39. <view class="item item-4">
  40. <image :src="fileURL + 'image/index/item-4.png'" />
  41. </view>
  42. <view class="text">设备激活</view>
  43. </view>
  44. <view class="item-box" @click="$util.msg('该功能正在开发中,敬请期待!')">
  45. <view class="item item-5">
  46. <image :src="fileURL + 'image/index/item-5.png'" />
  47. </view>
  48. <view class="text">设备遗失</view>
  49. </view>
  50. <!-- <view class="item-box" @click="$util.navTo('/after-sale/rescind-carId/rescind-carId-select',true)"> -->
  51. <view class="item-box" @click="$util.msg('该功能正在开发中,敬请期待!')">
  52. <view class="item item-6">
  53. <image :src="fileURL + 'image/index/item-6.png'" />
  54. </view>
  55. <view class="text">解除车牌占用</view>
  56. </view>
  57. <view class="item-box"
  58. @click="$util.navTo(`/personal-center/setting/personal-information/corrections`,true)">
  59. <view class="item item-7">
  60. <image :src="fileURL + 'image/index/item-7.png'" />
  61. </view>
  62. <view class="text">基础信息变更</view>
  63. </view>
  64. <view class="item-box" @click="$util.navTo(`/pages/service/service`,true)">
  65. <view class="item item-8">
  66. <image :src="fileURL + 'image/index/item-more.png'" />
  67. </view>
  68. <view class="text">更多</view>
  69. </view>
  70. </view>
  71. <!-- 消息滚动显示 -->
  72. <view class="backlog-notice">
  73. <notice-bar :noticeList="state.noticeList" @noticeClick="$util.msg('该功能正在开发中,敬请期待!')"></notice-bar>
  74. </view>
  75. <!--快速办理通道 -->
  76. <view class="express-lane">
  77. <view class="title">快速办理通道</view>
  78. <view class="lane">
  79. <view class="lane-item lane-1" :style="{ '--background': bgOrange }" @click="showMask(0)">
  80. <image :src="fileURL + 'image/index/icon-car.png'"></image>
  81. <view class="text">
  82. <text class="head">客车通道</text>
  83. <text class="decribe">业务内容简介</text>
  84. </view>
  85. </view>
  86. <view class="lane-item lane-2" :style="{ '--background': bgBlue }" @click="showMask(1)">
  87. <image :src="fileURL + 'image/index/icon-truck.png'"></image>
  88. <view class="text">
  89. <text class="head">货车通道</text>
  90. <text class="decribe">业务内容简介</text>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. <!-- 办理流程 -->
  96. <view class="flow-path">
  97. <scroll-view scroll-x="true" class="scroll-view">
  98. <view class="top-menu">
  99. <view :class="item == state.tabActive ? 'tab active' : 'tab'" v-for="item in state.flowPathTabList"
  100. :key="item" @click="flowPathTabHandle(item)">
  101. <view class="border"></view>{{ item }}
  102. </view>
  103. </view>
  104. </scroll-view>
  105. <view v-if="state.tabActive === '办理流程'">
  106. <view class="flow-list">
  107. <flow-path-list :options="state.flowList"></flow-path-list>
  108. </view>
  109. </view>
  110. <view v-else-if="state.tabActive === '办理条件'">
  111. <view class="flow-list as-gravity-center"> 办理条件 </view>
  112. </view>
  113. <view v-else-if="state.tabActive === '常见问题'">
  114. <view class="flow-list as-gravity-center"> 常见问题 </view>
  115. </view>
  116. </view>
  117. </view>
  118. <!-- 高速快讯 -->
  119. <view class="news">
  120. <view class="title">高速快讯</view>
  121. <view class="news-box">
  122. <view class="news-item" @click="$util.msg('该功能正在开发中,敬请期待!')">
  123. <view class="left-text">
  124. <view class="tit">贵州高速最新施工通告,请注意贵州高速最新通告,请注意...</view>
  125. <view class="span">施工通告</view>
  126. </view>
  127. <view class="image-box">
  128. <image :src="fileURL + 'image/index/news-1.png'"></image>
  129. </view>
  130. </view>
  131. <view class="news-item" @click="$util.msg('该功能正在开发中,敬请期待!')">
  132. <view class="left-text">
  133. <view class="tit">贵州新建服务区,请注意贵州高速最新通告,请留意...</view>
  134. <view class="span">新建</view>
  135. </view>
  136. <view class="image-box">
  137. <image :src="fileURL + 'image/index/news-2.png'"></image>
  138. </view>
  139. </view>
  140. <view class="more">查看更多</view>
  141. </view>
  142. </view>
  143. <!-- 专区服务 -->
  144. <view class="service">
  145. <view class="title">专区服务</view>
  146. <view class="service-box">
  147. <view class="service-item border" @click="$util.msg('该功能正在开发中,敬请期待!')">
  148. <image :src="fileURL + 'image/index/truck-point.png'"></image>
  149. <view class="text">
  150. <view class="tit">货车积分返利</view>
  151. <view class="sub">海量商品任你选择</view>
  152. </view>
  153. </view>
  154. <view class="service-item" @click="$util.msg('该功能正在开发中,敬请期待!')">
  155. <image :src="fileURL + 'image/index/parking-bill.png'"></image>
  156. <view class="text">
  157. <view class="tit">停车场账单查询</view>
  158. <view class="sub">消费明细一目了然{{ title }}</view>
  159. </view>
  160. </view>
  161. </view>
  162. </view>
  163. <!-- ETC选择弹窗 -->
  164. <view class="mask" v-if="isShowMask">
  165. <view class="mask-content">
  166. <view class="mask-close">
  167. <image :src="fileURL + 'image/index/icon-close.png'" class="icon-closed" @click="closeMask"></image>
  168. </view>
  169. <view class="mask-title" :style="{ '--color': color }">选择ETC用户类型</view>
  170. <view class="mask-tab">
  171. <view class="tab-item active" @click="toCreatOrder('1')">
  172. <image :src="fileURL + 'image/index/icon-personal.png'"></image>
  173. <text class="tab-tit on">个人办理</text>
  174. </view>
  175. <view class="tab-item" @click="toCreatOrder('2')">
  176. <image :src="fileURL + 'image/index/icon-unit.png'"></image>
  177. <text class="tab-tit on">单位办理</text>
  178. </view>
  179. </view>
  180. </view>
  181. </view>
  182. </template>
  183. <script setup lang="ts">
  184. import {
  185. onMounted,
  186. ref
  187. } from "vue";
  188. import {
  189. onPageScroll,
  190. onLoad
  191. } from "@dcloudio/uni-app";
  192. import flowPathList from "./components/flow-path-list.vue";
  193. import {
  194. request
  195. } from "../../utils/network/request.js";
  196. import {
  197. stringToJson
  198. } from "../../utils/network/encryption.js";
  199. import {
  200. useUserStore
  201. } from "@/stores/user";
  202. import {
  203. getItem,
  204. StorageKeys
  205. } from "../../utils/storage";
  206. import {
  207. reactive
  208. } from "vue";
  209. import {
  210. fileURL
  211. } from "@/datas/fileURL.js";
  212. import {
  213. infoQuery
  214. } from "@/utils/network/api.js"
  215. import {
  216. navTo,
  217. confirm
  218. } from "../../utils/utils";
  219. const bgOrange = `url(${fileURL}image/index/bg-orange.png) center center no-repeat`;
  220. const bgBlue = `url(${fileURL}image/index/bg-blue.png) center center no-repeat`;
  221. const list=reactive(["您有一条待办事项,还未办理完成"])
  222. const state = reactive({
  223. type: 0,
  224. userType: 0,
  225. notice: "",
  226. noticeList: [
  227. //公告栏列表
  228. {
  229. title: "您有一条待办事项,还未办理完成",
  230. id: 1,
  231. },
  232. {
  233. title: "XXX刚刚申请了公交车发行",
  234. id: 2,
  235. },
  236. {
  237. title: "您还有一条订单已经发货了",
  238. id: 3,
  239. },
  240. {
  241. title: "订单等您确认收货",
  242. id: 4,
  243. },
  244. {
  245. title: "最新的新闻资讯请点击哈哈哈哈哈哈哈假的假的假的假的基督教",
  246. id: 5,
  247. },
  248. ],
  249. flowPathTabList: ["办理流程", "办理条件", "常见问题"],
  250. tabActive: "办理流程",
  251. flowList: [
  252. //办理流程数据
  253. {
  254. title: "第一步:信息校验:",
  255. desc: "提交车牌号、车牌颜色、收货地址相关信息",
  256. },
  257. {
  258. title: "第二步:证件上传:",
  259. desc: "上传身份证、行驶证等相关信息",
  260. },
  261. {
  262. title: "第三步:签约代扣:",
  263. desc: "选择签约账户并关联",
  264. },
  265. {
  266. title: "第四步:产品选择:",
  267. desc: "选择购买的发行产品",
  268. },
  269. {
  270. title: "第五步:订单完成:",
  271. desc: "支付完成订单",
  272. },
  273. ],
  274. });
  275. const isShowMask = ref(false);
  276. const isShowBar = ref(false)
  277. const userStore = useUserStore();
  278. const type = 0;
  279. const title = ref("我是测试");
  280. const statusBarHeight = ref(0)
  281. //监听页面滚动
  282. onPageScroll((e) => {
  283. if (e.scrollTop > statusBarHeight.value) {
  284. isShowBar.value = true;
  285. } else {
  286. isShowBar.value = false;
  287. }
  288. });
  289. //办理流程tab选择
  290. const flowPathTabHandle = (tab) => {
  291. state.tabActive = tab;
  292. };
  293. //安装激活
  294. const goActivation = () => {
  295. uni.navigateTo({
  296. url: "/pages/order/order",
  297. });
  298. };
  299. const goToRecharge = () => {
  300. console.log("执行点击事件");
  301. console.log('321')
  302. uni.navigateTo({
  303. url: "/pages/recharge/select-car",
  304. });
  305. };
  306. const toCreatOrder = (val: any) => {
  307. state.userType = val;
  308. if (val === "1") {
  309. navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`, true)
  310. // uni.navigateTo({
  311. // url: `/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`,
  312. // });
  313. } else {
  314. // uni.navigateTo({
  315. // url: `/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`,
  316. // });
  317. navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`, true)
  318. }
  319. closeMask();
  320. };
  321. const showMask = (val: any) => {
  322. console.log(88888888888888);
  323. console.log(getItem("token"));
  324. if (getItem("token") != '' || getItem("openId") != '') {
  325. state.type = val;
  326. isShowMask.value = true;
  327. } else {
  328. confirm('您需要登录过后才能使用此功能', () => {
  329. uni.navigateTo({
  330. url: '/login/login',
  331. });
  332. }, '温馨提示', true, '去登录');
  333. }
  334. };
  335. const closeMask = () => {
  336. isShowMask.value = false;
  337. };
  338. onMounted(() => {
  339. uni.getSystemInfo({
  340. success: (e: any) => {
  341. console.log(e.statusBarHeight);
  342. statusBarHeight.value = e.statusBarHeight;
  343. }
  344. })
  345. // console.log(credentialType);
  346. //参数说明
  347. // let code = "30" //请求编码
  348. let options = {
  349. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  350. data: {
  351. opId: getItem("openId"),
  352. source: "WECHAT",
  353. tabIndex: "0",
  354. }, //请求参数
  355. method: "POST", //提交方式(默认POST)
  356. showLoading: true, //是否显示加载中(默认显示)
  357. };
  358. //调用方式
  359. // request(searchOrder, options)
  360. // .then((res) => {
  361. // console.log(stringToJson(res.bizContent));
  362. // // stringToJson(res.bizContent)
  363. // })
  364. // .catch((err) => {
  365. // console.log(err);
  366. // });
  367. });
  368. // 获取文本信息----用户协议
  369. const getInfo = (type) => {
  370. //参数说明
  371. let options = {
  372. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  373. data: {
  374. businessType: 'BROADCAST' //广播栏信息
  375. }, //请求参数
  376. method: "POST", //提交方式(默认POST)
  377. showLoading: true, //是否显示加载中(默认显示)
  378. };
  379. //调用方式
  380. request(infoQuery, options)
  381. .then((res) => {
  382. let data = stringToJson(res.bizContent)
  383. console.log(data);
  384. state.notice = data.text
  385. })
  386. .catch((err) => {
  387. console.log(err);
  388. });
  389. }
  390. onLoad(() => {
  391. getInfo()
  392. })
  393. </script>
  394. <style>
  395. page {
  396. background: #eef7f7;
  397. }
  398. </style>
  399. <style lang="scss" scoped>
  400. // .wrapper {
  401. // background: #eef7f7;
  402. // }
  403. .statusBar {
  404. width: 100%;
  405. position: sticky;
  406. background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
  407. top: 0;
  408. left: 0;
  409. z-index: 999;
  410. }
  411. .banner {
  412. position: relative;
  413. }
  414. .banner swiper {
  415. height: 470rpx;
  416. width: 750rpx;
  417. }
  418. .banner .notice {
  419. position: absolute;
  420. background: rgba(0, 0, 0, 0.28);
  421. border-radius: 30rpx;
  422. width: 500rpx;
  423. height: 60rpx;
  424. bottom: 34rpx;
  425. left: 125rpx;
  426. display: flex;
  427. justify-content: center;
  428. align-items: center;
  429. padding: 0 20rpx;
  430. box-sizing: border-box;
  431. }
  432. .banner .notice .icon {
  433. width: 40rpx;
  434. height: 40rpx;
  435. margin: 10rpx;
  436. }
  437. .banner .notice .notice-text {
  438. font-size: 24rpx;
  439. color: #ffffff;
  440. flex: 1;
  441. }
  442. .swiper-item image {
  443. width: 100%;
  444. height: auto;
  445. }
  446. .nav {
  447. display: flex;
  448. flex-wrap: wrap;
  449. padding: 0 35rpx;
  450. font-size: 28rpx;
  451. }
  452. .nav .item-box {
  453. display: flex;
  454. flex-direction: column;
  455. justify-content: center;
  456. align-items: center;
  457. }
  458. .nav .item {
  459. width: 80rpx;
  460. height: 80rpx;
  461. border-radius: 30rpx;
  462. display: flex;
  463. justify-content: center;
  464. align-items: center;
  465. margin: 50rpx 45rpx 20rpx 45rpx;
  466. }
  467. .nav .text {
  468. font-size: 24rpx;
  469. color: #172843;
  470. }
  471. .item-1 {
  472. background: linear-gradient(133deg, #5fff9b 0%, #00b38b 100%);
  473. }
  474. .item-2 {
  475. background: linear-gradient(-50deg, #018ffd 0%, #27fcff 100%);
  476. }
  477. .item-3 {
  478. background: linear-gradient(-47deg, #f88721 0%, #fecd61 100%);
  479. }
  480. .item-4 {
  481. background: linear-gradient(-47deg, #018ffd 0%, #27fcff 100%);
  482. }
  483. .item-5 {
  484. background: linear-gradient(-44deg, #018ffd 0%, #27fcff 100%);
  485. }
  486. .item-6 {
  487. background: linear-gradient(-50deg, #f88721 0%, #fecd61 100%);
  488. }
  489. .item-7 {
  490. background: linear-gradient(129deg, #5fff9b 0%, #00b38b 100%);
  491. }
  492. .item-8 {
  493. background: linear-gradient(124deg, #b8f0f2 0%, #62aeb1 100%);
  494. }
  495. .item image {
  496. width: 56rpx;
  497. height: 56rpx;
  498. }
  499. .express-lane {
  500. font-size: 36rpx;
  501. font-weight: 400;
  502. color: #000000;
  503. padding-top: 30rpx;
  504. // line-height: 58rpx;
  505. }
  506. .express-lane .title {
  507. padding-left: 30rpx;
  508. margin: 0rpx 0 20rpx;
  509. font-size: 32rpx;
  510. font-weight: bold;
  511. }
  512. .lane {
  513. display: flex;
  514. justify-content: space-evenly;
  515. }
  516. .lane-item {
  517. width: 330rpx;
  518. height: 150rpx;
  519. border-radius: 20rpx;
  520. display: flex;
  521. justify-content: center;
  522. align-items: center;
  523. }
  524. .lane-item image {
  525. width: 120rpx;
  526. height: 100rpx;
  527. margin: 0 18rpx;
  528. }
  529. .lane-item .text {
  530. display: flex;
  531. flex-direction: column;
  532. justify-content: center;
  533. // align-items: center;
  534. color: #ffffff;
  535. flex: 1;
  536. }
  537. .lane-item .head {
  538. font-size: 30rpx;
  539. font-weight: bold;
  540. }
  541. .lane-item .decribe {
  542. font-size: 24rpx;
  543. }
  544. .lane-1 {
  545. background: var(--background);
  546. }
  547. .lane-2 {
  548. background: var(--background);
  549. }
  550. .news {
  551. padding: 30rpx 30rpx 0 30rpx;
  552. }
  553. .news .title {
  554. font-size: 32rpx;
  555. font-weight: bold;
  556. }
  557. .news .left-text {
  558. flex: 1;
  559. margin-right: 100rpx;
  560. }
  561. .news-box {
  562. background: #ffffff;
  563. border-radius: 20rpx;
  564. padding: 0 32rpx;
  565. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  566. margin: 20rpx 0 50rpx;
  567. }
  568. .news .tit {
  569. font-size: 26rpx;
  570. color: #172843;
  571. }
  572. .news .news-item {
  573. display: flex;
  574. border-bottom: 1px solid #dcdcdc;
  575. padding: 32rpx 0 15rpx;
  576. }
  577. .news .image-box image {
  578. width: 100rpx;
  579. height: 100rpx;
  580. }
  581. .news .span {
  582. font-size: 22rpx;
  583. display: inline-block;
  584. text-align: center;
  585. background: #bae0f1;
  586. border-radius: 6rpx;
  587. color: #0a8f8a;
  588. padding: 4rpx 8rpx;
  589. }
  590. .news .more {
  591. font-size: 24rpx;
  592. text-align: center;
  593. color: #0a8f8a;
  594. padding: 22rpx 0;
  595. }
  596. .service {
  597. padding: 0 30rpx 50rpx 30rpx;
  598. }
  599. .service .title {
  600. font-size: 32rpx;
  601. font-weight: bold;
  602. }
  603. .service-box {
  604. background: #ffffff;
  605. border-radius: 20rpx;
  606. padding: 0 32rpx;
  607. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  608. display: flex;
  609. flex-direction: column;
  610. margin-top: 20rpx;
  611. }
  612. .service-item {
  613. display: flex;
  614. align-items: center;
  615. justify-content: center;
  616. padding: 22rpx 0;
  617. }
  618. .service-item .text {
  619. flex: 1;
  620. }
  621. .service image {
  622. width: 170rpx;
  623. height: 116rpx;
  624. margin-right: 26rpx;
  625. }
  626. .service .tit {
  627. font-size: 28rpx;
  628. font-weight: bold;
  629. color: #0d0f26;
  630. }
  631. .service .sub {
  632. font-size: 24rpx;
  633. color: #666666;
  634. padding-top: 10rpx;
  635. }
  636. .service .border {
  637. border-bottom: 1px solid #dcdcdc;
  638. }
  639. .mask {
  640. background: $uni-bg-color-mask;
  641. position: fixed;
  642. left: 0;
  643. top: 0;
  644. right: 0;
  645. bottom: 0;
  646. }
  647. .mask-content {
  648. background: $uni-bg-color;
  649. width: 570rpx;
  650. height: 480rpx;
  651. position: absolute;
  652. left: 50%;
  653. top: 50%;
  654. transform: translate(-50%, -50%);
  655. display: flex;
  656. flex-direction: column;
  657. border-radius: 20rpx;
  658. }
  659. .mask-close {
  660. text-align: right;
  661. }
  662. .mask-title {
  663. text-align: center;
  664. font-size: 32rpx;
  665. color: $uni-text-color-black;
  666. margin-bottom: 50rpx;
  667. }
  668. .mask-tab {
  669. display: flex;
  670. justify-content: space-evenly;
  671. }
  672. .icon-closed {
  673. width: 48rpx;
  674. height: 48rpx;
  675. margin: 24rpx 24rpx 0 0;
  676. }
  677. .tab-item {
  678. display: flex;
  679. flex-direction: column;
  680. justify-content: center;
  681. align-items: center;
  682. }
  683. .tab-tit {
  684. font-size: 32rpx;
  685. margin-top: 20rpx;
  686. color: #666;
  687. }
  688. .tab-item image {
  689. width: 160rpx;
  690. height: 160rpx;
  691. }
  692. .backlog-notice {
  693. margin: 50rpx 30rpx 0rpx;
  694. }
  695. .flow-path {
  696. padding: 20rpx 0rpx 20rpx;
  697. .scroll-view {
  698. white-space: nowrap;
  699. // position: sticky;
  700. top: 0;
  701. }
  702. .top-menu {
  703. display: flex;
  704. }
  705. .top-menu .tab {
  706. font-size: 28rpx;
  707. padding: 38rpx 30rpx;
  708. color: #666666;
  709. position: relative;
  710. }
  711. .top-menu .active .border {
  712. position: absolute;
  713. width: 70%;
  714. height: 16rpx;
  715. background: #00b38b;
  716. opacity: 0.3;
  717. bottom: 40rpx;
  718. z-index: -99;
  719. left: 15%;
  720. border-radius: 6rpx;
  721. }
  722. .top-menu .active {
  723. font-weight: bold;
  724. font-size: 32rpx;
  725. color: #0d0f26;
  726. }
  727. .top-menu .active::before {
  728. width: 100%;
  729. height: 16rpx;
  730. background: #00b38b;
  731. opacity: 0.3;
  732. }
  733. .flow-list {
  734. margin: 0rpx 30rpx;
  735. min-height: 700rpx;
  736. background: #ffffff;
  737. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  738. border-radius: 20rpx;
  739. padding: 55rpx 30rpx 30rpx;
  740. }
  741. }
  742. </style>