historyDetail.vue 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270
  1. <template>
  2. <view class="box">
  3. <homenav :iStatusBarHeight="iStatusBarHeight" :title="'消费明细'" ></homenav>
  4. <view class="contentBox">
  5. <view class="top" :style="{background:'#'+themeColor}">
  6. <view class="orderState">
  7. <image src="../../static/img/icon_order_def.png" mode="" style="width: 44rpx;height: 44rpx;">
  8. </image>
  9. <!-- <view class="SheetState" v-if="orderData.billsheet.PayState==2">已结算</view>
  10. <view class="SheetState" v-if="orderData.billsheet.PayState==0">未结算</view>
  11. -->
  12. <!-- SheetType单据类型(1维修单 2销售单3洗车单4销售退货) -->
  13. <view class="stateBox" v-if="orderData.billsheet.SheetType == 1">
  14. <!-- 0待施工(已保存)1施工中(已派工)2已完工 3已质检 4 已作废 -->
  15. <view class="SheetState" v-if="orderData.billsheet.SheetState == 0">待施工</view>
  16. <view class="SheetState" v-if="orderData.billsheet.SheetState == 1">施工中</view>
  17. <view class="SheetState" v-if="orderData.billsheet.SheetState == 2">已完工</view>
  18. <view class="SheetState" v-if="orderData.billsheet.SheetState == 3">已质检</view>
  19. <view class="SheetState" v-if="orderData.billsheet.SheetState == 4">已作废</view>
  20. <!-- 结算状态 -->
  21. <view class="SheetState" v-if="orderData.billsheet.PayState == 0">/未结算</view>
  22. <view class="SheetState" v-if="orderData.billsheet.PayState == 2">/已结算</view>
  23. </view>
  24. <view class="stateBox" v-if="orderData.billsheet.SheetType == 2">
  25. <!-- 0待施工(已保存)1施工中(已派工)2已审核 3已质检 4 已作废 -->
  26. <view class="SheetState" v-if="orderData.billsheet.SheetState < 2 ">未审核</view>
  27. <view class="SheetState" v-if="orderData.billsheet.SheetState == 2">已审核</view>
  28. <view class="SheetState" v-if="orderData.billsheet.SheetState == 4">已作废</view>
  29. <!-- 结算状态 -->
  30. <view class="SheetState" v-if="orderData.billsheet.PayState == 0">/未结算</view>
  31. <view class="SheetState" v-if="orderData.billsheet.PayState == 2">/已结算</view>
  32. </view>
  33. <view class="stateBox" v-if="orderData.billsheet.SheetType == 3">
  34. <!-- 0待施工(已保存)1施工中(已派工)2已完工 3已质检 4 已作废 -->
  35. <view class="SheetState" v-if="orderData.billsheet.SheetState == 0">已保存</view>
  36. <view class="SheetState" v-if="orderData.billsheet.SheetState == 4">已作废</view>
  37. <!-- 结算状态 -->
  38. <view class="SheetState" v-if="orderData.billsheet.PayState == 0">/未结算</view>
  39. <view class="SheetState" v-if="orderData.billsheet.PayState == 2">/已结算</view>
  40. </view>
  41. </view>
  42. </view>
  43. <view class="shopBox2">
  44. <view class="newboxTop">
  45. <view class="newline1">{{orderData.billsheet.workNames}}</view>
  46. <view class="newline1" style="padding-left: 20rpx;">{{orderData.billsheet.PlateNumber}}</view>
  47. </view>
  48. <view class="informationLine" >
  49. <view class="informationTxt">建议下次保养里程:</view>
  50. <view class="informationNum" v-if="orderData.billsheet.NextCareMilage">
  51. {{orderData.billsheet.NextCareMilage}}km
  52. </view>
  53. </view>
  54. <view class="informationLine" v-if="orderData.billsheet.SheetType==1">
  55. <view class="informationTxt">建议下次保养时间:</view>
  56. <view class="informationNum" v-if="orderData.billsheet.NextCareDate">
  57. {{orderData.billsheet.NextCareDate}}
  58. </view>
  59. </view>
  60. <view class="informationLine" >
  61. <view class="informationTxt">保养门店联系电话:</view>
  62. <view class="informationNum" v-if="orderData.billsheet.shopMobilePhone">
  63. {{orderData.billsheet.shopMobilePhone}}
  64. </view>
  65. </view>
  66. </view>
  67. <!-- 店铺信息 -->
  68. <view class="shopBox">
  69. <image src="../../static/img/icon_store.png" mode="" class="shopBoximg"></image>
  70. <view class="shopCont">
  71. <view class="shopName">{{orderData.billsheet.ShopName}}</view>
  72. <view class="Address">{{orderData.billsheet.Address}}</view>
  73. </view>
  74. <view class="shopRightBox" @click="map">
  75. <image src="../../static/img/icon_ditu.png" mode="" class="shopRightImg"></image>
  76. <view class="shopRihgtTxt">地图</view>
  77. </view>
  78. <view class="shopsx"></view>
  79. <view class="shopRightBox" @click="call">
  80. <image src="../../static/img/icon_phone.png" mode="" class="shopRightImg"></image>
  81. <view class="shopRihgtTxt">电话</view>
  82. </view>
  83. </view>
  84. <!-- 订单信息 -->
  85. <view class="information">
  86. <view class="carMes">
  87. <view class="plate">{{orderData.billsheet.PlateNumber}}</view>
  88. <view class="mileage" v-if="orderData.billsheet.CurrentMileage>0">
  89. {{orderData.billsheet.CurrentMileage}}km
  90. </view>
  91. </view>
  92. <view class="informationLine">
  93. <view class="informationTxt">姓名:</view>
  94. <view class="informationNum">{{orderData.billsheet.CustomerName}}</view>
  95. </view>
  96. <view class="informationLine">
  97. <view class="informationTxt">手机号:</view>
  98. <view class="informationNum">{{orderData.billsheet.MobilePhone}}</view>
  99. </view>
  100. <view class="informationLine">
  101. <view class="informationTxt">单号:</view>
  102. <view class="informationNum">{{orderData.billsheet.Code}}</view>
  103. </view>
  104. <view class="informationLine">
  105. <view class="informationTxt">接车时间:</view>
  106. <view class="informationNum">{{orderData.billsheet.time}}</view>
  107. </view>
  108. <view class="informationLine">
  109. <view class="informationTxt">服务顾问:</view>
  110. <view class="informationNum">{{orderData.billsheet.PickName}}</view>
  111. </view>
  112. <view class="informationLine" v-if="FaultDescription">
  113. <view class="informationTxt">故障描述:</view>
  114. <view class="informationNum" v-if="orderData.billsheet.FaultDescription">
  115. {{orderData.billsheet.FaultDescription}}
  116. </view>
  117. </view>
  118. <view class="informationLine" v-if="RepairDescription">
  119. <view class="informationTxt">维修建议:</view>
  120. <view class="informationNum" v-if="orderData.billsheet.RepairDescription">
  121. {{orderData.billsheet.RepairDescription}}
  122. </view>
  123. </view>
  124. <!-- <view class="informationLine" >
  125. <view class="informationTxt">保养技师:</view>
  126. <view class="informationNum" v-if="orderData.billsheet.workNames">
  127. {{orderData.billsheet.workNames}}
  128. </view>
  129. </view> -->
  130. <view class="informationLine" v-if="Comment">
  131. <view class="informationTxt">备注:</view>
  132. <view class="informationNum" v-if="orderData.billsheet.Comment">{{orderData.billsheet.Comment}}
  133. </view>
  134. </view>
  135. </view>
  136. <!-- 项目明细 -->
  137. <view class="detailedBox itemBox" v-if=" orderData.listItems.length!=0">
  138. <view class="detailedTitle">项目</view>
  139. <view class="detailedLineBox">
  140. <view class="detailedLine" v-for="(item,index) in orderData.listItems">
  141. <view class="detailedName"><span v-if="item.CardDetailID" class="kaColor">卡</span>{{item.ItemName}}
  142. </view>
  143. <view class="secondBox" :class="{noLine:index == orderData.listItems.length-1}">
  144. <view class="comment" v-if="ItemComment">{{item.Comment}}</view>
  145. <view class="secondRight">
  146. <!-- <view class="grayPrice">¥{{item.CheckOutTaxRate}}</view> -->
  147. <view class="price" v-if="ItemMoney">
  148. <span>¥</span>
  149. {{item.AmountMoney?item.AmountMoney:0}}
  150. </view>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. <!-- 商品明细-->
  157. <view class="detailedBox itemBox" v-if="orderData.listParts.length!=0">
  158. <view class="detailedTitle">商品</view>
  159. <view class="detailedLineBox">
  160. <view class="detailedLine" v-for="(item,index) in orderData.listParts">
  161. <view class="goodTop">
  162. <view class="detailedName"><span v-if="item.CardDetailID"
  163. class="kaColor">卡</span>{{item.Brand}} {{item.GoodsName}}</view>
  164. <view class="qty">x{{item.SaleQty}}</view>
  165. </view>
  166. <view class="secondBox" :class="{noLine:index == orderData.listParts.length-1}">
  167. <view class="comment" v-if="GoodsComment">{{item.Comment}}</view>
  168. <view class="secondRight">
  169. <!-- <view class="grayPrice">¥{{item.CheckOutTaxRate}}</view> -->
  170. <view class="price" v-if="ItemMoney">
  171. <span>¥</span>
  172. {{item.AmountMoney?item.AmountMoney:0}}
  173. </view>
  174. </view>
  175. </view>
  176. </view>
  177. </view>
  178. </view>
  179. <!-- 费用明细 -->
  180. <view class="goodscost"
  181. v-if="AmountMoney || TotalDiscountMoney || CardMoneyT || CardMoneyC || ReceiptsMoney">
  182. <view class="detailedTitle">费用明细</view>
  183. <view class="goodscostLine" v-if="AmountMoney">
  184. <view class="goodscostTxt">应收总计</view>
  185. <view class="goodsCostNum">¥{{orderData.billsheet.AmountMoney?orderData.billsheet.AmountMoney:0}}</view>
  186. </view>
  187. <view class="goodscostLine" v-if="TotalDiscountMoney">
  188. <view class="goodscostTxt">优惠总计</view>
  189. <view class="goodsCostNum">¥{{orderData.billsheet.TotalDiscountMoney?orderData.billsheet.TotalDiscountMoney:0}}</view>
  190. </view>
  191. <view class="goodscostLine" v-if="CardMoneyT">
  192. <view class="goodscostTxt">计次卡冲销</view>
  193. <view class="goodsCostNum">¥{{orderData.billsheet.CardMoneyT?orderData.billsheet.CardMoneyT:0}}</view>
  194. </view>
  195. <view class="goodscostLine" v-if="CardMoneyC">
  196. <view class="goodscostTxt">储值卡冲销</view>
  197. <view class="goodsCostNum">¥{{orderData.billsheet.CardMoneyCWriteOff?orderData.billsheet.CardMoneyCWriteOff:0}}</view>
  198. </view>
  199. <view class="goodscostLine" v-if="ReceiptsMoney">
  200. <view class="goodscostTxt">支付金额</view>
  201. <view class="goodsCostNum">¥{{orderData.billsheet.money?orderData.billsheet.money:0}}</view>
  202. </view>
  203. <view class="goodscostLine" >
  204. <view class="goodscostTxt">结算方式</view>
  205. <view class="goodsCostNum">{{orderData.billsheet.lastPayMethod?orderData.billsheet.lastPayMethod:''}}</view>
  206. </view>
  207. </view>
  208. <!-- 手机号授权 -->
  209. <view class="authorizBox" v-if="authorizShow" @click="authorizShow=false">
  210. <view class="authorizCont" @click.stop="">
  211. <view class="authorizName">{{wxOpenData.miniAppName}}</view>
  212. <view class="authorizMs">您好,欢迎访问本店,授权手机号登录能获取我们最新的促销活动哦~</view>
  213. <button class="authorizContbutton" type="default" open-type="getPhoneNumber"
  214. @getphonenumber="decryptPhoneNumber">授权</button>
  215. </view>
  216. <view style="text-align: center;padding-top: 56rpx;">
  217. <image src="../../static/timg/icon_guanbi@2x.png" mode="" class="authorizCloseImg"></image>
  218. </view>
  219. </view>
  220. </view>
  221. <view v-if="appraise == true && orderData.billsheet.PayState == 2" class="bottom">
  222. <view
  223. v-if="(orderData.billsheet.EvaluateState == 0) && (lastDay <= 30) && appraise == true && orderData.billsheet.PayState == 2"
  224. @click.stop="goAppraise()" class="ping">评价</view>
  225. <view v-if="orderData.billsheet.EvaluateState == 1" @click.stop="goAppraiseDetail()" class="kan">查看评价</view>
  226. </view>
  227. </view>
  228. </template>
  229. <script>
  230. import homenav from "../../components/homenav/nav.vue"
  231. export default {
  232. components: {
  233. homenav
  234. },
  235. data() {
  236. return {
  237. location: '',
  238. id: '',
  239. orderData: '',
  240. themeColor: '',
  241. authorizShow: false,
  242. userInfo: '',
  243. ext: '',
  244. wxOpenData: '',
  245. appraise: false,
  246. lastDay: '',
  247. // 权限
  248. FaultDescription: false, //故障描述
  249. RepairDescription: false, //维修建议
  250. Comment: false, //备注
  251. ItemMoney: false, //项目、商品金额
  252. ItemComment: false, //项目备注
  253. GoodsComment: false, //商品备注
  254. AmountMoney: false, //应收总计
  255. TotalDiscountMoney: false, //优惠总计
  256. CardMoneyT: false, //计次卡冲销
  257. CardMoneyC: false, //储值卡冲销
  258. ReceiptsMoney: false, //支付金额
  259. iStatusBarHeight:'',
  260. }
  261. },
  262. onLoad(opt) {
  263. this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight;
  264. this.id = opt.id
  265. this.themeColor = uni.getStorageSync("themeColor");
  266. this.userInfo = this.$store.state.userInfo;
  267. this.ext = this.$common.getExtStoreId();
  268. if (this.userInfo) {
  269. this.getData()
  270. } else {
  271. this.$common.automaticlogin().then(val => {
  272. this.userInfo = this.$store.state.userInfo;
  273. this.wxOpenData = this.$store.state.wxOpenData;
  274. this.themeColor = uni.getStorageSync("themeColor");
  275. this.getData()
  276. if(!this.userInfo){
  277. this.authorizShow=true
  278. }
  279. })
  280. }
  281. this.myPower();
  282. this.showPower();
  283. },
  284. methods: {
  285. //显示权限
  286. showPower() {
  287. this.$http('openweiXinCardInfoController/getShowSetting', {
  288. }, 'GET').then(res => {
  289. // 权限
  290. // FaultDescription:false,//故障描述
  291. // RepairDescription:false,//维修建议
  292. // Comment:false,//备注
  293. // ItemMoney:false,//项目、商品金额
  294. // ItemComment:false,//项目备注
  295. // GoodsComment:false,//商品备注
  296. // AmountMoney:false,//应收总计
  297. // TotalDiscountMoney:false,//优惠总计
  298. // CardMoneyT:false,//计次卡冲销
  299. // CardMoneyC:false,//储值卡冲销
  300. // ReceiptsMoney:false,//支付金额
  301. var list = res.data
  302. list.forEach((item, index) => {
  303. if (item.fieldValue == 'FaultDescription') {
  304. this.FaultDescription = item.isChecked
  305. }
  306. if (item.fieldValue == 'RepairDescription') {
  307. this.RepairDescription = item.isChecked
  308. }
  309. if (item.fieldValue == 'Comment') {
  310. this.Comment = item.isChecked
  311. }
  312. if (item.fieldValue == 'ItemMoney') {
  313. this.ItemMoney = item.isChecked
  314. }
  315. if (item.fieldValue == 'ItemComment') {
  316. this.ItemComment = item.isChecked
  317. }
  318. if (item.fieldValue == 'GoodsComment') {
  319. this.GoodsComment = item.isChecked
  320. }
  321. if (item.fieldValue == 'AmountMoney') {
  322. this.AmountMoney = item.isChecked
  323. }
  324. if (item.fieldValue == 'CardMoneyT') {
  325. this.CardMoneyT = item.isChecked
  326. }
  327. if (item.fieldValue == 'CardMoneyC') {
  328. this.CardMoneyC = item.isChecked
  329. }
  330. if (item.fieldValue == 'ReceiptsMoney') {
  331. this.ReceiptsMoney = item.isChecked
  332. }
  333. if (item.fieldValue == 'TotalDiscountMoney') {
  334. this.TotalDiscountMoney = item.isChecked
  335. }
  336. })
  337. })
  338. },
  339. //评价权限
  340. myPower() {
  341. this.$http('openMiniEvaluate/getEvaluateSetting', {
  342. }, 'GET').then(res => {
  343. // var list = res.data.Items
  344. this.appraise = res.data
  345. })
  346. },
  347. goAppraiseDetail(item) {
  348. uni.navigateTo({
  349. url: 'myAppraiseDetail?sheetId=' + this.orderData.billsheet.id
  350. })
  351. },
  352. goAppraise(item) {
  353. uni.navigateTo({
  354. url: 'appraise?sheetID=' + this.orderData.billsheet.id + '&shopID=' + this.orderData.billsheet
  355. .shopID
  356. })
  357. },
  358. decryptPhoneNumber: function(e) {
  359. console.log(e);
  360. this.code = e.detail.code
  361. this.wxPhoneLogin()
  362. this.authorizShow = false;
  363. },
  364. wxPhoneLogin() {
  365. var that = this;
  366. this.$http('miniApp2/sys/wxPhoneLogin', {
  367. appId: this.ext.appId,
  368. unionId: this.ext.unionId,
  369. code: this.code,
  370. openId: this.wxOpenData.openid
  371. }, 'POST').then(res => {
  372. var data = res.data;
  373. if(data.newCustomer){
  374. uni.showModal({
  375. title: '提示',
  376. content: data.newCustomerMsg,
  377. success: function(resTK) {
  378. }
  379. });
  380. var token=res.data.token
  381. data.loginInfo={}
  382. data.loginInfo.token=token
  383. this.$store.commit('mutationswxOpenData', data);
  384. return false;
  385. }
  386. if (data.loginInfo) {
  387. this.userInfo = data.loginInfo.openUser;
  388. this.wxOpenData = data.loginInfo;
  389. this.$store.commit('mutationswxOpenData', data)
  390. this.$store.commit('mutationsuserInfo', this.userInfo)
  391. this.getData()
  392. }
  393. })
  394. },
  395. map() {
  396. console.log("打开地图")
  397. var that = this;
  398. if (!that.orderData.billsheet.lat || !that.orderData.billsheet.lng) {
  399. uni.showToast({
  400. title: '该店铺未设置定位',
  401. icon: 'none',
  402. duration: 3000
  403. });
  404. } else {
  405. uni.openLocation({
  406. latitude: Number(that.orderData.billsheet.lat),
  407. longitude: Number(that.orderData.billsheet.lng),
  408. name: that.orderData.billsheet.ShopName,
  409. address: that.orderData.billsheet.Address,
  410. success: function() {
  411. console.log('success');
  412. },
  413. fail(err) {
  414. console.log(err)
  415. }
  416. });
  417. }
  418. },
  419. call() {
  420. uni.makePhoneCall({
  421. phoneNumber: this.orderData.billsheet.shopMobilePhone
  422. });
  423. },
  424. getData() {
  425. let that = this
  426. uni.showLoading({
  427. title: '加载中'
  428. });
  429. this.$http('openweiXinCardInfoController/queryConsumptionDetail', {
  430. // lat: this.location.lat,
  431. // lng: this.location.lng,
  432. id: this.id,
  433. }, 'POST').then(res => {
  434. uni.hideLoading();
  435. this.orderData = res.data;
  436. console.log('data===', this.orderData);
  437. })
  438. },
  439. //时间对比
  440. getDateBeforeNow(stringTime) {
  441. console.log("传参未格式化", stringTime);
  442. stringTime = new Date(stringTime.replace(/-/g, '/'))
  443. // 统一单位换算
  444. var minute = 1000 * 60;
  445. var hour = minute * 60;
  446. var day = hour * 24;
  447. var week = day * 7;
  448. var month = day * 30;
  449. var year = month * 12;
  450. var time1 = new Date().getTime(); //当前的时间戳 console.log("当前时间", time1);
  451. // 对时间进行毫秒单位转换 var time2 = new Date(stringTime).getTime(); //指定时间的时间戳
  452. console.log("传过来的时间", time2);
  453. var time = time1 - time2;
  454. console.log("计算后的时间", time);
  455. var result =
  456. null; // if (time < 0) { // // alert("传过来的时间的时间不能晚于当前时间!"); // result = stringTime; // } else if (time / year >= 1) {
  457. // result = parseInt(time / year) + "年前";
  458. // } else if (time / month >= 1) {
  459. // result = parseInt(time / month) + "月前";
  460. // } else if (time / week >= 1) { // result = parseInt(time / week) + "周前"; // } else if (time / day >= 1) {
  461. // result = parseInt(time / day) + "天前";
  462. // } else if (time / hour >= 1) { // result = parseInt(time / hour) + "小时前";
  463. // } else if (time / minute >= 1) {
  464. // result = parseInt(time / minute) + "分钟前"; // } else {
  465. // result = "刚刚"; // }
  466. if (time < 0) {
  467. // alert("传过来的时间的时间不能晚于当前时间!");
  468. result = -1;
  469. } else if (time / day >= 0) {
  470. result = parseInt(time / day); //多少天前
  471. }
  472. console.log("多少天前", result);
  473. return result;
  474. },
  475. goback() {
  476. uni.navigateBack({})
  477. },
  478. },
  479. onPullDownRefresh() {
  480. this.getData()
  481. setTimeout(function() {
  482. uni.stopPullDownRefresh();
  483. }, 1000);
  484. },
  485. }
  486. </script>
  487. <style scoped>
  488. .newboxTop{
  489. display: flex;
  490. padding-left: 20rpx;
  491. font-size: 30rpx;
  492. }
  493. .box {
  494. min-height: 100vh;
  495. background: #F4F5F7;
  496. padding-bottom: constant(safe-area-inset-bottom);
  497. padding-bottom: env(safe-area-inset-bottom);
  498. }
  499. .contentBox {
  500. background: #F4F5F7;
  501. padding-bottom: 100rpx;
  502. }
  503. .top {
  504. height: 190rpx;
  505. background: #FF0000;
  506. }
  507. .stateBox {
  508. display: flex;
  509. }
  510. .orderState {
  511. display: flex;
  512. justify-content: center;
  513. align-items: center;
  514. padding-top: 40rpx;
  515. }
  516. .SheetState {
  517. display: flex;
  518. justify-content: center;
  519. font-size: 36rpx;
  520. font-weight: 500;
  521. color: #FFFFFF;
  522. margin-left: 15rpx;
  523. }
  524. .timeEditImg {
  525. width: 25rpx;
  526. height: 25rpx;
  527. padding-left: 20rpx;
  528. }
  529. .shopBoximg {
  530. width: 40rpx;
  531. height: 40rpx;
  532. }
  533. .shopRightImg {
  534. width: 44rpx;
  535. height: 45rpx;
  536. }
  537. .shopsx {
  538. width: 1px;
  539. height: 50rpx;
  540. background: #EEEEEE;
  541. margin-top: 30rpx;
  542. margin-left: 28rpx;
  543. }
  544. .shopBox2{
  545. padding: 30rpx 20rpx;
  546. margin: 0rpx 24rpx;
  547. margin-top: -60rpx;
  548. background-color: #FFFFFF;
  549. border-radius: 10rpx;
  550. }
  551. .shopBox2 .informationTxt {
  552. width: 350rpx;
  553. }
  554. .shopBox {
  555. display: flex;
  556. padding: 30rpx 20rpx;
  557. margin: 0rpx 24rpx;
  558. margin-top: 20rpx;
  559. background-color: #FFFFFF;
  560. border-radius: 10rpx;
  561. }
  562. .shopCont {
  563. width: 405rpx;
  564. padding-left: 20rpx;
  565. }
  566. .shopName {
  567. font-size: 30rpx;
  568. font-weight: bold;
  569. color: #3C3C3C;
  570. line-height: 45rpx;
  571. }
  572. .Address {
  573. color: #999999;
  574. font-size: 24rpx;
  575. margin-top: 10rpx;
  576. }
  577. .shopRihgtTxt {
  578. color: #999999;
  579. font-size: 24rpx;
  580. }
  581. .shopRightBox {
  582. padding-left: 28rpx;
  583. }
  584. .peopleCont {
  585. font-size: 28rpx;
  586. color: #3C3C3C;
  587. padding-left: 20rpx;
  588. }
  589. .people {
  590. display: flex;
  591. padding-left: 20rpx;
  592. padding-top: 30rpx;
  593. padding-bottom: 36rpx;
  594. }
  595. .PlateNumberBox {
  596. display: flex;
  597. padding-left: 20rpx;
  598. padding-bottom: 30rpx;
  599. }
  600. .PlateNumbercx {
  601. font-size: 28rpx;
  602. color: #3C3C3C;
  603. padding-left: 20rpx;
  604. }
  605. .PlateNumber {
  606. width: 130rpx;
  607. height: 32rpx;
  608. border-radius: 4rpx;
  609. border: 1px solid #F19D01;
  610. line-height: 32rpx;
  611. text-align: center;
  612. font-size: 22rpx;
  613. color: #F19D01;
  614. margin-left: 26rpx;
  615. }
  616. .PlateNumberBoxTop {
  617. display: flex;
  618. }
  619. .CarModel {
  620. font-size: 26rpx;
  621. color: #999999;
  622. padding-left: 20rpx;
  623. padding-top: 6rpx;
  624. padding-right: 20rpx;
  625. padding-bottom: 15rpx;
  626. width: 600rpx;
  627. }
  628. .detailedBox {
  629. background: #FFFFFF;
  630. border-radius: 10px;
  631. margin: 20rpx 24rpx;
  632. padding-bottom: 20rpx;
  633. }
  634. .itemBox {
  635. margin-top: 20rpx;
  636. }
  637. .carMes {
  638. padding: 23rpx 20rpx;
  639. display: flex;
  640. align-items: center;
  641. justify-content: flex-start;
  642. border-bottom: 1rpx solid #EEEEEE;
  643. }
  644. .plate {
  645. font-size: 30rpx;
  646. color: #3C3C3C;
  647. font-weight: bold;
  648. margin-right: 20rpx;
  649. }
  650. .mileage {
  651. font-size: 24rpx;
  652. color: #F19D01;
  653. padding: 0rpx 10rpx;
  654. border: 1rpx solid #F19D01;
  655. border-radius: 4rpx;
  656. height: 36rpx;
  657. }
  658. .detailedTitle {
  659. padding: 23rpx 20rpx;
  660. display: flex;
  661. text-align: center;
  662. align-content: flex-start;
  663. border-bottom: 1rpx solid #EEEEEE;
  664. font-size: 30rpx;
  665. font-weight: bold;
  666. color: #3C3C3C;
  667. }
  668. .detailedLine {
  669. padding: 20rpx 20rpx 0rpx;
  670. }
  671. .detailedImg {
  672. width: 120rpx;
  673. height: 120rpx;
  674. border-radius: 10rpx;
  675. }
  676. .detailedName {
  677. font-size: 26rpx;
  678. color: #3C3C3C;
  679. }
  680. .kaColor {
  681. background: #F19D01;
  682. border-radius: 4rpx;
  683. color: #FFFFFF;
  684. font-size: 24rpx;
  685. margin-right: 8rpx;
  686. padding: 3rpx 5rpx;
  687. }
  688. .qty {
  689. font-size: 24rpx;
  690. font-weight: 400;
  691. color: #999999;
  692. }
  693. .secondBox {
  694. display: flex;
  695. padding: 20rpx 0rpx;
  696. justify-content: space-between;
  697. align-items: baseline;
  698. border-bottom: 1rpx solid #EEEEEE;
  699. }
  700. .noLine {
  701. border-bottom: 0 solid #FFFFFF;
  702. }
  703. .comment {
  704. margin-right: 20rpx;
  705. font-size: 24rpx;
  706. font-weight: 400;
  707. color: #999999;
  708. flex-grow: 1;
  709. }
  710. .secondRight {
  711. display: flex;
  712. justify-content: flex-end;
  713. align-items: baseline;
  714. }
  715. .grayPrice {
  716. font-size: 24rpx;
  717. font-weight: 400;
  718. color: #999999;
  719. text-decoration: line-through;
  720. }
  721. .price {
  722. font-size: 32rpx;
  723. font-weight: 500;
  724. color: #FF0000;
  725. display: flex;
  726. align-items: center;
  727. }
  728. span {
  729. font-size: 24rpx;
  730. }
  731. .goodTop {
  732. display: flex;
  733. justify-content: space-between;
  734. }
  735. .goodscost {
  736. background: #FFFFFF;
  737. border-radius: 10px;
  738. margin: 20rpx 24rpx;
  739. padding-bottom: 20rpx;
  740. }
  741. .goodscostLine {
  742. display: flex;
  743. justify-content: space-between;
  744. font-size: 26rpx;
  745. padding: 20rpx 20rpx;
  746. color: #333333;
  747. }
  748. .goodsCostNum {
  749. color: #FF0000;
  750. font-weight: bold;
  751. }
  752. .information {
  753. width: 702rpx;
  754. background: #FFFFFF;
  755. border-radius: 10px;
  756. margin-left: 24rpx;
  757. margin-top: 20rpx;
  758. padding: 0rpx 0 15rpx 0;
  759. }
  760. .informationLine {
  761. display: flex;
  762. font-size: 26rpx;
  763. padding: 15rpx 20rpx;
  764. }
  765. .informationTxt {
  766. width: 200rpx;
  767. color: #999999;
  768. }
  769. .informationNum {
  770. color: #333333;
  771. width: calc(100vw - 200rpx);
  772. }
  773. .copyBtn {
  774. width: 86rpx;
  775. height: 40rpx;
  776. background: #F4F5F7;
  777. border-radius: 20rpx;
  778. font-size: 24rpx;
  779. color: #333333;
  780. text-align: center;
  781. line-height: 40rpx;
  782. margin-left: 20rpx;
  783. }
  784. .orderBottom {
  785. width: 750rpx;
  786. height: 98rpx;
  787. background: #FFFFFF;
  788. position: fixed;
  789. left: 0;
  790. bottom: 0;
  791. display: flex;
  792. justify-content: flex-end;
  793. }
  794. .cancelBtn {
  795. width: 150rpx;
  796. height: 56rpx;
  797. border-radius: 36rpx;
  798. border: 2rpx solid #DDDDDD;
  799. text-align: center;
  800. line-height: 56rpx;
  801. font-size: 28rpx;
  802. color: #3C3C3C;
  803. margin-top: 21rpx;
  804. margin-right: 16rpx;
  805. margin-left: 20rpx;
  806. }
  807. .payBtn {
  808. width: 150rpx;
  809. height: 56rpx;
  810. border-radius: 36rpx;
  811. border: 2rpx solid #FF4F00;
  812. text-align: center;
  813. line-height: 56rpx;
  814. font-size: 28rpx;
  815. color: #FF4F00;
  816. margin-top: 21rpx;
  817. margin-right: 16rpx;
  818. margin-left: 20rpx;
  819. }
  820. .timeBox2 {
  821. width: 100vw;
  822. height: 100vh;
  823. background: rgba(0, 0, 0, 0.5);
  824. position: fixed;
  825. top: 0;
  826. left: 0;
  827. }
  828. .timeLeftActive {
  829. background: #FFFFFF;
  830. }
  831. .timeMain {
  832. width: 100vw;
  833. height: 70vh;
  834. margin-top: 30vh;
  835. background: #FFFFFF;
  836. border-radius: 24rpx 24rpx 0px 0px;
  837. }
  838. .timesfNo {
  839. background: #F5F5F5;
  840. }
  841. .timesfActive {
  842. background: #FF4F00;
  843. }
  844. .timesfActive .timeSfNum {
  845. color: #FFFFFF;
  846. }
  847. .timesfActive .timeyy {
  848. color: #FFFFFF;
  849. }
  850. .topBox {
  851. padding: 20rpx 24rpx;
  852. }
  853. .timeTop {
  854. display: flex;
  855. line-height: 90rpx;
  856. padding-left: 24rpx;
  857. padding-right: 24rpx;
  858. justify-content: space-between;
  859. }
  860. .timeTopTitle {
  861. font-size: 30rpx;
  862. font-family: PingFangSC-Medium, PingFang SC;
  863. font-weight: 600;
  864. color: #3C3C3C;
  865. }
  866. .close {
  867. color: #999999;
  868. font-size: 30rpx;
  869. padding-left: 30rpx;
  870. }
  871. .timeCont {
  872. height: calc(70vh - 210rpx);
  873. }
  874. .timeSv {
  875. height: calc(70vh - 210rpx);
  876. }
  877. .timeLeft2 {
  878. width: 162rpx;
  879. background: #F4F5F7;
  880. border-top: 1px soid #F4F5F7;
  881. border-right: 1px soid #F4F5F7;
  882. }
  883. .timeRight2 {
  884. width: 588rpx;
  885. }
  886. .timesf {
  887. width: 165rpx;
  888. height: 98rpx;
  889. border-radius: 7rpx;
  890. border: 2rpx solid #EEEEEE;
  891. text-align: center;
  892. margin-left: 20rpx;
  893. margin-bottom: 24rpx;
  894. }
  895. .timeBottom {
  896. width: 750rpx;
  897. height: 120rpx;
  898. background: #FFFFFF;
  899. box-shadow: 0px -2px 20rpx 0px rgba(153, 153, 153, 0.2);
  900. display: flex;
  901. align-items: center;
  902. }
  903. .timerightBox {
  904. display: flex;
  905. flex-wrap: wrap;
  906. }
  907. .timeCont {
  908. display: flex;
  909. }
  910. .timeSfNum {
  911. color: #666666;
  912. font-size: 28rpx;
  913. padding-top: 15rpx;
  914. }
  915. .timeyy {
  916. font-size: 24rpx;
  917. color: #999999;
  918. }
  919. .timecomplete {
  920. width: 690rpx;
  921. height: 74rpx;
  922. background: linear-gradient(124deg, #FF8700 0%, #FF4F00 100%);
  923. border-radius: 37rpx;
  924. line-height: 74rpx;
  925. text-align: center;
  926. font-size: 30rpx;
  927. color: #FFFFFF;
  928. margin-left: 30rpx;
  929. }
  930. .timeleftLine {
  931. font-size: 30rpx;
  932. color: #999999;
  933. text-align: center;
  934. padding: 28rpx 10rpx;
  935. border-bottom: 1px solid #EEEEEE;
  936. }
  937. .yuyueBox {
  938. background: #FFFFFF;
  939. border-radius: 10rpx;
  940. margin-left: 24rpx;
  941. margin-right: 24rpx;
  942. }
  943. .yuyueTime {
  944. display: flex;
  945. padding-left: 20rpx;
  946. padding-top: 30rpx;
  947. padding-bottom: 36rpx;
  948. align-items: center;
  949. }
  950. .yuyueState {
  951. display: flex;
  952. padding-left: 20rpx;
  953. padding-top: 30rpx;
  954. padding-bottom: 36rpx;
  955. }
  956. .maBox {
  957. display: flex;
  958. justify-content: space-between;
  959. padding: 24rpx 20rpx;
  960. }
  961. .querenMa {
  962. margin: 20rpx 0;
  963. padding-bottom: 30rpx;
  964. }
  965. .maBoximg {
  966. width: 308rpx;
  967. height: 308rpx;
  968. margin: 30rpx 197rpx;
  969. }
  970. .rightShou {
  971. display: flex;
  972. justify-content: flex-start;
  973. align-items: center;
  974. }
  975. .authorizBox {
  976. width: 100vw;
  977. height: 100vh;
  978. background: rgba(0, 0, 0, 0.5);
  979. position: fixed;
  980. top: 0;
  981. left: 0;
  982. }
  983. .authorizCont {
  984. margin-top: 30vh;
  985. width: 564rpx;
  986. height: 408rpx;
  987. background: #FFFFFF;
  988. border-radius: 24rpx;
  989. margin-left: 93rpx;
  990. position: relative;
  991. }
  992. .authorizCloseImg {
  993. width: 62rpx;
  994. height: 62rpx;
  995. }
  996. .sqLogoBox {
  997. width: 180rpx;
  998. height: 180rpx;
  999. background: #FFFFFF;
  1000. border-radius: 90rpx;
  1001. text-align: center;
  1002. position: absolute;
  1003. top: -50rpx;
  1004. left: 192rpx;
  1005. }
  1006. .authorizName {
  1007. color: #333333;
  1008. line-height: 42rpx;
  1009. font-size: 30rpx;
  1010. text-align: center;
  1011. padding-top: 58rpx;
  1012. }
  1013. .authorizMs {
  1014. color: #999999;
  1015. line-height: 36rpx;
  1016. font-size: 26rpx;
  1017. width: 452rpx;
  1018. padding-top: 24rpx;
  1019. text-align: center;
  1020. margin-left: 56rpx;
  1021. }
  1022. .authorizContbutton {
  1023. width: 422rpx;
  1024. height: 88rpx;
  1025. background: #D53533;
  1026. border-radius: 44rpx;
  1027. line-height: 88rpx;
  1028. text-align: center;
  1029. font-size: 30rpx;
  1030. color: #FFFFFF;
  1031. margin-top: 62rpx;
  1032. margin-left: 71rpx;
  1033. }
  1034. .bottom {
  1035. position: fixed;
  1036. width: 100%;
  1037. padding: 20rpx 24rpx;
  1038. right: 0;
  1039. bottom: 0;
  1040. background: #ffffff;
  1041. font-size: 28rpx;
  1042. display: flex;
  1043. justify-content: flex-end;
  1044. height: 58rpx;
  1045. padding-bottom: constant(safe-area-inset-bottom);
  1046. padding-bottom: env(safe-area-inset-bottom);
  1047. }
  1048. .ping {
  1049. text-align: center;
  1050. color: #FF4F00;
  1051. width: 150rpx;
  1052. height: 56rpx;
  1053. line-height: 56rpx;
  1054. border-radius: 36rpx;
  1055. border: 2rpx solid #FF4F00;
  1056. }
  1057. .kan {
  1058. text-align: center;
  1059. color: #3C3C3C;
  1060. width: 150rpx;
  1061. height: 56rpx;
  1062. line-height: 56rpx;
  1063. border-radius: 36rpx;
  1064. border: 2rpx solid #DDDDDD;
  1065. }
  1066. </style>