Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

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