car.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. <template>
  2. <view class="content">
  3. <view class="nodataBox" v-show="nodataShow">
  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 class="carLine" v-for="(item,index ) in carList" @click="extCarInfo(item)">
  8. <view class="carTop" >
  9. <view class="carCont">
  10. <view class="carModel">
  11. <image :src="item.BrandLogo" mode="" class="carLogo"></image>
  12. <view class="carModelCont">
  13. <view class="carMcTop">
  14. <view class="plateNumber">{{item.PlateNumber}}</view>
  15. <view class="carTime" v-if="item.carDetailInfo.carAge">{{item.carDetailInfo.carAge}}</view>
  16. <view class="carA">{{item.carType}}</view>
  17. </view>
  18. <view class="carMcTxt">{{item.CarModel}}</view>
  19. <view class="carTitleBox" v-if="item.carDetailInfo.labelName">
  20. <view class="carTitle" v-for="(v,i) in item.carDetailInfo.labelName.split(',')">{{v}}</view>
  21. </view>
  22. </view>
  23. <view>
  24. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  25. </view>
  26. </view>
  27. <view class="carData">
  28. <view class="carDataLine">最新里程:{{item.Milage}}km</view>
  29. <view class="carDataLine">累计消费:{{item.checkoutMoneySum}}</view>
  30. </view>
  31. <view class="carnotes">车辆备注:{{item.carDetailInfo.Comment}}</view>
  32. </view>
  33. </view>
  34. <view class="box">
  35. <view class="line">
  36. <view class="lineTop">
  37. <view class="lineTop1">
  38. <view class="lineTopNs">
  39. <view class="nsTxt">年审日期</view>
  40. <view class="nsStatus" v-if="!isDateGreater(item.carDetailInfo.NextAuditTime)">
  41. <span v-if="daysUntilDate(item.carDetailInfo.NextAuditTime)>30">已过期</span>
  42. <span v-else>即将过期</span>
  43. </view>
  44. </view>
  45. <view class="lineTimeBox">
  46. <span>{{item.carDetailInfo.NextAuditTime}}</span>
  47. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  48. </view>
  49. </view>
  50. <view class="lineTop2">
  51. <view class="chaoqi">
  52. <span v-if="!isDateGreater(item.carDetailInfo.NextAuditTime)">超期天数:{{daysUntilDate(item.carDetailInfo.NextAuditTime)}}天</span>
  53. </view>
  54. <view class="lineBtn">发送提醒</view>
  55. </view>
  56. </view>
  57. <view class="lineCont">
  58. <view class="lcLine">
  59. <view class="lineTop1">
  60. <view class="lineTopNs">
  61. <view class="nsTxt">保险提醒</view>
  62. <view class="nsStatus" v-if="!isDateGreater(item.carDetailInfo.InsuranceExpireDate)">
  63. <span v-if="daysUntilDate(item.carDetailInfo.InsuranceExpireDate)>30">已过期</span>
  64. <span v-else>即将过期</span>
  65. </view>
  66. </view>
  67. <view class="lineTimeBox" v-if="item.carDetailInfo.InsuranceExpireDate">
  68. <span>{{item.carDetailInfo.InsuranceExpireDate.slice(0,10)}}</span>
  69. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  70. </view>
  71. </view>
  72. <view class="carData">
  73. <view class="carDataLine">交强险到期:{{item.carDetailInfo.CompulsoryInsuranceTime}}</view>
  74. <view class="carDataLine">商业险到期:{{item.carDetailInfo.CommercialInsuranceTime}}</view>
  75. </view>
  76. <view class="carnotes">保险公司:{{item.carDetailInfo.inscName}}</view>
  77. <view class="lineTop2">
  78. <view class="chaoqi">距离天数:{{daysUntilDate(item.carDetailInfo.InsuranceExpireDate)}}天</view>
  79. <view class="lineBtn">发送提醒</view>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. <!-- 提醒商机 -->
  85. <view class="line" v-if="false">
  86. <view class="lineTop">
  87. <view class="lineTop1">
  88. <view class="lineTopNs">
  89. <view class="nsTxt">提醒商机</view>
  90. </view>
  91. <view class="lineTimeBox">
  92. <span style="color: #FF0000;">2条</span>
  93. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  94. </view>
  95. </view>
  96. </view>
  97. <view class="lineCont">
  98. <view class="lcLine">
  99. <view class="lineTop1">
  100. <view class="lineTopNs">
  101. <view class="nsTxt">提醒类别:机油滤清器</view>
  102. </view>
  103. </view>
  104. <view class="carData">
  105. <view class="carDataLine">下次服务日期:2024-02-12</view>
  106. <view class="carDataLine">下次服务里程:93843km</view>
  107. </view>
  108. <view class="carnotes">上次到店:2022-01-21</view>
  109. <view class="lineTop2">
  110. <view class="chaoqi">超期天数:</view>
  111. <view class="lineBtn">发送提醒</view>
  112. </view>
  113. </view>
  114. <view class="lcLine">
  115. <view class="lineTop1">
  116. <view class="lineTopNs">
  117. <view class="nsTxt">保养提醒</view>
  118. </view>
  119. </view>
  120. <view class="carData">
  121. <view class="carDataLine">下次服务日期:2024-02-12</view>
  122. <view class="carDataLine">下次服务里程:93843km</view>
  123. </view>
  124. <view class="carnotes">上次到店:2022-01-21</view>
  125. <view class="lineTop2">
  126. <view class="chaoqi">超期天数:10</view>
  127. <view class="lineBtn">发送提醒</view>
  128. </view>
  129. </view>
  130. </view>
  131. </view>
  132. <!-- 提醒商机 -->
  133. <!-- 检测异常商机 -->
  134. <view class="line" v-if="false">
  135. <view class="lineTop">
  136. <view class="lineTop1">
  137. <view class="lineTopNs">
  138. <view class="nsTxt">检测异常商机</view>
  139. </view>
  140. <view class="lineTimeBox">
  141. <span style="color: #FF0000;">2条</span>
  142. <image class="carUpimg" src="../../static/img/icon_arrow_up.png" mode=""></image>
  143. </view>
  144. </view>
  145. </view>
  146. <view class="lineCont">
  147. <view class="lcLine">
  148. <view class="lineTop1">
  149. <view class="lineTopNs">
  150. <view class="nsTxt">检测异常商机</view>
  151. </view>
  152. </view>
  153. <view class="carData">
  154. <view class="carDataLine">下次服务日期:2024-02-12</view>
  155. <view class="carDataLine" style="color: #FF0000;">距离天数:10</view>
  156. </view>
  157. <view class="carnotes">检测结果:长了换行1</view>
  158. <view class="carData" style="padding-top: 16rpx;">
  159. <view class="carDataLine">检测日期:2024-02-12</view>
  160. <view class="carDataLine" >检测里程:9383km</view>
  161. </view>
  162. <view class="carnotes">检测门店:这是门店名称长了换行展示1</view>
  163. <view class="lineTop2">
  164. <view class="chaoqi"></view>
  165. <view class="lineBtn">发送提醒</view>
  166. </view>
  167. </view>
  168. </view>
  169. </view>
  170. <!-- 检测异常商机 -->
  171. </view>
  172. </view>
  173. </view>
  174. </template>
  175. <script>
  176. export default {
  177. props:['token'],
  178. data() {
  179. return {
  180. carList:[],
  181. carInfo:'',
  182. nodataShow:false
  183. }
  184. },
  185. onLoad() {
  186. },
  187. computed: {
  188. // 计算属性来判断日期是否大于当前日期
  189. isDateGreater() {
  190. return (val)=>{
  191. const currentDate = new Date();
  192. const compareDate = new Date(val);
  193. return compareDate > currentDate;
  194. }
  195. },
  196. daysUntilDate() {
  197. return (val)=>{
  198. const today = new Date();
  199. const specificDate = new Date(val);
  200. const diffTime = Math.abs(today - specificDate);
  201. var time=diffTime / (1000 * 60 * 60 * 24);
  202. return parseInt(time);
  203. }
  204. }
  205. },
  206. methods: {
  207. getdata(){
  208. this.extCarInfo()
  209. /* var that=this;
  210. this.$http('enterprise/wechat/extCustomerInfo', {
  211. corpID:'wpMGjbBgAA_zIu6wbKy48zFSbGiGeP8g',
  212. extUserId:'wmMGjbBgAA0JAbGD5Vu8BzEuYgZhvhOA',
  213. token:this.token
  214. }, 'GET').then(res => {
  215. this.carList=res.data.data.map
  216. }) */
  217. },
  218. extCarInfo(item){
  219. var that=this;
  220. this.customerId=uni.getStorageSync('customerId')
  221. if(!this.customerId){
  222. this.nodataShow=true
  223. }else{
  224. this.$http('enterprise/wechat/extCarInfo', {
  225. id:this.customerId,
  226. //token:this.token
  227. }, 'GET').then(res => {
  228. this.carList=res.data
  229. })
  230. }
  231. }
  232. }
  233. }
  234. </script>
  235. <style scoped>
  236. .carTop{
  237. background: #fff;
  238. padding: 24rpx;
  239. padding-top: 0;
  240. }
  241. .carCont{
  242. height: 305rpx;
  243. background: linear-gradient( 180deg, #FFE9DB 0%, #FFF2EB 48%, #FFF8F4 100%);
  244. border-radius: 10rpx;
  245. opacity: 0.7;
  246. }
  247. .carLogo{
  248. width: 72rpx;
  249. height: 72rpx;
  250. border-radius: 50%;
  251. }
  252. .carUpimg{
  253. width: 26rpx;height: 16rpx;
  254. }
  255. .carModel{
  256. display: flex;
  257. padding-top: 24rpx;
  258. padding-left: 24rpx;
  259. }
  260. .carModelCont{
  261. width: 540rpx;
  262. padding-left: 12rpx;
  263. }
  264. .carMcTop{
  265. display: flex;
  266. }
  267. .plateNumber{
  268. font-weight: 500;
  269. font-size: 30rpx;
  270. color: #3C3C3C;
  271. line-height: 42rpx;
  272. }
  273. .carTime{
  274. height: 36rpx;
  275. background: #FF842D;
  276. border-radius: 4rpx;
  277. font-size: 24rpx;
  278. color: #FFFFFF;
  279. line-height: 36rpx;
  280. padding: 0 10rpx;
  281. margin-left: 20rpx;
  282. }
  283. .carA{
  284. height: 36rpx;
  285. background: #FFE26C;
  286. border-radius: 4rpx;
  287. font-size: 24rpx;
  288. color: #2A2623;
  289. line-height: 36rpx;
  290. padding: 0 10rpx;
  291. margin-left: 20rpx;
  292. }
  293. .carMcTxt{
  294. font-size: 24rpx;
  295. color: #666666;
  296. padding-top: 16rpx;
  297. white-space: nowrap; /* 不换行 */
  298. overflow: hidden; /* 隐藏超出的内容 */
  299. text-overflow: ellipsis; /* 用省略号表示被隐藏的部分 */
  300. width: 560rpx; /* 设置最大宽度以限制文本的显示长度 */
  301. }
  302. .carTitleBox{
  303. display: flex;padding-top: 12rpx;flex-wrap: wrap;
  304. }
  305. .carTitle{
  306. height: 36rpx;
  307. border-radius: 4rpx;
  308. border: 1px solid #FF8113;
  309. line-height: 34rpx;
  310. font-size: 24rpx;
  311. color: #FF8113;
  312. padding: 0 8rpx;
  313. margin-right: 10rpx;
  314. margin-bottom: 10rpx;
  315. }
  316. .carModel{
  317. border-bottom: 1px solid #EFDFD6;
  318. padding-bottom: 20rpx;
  319. }
  320. .carData{
  321. display: flex;
  322. justify-content: space-between;
  323. font-size: 24rpx;
  324. color: #666666;
  325. /* padding-top: 18rpx; */
  326. line-height: 33rpx;
  327. padding-left: 20rpx;
  328. padding-right: 20rpx;
  329. }
  330. .carnotes{
  331. font-size: 24rpx;
  332. color: #666666;
  333. padding-top: 18rpx;
  334. line-height: 33rpx;
  335. padding-left: 20rpx;
  336. padding-right: 20rpx;
  337. }
  338. .box{
  339. padding: 0 24rpx;
  340. }
  341. .line{
  342. background: #fff;margin-top: 20rpx;
  343. border-radius: 10rpx;
  344. }
  345. .lineTop{
  346. padding: 30rpx 22rpx;
  347. }
  348. .lineTop1{
  349. display: flex;justify-content: space-between;
  350. padding-bottom: 20rpx;
  351. }
  352. .lineTopNs{
  353. display: flex;
  354. }
  355. .nsTxt{
  356. font-size: 28rpx;
  357. color: #3C3C3C;
  358. line-height: 36rpx;
  359. }
  360. .nsStatus{
  361. font-size: 24rpx;
  362. color: #FF0000;
  363. height: 36rpx;
  364. background: #FFF1F1;
  365. border-radius: 4rpx;
  366. line-height: 36rpx;
  367. padding: 0 10rpx;
  368. margin-left: 20rpx;
  369. }
  370. .lineTimeBox{
  371. line-height: 36rpx;color: #3C3C3C;display: flex;
  372. }
  373. .carUpimg{
  374. margin-left: 20rpx;margin-top: 8rpx;
  375. }
  376. .lineTop2{
  377. display: flex;justify-content: space-between;
  378. /* padding-bottom: 30rpx; */
  379. }
  380. .lineBtn{
  381. height: 52rpx;
  382. border-radius: 28rpx;
  383. border: 1rpx solid #DDDDDD;
  384. line-height: 52rpx;
  385. padding: 0 20rpx;
  386. font-size: 24rpx;
  387. color: #3C3C3C;
  388. }
  389. .chaoqi{
  390. line-height: 56rpx;font-size: 24rpx;
  391. color: #FF0000;
  392. }
  393. .lineCont{
  394. }
  395. .lcLine{
  396. padding: 24rpx 20rpx 0 20rpx;
  397. border-top: 1px solid #EEEEEE;
  398. padding-bottom: 20rpx;
  399. }
  400. .lcLine .carData{
  401. padding-left: 0;padding-right: 0;
  402. }
  403. .lcLine .carnotes{
  404. padding-left: 0;padding-right: 0;
  405. }
  406. .nodataImg{
  407. width: 400rpx;
  408. padding-top: 100rpx;
  409. }
  410. .noTxt{
  411. font-size: 32rpx;
  412. color: #999999;
  413. padding-top: 50rpx;
  414. }
  415. .nodataBox{
  416. text-align: center;
  417. }
  418. .carLine{
  419. margin-bottom: 20rpx;
  420. }
  421. </style>