選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.vue 25KB

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