Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.vue 26KB

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