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

index.vue 27KB

7ヶ月前
7ヶ月前
6ヶ月前
6ヶ月前
6ヶ月前
6ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
6ヶ月前
6ヶ月前
7ヶ月前
6ヶ月前
6ヶ月前
6ヶ月前
6ヶ月前
7ヶ月前
7ヶ月前
6ヶ月前
6ヶ月前
6ヶ月前
7ヶ月前
7ヶ月前
1年前
1年前
1年前
1年前
1年前
1年前
6ヶ月前
6ヶ月前
8ヶ月前
1年前
9ヶ月前
1年前
6ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
7ヶ月前
6ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
6ヶ月前
6ヶ月前
7ヶ月前
6ヶ月前
8ヶ月前
6ヶ月前
8ヶ月前
8ヶ月前
6ヶ月前
8ヶ月前
6ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
8ヶ月前
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>