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

index.vue 26KB

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