Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.vue 27KB

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>首页</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/install-activation-order'
  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>