You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.vue 27KB

10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
2 lat temu
10 miesięcy temu
2 lat temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
3 tygodni temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
9 miesięcy temu
9 miesięcy temu
9 miesięcy temu
8 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
10 miesięcy temu
2 lat temu
2 lat temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
1 rok temu
11 miesięcy temu
1 rok temu
8 miesięcy temu
10 miesięcy temu
9 miesięcy temu
9 miesięcy temu
3 tygodni temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
2 lat temu
9 miesięcy temu
2 lat temu
9 miesięcy temu
2 lat temu
3 tygodni temu
2 lat temu
9 miesięcy temu
2 lat temu
9 miesięcy temu
2 lat temu
3 tygodni temu
2 lat temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
3 tygodni temu
10 miesięcy temu
8 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
8 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
9 miesięcy temu
9 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
9 miesięcy temu
10 miesięcy temu
10 miesięcy temu
10 miesięcy temu
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243
  1. <template>
  2. <view class='container'>
  3. <view class="bg-img">
  4. <image :src="`${fileURL}image/newHome/header.png`" mode="scaleToFill" class="icon"></image>
  5. </view>
  6. <view class="content">
  7. <view class="header">
  8. <!-- <navBar :isBack='false' :title='首页'></navBar> -->
  9. <view class="title">
  10. <view :style="{ height: `${statusBarHeight}px` }"></view>
  11. <!-- 自定义导航栏高度 -->
  12. <view class='title-txt' :style="{
  13. height: `${barHeight}px`,
  14. 'line-height': `${barHeight}px`
  15. }">
  16. <text :style="{fontWeight: 'bold', fontSize: '28rpx'}">首页</text>
  17. </view>
  18. </view>
  19. <view class="search-box">
  20. <image :src="`${fileURL}image/newHome/search.png`" class="icon" mode="aspectFill"></image>
  21. <input class="search" placeholder="办业务·搜一搜" @input="onKeyInput" />
  22. </view>
  23. </view>
  24. <view class="nav">
  25. <view class="item-box" v-for='(item,index) in navList' :key='index' @click="handleNav(item)">
  26. <view class="icon-img">
  27. <image :src="item.imgUrl" mode="aspectFit" class='img'></image>
  28. </view>
  29. <view class="b-txt">
  30. {{item.title}}
  31. </view>
  32. </view>
  33. </view>
  34. <view class="notice" v-if="state.notice != '无'"
  35. :style="{'--bgimg':`url(${fileURL}image/newHome/tongzhi.png)`}">
  36. <view class="l-img">
  37. <image :src="`${fileURL}image/newHome/tongzhi-l.png`" class='img' mode="aspectFit"></image>
  38. </view>
  39. <view class="r-info">
  40. <uni-notice-bar style="width: 100%;" scrollable single :text="state.notice"></uni-notice-bar>
  41. </view>
  42. </view>
  43. <view class="supervision-con">
  44. <swiper class="swiper" circular :indicator-dots="swiper.indicatorDots" :autoplay="swiper.autoplay"
  45. :interval="swiper.interval" :duration="swiper.duration">
  46. <block v-if="state.swiperList.length >0" v-for="item in state.swiperList" :key="item.id">
  47. <swiper-item class="swiper-item">
  48. <image :src="fileURLList + item.imgUrl" mode="widthFix" class='img' @click="call()"></image>
  49. </swiper-item>
  50. </block>
  51. </swiper>
  52. </view>
  53. <view class="title-name title-h">
  54. 快速办理
  55. </view>
  56. <view class="express-lane">
  57. <view class="item keche" @click="showMask(1)"
  58. :style="{'--bgimg':`url(${fileURL}image/newHome/keche.png)`}">
  59. <view class="item-con">
  60. <view class="top-txt">
  61. 客车用户
  62. </view>
  63. <view class="btn">
  64. 进入
  65. </view>
  66. </view>
  67. </view>
  68. <view class="item huoche" @click="showMask(2)"
  69. :style="{'--bgimg':`url(${fileURL}image/newHome/huoche.png)`}">
  70. <view class="item-con">
  71. <view class="top-txt">
  72. 货车用户
  73. </view>
  74. <view class="btn">
  75. 进入
  76. </view>
  77. </view>
  78. </view>
  79. </view>
  80. <view class="news-con" v-if="state.highMsgData.length>0">
  81. <view class="title-con">
  82. <text class='title-h'>高速快讯</text>
  83. <view class="r-more" @click="$util.navTo('/subpackage/orders/moreHighMsg/moreHighMsg',true)">
  84. <text class='txt'>更多</text>
  85. <image :src="`${fileURL}image/newHome/r-icon.png`" mode="aspectFit" class='icon'></image>
  86. </view>
  87. </view>
  88. <view class="news-box">
  89. <template v-if='state.highMsgData'>
  90. <view class="news-item" v-for="(item,index) in state.highMsgData" :key='index'
  91. @click="link(item)">
  92. <view class="l-img">
  93. <image :src="fileURLList + item.imgUrl" mode="aspectFill" class="img"></image>
  94. </view>
  95. <view class="r-txt">
  96. <view class="tit">
  97. {{item.title}}
  98. </view>
  99. <view class="b-time">
  100. {{item.updateTime}}
  101. </view>
  102. </view>
  103. </view>
  104. </template>
  105. <view class="empty-news" v-else>
  106. <u-empty text="暂无数据" mode="news" :icon-size='90' :font-size='24'></u-empty>
  107. </view>
  108. </view>
  109. </view>
  110. <!-- 办理流程 -->
  111. <view class="flow-path">
  112. <view class="top-menu">
  113. <view :class="item == state.tabActive ? 'tab active' : 'tab'" v-for="item in state.flowPathTabList"
  114. :key="item" @click="flowPathTabHandle(item)">
  115. <view class="txt">
  116. {{ item }}
  117. </view>
  118. <view class="border" :style="{'--bgimg':`url(${fileURL}image/newHome/bottom-select.png)`}">
  119. </view>
  120. </view>
  121. </view>
  122. <view v-if="state.tabActive === '办理流程'">
  123. <view class="flow-list">
  124. <flow-path-list :options="state.flowList"></flow-path-list>
  125. </view>
  126. </view>
  127. <view v-else-if="state.tabActive === '办理条件'">
  128. <view class="flow-list tiaojian">
  129. <view class="title-top">
  130. <image :src="`${fileURL}image/newHome/tiaojian.png`" mode="scaleToFill" class="icon-img">
  131. </image>
  132. <view class="txt">
  133. 基本条件
  134. </view>
  135. <image :src="`${fileURL}image/newHome/tiaojianr.png`" mode="scaleToFill" class="icon-img">
  136. </image>
  137. </view>
  138. <!-- <view class="list-info"> {{state.processeConditionText}} </view> -->
  139. <view class="item" v-for="(item,index) in state.processeConditionText" :key="index">
  140. <view class="tu" :style="{'--bgimg':`url(${fileURL}image/newHome/condition.png)`}">
  141. {{index+1}}</view>
  142. <view>{{item}}</view>
  143. </view>
  144. </view>
  145. </view>
  146. <view v-else-if="state.tabActive === '常见问题'">
  147. <view class="flow-list wenti">
  148. <view class="item-box" v-for='(item,index) in state.commonQuestionArr' :key='index'>
  149. <view class="l-icon">
  150. <image :src="`${fileURL}image/newHome/wenhao.png`" mode="scaleToFill" class="icon-img">
  151. </image>
  152. </view>
  153. <view class="txt">
  154. {{item}}
  155. </view>
  156. </view>
  157. </view>
  158. </view>
  159. </view>
  160. </view>
  161. </view>
  162. <!-- ETC选择弹窗 -->
  163. <view class="mask" v-if="isShowMask">
  164. <view class="mask-content">
  165. <filter>
  166. <view class="mask-close">
  167. <image :src="`${fileURL}image/newHome/close-dan.png`" class="icon-closed" @click="closeMask">
  168. </image>
  169. </view>
  170. <view class="mask-title">请选择ETC卡用户类型</view>
  171. <view class="mask-tab">
  172. <view class="tab-item" @click="toCreatOrder('1')">
  173. <image :src="`${fileURL}image/newHome/geren.png`" mode="aspectFill" class='img'></image>
  174. <view class="r-info">
  175. <view class="tab-tit">个人办理用户</view>
  176. <view class="tab-desc">个人办理用户</view>
  177. </view>
  178. </view>
  179. <view class="tab-item" @click="toCreatOrder('2')">
  180. <image :src="`${fileURL}image/newHome/danwei.png`" mode="aspectFill" class='img'></image>
  181. <view class="r-info">
  182. <view class="tab-tit">单位办理用户</view>
  183. <view class="tab-desc">单位办理用户</view>
  184. </view>
  185. </view>
  186. </view>
  187. </filter>
  188. </view>
  189. </view>
  190. <!-- 提示 -->
  191. <tips :showTips="state.showTips" @cancle="cancle"></tips>
  192. </template>
  193. <script setup lang="ts">
  194. import {
  195. onMounted,
  196. ref, reactive
  197. } from "vue";
  198. import {
  199. onPageScroll,
  200. onLoad, onReachBottom, onReady
  201. } from "@dcloudio/uni-app";
  202. import flowPathList from "./components/flow-path-list.vue";
  203. import filter from '@/components/filter/filter.vue';
  204. import tips from '@/components/tips/tips.vue';
  205. import { requestNew } from "@/utils/network/request.js";
  206. import {
  207. setItem,
  208. } from "@/utils/storage";
  209. import {
  210. queryKey,
  211. querySwiper,
  212. infoQuery,
  213. queryHighMsg,
  214. orderQuery
  215. } from "@/utils/network/api.js";
  216. import {
  217. fileURL, fileURLList
  218. } from "@/datas/fileURL.js";
  219. import {
  220. navTo,
  221. msg, hasLogin, confirm, jumpOldMini
  222. } from "@/utils/utils";
  223. import {
  224. getCodeName
  225. } from "@/datas/queryKey.js";
  226. import { getCurrentInstance } from 'vue';
  227. const tools = require("../../static/etcUtil/tools.js");
  228. const instance = getCurrentInstance();
  229. const swiper = reactive({
  230. indicatorDots: false,
  231. autoplay: true,
  232. interval: 6000,
  233. duration: 500,
  234. easing: "default"
  235. })
  236. const query = () => {
  237. const options = {
  238. type: 2,
  239. data: {},
  240. method: "POST",
  241. showLoading: true,
  242. };
  243. requestNew(orderQuery, options).then((res) => {
  244. console.log("擦寻", res,)
  245. if (res.vehicPlateOrderList.length > 0) {
  246. uni.showModal({
  247. title: '提示',
  248. content: '有未完成的线下渠道订单,是否继续办理',
  249. success: function (res) {
  250. if (res.confirm) {
  251. console.log('用户点击确定');
  252. navTo('/subpackage/orders/transfer-page-sign')
  253. } else if (res.cancel) {
  254. console.log('用户点击取消');
  255. }
  256. }
  257. });
  258. }
  259. })
  260. }
  261. onLoad((options) => {
  262. console.log("wechatSignNo", options)
  263. getInfo();
  264. // 订单查询
  265. if (hasLogin()) {
  266. query()
  267. }
  268. })
  269. const cancle = (val) => {
  270. state.showTips = val
  271. }
  272. onMounted(() => {
  273. const query = uni.createSelectorQuery().in(instance.proxy);
  274. query
  275. .select(".news-con")
  276. .boundingClientRect((data) => {
  277. console.log("得到布局位置信息", data);
  278. if (data) {
  279. console.log("节点离页面顶部的距离为" + data.top);
  280. newTop.value = data.top
  281. }
  282. })
  283. .exec();
  284. let systemInfo = uni.getSystemInfoSync()
  285. viewHeight.value = systemInfo.windowHeight
  286. statusBarHeight.value = systemInfo.statusBarHeight;
  287. const {
  288. top,
  289. height
  290. } = uni.getMenuButtonBoundingClientRect();
  291. barHeight.value = height ? height + (top - statusBarHeight.value) * 2 : 38;
  292. console.log(barHeight.value, statusBarHeight.value, systemInfo, '计算的顶部高度');
  293. getSwiper()
  294. })
  295. const statusBarHeight = ref(0)
  296. const viewHeight = ref(0) //可视区高度
  297. const barHeight = ref(0)
  298. const searchParams = ref('')
  299. const newTop = ref(0) //高速快讯距离顶部距离
  300. const isShowMask = ref(false);
  301. //搜索
  302. const onKeyInput = (event) => {
  303. searchParams.value = event.target.value;
  304. console.log('搜索内容', searchParams.value);
  305. }
  306. const navList = [{
  307. imgUrl: `${fileURL}image/newHome/kaqian.png`,
  308. title: "卡签信息查询",
  309. path: '/pages/bluetooth/bluetooth?routeType=4&&backIndex=1'
  310. }, {
  311. imgUrl: `${fileURL}image/newHome/jihuo.png`,
  312. title: "激活服务",
  313. path: '/subpackage/personal-center/etc-activation'
  314. }, {
  315. imgUrl: `${fileURL}image/newHome/zhuxiao.png`,
  316. title: "设备注销",
  317. path: "",
  318. handlePath: () => {
  319. cardRecharge(3)
  320. }
  321. }, {
  322. imgUrl: `${fileURL}image/newHome/shenji.png`,
  323. title: "设备升级",
  324. path: `/subpackage/after-sale/equipment-upgrade/select-car`
  325. }, {
  326. imgUrl: `${fileURL}image/newHome/kefu.png`,
  327. title: "在线客服",
  328. path: `/subpackage/after-sale/onlineService`
  329. }, {
  330. imgUrl: `${fileURL}image/newHome/wangdian.png`,
  331. title: "网点查询",
  332. path: "/subpackage/after-sale/wangdian"
  333. }, {
  334. imgUrl: `${fileURL}image/newHome/yewu.png`,
  335. title: "业务指引",
  336. path: ""
  337. }, {
  338. imgUrl: `${fileURL}image/newHome/more.png`,
  339. title: "更多",
  340. path: `/pages/service/service`
  341. }]
  342. const handleNav = (item) => {
  343. console.log("item", item)
  344. if (item.title == '更多') {
  345. if (!hasLogin()) {
  346. confirm('您需要登录过后才能使用此功能', () => {
  347. uni.navigateTo({
  348. url: '/login/login',
  349. });
  350. }, '温馨提示', true, '去登录');
  351. } else {
  352. uni.switchTab({
  353. url: item.path
  354. })
  355. }
  356. } else {
  357. console.log("进来了")
  358. if (item.title == '设备注销' || item.title == '设备升级') {
  359. // 跳转到运维
  360. jumpOldMini()
  361. return;
  362. }
  363. if (item.title == '业务指引') {
  364. state.showTips = true
  365. return;
  366. }
  367. if (item.path) {
  368. navTo(item.path, true)
  369. } else if (item.handlePath) {
  370. item.handlePath()
  371. }
  372. }
  373. }
  374. const cardRecharge = (val) => {
  375. // #ifdef MP-ALIPAY
  376. if (val == 1 || val == 2 || val == 3) {
  377. msg("业务升级中,请前往九州ETC公众号进行办理。或拨打客服电话400-800-8787")
  378. }
  379. // #endif
  380. // #ifdef MP-WEIXIN
  381. if (val == 1) {
  382. navTo('/pages/recharge/recharge-pay', true)
  383. } else if (val == 2) {
  384. navTo('/subpackage/after-sale/rescind-carId/rescind-carId-select', true)
  385. } else if (val == 3) {
  386. navTo('/subpackage/after-sale/activation-once-again/select-car?type=2', true)
  387. }
  388. // #endif
  389. }
  390. const state = reactive({
  391. vanType: 0, //1客车 2货车
  392. userType: 1, //1个人 2单位
  393. notice: "",
  394. swiperList: [],
  395. swiperListArr: [],
  396. noticeList: [], //公告栏列表
  397. flowPathTabList: ["办理流程", "办理条件", "常见问题"],
  398. tabActive: "办理流程",
  399. flowList: [
  400. //办理流程数据
  401. {
  402. title: "01 产品选择",
  403. desc: "选择购买的发行产品",
  404. imgUrl: `${fileURL}image/newHome/1.png`,
  405. },
  406. {
  407. title: "02 信息校验",
  408. desc: "提交车牌号、车牌颜色、收货地址相关信息",
  409. imgUrl: `${fileURL}image/newHome/2.png`,
  410. },
  411. {
  412. title: "03 证件上传",
  413. desc: "上传身份证、行驶证等相关信息",
  414. imgUrl: `${fileURL}image/newHome/3.png`,
  415. },
  416. {
  417. title: "04 订单支付",
  418. desc: "支付完成订单",
  419. imgUrl: `${fileURL}image/newHome/4.png`,
  420. },
  421. {
  422. title: "05 签约代扣",
  423. desc: "选择签约账户并关联",
  424. imgUrl: `${fileURL}image/newHome/5.png`,
  425. },
  426. ],
  427. highMsgData: '',//高速快讯内容
  428. processeConditionText: [], //办理条件文本
  429. commonQuestionText: "", //常见问题文本
  430. commonQuestionArr: [], //常见问题数组
  431. isEnableSetGray: false,
  432. showTips: false
  433. });
  434. // 页面初次渲染完成时触发
  435. onReady(() => {
  436. quanKeyAction()
  437. })
  438. onMounted(() => {
  439. uni.getSystemInfo({
  440. success: (e : any) => {
  441. statusBarHeight.value = e.statusBarHeight;
  442. }
  443. })
  444. getSwiper()
  445. });
  446. onReachBottom(() => {
  447. highMsg(); //高速快讯
  448. })
  449. // const tip = () => {
  450. // const params = encodeURIComponent(JSON.stringify("https://webzeus.hltgz.com/throughBilManager/index"))
  451. // tools.toUrl(`/subpackage/personal-center/webview?url=` + params);
  452. // }
  453. //办理流程tab选择
  454. const flowPathTabHandle = (tab) => {
  455. state.tabActive = tab;
  456. if (tab == "办理条件") {
  457. processeCondition();//办理条件
  458. } else if (tab == "常见问题") {
  459. commonQuestion();
  460. }
  461. };
  462. const showMask = (val : any) => {
  463. if (val == 2) {
  464. state.showTips = true
  465. return;
  466. }
  467. state.vanType = val; //1 客车 2货车
  468. isShowMask.value = true;
  469. };
  470. const closeMask = () => {
  471. isShowMask.value = false;
  472. };
  473. // 获取文本信息----用户协议
  474. const getInfo = () => {
  475. //参数说明
  476. let options = {
  477. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  478. data: {
  479. businessType: 'BROADCAST' //广播栏信息
  480. }, //请求参数
  481. method: "POST", //提交方式(默认POST)
  482. showLoading: true, //是否显示加载中(默认显示)
  483. };
  484. //调用方式
  485. requestNew(infoQuery, options)
  486. .then((res) => {
  487. let data = res
  488. state.notice=data.list[0].text
  489. console.log(data, state.notice, '公告',state.notice=='无');
  490. })
  491. .catch((err) => {
  492. console.log(err, '错误');
  493. });
  494. }
  495. let newLock = false
  496. // 高速快讯查询接口
  497. const highMsg = () => {
  498. newLock = true
  499. let options = {
  500. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  501. data: {
  502. pageNo: 1,
  503. pageSize: 2
  504. }, //请求参数
  505. method: "POST", //提交方式(默认POST)
  506. showLoading: true, //是否显示加载中(默认显示)
  507. };
  508. //调用方式
  509. // requestNew(queryHighMsg, options).then((res) => {
  510. // console.log("高速快讯查询接口", res);
  511. // state.highMsgData = res.result.slice(0, 4)
  512. // for (var i = 0; i < state.highMsgData.length; i++) {
  513. // state.highMsgData[i]["copywriting"] = getCodeName('COPYWRITING', state.highMsgData[i]["copywriting"])
  514. // state.highMsgData[i]["updateTime"] = state.highMsgData[i]["updateTime"].replace('T', ' ')
  515. // if (state.highMsgData[i]["type"] == 3) {
  516. // state.highMsgData[i]["title"] = state.highMsgData[i]["hyperLink"]
  517. // }
  518. // }
  519. // state.highMsgData.sort(function (a, b) {
  520. // return a.sequence - b.sequence//正序
  521. // })
  522. // }).catch((err) => { console.log(err) });
  523. }
  524. const processeCondition = () => {
  525. let options = {
  526. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  527. data: {
  528. businessType: 'PROCESSING_CONDITIONS' //办理条件
  529. }, //请求参数
  530. method: "POST", //提交方式(默认POST)
  531. showLoading: true, //是否显示加载中(默认显示)
  532. };
  533. //调用方式
  534. requestNew(infoQuery, options)
  535. .then((res) => {
  536. let data = res
  537. console.log("办理条件", data)
  538. state.processeConditionText = data.list[0].text.split('。').filter(item => item)
  539. })
  540. .catch((err) => {
  541. console.log(err);
  542. });
  543. }
  544. const commonQuestion = () => {
  545. let options = {
  546. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  547. data: {
  548. businessType: 'COMMON_PROBLEM' //常见问题
  549. }, //请求参数
  550. method: "POST", //提交方式(默认POST)
  551. showLoading: true, //是否显示加载中(默认显示)
  552. };
  553. //调用方式
  554. requestNew(infoQuery, options)
  555. .then((res) => {
  556. let data = res
  557. console.log("常见问题", data)
  558. state.commonQuestionText = data.list[0].text
  559. state.commonQuestionArr = data.list[0].text.split('。').filter(item => item)
  560. })
  561. .catch((err) => {
  562. console.log(err);
  563. });
  564. }
  565. //监听页面滚动
  566. onPageScroll((e) => {
  567. let h = viewHeight.value + e.scrollTop
  568. if (h >= newTop.value - 50 && !newLock) {
  569. highMsg()
  570. }
  571. });
  572. const toCreatOrder = (val : number) => {
  573. console.log(typeof (val));
  574. state.userType = val;
  575. navTo(`/subpackage/orders/choice-product?vanType=${state.vanType}&&userType=${state.userType}`)
  576. closeMask();
  577. };
  578. //全量枚举值查询
  579. const quanKeyAction = () => {
  580. var data = {};
  581. const options = {
  582. type: 2,
  583. data: data,
  584. method: "POST",
  585. };
  586. requestNew(queryKey, options).then((res) => {
  587. const data = res
  588. console.log("枚举", data)
  589. setItem('key', data)
  590. })
  591. .catch((err) => {
  592. console.log(err);
  593. });
  594. }
  595. //获取轮播
  596. const getSwiper = () => {
  597. let options = {
  598. type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  599. data: {
  600. }, //请求参数
  601. method: "POST", //提交方式(默认POST)
  602. showLoading: true, //是否显示加载中(默认显示)
  603. };
  604. //调用方式
  605. requestNew(querySwiper, options).then((res) => {
  606. const data = res
  607. console.log("轮播图", data)
  608. state.swiperList = data.list ? data.list : [],
  609. state.swiperListArr = state.swiperList.map(item => fileURLList + item.imgUrl)
  610. })
  611. .catch((err) => {
  612. console.log(err);
  613. });
  614. };
  615. const link = (item : any) => {
  616. console.log(item);
  617. if (item.type == 1) {
  618. const params = encodeURIComponent(JSON.stringify(item.hyperLink))
  619. tools.toUrl(`/subpackage/personal-center/webview?url=` + params);
  620. } else if (item.type == 2) {
  621. navTo(item.hyperLink)
  622. } else if (item.type == 3) {
  623. const param = encodeURIComponent(JSON.stringify(item))
  624. tools.toUrl(`/subpackage/orders/moreHighMsg/textDetails?item=` + param);
  625. } else if (item.type == 4) {
  626. uni.navigateToMiniProgram({
  627. appId: item.hyperLink,
  628. path: item.speedUrl,
  629. success(res) {
  630. console.log(res);
  631. },
  632. complete(res) {
  633. console.log(res);
  634. },
  635. fail(res) {
  636. console.log(res);
  637. // 未成功跳转到车主小程序
  638. },
  639. });
  640. }
  641. }
  642. const call = () => {
  643. console.log("点击")
  644. uni.makePhoneCall({
  645. phoneNumber: '0851-88306555' //仅为示例,并非真实的电话号码
  646. })
  647. }
  648. </script>
  649. <style lang="scss" scoped>
  650. .container {
  651. height: 100%;
  652. background-color: #f2f5f7;
  653. position: relative;
  654. }
  655. .bg-img {
  656. width: 100%;
  657. position: absolute;
  658. z-index: 0;
  659. .icon {
  660. width: 100%;
  661. height: 750rpx;
  662. }
  663. }
  664. .content {
  665. position: relative;
  666. padding-bottom: 30rpx;
  667. }
  668. .header {
  669. height: 590rpx;
  670. .title {
  671. .title-txt {
  672. font-family: PingFangSC, PingFang SC;
  673. font-weight: bold;
  674. font-size: 32rpx;
  675. color: #FFFFFF;
  676. text-align: center;
  677. }
  678. }
  679. .search-box {
  680. margin: 10rpx 30rpx 0;
  681. position: relative;
  682. height: 80rpx;
  683. background: #1a394d;
  684. // border: 1px solid #DCDCDC;
  685. border-radius: 40rpx;
  686. display: flex;
  687. justify-content: center;
  688. align-items: center;
  689. box-sizing: border-box;
  690. flex: 1;
  691. .icon {
  692. width: 27rpx;
  693. height: 27rpx;
  694. margin-left: 26rpx;
  695. }
  696. .search {
  697. flex: 1;
  698. margin-right: 20rpx;
  699. height: 100%;
  700. padding: 0 10rpx;
  701. color: #fff;
  702. font-weight: 500;
  703. font-size: 26rpx;
  704. background: #1a394d;
  705. ::v-deep .input-placeholder {
  706. color: #fff !important;
  707. }
  708. }
  709. }
  710. }
  711. .nav {
  712. background-color: #fff;
  713. margin: 0 30rpx;
  714. width: 100%;
  715. width: 690rpx;
  716. height: 360rpx;
  717. background: #FFFFFF;
  718. border-radius: 12rpx;
  719. display: grid;
  720. grid-template-columns: repeat(4, 25%);
  721. grid-template-rows: repeat(2, 50%);
  722. // grid-gap: 10px;
  723. .item-box {
  724. display: flex;
  725. align-items: center;
  726. justify-content: center;
  727. flex-direction: column;
  728. .icon-img {
  729. height: 100rpx;
  730. width: 100rpx;
  731. border-radius: 50%;
  732. padding: 25rpx;
  733. background: #ECF1F4;
  734. box-sizing: border-box;
  735. .img {
  736. width: 100%;
  737. height: 100%;
  738. }
  739. }
  740. .b-txt {
  741. margin-top: 16rpx;
  742. font-size: 26rpx;
  743. color: #111111;
  744. }
  745. }
  746. }
  747. .notice {
  748. background-image: var(--bgimg);
  749. background-size: 100% 100%;
  750. background-repeat: no-repeat;
  751. height: 80rpx;
  752. width: 690rpx;
  753. margin: 24rpx 30rpx 0;
  754. display: flex;
  755. align-items: center;
  756. .l-img {
  757. width: 136rpx;
  758. height: 80rpx;
  759. margin-left: 20rpx;
  760. .img {
  761. height: 100%;
  762. width: 100%;
  763. }
  764. }
  765. .r-info {
  766. line-height: 80rpx;
  767. margin-left: 16rpx;
  768. font-size: 27rpx;
  769. color: #000;
  770. font-weight: 500;
  771. width: 400rpx;
  772. }
  773. }
  774. .supervision-con {
  775. box-sizing: border-box;
  776. height: 180rpx;
  777. width: 690rpx;
  778. margin: 24rpx 30rpx 0;
  779. border-radius: 12rpx;
  780. overflow: hidden;
  781. .swiper {
  782. height: 180rpx;
  783. width: 690rpx;
  784. }
  785. .swiper-item .img {
  786. overflow: hidden;
  787. border-radius: 12rpx;
  788. height: 180rpx !important;
  789. width: 690rpx;
  790. }
  791. .txt {
  792. font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
  793. font-weight: 400;
  794. font-size: 26rpx;
  795. color: #111111;
  796. }
  797. .phone {
  798. margin: 10rpx 0 10rpx;
  799. font-family: Arial, Arial;
  800. font-weight: normal;
  801. font-size: 38rpx;
  802. color: #B99A46;
  803. }
  804. .btn {
  805. font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
  806. font-weight: 400;
  807. font-size: 24rpx;
  808. color: #01243A;
  809. }
  810. }
  811. .title-name {
  812. margin: 24rpx 30rpx 0;
  813. }
  814. .title-h {
  815. font-family: PingFangSC, PingFang SC;
  816. font-weight: bold;
  817. font-size: 34rpx;
  818. color: #01243A;
  819. }
  820. .express-lane {
  821. margin: 22rpx 30rpx 0;
  822. display: flex;
  823. align-items: center;
  824. justify-content: space-between;
  825. .item {
  826. background-size: 100% 100%;
  827. background-repeat: no-repeat;
  828. width: 334rpx;
  829. height: 168rpx;
  830. text-align: right;
  831. display: flex;
  832. align-items: flex-end;
  833. justify-content: center;
  834. flex-direction: column;
  835. background-image: var(--bgimg);
  836. .item-con {
  837. margin-right: 53rpx;
  838. }
  839. .top-txt {
  840. font-family: PingFangSC, PingFang SC;
  841. font-size: 30rpx;
  842. color: #FFFFFF;
  843. }
  844. .btn {
  845. margin-top: 30rpx;
  846. background: #03385D;
  847. border-radius: 20rpx;
  848. font-family: PingFangSC, PingFang SC;
  849. font-size: 24rpx;
  850. color: #FFFFFF;
  851. height: 40rpx;
  852. width: 80rpx;
  853. line-height: 40rpx;
  854. text-align: center;
  855. }
  856. }
  857. .keche {
  858. .btn {
  859. background-color: #03385D;
  860. }
  861. }
  862. .huoche {
  863. margin-left: 22rpx;
  864. .btn {
  865. background-color: #C2A75F;
  866. }
  867. }
  868. }
  869. .news-con {
  870. margin: 39rpx 30rpx 0;
  871. .title-con {
  872. display: flex;
  873. align-items: center;
  874. justify-content: space-between;
  875. .r-more {
  876. width: 100rpx;
  877. height: 44rpx;
  878. border-radius: 22rpx;
  879. border: 1rpx solid #01243A;
  880. display: flex;
  881. align-items: center;
  882. justify-content: center;
  883. .txt {
  884. font-family: PingFangSC, PingFang SC;
  885. font-weight: bold;
  886. font-size: 24rpx;
  887. color: #01243A;
  888. }
  889. .icon {
  890. width: 10rpx;
  891. height: 100%;
  892. margin-left: 5rpx;
  893. }
  894. }
  895. }
  896. .empty-news {}
  897. .news-box {
  898. border-radius: 12rpx;
  899. background-color: #fff;
  900. margin-top: 22rpx;
  901. padding: 0 20rpx;
  902. .news-item {
  903. padding: 20rpx 0;
  904. display: flex;
  905. &:nth-child(n+2) {
  906. border-top: 1rpx solid #eee;
  907. }
  908. .l-img {
  909. width: 180rpx;
  910. height: 135rpx;
  911. .img {
  912. height: 100%;
  913. width: 100%;
  914. }
  915. }
  916. .r-txt {
  917. margin-left: 20rpx;
  918. display: flex;
  919. flex-direction: column;
  920. justify-content: space-between;
  921. .tit {
  922. font-family: PingFangSC, PingFang SC;
  923. font-weight: bold;
  924. font-size: 30rpx;
  925. color: #111111;
  926. }
  927. .b-time {
  928. font-family: PingFangSC, PingFang SC;
  929. font-size: 24rpx;
  930. color: #999999;
  931. }
  932. }
  933. }
  934. }
  935. }
  936. .flow-path {
  937. margin: 31rpx 30rpx 0;
  938. .top-menu {
  939. display: flex;
  940. .tab {
  941. font-family: MicrosoftYaHeiUI;
  942. font-size: 28rpx;
  943. color: #5A5E61;
  944. margin-right: 39rpx;
  945. position: relative;
  946. &.active {
  947. font-size: 34rpx;
  948. color: #01243A;
  949. .border {
  950. position: relative;
  951. }
  952. .border::after {
  953. content: "";
  954. background-image: var(--bgimg);
  955. background-repeat: no-repeat;
  956. background-size: 100% 100%;
  957. position: absolute;
  958. bottom: 0;
  959. left: 0;
  960. width: 100%;
  961. height: 16rpx;
  962. }
  963. }
  964. .txt {
  965. position: relative;
  966. z-index: 2;
  967. }
  968. }
  969. }
  970. .flow-list {
  971. margin-top: 30rpx;
  972. background-color: #fff;
  973. border-radius: 12rpx;
  974. padding: 20rpx;
  975. }
  976. .tiaojian {
  977. .title-top {
  978. display: flex;
  979. justify-content: center;
  980. align-items: center;
  981. padding-bottom: 20rpx;
  982. .txt {
  983. margin: 0 24rpx;
  984. font-family: MicrosoftYaHei;
  985. font-size: 30rpx;
  986. color: #01243A;
  987. }
  988. .icon-img {
  989. width: 16rpx;
  990. height: 20rpx;
  991. }
  992. }
  993. .item {
  994. font-size: 26rpx;
  995. color: #222222;
  996. display: flex;
  997. margin-bottom: 16rpx;
  998. font-family: MicrosoftYaHeiUI;
  999. .tu {
  1000. background-image: var(--bgimg);
  1001. background-size: 100% 100%;
  1002. background-repeat: no-repeat;
  1003. height: 44rpx;
  1004. width: 44rpx;
  1005. display: flex;
  1006. align-items: center;
  1007. text-align: center;
  1008. color: white;
  1009. justify-content: center;
  1010. margin-right: 10rpx;
  1011. flex-shrink: 0;
  1012. font-size: 22rpx;
  1013. }
  1014. }
  1015. }
  1016. .list-info {
  1017. font-family: MicrosoftYaHeiUI;
  1018. font-size: 26rpx;
  1019. color: #222222;
  1020. }
  1021. .wenti {
  1022. .item-box:nth-child(n+2) {
  1023. border-top: 1rpx solid #E8E8E8;
  1024. }
  1025. .item-box {
  1026. display: flex;
  1027. padding: 15rpx 0;
  1028. }
  1029. .l-icon {
  1030. flex-shrink: 0;
  1031. width: 38rpx;
  1032. height: 38rpx;
  1033. display: flex;
  1034. align-items: center;
  1035. justify-content: center;
  1036. background-color: #c2a75f;
  1037. border-radius: 50%;
  1038. .icon-img {
  1039. width: 14rpx;
  1040. height: 24rpx;
  1041. }
  1042. }
  1043. .txt {
  1044. margin-left: 14rpx;
  1045. font-family: PingFangSC, PingFang SC;
  1046. font-size: 28rpx;
  1047. color: #222222;
  1048. line-height: 38rpx;
  1049. }
  1050. }
  1051. }
  1052. .mask {
  1053. background: $uni-bg-color-mask;
  1054. position: fixed;
  1055. left: 0;
  1056. top: 0;
  1057. right: 0;
  1058. bottom: 0;
  1059. z-index: 999;
  1060. }
  1061. .mask-content {
  1062. background: #fff;
  1063. width: 570rpx;
  1064. position: absolute;
  1065. left: 50%;
  1066. top: 50%;
  1067. transform: translate(-50%, -50%);
  1068. display: flex;
  1069. flex-direction: column;
  1070. border-radius: 20rpx;
  1071. z-index: 999;
  1072. }
  1073. .mask-close {
  1074. text-align: right;
  1075. }
  1076. .mask-title {
  1077. text-align: center;
  1078. margin-bottom: 50rpx;
  1079. font-family: MicrosoftYaHei;
  1080. font-size: 34rpx;
  1081. color: #666666;
  1082. }
  1083. .mask-tab {
  1084. // display: flex;
  1085. // justify-content: space-evenly;
  1086. margin: 0 40rpx;
  1087. }
  1088. .icon-closed {
  1089. width: 30rpx;
  1090. height: 30rpx;
  1091. margin: 24rpx 24rpx 0 0;
  1092. }
  1093. .tab-item {
  1094. padding: 20rpx 25rpx;
  1095. display: flex;
  1096. align-items: center;
  1097. background: #F7F7F7;
  1098. border-radius: 15rpx;
  1099. margin-bottom: 30rpx;
  1100. }
  1101. .r-info {
  1102. margin-left: 25rpx;
  1103. .tab-tit {
  1104. font-family: MicrosoftYaHei;
  1105. font-size: 28rpx;
  1106. color: #333333;
  1107. }
  1108. .tab-desc {
  1109. font-family: MicrosoftYaHei;
  1110. font-size: 24rpx;
  1111. color: #999999;
  1112. margin-top: 10rpx;
  1113. }
  1114. }
  1115. .tab-item .img {
  1116. width: 120rpx;
  1117. height: 120rpx;
  1118. }
  1119. .backlog-notice {
  1120. margin: 50rpx 30rpx 0rpx;
  1121. }
  1122. </style>