car.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. <template>
  2. <view class="content">
  3. <view class="nodataBox" v-show="nodataShow||carList.length==0">
  4. <image src="http://dmsphoto.66km.com.cn/thFiles/3C95A4C5-73F8-4B34-902B-703B8A0825C9.png" mode="widthFix" class="nodataImg"></image>
  5. <view class="noTxt">暂无数据</view>
  6. </view>
  7. <view style="margin-top: -26rpx;"></view>
  8. <view class="carLine" v-for="(item,index ) in carList" @click="carlineFn(item)">
  9. <view class="carTop" >
  10. <view class="carCont">
  11. <view class="carModel">
  12. <image :src="item.BrandLogo" v-if="item.BrandLogo" mode="" class="carLogo"></image>
  13. <image v-else src="../../static/img/nocar.png" mode="" class="carLogo"></image>
  14. <view class="carModelCont">
  15. <view class="carMcTop">
  16. <view class="plateNumber">{{item.PlateNumber}}</view>
  17. <view class="carTime" v-if="item.carDetailInfo.carAge">{{item.carDetailInfo.carAge}}</view>
  18. <view class="carA">{{item.carType}}</view>
  19. </view>
  20. <view class="carMcTxt">{{item.CarModel}}</view>
  21. <view class="carTitleBox" v-if="item.carDetailInfo.labelName">
  22. <view class="carTitle" v-for="(v,i) in item.carDetailInfo.labelName.split(',')">{{v}}</view>
  23. </view>
  24. </view>
  25. <view v-if="item.carDetailInfo.NextAuditTime||item.carDetailInfo.InsuranceExpireDate">
  26. <image class="carUpimg" v-if="item.show" src="../../static/img/icon_arrow_up.png" mode=""></image>
  27. <image class="carUpimg" v-if="!item.show" src="../../static/img/icon_arrow_down.png" mode=""></image>
  28. </view>
  29. </view>
  30. <view class="carData">
  31. <view class="carDataLine" > 最新里程:
  32. <span v-if="item.Milage">{{item.Milage}}km</span>
  33. </view>
  34. <view class="carDataLine">累计消费:{{item.checkoutMoneySum}}</view>
  35. </view>
  36. <view class="carnotes">车辆备注:{{item.carDetailInfo.Comment}}</view>
  37. </view>
  38. </view>
  39. <view class="box" v-if="item.show">
  40. <view class="line">
  41. <view class="lineTop" v-show="item.carDetailInfo.NextAuditTime" @click.stop="carDfn1(item)">
  42. <view class="lineTop1">
  43. <view class="lineTopNs">
  44. <view class="nsTxt">年审日期</view>
  45. <view v-if="isDateGreater(item.carDetailInfo.NextAuditTime)">
  46. <span v-if="daysUntilDate(item.carDetailInfo.NextAuditTime)>30"></span>
  47. <view class="nsStatus" v-else>即将过期</view>
  48. </view>
  49. <view class="nsStatus" v-else>
  50. <span>已过期</span>
  51. </view>
  52. </view>
  53. <view class="lineTimeBox">
  54. <span>{{item.carDetailInfo.NextAuditTime}}</span>
  55. <image class="carUpimg" v-show="item.show2" src="../../static/img/icon_arrow_up.png" mode=""></image>
  56. <image class="carUpimg" v-show="!item.show2" src="../../static/img/icon_arrow_down.png" mode=""></image>
  57. </view>
  58. </view>
  59. <view class="lineTop2" v-show="item.show2">
  60. <view class="chaoqi" v-if="isDateGreater(item.carDetailInfo.NextAuditTime)">
  61. <span >距离天数:</span>
  62. {{daysUntilDate(item.carDetailInfo.NextAuditTime)}}天
  63. </view>
  64. <view class="chaoqi">
  65. <span v-if="!isDateGreater(item.carDetailInfo.NextAuditTime)">超期天数:{{daysUntilDate(item.carDetailInfo.NextAuditTime)}}天</span>
  66. </view>
  67. <view>
  68. <view class="lineBtn" @click.stop="sendChat(item,1)">发送提醒</view>
  69. </view>
  70. </view>
  71. </view>
  72. <view class="lineCont" v-show="item.carDetailInfo.InsuranceExpireDate" @click.stop="carDfn2(item)">
  73. <view class="lcLine">
  74. <view class="lineTop1">
  75. <view class="lineTopNs">
  76. <view class="nsTxt">保险提醒</view>
  77. <view v-if="isDateGreater(item.carDetailInfo.InsuranceExpireDate)">
  78. <span v-if="daysUntilDate(item.carDetailInfo.InsuranceExpireDate)>30"></span>
  79. <view class="nsStatus" v-else>即将过期</view>
  80. </view>
  81. <view class="nsStatus" v-else>
  82. <span>已过期</span>
  83. </view>
  84. </view>
  85. <view class="lineTimeBox" v-if="item.carDetailInfo.InsuranceExpireDate">
  86. <span>{{item.carDetailInfo.InsuranceExpireDate.slice(0,10)}}</span>
  87. <image class="carUpimg" v-show="item.show3" src="../../static/img/icon_arrow_up.png" mode=""></image>
  88. <image class="carUpimg" v-show="!item.show3" src="../../static/img/icon_arrow_down.png" mode=""></image>
  89. </view>
  90. </view>
  91. <view v-show="item.show3">
  92. <view class="carData">
  93. <view class="carDataLine">交强险到期:{{item.carDetailInfo.CompulsoryInsuranceTime}}</view>
  94. <view class="carDataLine">商业险到期:{{item.carDetailInfo.CommercialInsuranceTime}}</view>
  95. </view>
  96. <view class="carnotes">保险公司:{{item.carDetailInfo.inscName}}</view>
  97. <view class="lineTop2">
  98. <view class="chaoqi" v-if="isDateGreater(item.carDetailInfo.InsuranceExpireDate)">
  99. <span >距离天数:</span>
  100. {{daysUntilDate(item.carDetailInfo.InsuranceExpireDate)}}天
  101. </view>
  102. <view class="chaoqi" v-if="!isDateGreater(item.carDetailInfo.InsuranceExpireDate)">
  103. <span >超期天数:</span>
  104. {{daysUntilDate(item.carDetailInfo.InsuranceExpireDate)}}天
  105. </view>
  106. <view>
  107. <view class="lineBtn" @click.stop="sendChat(item,2)">发送提醒</view>
  108. </view>
  109. </view>
  110. </view>
  111. </view>
  112. </view>
  113. </view>
  114. <!-- 提醒商机 -->
  115. <view class="line" v-if="false">
  116. <view class="lineTop">
  117. <view class="lineTop1">
  118. <view class="lineTopNs">
  119. <view class="nsTxt">提醒商机</view>
  120. </view>
  121. <view class="lineTimeBox">
  122. <span style="color: #FF0000;">2条</span>
  123. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  124. </view>
  125. </view>
  126. </view>
  127. <view class="lineCont">
  128. <view class="lcLine">
  129. <view class="lineTop1">
  130. <view class="lineTopNs">
  131. <view class="nsTxt">提醒类别:机油滤清器</view>
  132. </view>
  133. </view>
  134. <view class="carData">
  135. <view class="carDataLine">下次服务日期:2024-02-12</view>
  136. <view class="carDataLine">下次服务里程:93843km</view>
  137. </view>
  138. <view class="carnotes">上次到店:2022-01-21</view>
  139. <view class="lineTop2">
  140. <view class="chaoqi">超期天数:</view>
  141. <view>
  142. <view class="lineBtn">发送提醒</view>
  143. </view>
  144. </view>
  145. </view>
  146. <view class="lcLine">
  147. <view class="lineTop1">
  148. <view class="lineTopNs">
  149. <view class="nsTxt">保养提醒</view>
  150. </view>
  151. </view>
  152. <view class="carData">
  153. <view class="carDataLine">下次服务日期:2024-02-12</view>
  154. <view class="carDataLine">下次服务里程:93843km</view>
  155. </view>
  156. <view class="carnotes">上次到店:2022-01-21</view>
  157. <view class="lineTop2">
  158. <view class="chaoqi">超期天数:10</view>
  159. <view>
  160. <view class="lineBtn">发送提醒</view>
  161. </view>
  162. </view>
  163. </view>
  164. </view>
  165. </view>
  166. <!-- 提醒商机 -->
  167. <!-- 检测异常商机 -->
  168. <view class="line" v-if="false">
  169. <view class="lineTop">
  170. <view class="lineTop1">
  171. <view class="lineTopNs">
  172. <view class="nsTxt">检测异常商机</view>
  173. </view>
  174. <view class="lineTimeBox">
  175. <span style="color: #FF0000;">2条</span>
  176. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  177. </view>
  178. </view>
  179. </view>
  180. <view class="lineCont">
  181. <view class="lcLine">
  182. <view class="lineTop1">
  183. <view class="lineTopNs">
  184. <view class="nsTxt">检测异常商机</view>
  185. </view>
  186. </view>
  187. <view class="carData">
  188. <view class="carDataLine">下次服务日期:2024-02-12</view>
  189. <view class="carDataLine" style="color: #FF0000;">距离天数:10</view>
  190. </view>
  191. <view class="carnotes">检测结果:长了换行1</view>
  192. <view class="carData" style="padding-top: 16rpx;">
  193. <view class="carDataLine">检测日期:2024-02-12</view>
  194. <view class="carDataLine" >检测里程:9383km</view>
  195. </view>
  196. <view class="carnotes">检测门店:这是门店名称长了换行展示1</view>
  197. <view class="lineTop2">
  198. <view class="chaoqi"></view>
  199. <view class="lineBtn">发送提醒</view>
  200. </view>
  201. </view>
  202. </view>
  203. </view>
  204. <!-- 检测异常商机 -->
  205. </view>
  206. </view>
  207. <view style="height: 40rpx;background-color: #fff;"></view>
  208. </view>
  209. </template>
  210. <script>
  211. export default {
  212. props:['token'],
  213. data() {
  214. return {
  215. carList:[],
  216. carInfo:'',
  217. nodataShow:false
  218. }
  219. },
  220. onLoad() {
  221. },
  222. computed: {
  223. // 计算属性来判断日期是否大于当前日期
  224. isDateGreater() {
  225. return (val)=>{
  226. const currentDate = new Date();
  227. const compareDate = new Date(val);
  228. return compareDate > currentDate;
  229. }
  230. },
  231. daysUntilDate() {
  232. return (val)=>{
  233. const today = new Date();
  234. const specificDate = new Date(val);
  235. const diffTime = Math.abs(today - specificDate);
  236. var time=diffTime / (1000 * 60 * 60 * 24);
  237. return parseInt(time);
  238. }
  239. }
  240. },
  241. methods: {
  242. sendChat(item,num){
  243. /* 保险:InsuranceExpireDate
  244. 未过期:您的爱车桂A2AQ02车险到期时间为2022-12-04,还有26天即将到期,请及时续保~
  245. 过期:您的爱车桂A2AQ02车险已于2022-11-05到期了,为了不影响车辆使用,请及时续保~
  246. 年审:NextAuditTime
  247. 未过期:您的爱车桂A2AQ02年审到期时间为2022-12-04,还有26天即将到期,请及时处理~
  248. 过期:您的爱车桂A2AQ02年审已于2022-11-05到期了,为了不影响车辆使用,请及时处理~*/
  249. var txt='';
  250. if(num==1){
  251. var state= this.isDateGreater(item.carDetailInfo.NextAuditTime)
  252. var day= this.daysUntilDate(item.carDetailInfo.NextAuditTime)
  253. if(state){
  254. if(day>30){
  255. txt='您的爱车'+item.PlateNumber+'年审到期时间为'+item.carDetailInfo.NextAuditTime+',还有'+day+'天到期,请及时续保~'
  256. }else{
  257. txt='您的爱车'+item.PlateNumber+'年审到期时间为'+item.carDetailInfo.NextAuditTime+',还有'+day+'天即将到期,请及时续保~'
  258. }
  259. }else{
  260. txt='您的爱车'+item.PlateNumber+'年审已于'+item.carDetailInfo.NextAuditTime+'过期,为了不影响车辆使用,请及时续保~'
  261. }
  262. }
  263. if(num==2){ //保险
  264. var state= this.isDateGreater(item.carDetailInfo.InsuranceExpireDate)
  265. var day= this.daysUntilDate(item.carDetailInfo.InsuranceExpireDate)
  266. if(state){
  267. if(day>30){
  268. txt='您的爱车'+item.PlateNumber+'车险到期时间为'+item.carDetailInfo.InsuranceExpireDate.slice(0,10)+',还有'+day+'天到期,请及时续保~'
  269. }else{
  270. txt='您的爱车'+item.PlateNumber+'车险到期时间为'+item.carDetailInfo.InsuranceExpireDate.slice(0,10)+',还有'+day+'天即将到期,请及时续保~'
  271. }
  272. }else{
  273. txt='您的爱车'+item.PlateNumber+'车险已于'+item.carDetailInfo.InsuranceExpireDate.slice(0,10)+'过期,为了不影响车辆使用,请及时续保~'
  274. }
  275. }
  276. console.log(txt)
  277. /* uni.showToast({
  278. title: txt,
  279. icon: 'none',
  280. duration: 3000
  281. }); */
  282. //console.log(this.isDateGreater(item.NextAuditTime))
  283. // if(item.)
  284. this.$wx.invoke('sendChatMessage', {
  285. msgtype:"text", //消息类型,必填
  286. enterChat: true, //为true时表示发送完成之后顺便进入会话,仅移动端3.1.10及以上版本支持该字段
  287. text: {
  288. content:txt, //文本内容
  289. },
  290. /* news:
  291. {
  292. link: "http://qw.66km.com.cn", //H5消息页面url 必填
  293. title: "2", //H5消息标题
  294. desc: "23", //H5消息摘要
  295. imgUrl: "", //H5消息封面图片URL
  296. }, */
  297. }, function(res) {
  298. if (res.err_msg == 'sendChatMessage:ok') {
  299. //发送成功
  300. }else{
  301. /* uni.showToast({
  302. title: '发送失败',
  303. icon: 'none',
  304. duration: 3000
  305. }); */
  306. }
  307. })
  308. },
  309. carlineFn(item){
  310. item.show=!item.show
  311. },
  312. carDfn2(item){
  313. item.show3=!item.show3
  314. },
  315. carDfn1(item){
  316. item.show2=!item.show2
  317. },
  318. getdata(){
  319. this.extCarInfo()
  320. /* var that=this;
  321. this.$http('enterprise/wechat/extCustomerInfo', {
  322. corpID:'wpMGjbBgAA_zIu6wbKy48zFSbGiGeP8g',
  323. extUserId:'wmMGjbBgAA0JAbGD5Vu8BzEuYgZhvhOA',
  324. token:this.token
  325. }, 'GET').then(res => {
  326. this.carList=res.data.data.map
  327. }) */
  328. },
  329. extCarInfo(item){
  330. var that=this;
  331. this.customerId=uni.getStorageSync('customerId')
  332. if(!this.customerId){
  333. this.nodataShow=true
  334. }else{
  335. uni.showLoading({
  336. title: '加载中'
  337. });
  338. this.$http('enterprise/wechat/extCarInfo', {
  339. id:this.customerId,
  340. //token:this.token
  341. }, 'GET').then(res => {
  342. uni.hideLoading();
  343. res.data.forEach(item=>{
  344. item.show=false
  345. item.show2=false
  346. item.show3=false
  347. })
  348. this.carList=res.data
  349. })
  350. }
  351. }
  352. }
  353. }
  354. </script>
  355. <style scoped>
  356. .carTop{
  357. background: #fff;
  358. padding: 24rpx;
  359. /* padding-top: 0; */
  360. }
  361. .carCont{
  362. /* height: 305rpx; */
  363. background: linear-gradient( 180deg, #FFE9DB 0%, #FFF2EB 48%, #FFF8F4 100%);
  364. border-radius: 10rpx;
  365. padding-bottom: 20rpx;
  366. /* opacity: 0.7; */
  367. }
  368. .carCont .carData{
  369. padding-top: 20rpx;
  370. }
  371. .carLogo{
  372. width: 72rpx;
  373. height: 72rpx;
  374. border-radius: 50%;
  375. }
  376. .carUpimg{
  377. width: 26rpx;height: 16rpx;
  378. }
  379. .carModel{
  380. display: flex;
  381. padding-top: 24rpx;
  382. padding-left: 24rpx;
  383. }
  384. .carModelCont{
  385. width: 540rpx;
  386. padding-left: 12rpx;
  387. }
  388. .carMcTop{
  389. display: flex;
  390. }
  391. .plateNumber{
  392. font-weight: 500;
  393. font-size: 30rpx;
  394. color: #3C3C3C;
  395. line-height: 42rpx;
  396. }
  397. .carTime{
  398. height: 36rpx;
  399. background: #FF842D;
  400. border-radius: 4rpx;
  401. font-size: 24rpx;
  402. color: #FFFFFF;
  403. line-height: 38rpx;
  404. padding: 0 10rpx;
  405. margin-left: 10rpx;
  406. }
  407. .carA{
  408. height: 36rpx;
  409. background: #FFE26C;
  410. border-radius: 4rpx;
  411. font-size: 24rpx;
  412. color: #2A2623;
  413. line-height: 38rpx;
  414. padding: 0 10rpx;
  415. margin-left: 10rpx;
  416. }
  417. .carMcTxt{
  418. font-size: 24rpx;
  419. color: #666666;
  420. padding-top: 12rpx;
  421. white-space: nowrap; /* 不换行 */
  422. overflow: hidden; /* 隐藏超出的内容 */
  423. text-overflow: ellipsis; /* 用省略号表示被隐藏的部分 */
  424. width: 560rpx; /* 设置最大宽度以限制文本的显示长度 */
  425. }
  426. .carTitleBox{
  427. display: flex;padding-top: 12rpx;flex-wrap: wrap;
  428. }
  429. .carTitle{
  430. /* height: 36rpx; */
  431. border-radius: 4rpx;
  432. border: 1px solid #FF8113;
  433. /* line-height: 34rpx; */
  434. font-size: 24rpx;
  435. color: #FF8113;
  436. padding: 2rpx 8rpx;
  437. margin-right: 10rpx;
  438. margin-bottom: 10rpx;
  439. }
  440. .carModel{
  441. border-bottom: 1px solid #EFDFD6;
  442. padding-bottom: 20rpx;
  443. }
  444. .carData{
  445. display: flex;
  446. justify-content: space-between;
  447. font-size: 26rpx;
  448. color: #666666;
  449. /* padding-top: 18rpx; */
  450. line-height: 33rpx;
  451. padding-left: 20rpx;
  452. padding-right: 20rpx;
  453. }
  454. .carnotes{
  455. font-size: 26rpx;
  456. color: #666666;
  457. padding-top: 18rpx;
  458. line-height: 33rpx;
  459. padding-left: 20rpx;
  460. padding-right: 20rpx;
  461. }
  462. .box{
  463. padding: 0 24rpx;
  464. }
  465. .line{
  466. background: #fff;margin-top: 20rpx;
  467. border-radius: 10rpx;
  468. }
  469. .lineTop{
  470. padding: 30rpx 22rpx 0rpx 22rpx;
  471. }
  472. .lineTop1{
  473. display: flex;justify-content: space-between;
  474. padding-bottom: 20rpx;
  475. }
  476. .lineTopNs{
  477. display: flex;
  478. }
  479. .nsTxt{
  480. font-size: 30rpx;
  481. color: #3C3C3C;
  482. line-height: 36rpx;
  483. font-weight: 600;
  484. }
  485. .nsStatus{
  486. font-size: 24rpx;
  487. color: #FF0000;
  488. height: 36rpx;
  489. background: #FFF1F1;
  490. border-radius: 4rpx;
  491. line-height: 38rpx;
  492. padding: 0 10rpx;
  493. margin-left: 20rpx;
  494. }
  495. .lineTimeBox{
  496. line-height: 36rpx;color: #3C3C3C;display: flex;
  497. }
  498. .carUpimg{
  499. margin-left: 20rpx;margin-top: 8rpx;
  500. }
  501. .lineTop2{
  502. display: flex;justify-content: space-between;
  503. padding-bottom: 20rpx;
  504. margin-top: 4rpx;
  505. }
  506. .lineBtn{
  507. /* height: 52rpx; */
  508. border-radius: 28rpx;
  509. border: 1px solid #DDDDDD;
  510. /* line-height: 56rpx; */
  511. padding: 10rpx 20rpx;
  512. font-size: 26rpx;
  513. color: #3C3C3C;
  514. }
  515. .chaoqi{
  516. line-height: 56rpx;font-size: 26rpx;
  517. color: #FF0000;
  518. }
  519. .lineCont{
  520. }
  521. .lcLine{
  522. padding: 24rpx 20rpx 0 20rpx;
  523. border-top: 1px solid #EEEEEE;
  524. /* padding-bottom: 20rpx; */
  525. }
  526. .lcLine .carData{
  527. padding-left: 0;padding-right: 0;
  528. }
  529. .lcLine .carnotes{
  530. padding-left: 0;padding-right: 0;
  531. }
  532. .nodataImg{
  533. width: 400rpx;
  534. padding-top: 100rpx;
  535. }
  536. .noTxt{
  537. font-size: 32rpx;
  538. color: #999999;
  539. padding-top: 50rpx;
  540. }
  541. .nodataBox{
  542. text-align: center;
  543. background: #fff;
  544. }
  545. .carLine{
  546. margin-bottom: 20rpx;
  547. }
  548. </style>