您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. <template>
  2. <filter>
  3. <!-- <view class="statusBar" :style="{height:statusBarHeight+'px'}" v-show="isShowBar"></view> -->
  4. <view class="wrapper">
  5. <!-- Banner -->
  6. <view class="banner">
  7. <swiper class="swiper" circular :indicator-dots="swiper.indicatorDots" :autoplay="swiper.autoplay"
  8. :interval="swiper.interval" :duration="swiper.duration"
  9. indicator-active-color="rgba(0, 179, 139, 1)" :easing-function="swiper.easing">
  10. <block v-if="state.swiperList.length >0" v-for="item in state.swiperList" :key="item.id">
  11. <swiper-item class="swiper-item" @click="link(item)">
  12. <image :src="fileURLList + item.imgUrl" mode="widthFix"></image>
  13. </swiper-item>
  14. </block>
  15. </swiper>
  16. <view class="notice">
  17. <image class="icon" :src="fileURL + 'image/index/icon-notice.png'" lazy-load="false"
  18. mode="aspectFill">
  19. </image>
  20. <uni-notice-bar style="width: 100%;" scrollable single :text="state.notice" @click="tip()">
  21. </uni-notice-bar>
  22. </view>
  23. </view>
  24. <!-- 按钮导航 -->
  25. <view class="nav">
  26. <!-- <view class="item-box" @click="cardRecharge(1)">
  27. <view class="item item-1">
  28. <image :src="fileURL + 'image/index/item-1.png'" mode="aspectFill" />
  29. </view>
  30. <view class="text">储值卡充值</view>
  31. </view> -->
  32. <view class="item-box" @click="$util.navTo('/pages/bluetooth/bluetooth?routeType=4', true)">
  33. <view class="item item-2">
  34. <image :src="fileURL + 'image/index/item-2.png'" mode="aspectFill" />
  35. </view>
  36. <view class="text">卡签信息查询</view>
  37. </view>
  38. <!-- <view class="item-box" @click="$util.navTo('/subpackage/orders/Invoice-mannager',true)">
  39. <view class="item item-3">
  40. <image :src="fileURL + 'image/index/item-3.png'" mode="aspectFill" />
  41. </view>
  42. <view class="text">通行发票</view>
  43. </view> -->
  44. <view class="item-box"
  45. @click="$util.navTo('/subpackage/after-sale/activation-once-again/select-car',true)">
  46. <view class="item item-3">
  47. <image :src="fileURL + '20230511/24e179d44e2d4e5687339bff_obucxjh.png'" mode="aspectFill" />
  48. </view>
  49. <view class="text">OBU重新激活</view>
  50. </view>
  51. <view class="item-box"
  52. @click="$util.navTo('/subpackage/personal-center/install-activation-order',true)">
  53. <view class="item item-4">
  54. <image :src="fileURL + 'image/index/item-4.png'" mode="aspectFill" />
  55. </view>
  56. <view class="text">首次激活</view>
  57. </view>
  58. <view class="item-box" @click="cardRecharge(3)">
  59. <view class="item item-5">
  60. <image :src="fileURL + 'image/index/item-5.png'" mode="aspectFill" />
  61. </view>
  62. <view class="text">设备注销</view>
  63. </view>
  64. <view class="item-box" @click="$util.navTo(`/subpackage/after-sale/equipment-upgrade/select-car`,true)">
  65. <view class="item item-6">
  66. <image :src="fileURL + 'image/index/item-6.png'" mode="aspectFill" />
  67. </view>
  68. <view class="text">设备升级</view>
  69. </view>
  70. <!-- <view class="item-box"
  71. @click="$util.navTo(`/subpackage/personal-center/setting/personal-information/corrections`,true)">
  72. <view class="item item-7">
  73. <image :src="fileURL + 'image/index/item-7.png'" mode="aspectFill" />
  74. </view>
  75. <view class="text">基础信息变更</view>
  76. </view> -->
  77. <view class="item-box" @click="$util.navTo(`/subpackage/after-sale/onlineService`,true)">
  78. <view class="item item-7">
  79. <image :src="fileURL + 'image/index/item-7.png'" mode="aspectFill" />
  80. </view>
  81. <view class="text">在线客服</view>
  82. </view>
  83. <view class="item-box" @click="$util.navTo(`/pages/service/service`,true)">
  84. <view class="item item-8">
  85. <image :src="fileURL + 'image/index/item-more.png'" mode="aspectFill" />
  86. </view>
  87. <view class="text">更多</view>
  88. </view>
  89. </view>
  90. <!--快速办理通道 -->
  91. <view class="express-lane">
  92. <view class="title">快速办理</view>
  93. <view class="lane">
  94. <view class="lane-item lane-1" :style="{ '--background': bgOrange }" @click="showMask(1)">
  95. <image :src="fileURL + 'image/index/icon-car.png'" mode="aspectFill"></image>
  96. <view class="text">
  97. <text class="head">客车用户</text>
  98. <!-- <text class="decribe">业务内容简介</text> -->
  99. </view>
  100. </view>
  101. <view class="lane-item lane-2" :style="{ '--background': bgBlue }" @click="showMask(2)">
  102. <image :src="fileURL + 'image/index/icon-truck.png'" mode="aspectFill"></image>
  103. <view class="text">
  104. <text class="head">货车用户</text>
  105. <!-- <text class="decribe">业务内容简介</text> -->
  106. </view>
  107. </view>
  108. </view>
  109. </view>
  110. <!-- 办理流程 -->
  111. <view class="flow-path">
  112. <scroll-view scroll-x="true" class="scroll-view">
  113. <view class="top-menu">
  114. <view :class="item == state.tabActive ? 'tab active' : 'tab'"
  115. v-for="item in state.flowPathTabList" :key="item" @click="flowPathTabHandle(item)">
  116. <view class="border"></view>{{ item }}
  117. </view>
  118. </view>
  119. </scroll-view>
  120. <view v-if="state.tabActive === '办理流程'">
  121. <view class="flow-list">
  122. <flow-path-list :options="state.flowList"></flow-path-list>
  123. </view>
  124. </view>
  125. <view v-else-if="state.tabActive === '办理条件'">
  126. <view class="flow-list as-gravity-center"> {{state.processeConditionText}} </view>
  127. </view>
  128. <view v-else-if="state.tabActive === '常见问题'">
  129. <view class="flow-list as-gravity-center"> {{state.commonQuestionText}} </view>
  130. </view>
  131. </view>
  132. </view>
  133. <!-- 高速快讯 -->
  134. <view class="news" v-if="state.highMsgData.length!=0">
  135. <view class="title">高速快讯</view>
  136. <view class="news-box">
  137. <view class="news-item" v-for="(item,index) in state.highMsgData" :key='index' @click="link(item)">
  138. <view class="left-text">
  139. <view class="tit description">{{item.title}}</view>
  140. <view class="span">{{item.copywriting}}</view>
  141. </view>
  142. <view class="image-box">
  143. <image :src="fileURLList + item.imgUrl" mode="aspectFill"></image>
  144. </view>
  145. </view>
  146. <view v-if="state.highMsgData.length!=0" class="more"
  147. @click="$util.navTo('/subpackage/orders/moreHighMsg/moreHighMsg',true)">查看更多</view>
  148. </view>
  149. </view>
  150. </filter>
  151. <!-- ETC选择弹窗 -->
  152. <view class="mask" v-if="isShowMask">
  153. <view class="mask-content">
  154. <filter>
  155. <view class="mask-close">
  156. <image :src="fileURL + 'image/index/icon-close.png'" class="icon-closed" @click="closeMask"></image>
  157. </view>
  158. <view class="mask-title" :style="{ '--color': color }">选择ETC用户类型</view>
  159. <view class="mask-tab">
  160. <view class="tab-item active" @click="toCreatOrder('1')">
  161. <image :src="fileURL + 'image/index/icon-personal.png'" mode="aspectFill"></image>
  162. <text class="tab-tit on">个人办理</text>
  163. </view>
  164. <view class="tab-item" @click="toCreatOrder('2')">
  165. <image :src="fileURL + 'image/index/icon-unit.png'" mode="aspectFill"></image>
  166. <text class="tab-tit on">单位办理</text>
  167. </view>
  168. </view>
  169. </filter>
  170. </view>
  171. </view>
  172. </template>
  173. <script setup lang="ts">
  174. import {
  175. onMounted,
  176. ref
  177. } from "vue";
  178. import {
  179. onPageScroll,
  180. onLoad, onReachBottom
  181. } from "@dcloudio/uni-app";
  182. import flowPathList from "./components/flow-path-list.vue";
  183. import filter from '@/components/filter/filter.vue';
  184. import {
  185. request
  186. } from "@/utils/network/request.js";
  187. import {
  188. stringToJson
  189. } from "@/utils/network/encryption.js";
  190. import {
  191. useUserStore
  192. } from "@/stores/user";
  193. import {
  194. getItem,
  195. setItem,
  196. StorageKeys
  197. } from "@/utils/storage";
  198. import {
  199. queryKey,
  200. querySwiper,
  201. envs,
  202. infoQuery,
  203. queryHighMsg,
  204. orderList
  205. } from "@/utils/network/api.js";
  206. import {
  207. reactive
  208. } from "vue";
  209. import {
  210. fileURL, fileURLList
  211. } from "@/datas/fileURL.js";
  212. import {
  213. navTo,
  214. confirm,
  215. msg,
  216. noticeUser
  217. } from "@/utils/utils";
  218. import {
  219. getCodeName
  220. } from "@/datas/queryKey.js";
  221. import navBar from "@/components/nav-bar/nav-bar2.vue";
  222. const tools = require("../../static/etcUtil/tools.js");
  223. const bgOrange = `url(${fileURL}image/index/bg-orange.png) center center no-repeat`;
  224. const bgBlue = `url(${fileURL}image/index/bg-blue.png) center center no-repeat`;
  225. const list = reactive(["您有一条待办事项,还未办理完成"])
  226. const scrollTop = ref(0);
  227. const isBack = ref(false);
  228. const swiper = reactive({
  229. indicatorDots: true,
  230. autoplay: true,
  231. interval: 3000,
  232. duration: 3000,
  233. easing: "easeInOutCubic"
  234. })
  235. console.log('输出内容==============', getItem(StorageKeys.OpenId), '==============')
  236. const state = reactive({
  237. type: 0, //1客车 2货车
  238. userType: 1, //1个人 2单位
  239. notice: "",
  240. swiperList: [],
  241. noticeList: [], //公告栏列表
  242. flowPathTabList: ["办理流程", "办理条件", "常见问题"],
  243. tabActive: "办理流程",
  244. flowList: [
  245. //办理流程数据
  246. {
  247. title: "第一步:产品选择",
  248. desc: "选择购买的发行产品",
  249. },
  250. {
  251. title: "第二步:信息校验",
  252. desc: "提交车牌号、车牌颜色、收货地址相关信息",
  253. },
  254. {
  255. title: "第三步:证件上传",
  256. desc: "上传身份证、行驶证等相关信息",
  257. },
  258. {
  259. title: "第四步:订单支付",
  260. desc: "支付完成订单",
  261. },
  262. {
  263. title: "第五步:签约代扣",
  264. desc: "选择签约账户并关联",
  265. },
  266. ],
  267. highMsgData: '',//高速快讯内容
  268. processeConditionText: "", //办理条件文本
  269. commonQuestionText: "", //常见问题文本
  270. isEnableSetGray: false
  271. });
  272. const isShowMask = ref(false);
  273. const isShowBar = ref(false)
  274. const userStore = useUserStore();
  275. const type = 0;
  276. const title = ref("我是测试");
  277. const statusBarHeight = ref(0)
  278. //监听页面滚动
  279. onPageScroll((e) => {
  280. if (e.scrollTop > statusBarHeight.value) {
  281. isShowBar.value = true;
  282. } else {
  283. isShowBar.value = false;
  284. }
  285. scrollTop.value = e.scrollTop;
  286. });
  287. onLoad(() => {
  288. getInfo();
  289. quanKeyAction().then((val : any) => {
  290. setItem('key', val.dictTypeAndItem)
  291. })
  292. })
  293. onMounted(() => {
  294. uni.getSystemInfo({
  295. success: (e : any) => {
  296. statusBarHeight.value = e.statusBarHeight;
  297. }
  298. })
  299. getSwiper()
  300. });
  301. onReachBottom(() => {
  302. highMsg(); //高速快讯
  303. })
  304. const tip = () => {
  305. const params = encodeURIComponent(JSON.stringify("https://webzeus.hltgz.com/throughBilManager/index"))
  306. tools.toUrl(`/subpackage/personal-center/webview?url=` + params);
  307. }
  308. //获取轮播
  309. const getSwiper = () => {
  310. let options = {
  311. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  312. data: {
  313. }, //请求参数
  314. method: "POST", //提交方式(默认POST)
  315. showLoading: true, //是否显示加载中(默认显示)
  316. };
  317. //调用方式
  318. request(querySwiper, options).then((res) => {
  319. console.log(stringToJson(res.bizContent));
  320. const data = stringToJson(res.bizContent)
  321. console.log("轮播图", data)
  322. state.swiperList = data.swipers ? data.swipers : []
  323. })
  324. .catch((err) => {
  325. console.log(err);
  326. });
  327. };
  328. //办理流程tab选择
  329. const flowPathTabHandle = (tab) => {
  330. state.tabActive = tab;
  331. if (tab == "办理条件") {
  332. processeCondition();//办理条件
  333. } else if (tab == "常见问题") {
  334. commonQuestion();
  335. }
  336. };
  337. //全量枚举值查询
  338. const quanKeyAction = () => {
  339. var data = {};
  340. const options = {
  341. type: 2,
  342. data: data,
  343. method: "POST",
  344. showLoading: true,
  345. };
  346. return new Promise(async (resolve, reject) => {
  347. const res = await request(queryKey, options);
  348. const data = stringToJson(res.bizContent);
  349. resolve(data);
  350. }).catch((error) => {
  351. reject(error);
  352. });
  353. }
  354. const toCreatOrder = (val : number) => {
  355. console.log(typeof (val));
  356. state.userType = val;
  357. navTo(`/subpackage/orders/choice-product?type=${state.type}&&userType=${state.userType}`)
  358. closeMask();
  359. };
  360. const showMask = (val : any) => {
  361. state.type = val; //1 客车 2货车
  362. isShowMask.value = true;
  363. };
  364. const closeMask = () => {
  365. isShowMask.value = false;
  366. };
  367. // 获取文本信息----用户协议
  368. const getInfo = () => {
  369. //参数说明
  370. let options = {
  371. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  372. data: {
  373. businessType: 'BROADCAST' //广播栏信息
  374. }, //请求参数
  375. method: "POST", //提交方式(默认POST)
  376. showLoading: true, //是否显示加载中(默认显示)
  377. };
  378. //调用方式
  379. request(infoQuery, options)
  380. .then((res) => {
  381. let data = stringToJson(res.bizContent)
  382. console.log(data);
  383. state.notice = data.text
  384. })
  385. .catch((err) => {
  386. console.log(err);
  387. });
  388. }
  389. // 高速快讯查询接口
  390. const highMsg = () => {
  391. let options = {
  392. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  393. data: {
  394. pageNo: 1,
  395. pageSize: 2
  396. }, //请求参数
  397. method: "POST", //提交方式(默认POST)
  398. showLoading: true, //是否显示加载中(默认显示)
  399. };
  400. //调用方式
  401. request(queryHighMsg, options).then((res) => {
  402. console.log("高速快讯查询接口", stringToJson(res.bizContent));
  403. state.highMsgData = stringToJson(res.bizContent).data
  404. for (var i = 0; i < state.highMsgData.length; i++) {
  405. state.highMsgData[i]["copywriting"] = getCodeName('COPYWRITING', state.highMsgData[i]["copywriting"])
  406. if (state.highMsgData[i]["type"] == 3) {
  407. state.highMsgData[i]["title"] = state.highMsgData[i]["hyperLink"]
  408. }
  409. }
  410. state.highMsgData.sort(function (a, b) {
  411. return a.sequence - b.sequence//正序
  412. })
  413. }).catch((err) => { console.log(err) });
  414. }
  415. const link = (item : any) => {
  416. if (item.type == 1) {
  417. const params = encodeURIComponent(JSON.stringify(item.hyperLink))
  418. tools.toUrl(`/subpackage/personal-center/webview?url=` + params);
  419. } else if (item.type == 2) {
  420. navTo(item.hyperLink)
  421. } else if (item.type == 3) {
  422. const param = encodeURIComponent(JSON.stringify(item))
  423. tools.toUrl(`/subpackage/orders/moreHighMsg/textDetails?item=` + param);
  424. } else if (item.type == 4) {
  425. uni.navigateToMiniProgram({
  426. appId: item.hyperLink,
  427. path: item.speedUrl,
  428. success(res) {
  429. console.log(res);
  430. },
  431. complete(res) {
  432. console.log(res);
  433. },
  434. fail(res) {
  435. console.log(res);
  436. // 未成功跳转到车主小程序
  437. },
  438. });
  439. }
  440. }
  441. const processeCondition = () => {
  442. let options = {
  443. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  444. data: {
  445. businessType: 'PROCESSING_CONDITIONS' //办理条件
  446. }, //请求参数
  447. method: "POST", //提交方式(默认POST)
  448. showLoading: true, //是否显示加载中(默认显示)
  449. };
  450. //调用方式
  451. request(infoQuery, options)
  452. .then((res) => {
  453. let data = stringToJson(res.bizContent)
  454. console.log("办理条件", data)
  455. state.processeConditionText = data.text
  456. })
  457. .catch((err) => {
  458. console.log(err);
  459. });
  460. }
  461. const commonQuestion = () => {
  462. let options = {
  463. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  464. data: {
  465. businessType: 'COMMON_PROBLEM' //常见问题
  466. }, //请求参数
  467. method: "POST", //提交方式(默认POST)
  468. showLoading: true, //是否显示加载中(默认显示)
  469. };
  470. //调用方式
  471. request(infoQuery, options)
  472. .then((res) => {
  473. let data = stringToJson(res.bizContent)
  474. console.log("常见问题", data)
  475. state.commonQuestionText = data.text
  476. })
  477. .catch((err) => {
  478. console.log(err);
  479. });
  480. }
  481. // 代办事项
  482. const doSomething = () => {
  483. let options = {
  484. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  485. data: {
  486. "opId": getItem(StorageKeys.OpenId),
  487. "source": "WECHAT",
  488. "vehiclePlate": "",
  489. "tabIndex": 3 + '',
  490. "pageNo": 1,
  491. "pageSize": 100,
  492. "promotionModes": 1
  493. },
  494. method: "POST", //提交方式(默认POST)
  495. };
  496. //调用方式
  497. request(orderList, options)
  498. .then((res) => {
  499. let data = stringToJson(res.bizContent)
  500. let obj = {};
  501. obj["id"] = 1;
  502. obj['title'] = "您有" + data.data.length + "条未完成订单,前往处理"
  503. state.noticeList.push(obj)
  504. console.log("代办事项", data.data)
  505. })
  506. .catch((err) => {
  507. console.log(err);
  508. });
  509. }
  510. const cardRecharge = (val) => {
  511. // #ifdef MP-ALIPAY
  512. if (val == 1 || val == 2 || val == 3) {
  513. msg("业务升级中,请前往九州ETC公众号进行办理。或拨打客服电话400-800-8787")
  514. }
  515. // #endif
  516. // #ifdef MP-WEIXIN
  517. if (val == 1) {
  518. navTo('/pages/recharge/recharge-pay', true)
  519. } else if (val == 2) {
  520. navTo('/subpackage/after-sale/rescind-carId/rescind-carId-select', true)
  521. } else if (val == 3) {
  522. navTo('/subpackage/after-sale/ETC-log-off/select-car', true)
  523. }
  524. // #endif
  525. }
  526. </script>
  527. <style>
  528. page {
  529. background: #eef7f7;
  530. }
  531. </style>
  532. <style lang="scss" scoped>
  533. .statusBar {
  534. width: 100%;
  535. position: sticky;
  536. background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
  537. top: 0;
  538. left: 0;
  539. z-index: 999;
  540. }
  541. .banner {
  542. position: relative;
  543. }
  544. .banner swiper {
  545. height: 470rpx;
  546. width: 750rpx;
  547. }
  548. .banner .notice {
  549. position: absolute;
  550. background: rgba(0, 0, 0, 0.28);
  551. border-radius: 30rpx;
  552. width: 500rpx;
  553. height: 60rpx;
  554. bottom: 46rpx;
  555. left: 125rpx;
  556. display: flex;
  557. justify-content: center;
  558. align-items: center;
  559. padding: 0 20rpx;
  560. box-sizing: border-box;
  561. ::v-deep .uni-noticebar {
  562. background: none !important;
  563. margin-bottom: 0;
  564. text {
  565. font-size: 24rpx !important;
  566. color: #ffffff !important;
  567. }
  568. }
  569. }
  570. .banner .notice .icon {
  571. width: 40rpx;
  572. height: 40rpx;
  573. margin: 10rpx;
  574. }
  575. .banner .notice .notice-text {
  576. font-size: 24rpx;
  577. color: #ffffff;
  578. flex: 1;
  579. }
  580. .swiper-item image {
  581. width: 100%;
  582. height: auto;
  583. }
  584. .nav {
  585. display: flex;
  586. flex-wrap: wrap;
  587. padding: 0 35rpx;
  588. font-size: 28rpx;
  589. }
  590. .nav .item-box {
  591. display: flex;
  592. flex-direction: column;
  593. justify-content: center;
  594. align-items: center;
  595. }
  596. .nav .item {
  597. width: 80rpx;
  598. height: 80rpx;
  599. border-radius: 30rpx;
  600. display: flex;
  601. justify-content: center;
  602. align-items: center;
  603. margin: 50rpx 45rpx 20rpx 45rpx;
  604. }
  605. .nav .text {
  606. font-size: 24rpx;
  607. color: #172843;
  608. }
  609. .item-1 {
  610. background: linear-gradient(133deg, #5fff9b 0%, #00b38b 100%);
  611. }
  612. .item-2 {
  613. background: linear-gradient(-50deg, #018ffd 0%, #27fcff 100%);
  614. }
  615. .item-3 {
  616. background: linear-gradient(-47deg, #f88721 0%, #fecd61 100%);
  617. }
  618. .item-4 {
  619. background: linear-gradient(-47deg, #018ffd 0%, #27fcff 100%);
  620. }
  621. .item-5 {
  622. background: linear-gradient(-44deg, #018ffd 0%, #27fcff 100%);
  623. }
  624. .item-6 {
  625. background: linear-gradient(-50deg, #f88721 0%, #fecd61 100%);
  626. }
  627. .item-7 {
  628. background: linear-gradient(129deg, #5fff9b 0%, #00b38b 100%);
  629. }
  630. .item-8 {
  631. background: linear-gradient(124deg, #b8f0f2 0%, #62aeb1 100%);
  632. }
  633. .item image {
  634. width: 56rpx;
  635. height: 56rpx;
  636. }
  637. .express-lane {
  638. font-size: 36rpx;
  639. font-weight: 400;
  640. color: #000000;
  641. padding-top: 30rpx;
  642. }
  643. .express-lane .title {
  644. padding-left: 30rpx;
  645. margin: 0rpx 0 20rpx;
  646. font-size: 32rpx;
  647. font-weight: bold;
  648. }
  649. .lane {
  650. display: flex;
  651. justify-content: space-evenly;
  652. }
  653. .lane-item {
  654. width: 330rpx;
  655. height: 150rpx;
  656. border-radius: 20rpx;
  657. display: flex;
  658. justify-content: center;
  659. align-items: center;
  660. }
  661. .lane-item image {
  662. width: 120rpx;
  663. height: 100rpx;
  664. margin: 0 18rpx;
  665. }
  666. .lane-item .text {
  667. display: flex;
  668. flex-direction: column;
  669. justify-content: center;
  670. color: #ffffff;
  671. flex: 1;
  672. }
  673. .lane-item .head {
  674. font-size: 30rpx;
  675. font-weight: bold;
  676. }
  677. .lane-item .decribe {
  678. font-size: 24rpx;
  679. }
  680. .lane-1 {
  681. background: var(--background);
  682. }
  683. .lane-2 {
  684. background: var(--background);
  685. }
  686. .news {
  687. padding: 30rpx 30rpx 0 30rpx;
  688. }
  689. .news .title {
  690. font-size: 32rpx;
  691. font-weight: bold;
  692. }
  693. .news .left-text {
  694. flex: 1;
  695. margin-right: 100rpx;
  696. }
  697. .news-box {
  698. background: #ffffff;
  699. border-radius: 20rpx;
  700. padding: 0 32rpx;
  701. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  702. margin: 20rpx 0 50rpx;
  703. }
  704. .news .tit {
  705. font-size: 26rpx;
  706. color: #172843;
  707. }
  708. .news .news-item {
  709. display: flex;
  710. border-bottom: 1px solid #dcdcdc;
  711. padding: 32rpx 0 15rpx;
  712. }
  713. .news .image-box image {
  714. width: 100rpx;
  715. height: 100rpx;
  716. border-radius: 10rpx;
  717. }
  718. .news .span {
  719. font-size: 22rpx;
  720. display: inline-block;
  721. text-align: center;
  722. background: #bae0f1;
  723. border-radius: 6rpx;
  724. color: #0a8f8a;
  725. padding: 4rpx 8rpx;
  726. }
  727. .news .more {
  728. font-size: 24rpx;
  729. text-align: center;
  730. color: #0a8f8a;
  731. padding: 22rpx 0;
  732. }
  733. .mask {
  734. background: $uni-bg-color-mask;
  735. position: fixed;
  736. left: 0;
  737. top: 0;
  738. right: 0;
  739. bottom: 0;
  740. }
  741. .mask-content {
  742. background: $uni-bg-color;
  743. width: 570rpx;
  744. height: 480rpx;
  745. position: absolute;
  746. left: 50%;
  747. top: 50%;
  748. transform: translate(-50%, -50%);
  749. display: flex;
  750. flex-direction: column;
  751. border-radius: 20rpx;
  752. }
  753. .mask-close {
  754. text-align: right;
  755. }
  756. .mask-title {
  757. text-align: center;
  758. font-size: 32rpx;
  759. color: $uni-text-color-black;
  760. margin-bottom: 50rpx;
  761. }
  762. .mask-tab {
  763. display: flex;
  764. justify-content: space-evenly;
  765. }
  766. .icon-closed {
  767. width: 48rpx;
  768. height: 48rpx;
  769. margin: 24rpx 24rpx 0 0;
  770. }
  771. .tab-item {
  772. display: flex;
  773. flex-direction: column;
  774. justify-content: center;
  775. align-items: center;
  776. }
  777. .tab-tit {
  778. font-size: 32rpx;
  779. margin-top: 20rpx;
  780. color: #666;
  781. }
  782. .tab-item image {
  783. width: 160rpx;
  784. height: 160rpx;
  785. }
  786. .backlog-notice {
  787. margin: 50rpx 30rpx 0rpx;
  788. }
  789. .flow-path {
  790. padding: 20rpx 0rpx 20rpx;
  791. .scroll-view {
  792. white-space: nowrap;
  793. // position: sticky;
  794. top: 0;
  795. }
  796. .top-menu {
  797. display: flex;
  798. }
  799. .top-menu .tab {
  800. font-size: 28rpx;
  801. padding: 38rpx 30rpx;
  802. color: #666666;
  803. position: relative;
  804. }
  805. .top-menu .active .border {
  806. position: absolute;
  807. width: 70%;
  808. height: 16rpx;
  809. background: #00b38b;
  810. opacity: 0.3;
  811. bottom: 40rpx;
  812. z-index: -99;
  813. left: 15%;
  814. border-radius: 6rpx;
  815. }
  816. .top-menu .active {
  817. font-weight: bold;
  818. font-size: 32rpx;
  819. color: #0d0f26;
  820. }
  821. .top-menu .active::before {
  822. width: 100%;
  823. height: 16rpx;
  824. background: #00b38b;
  825. opacity: 0.3;
  826. }
  827. .flow-list {
  828. margin: 0rpx 30rpx;
  829. min-height: 700rpx;
  830. background: #ffffff;
  831. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  832. border-radius: 20rpx;
  833. padding: 55rpx 30rpx 30rpx;
  834. }
  835. }
  836. .description {
  837. overflow: hidden;
  838. -webkit-line-clamp: 2;
  839. text-overflow: ellipsis;
  840. display: -webkit-box;
  841. -webkit-box-orient: vertical;
  842. }
  843. </style>