您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

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