orderDetail.vue 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  1. <template>
  2. <view class="order_detail">
  3. <view class="top">
  4. </view>
  5. <view class="head">
  6. <span class="cuIcon-back" @click="back"></span>
  7. <view class="case">
  8. 订单详情
  9. </view>
  10. </view>
  11. <view class="over">
  12. <view class="status_box">
  13. <view class="status">
  14. {{form.status}}
  15. </view>
  16. <span>{{form.flowRecordList[0].content?form.flowRecordList[0].content:''}}</span>
  17. </view>
  18. <!-- 送车到站显示信息开始 -->
  19. <view class="car_data" v-if="form.checkType == 1">
  20. <view class="car_id">
  21. {{form.licenseNo}}
  22. <span>{{form.carType?form.carType:'小型轿车'}}</span>
  23. </view>
  24. <view class="model">
  25. {{form.brandModel}}
  26. </view>
  27. <view class="car_name">
  28. <span>用户姓名:{{form.contactsName}}</span>
  29. <view class="call" @click="callUser">
  30. <image src="/static/order/call.png" mode=""></image>
  31. 联系客户
  32. </view>
  33. </view>
  34. </view>
  35. <!-- 送车到站显示信息结束 -->
  36. <!-- 上门取车显示信息开始 -->
  37. <view class="car_data" v-if="form.checkType == 0">
  38. <view class="car_id user_name">
  39. <span style="display: block;padding: 0px;">用户姓名:{{form.contactsName}}</span>
  40. <span class="call" @click="callUser">
  41. <image src="/static/order/call.png" mode=""></image> 联系客户
  42. </span>
  43. </view>
  44. <view class="car_address">
  45. <view class="address">
  46. 送/取车地址:{{form.carAddress}}
  47. <image src="/static/order/address.png" mode=""
  48. @click="navigation(form.userLongitude,form.userLatitude,form.carAddress)"></image>
  49. </view>
  50. <view class="car_license">
  51. 车牌号:{{form.licenseNo}}
  52. </view>
  53. </view>
  54. </view>
  55. <!-- 上门取车显示信息结束 -->
  56. <!-- 救援显示信息开始 -->
  57. <view class="car_data" v-if="form.checkType > 20">
  58. <view class="name">
  59. <view class="user_name">
  60. 用户姓名:{{form.contactsName}}
  61. </view>
  62. <view class="call" @click="callUser">
  63. <image src="/static/order/call.png" mode=""></image>
  64. 联系客户
  65. </view>
  66. </view>
  67. <view class="address">
  68. <view class="location">
  69. <span style="font-weight: 600;">救援地址:</span>
  70. {{form.carAddress}}
  71. </view>
  72. <view class="go" @click="navigation(form.userLongitude,form.userLatitude,form.carAddress)">
  73. <image src="/static/order/address.png" mode=""></image>
  74. 导航
  75. </view>
  76. </view>
  77. <view class="address" v-if="form.checkType==23" style="margin-top: 20rpx;">
  78. <view class="location">
  79. <span style="font-weight: 600;">送达地址:</span>
  80. {{form.deliveryAddr}}
  81. </view>
  82. <view class="go" @click="navigation(form.deliveryLongitude,form.deliveryLatitude,form.deliveryAddr)">
  83. <image src="/static/order/address.png" mode=""></image>
  84. 导航
  85. </view>
  86. </view>
  87. <view class="car_id">
  88. 车牌号:{{form.licenseNo}}
  89. </view>
  90. </view>
  91. <view class="product">
  92. <view class="fat_product">
  93. <view class="product_img">
  94. <image :src="form.productImage" mode=""></image>
  95. </view>
  96. <view class="product_name">
  97. {{form.productName}}
  98. <span><text>¥</text>{{!rightsId?0:form.price}}</span>
  99. </view>
  100. </view>
  101. <view class="sun_product">
  102. <view class="item" v-for="item in form.childrenOrder" :key="item.orderNo">
  103. <view class="sun_name">
  104. {{item.productName}}
  105. </view>
  106. <view class="sun_price">
  107. <span><text>¥</text>{{item.price}}</span>
  108. <view class="look" @click="lookDetail(item)">
  109. 服务明细
  110. </view>
  111. </view>
  112. </view>
  113. </view>
  114. </view>
  115. <!-- 时间轴区域 -->
  116. <view class="time_line">
  117. <u-time-line>
  118. <u-time-line-item node-top="2" v-for="(item,index) in form.flowRecordList" :key="index">
  119. <template v-slot:content>
  120. <view class="center">
  121. <view class="left_title">
  122. <view :class="index == 0?'title':''">
  123. {{item.content}}
  124. </view>
  125. <span>{{item.time}}</span>
  126. </view>
  127. <view class="button">
  128. <u-button size="mini" shape="square" v-if="index+1 == form.flowRecordList.length"
  129. @click="goLive">实况记录</u-button>
  130. <u-button size="mini" shape="square" v-if="item.content=='商户确认收车'"
  131. @click="goPhoto(checkType == 0 ? 1 : 2)">车辆交接照片</u-button>
  132. <u-button size="mini" shape="square" v-if="checkType== 1 && item.content=='检测完毕,等待用户取车'"
  133. @click="goPhoto(3)">服务照片</u-button>
  134. <u-button size="mini" shape="square" v-if="checkType== 0 && item.content=='检测完成,准备送车'"
  135. @click="goPhoto(3)">服务照片</u-button>
  136. <u-button size="mini" shape="square" v-if="item.content=='正在救援中'" @click="goPhoto(4)">现场照片</u-button>
  137. <u-button size="mini" shape="square" v-if="item.content=='等待用户确认'" @click="goPhoto(3)">服务照片</u-button>
  138. </view>
  139. </view>
  140. </template>
  141. </u-time-line-item>
  142. </u-time-line>
  143. </view>
  144. <!-- 订单信息区域 -->
  145. <view class="order_data">
  146. <view class="order_item">
  147. <view class="item_title">
  148. 车辆信息
  149. </view>
  150. <view class="item_child">
  151. <span>车牌号:</span>
  152. <view class="center">
  153. {{form.licenseNo}}
  154. </view>
  155. </view>
  156. <view class="item_child" v-if="form.checkType<20">
  157. <span>车辆类型:</span>
  158. <view class="center">
  159. {{form.carType?form.carType:'小型轿车'}}
  160. </view>
  161. </view>
  162. <view class="item_child" v-if="form.checkType<20">
  163. <span>品牌型号:</span>
  164. <view class="center">
  165. {{form.brandModel}}
  166. </view>
  167. </view>
  168. </view>
  169. <view class="order_item">
  170. <view class="item_title">
  171. 用户信息
  172. </view>
  173. <view class="item_child">
  174. <span>姓名:</span>
  175. <view class="center">
  176. {{form.contactsName}}
  177. </view>
  178. </view>
  179. <view class="item_child">
  180. <span>联系方式:</span>
  181. <view class="center">
  182. {{form.contactsPhone}}
  183. </view>
  184. </view>
  185. </view>
  186. <view class="order_item">
  187. <view class="item_title">
  188. 商户信息
  189. </view>
  190. <view class="item_child">
  191. <span>商家名称:</span>
  192. <view class="center">
  193. {{form.merchantName}}
  194. </view>
  195. </view>
  196. <view class="item_child">
  197. <span>商家地址:</span>
  198. <view class="center">
  199. {{form.merAddress}}
  200. </view>
  201. </view>
  202. <view class="item_child">
  203. <span>联系方式:</span>
  204. <view class="center">
  205. {{form.merchantPhone}}
  206. </view>
  207. </view>
  208. </view>
  209. <view class="order_item" v-if="this.form.checkType == 1">
  210. <view class="item_title">
  211. 站点信息
  212. </view>
  213. <view class="item_child">
  214. <span>站点名称:</span>
  215. <view class="center">
  216. {{form.inspectionStationName}}
  217. </view>
  218. </view>
  219. <view class="item_child">
  220. <span>站点地址:</span>
  221. <view class="center">
  222. {{form.detailedAddress}}
  223. </view>
  224. </view>
  225. </view>
  226. <view class="order_item">
  227. <view class="item_title">
  228. 订单信息
  229. </view>
  230. <view class="item_child">
  231. <span>订单号:</span>
  232. <view class="center">
  233. {{form.orderNo}}
  234. </view>
  235. </view>
  236. <view class="item_child">
  237. <span>下单时间:</span>
  238. <view class="center">
  239. {{form.orderTime}}
  240. </view>
  241. </view>
  242. <view class="item_child" v-if="form.payTime">
  243. <span>付款时间:</span>
  244. <view class="center">
  245. {{form.payTime}}
  246. </view>
  247. </view>
  248. </view>
  249. <view class="order_item" v-for="item in form.childrenOrder" :key="item.orderNo">
  250. <view class="item_title">
  251. 附订单信息
  252. </view>
  253. <view class="item_child">
  254. <span>订单号:</span>
  255. <view class="center">
  256. {{item.orderNo}}
  257. </view>
  258. </view>
  259. <view class="item_child">
  260. <span>下单时间:</span>
  261. <view class="center">
  262. {{item.date}}
  263. </view>
  264. </view>
  265. <view class="item_child" v-if="item.payTime">
  266. <span>付款时间:</span>
  267. <view class="center">
  268. {{item.payTime}}
  269. </view>
  270. </view>
  271. </view>
  272. </view>
  273. </view>
  274. <view class="btn">
  275. <view class="customer" @click="callService">
  276. 联系客服
  277. </view>
  278. <view class="accept" @click="receive" v-if="form.checkType<20 &&form.statusCode == 2">
  279. 接单
  280. </view>
  281. <view class="accept" @click.stop="receive" v-if="form.checkType>20 && form.flowStatus =='03'"
  282. style="margin-left: 16rpx;">
  283. 接单
  284. </view>
  285. <view class="func" v-if="form.checkType == 1">
  286. <view class="accept" @click="collect" v-if="form.statusCode ==3 && form.flowStatus =='05'">
  287. 确认收车
  288. </view>
  289. <view class="accept" @click="goProject" v-if=" form.statusCode ==4">
  290. 添加收费服务
  291. </view>
  292. <view class="accept" @click="finish" v-if="form.statusCode ==4">
  293. 检测完成
  294. </view>
  295. <view class="accept" @click="takeCar" v-if="form.flowStatus =='12'&& form.statusCode ==5">
  296. 确认取车
  297. </view>
  298. <view class="accept" @click="evaluate" v-if=" form.flowStatus =='16'">
  299. 去评价
  300. </view>
  301. </view>
  302. <view class="func" v-if="form.checkType==0">
  303. <view class="accept" @click="goGetCar" v-if="form.statusCode ==5 && form.flowStatus == 4">
  304. 去取车
  305. </view>
  306. <view class="accept" @click="collect" v-if="form.statusCode ==5 && form.flowStatus == 5">
  307. 确认取车
  308. </view>
  309. <view class="accept" @click="goProject" v-if=" form.statusCode ==4">
  310. 添加收费服务
  311. </view>
  312. <view class="accept" @click="finish" v-if="form.statusCode ==4 && form.flowStatus==7 || form.flowStatus==8">
  313. 检测完成
  314. </view>
  315. <view class="accept" @click.stop="goAlso" v-if="form.statusCode ==3 && form.flowStatus==12">
  316. 去送车
  317. </view>
  318. <view class="accept" @click.stop="delivered" v-if="form.statusCode ==3&& form.flowStatus==13">
  319. 车已送达
  320. </view>
  321. <view class="accept" @click.stop="evaluate" v-if=" form.flowStatus =='16' ">
  322. 去评价
  323. </view>
  324. </view>
  325. <view class="func" v-if="form.checkType>20">
  326. <view class="accept" @click.stop="depart" v-if="form.flowStatus == '04'">
  327. 出发
  328. </view>
  329. <view class="accept" @click.stop="arrive" v-if="form.flowStatus == '05'">
  330. 到达现场
  331. </view>
  332. <view class="accept" @click.stop="help"
  333. v-if="(form.statusCode ==4 && form.flowStatus=='07' || form.flowStatus=='06'|| form.flowStatus=='08')">
  334. 救援完成
  335. </view>
  336. <view class="accept" @click.stop="evaluate" v-if=" form.flowStatus =='12' ">
  337. 去评价
  338. </view>
  339. </view>
  340. </view>
  341. <receive v-if="isSuccess" @cut="refresh" :titleCheckType="titleCheckType" />
  342. <upload :type="uptype" :taskId="taskId" v-if="isUpload" @cut="isUpload = false" @upSuccess="upSuccess" />
  343. <serviceDetail :subOrderId="subOrderId" @cut="isServiceDeatil =false" v-if="isServiceDeatil" />
  344. <evaluate :userId="userId" :taskId="taskId" v-if="iseEvaluate" @cut="cutEvaluate" />
  345. </view>
  346. </template>
  347. <script>
  348. import receive from '../../order/components/receiveOrder.vue'
  349. import upload from '../../order/components/upload.vue'
  350. import evaluate from '../../order/components/evaluate.vue'
  351. import serviceDetail from '../../order/components/serviceDetail.vue'
  352. export default {
  353. components: {
  354. receive,
  355. upload,
  356. serviceDetail,
  357. evaluate
  358. },
  359. data() {
  360. return {
  361. taskId: '',
  362. checkType: '',
  363. form: {},
  364. list: [],
  365. isSuccess: false,
  366. isUpload: false, //上传图片弹窗显隐
  367. uptype: '', //上传图片类型
  368. checkType: '', //上传图片修改状态用
  369. isServiceDeatil: false,
  370. subOrderId: '',
  371. iseEvaluate: false, //评论弹窗显隐
  372. userId: '', //传值给评论弹窗
  373. paramState: null,
  374. titleCheckType: null, //接单提示区分
  375. serveType: '', //服务类型
  376. rightsId: ''
  377. }
  378. },
  379. methods: {
  380. //返回
  381. back() {
  382. // uni.navigateBack({
  383. // delta: 1
  384. // });
  385. uni.switchTab({
  386. url: '/pages/order/index'
  387. })
  388. },
  389. //联系客户
  390. callUser() {
  391. uni.makePhoneCall({
  392. phoneNumber: this.form.contactsPhone,
  393. success: () => {
  394. uni.showToast({
  395. title: '正在拨号',
  396. icon: 'none'
  397. })
  398. },
  399. fail: (err) => {
  400. uni.showToast({
  401. title: '拨打失败: ' + err.errMsg,
  402. icon: 'none'
  403. })
  404. }
  405. })
  406. },
  407. //俩系客服
  408. callService() {
  409. uni.makePhoneCall({
  410. phoneNumber: this.form.custSerPhone,
  411. success: () => {
  412. uni.showToast({
  413. title: '正在拨号',
  414. icon: 'none'
  415. })
  416. },
  417. fail: (err) => {
  418. uni.showToast({
  419. title: '拨打失败: ' + err.errMsg,
  420. icon: 'none'
  421. })
  422. }
  423. })
  424. },
  425. refresh() {
  426. this.isSuccess = false
  427. this.getDeatil()
  428. },
  429. //获取详情
  430. getDeatil() {
  431. this.$http.get("/ts/merchant/details?taskId=" + this.taskId).then(res => {
  432. if (res.data.code == 200) {
  433. this.form = res.data.result
  434. console.log(this.form)
  435. }
  436. })
  437. },
  438. // 查看实况记录
  439. goLive() {
  440. uni.navigateTo({
  441. url: '/pages/order/serviceOrder/live?taskId=' + this.taskId + '&checkType=' + this.form.checkType
  442. })
  443. },
  444. // 查看图片
  445. goPhoto(type) {
  446. console.log(type)
  447. uni.navigateTo({
  448. url: '/pages/order/serviceOrder/photo?taskId=' + this.taskId + '&businessType=' + type
  449. })
  450. },
  451. // 接单
  452. receive() {
  453. this.titleCheckType = this.form.checkType
  454. let data = {
  455. taskId: this.taskId,
  456. checkType: this.checkType,
  457. paramState: '04',
  458. // serveType: '01'
  459. }
  460. this.form.checkType < 20 ? data.serveType = '01' : data.serveType = '02'
  461. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  462. console.log(res)
  463. if (res.data.code == 200) {
  464. this.isSuccess = true
  465. this.getDeatil()
  466. }
  467. })
  468. },
  469. //收车上传照片
  470. collect() {
  471. this.paramState = '07'
  472. this.taskId = this.form.taskId
  473. this.checkType = this.form.checkType
  474. this.serveType = '01'
  475. //0 取车,1送车
  476. if (this.form.checkType == 0) {
  477. this.uptype = 1
  478. } else if (this.form.checkType == 1) {
  479. //客户送车,商户收车
  480. // if (this.form.statusCode == 3) {
  481. this.uptype = 2
  482. // }
  483. }
  484. this.isUpload = true
  485. },
  486. //送车到站————收车上传图片后修改状态
  487. upSuccess() {
  488. let data = {
  489. taskId: this.taskId,
  490. checkType: this.checkType,
  491. paramState: this.paramState, //商户上传图片成功
  492. // serveType: '01'
  493. serveType: this.serveType
  494. }
  495. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  496. if (res.data.code == 200) {
  497. this.isUpload = false
  498. this.getDeatil()
  499. } else {
  500. uni.showToast({
  501. icon: 'none',
  502. title: res.data.message
  503. })
  504. }
  505. })
  506. },
  507. //检测完成上传检测图片
  508. finish() {
  509. this.paramState = '12'
  510. // this.taskId = item.taskId
  511. // this.checkType = item.checkType
  512. //0 取车,1送车
  513. this.uptype = 3
  514. this.isUpload = true
  515. // this.paramState = '12'
  516. this.serveType = '01'
  517. this.getDeatil()
  518. },
  519. //送车到站--确认取车
  520. takeCar(item) {
  521. let data = {
  522. taskId: this.form.taskId,
  523. checkType: this.form.checkType,
  524. paramState: '14', //
  525. serveType: '01'
  526. }
  527. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  528. if (res.data.code == 200) {
  529. this.isUpload = false
  530. let page = {
  531. num: 1,
  532. size: 10
  533. }
  534. this.getDeatil(page)
  535. }
  536. })
  537. },
  538. //跳转至服务项目页面
  539. goProject() {
  540. this.$http.get("/ts/merchant/addPaidServiceCheck?taskId=" + this.form.taskId).then(res => {
  541. console.log(res)
  542. if (res.data.result) {
  543. uni.navigateTo({
  544. url: '/pages/order/serviceOrder/project?checkType=' + this.form.checkType + '&taskId=' + this.form.taskId +
  545. '&orderNo=' + this.form.orderNo + '&productName=' + this.form.productName + '&type=' + 1
  546. })
  547. } else {
  548. uni.showToast({
  549. icon: 'none',
  550. title: '存在未支付服务项'
  551. })
  552. }
  553. })
  554. },
  555. //查看收费服务明细
  556. lookDetail(item) {
  557. this.subOrderId = item.orderNo
  558. this.isServiceDeatil = true
  559. },
  560. //评价弹窗显示
  561. evaluate() {
  562. this.iseEvaluate = true
  563. this.userId = this.form.userId
  564. },
  565. cutEvaluate() {
  566. this.iseEvaluate = false
  567. this.getDeatil()
  568. },
  569. //商户去取车
  570. goGetCar() {
  571. let data = {
  572. taskId: this.form.taskId,
  573. checkType: this.form.checkType,
  574. paramState: '05', //商户接单成功
  575. serveType: '01'
  576. }
  577. let that = this
  578. console.log(this.form)
  579. uni.openLocation({
  580. // longitude: Number(this.form.userLongitude),
  581. // latitude: Number(this.form.userLatitude),
  582. longitude: Number(this.form.userLongitude),
  583. latitude: Number(this.form.userLatitude),
  584. name: this.form.carAddres, // 位置名称
  585. // address: e.F_Address, // 位置地点
  586. success: function(res) {
  587. console.log('打开系统位置地图成功')
  588. that.$http.post("/ts/merchant/update/Serve", data).then(res => {
  589. if (res.data.code == 200) {
  590. // this.isReceive = true
  591. that.getDeatil()
  592. }
  593. })
  594. },
  595. fail: function(error) {
  596. console.log(error)
  597. },
  598. })
  599. },
  600. //导航
  601. navigation(longitude, latitude, name) {
  602. console.log(this.form)
  603. // uni.openLocation({
  604. // longitude: Number(this.form.userLongitude),
  605. // latitude: Number(this.form.userLatitude),
  606. // name: this.form.carAddres, // 位置名称
  607. // // address: e.F_Address, // 位置地点
  608. // success: function(res) {
  609. // console.log('打开系统位置地图成功')
  610. // },
  611. // fail: function(error) {
  612. // console.log(error)
  613. // },
  614. // })
  615. uni.openLocation({
  616. longitude: Number(longitude),
  617. latitude: Number(latitude),
  618. name: name,
  619. // name: this.form.carAddress, // 位置名称
  620. // address: e.F_Address, // 位置地点
  621. success: function(res) {
  622. console.log('打开系统位置地图成功')
  623. },
  624. fail: function(error) {
  625. console.log(error)
  626. },
  627. })
  628. },
  629. goAlso() {
  630. let data = {
  631. taskId: this.form.taskId,
  632. checkType: this.form.checkType,
  633. paramState: '13', //商户点击去送车
  634. serveType: '01'
  635. }
  636. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  637. if (res.data.code == 200) {
  638. let page = {
  639. num: 1,
  640. size: 10
  641. }
  642. this.getDeatil()
  643. }
  644. })
  645. },
  646. //商户点击车已送达
  647. delivered() {
  648. let data = {
  649. taskId: this.form.taskId,
  650. checkType: this.form.checkType,
  651. paramState: '14', //商户点击车已送达
  652. serveType: '01'
  653. }
  654. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  655. if (res.data.code == 200) {
  656. let page = {
  657. num: 1,
  658. size: 10
  659. }
  660. this.getDeatil()
  661. }
  662. })
  663. },
  664. //救援出发
  665. depart() {
  666. let data = {
  667. taskId: this.form.taskId,
  668. checkType: this.form.checkType,
  669. paramState: '05', //商户出发成功
  670. serveType: '02'
  671. }
  672. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  673. if (res.data.code == 200) {
  674. // this.isReceive = true
  675. this.getDeatil()
  676. }
  677. })
  678. },
  679. //救援到达现场
  680. arrive() {
  681. // this.taskId = this.form.taskId
  682. // this.checkType = this.form.checkType
  683. // this.uptype = 4 //道路救援
  684. // this.paramState = '06'
  685. // this.serveType = '02'
  686. // this.isUpload = true
  687. // this.getDeatil()
  688. let params = {
  689. taskId: this.form.taskId,
  690. checkType: this.form.checkType,
  691. uptype: 4, // 道路救援
  692. paramState: '06',
  693. serveType: '02',
  694. jumptype:1
  695. // isUpload: true
  696. }
  697. let queryString = Object.keys(params)
  698. .map(key => `${key}=${encodeURIComponent(params[key])}`)
  699. .join('&');
  700. uni.navigateTo({
  701. url: `/pages/order/arriveUpload?${queryString}`
  702. })
  703. },
  704. help() {
  705. this.taskId = this.form.taskId
  706. this.checkType = this.form.checkType
  707. this.uptype = 3
  708. this.isUpload = true
  709. this.paramState = '11'
  710. this.serveType = '02'
  711. this.getDeatil()
  712. },
  713. },
  714. onLoad(options) {
  715. this.taskId = options.taskId
  716. this.checkType = options.checkType
  717. this.rightsId = options.rightsId
  718. this.getDeatil()
  719. }
  720. }
  721. </script>
  722. <style lang="scss" scoped>
  723. .order_detail {
  724. width: 100vw;
  725. height: 100vh;
  726. background: #F8F8FA;
  727. display: flex;
  728. flex-direction: column;
  729. // overflow-y: auto;
  730. /*#ifdef APP-PLUS*/
  731. .top {
  732. width: 100%;
  733. height: var(--status-bar-height);
  734. background: #FFFFFF;
  735. }
  736. /*#endif*/
  737. .head {
  738. width: 100%;
  739. height: 112rpx;
  740. padding: 20rpx;
  741. display: flex;
  742. align-items: center;
  743. background: #FFFFFF;
  744. position: relative;
  745. .cuIcon-back {
  746. font-size: 40rpx;
  747. margin-right: 40rpx;
  748. }
  749. .case {
  750. position: absolute;
  751. left: 50%;
  752. transform: translateX(-50%);
  753. font-size: 36rpx;
  754. font-weight: 600;
  755. }
  756. }
  757. .over {
  758. padding: 0 24rpx;
  759. overflow-y: auto;
  760. flex: 1;
  761. .status_box {
  762. width: 100%;
  763. font-size: 36rpx;
  764. font-weight: 600;
  765. line-height: 42rpx;
  766. margin: 20rpx 0;
  767. span {
  768. font-size: 24rpx;
  769. color: #999999;
  770. line-height: 28rpx;
  771. }
  772. }
  773. .car_data {
  774. width: 100%;
  775. padding: 20RPX;
  776. background: #FFFFFF;
  777. border-radius: 12rpx;
  778. .car_id {
  779. font-size: 30rpx;
  780. font-weight: 600;
  781. span {
  782. display: inline-block;
  783. // width: 120rpx;
  784. padding: 0 24rpx;
  785. height: 40rpx;
  786. background: #F3F3F3;
  787. border-radius: 8rpx;
  788. font-weight: 400;
  789. font-size: 24rpx;
  790. color: #8D92A2;
  791. text-align: center;
  792. line-height: 40rpx;
  793. margin-left: 20rpx;
  794. }
  795. }
  796. .user_name {
  797. display: flex;
  798. align-items: center;
  799. justify-content: space-between;
  800. span {
  801. width: auto;
  802. display: flex;
  803. align-items: center;
  804. justify-content: center;
  805. font-weight: 600;
  806. font-size: 30rpx;
  807. color: #333333;
  808. background: none;
  809. margin: 0;
  810. }
  811. .call {
  812. background: #F4F9FE;
  813. border-radius: 8rpx;
  814. padding: 6rpx 12rpx;
  815. font-size: 24rpx;
  816. color: #2D88F4;
  817. image {
  818. width: 28rpx;
  819. height: 28rpx;
  820. margin-right: 8rpx;
  821. }
  822. }
  823. }
  824. .model {
  825. font-size: 26rpx;
  826. color: #666666;
  827. margin-top: 12rpx;
  828. }
  829. .car_name {
  830. border-top: 1px solid #eeeeee;
  831. padding-top: 16rpx;
  832. margin-top: 12rpx;
  833. font-size: 26rpx;
  834. font-weight: 600;
  835. color: #333333;
  836. display: flex;
  837. align-items: center;
  838. justify-content: space-between;
  839. .call {
  840. background: #F4F9FE;
  841. border-radius: 8rpx;
  842. padding: 6rpx 12rpx;
  843. display: flex;
  844. align-items: center;
  845. justify-content: center;
  846. image {
  847. width: 28rpx;
  848. height: 28rpx;
  849. margin-right: 8rpx;
  850. }
  851. }
  852. }
  853. .car_address {
  854. .address {
  855. width: 100%;
  856. display: flex;
  857. align-items: center;
  858. justify-content: space-between;
  859. image {
  860. width: 44rpx;
  861. height: 44rpx;
  862. margin-left: 18rpx;
  863. }
  864. }
  865. .car_license {
  866. font-weight: 600;
  867. font-size: 26rpx;
  868. color: #333333;
  869. margin-top: 12rpx;
  870. }
  871. }
  872. .name {
  873. display: flex;
  874. align-items: center;
  875. justify-content: space-between;
  876. border-bottom: 1px solid #eeeeee;
  877. padding-bottom: 14rpx;
  878. .user_name {
  879. font-weight: 600;
  880. font-size: 30rpx;
  881. }
  882. .call {
  883. width: 156rpx;
  884. height: 48rpx;
  885. background: #F4F9FE;
  886. border-radius: 8rpx;
  887. display: flex;
  888. align-items: center;
  889. justify-content: center;
  890. font-size: 24rpx;
  891. color: #2D88F4;
  892. image {
  893. width: 28rpx;
  894. height: 28rpx;
  895. margin-right: 8rpx;
  896. }
  897. }
  898. }
  899. .address {
  900. display: flex;
  901. align-items: start;
  902. justify-content: space-between;
  903. margin-top: 16rpx;
  904. margin-bottom: 12rpx;
  905. .location {
  906. font-size: 26rpx;
  907. }
  908. .go {
  909. display: flex;
  910. flex-direction: column;
  911. align-items: center;
  912. font-size: 18rpx;
  913. color: rgba(45, 136, 244, 0.96);
  914. image {
  915. width: 44rpx;
  916. height: 44rpx;
  917. }
  918. }
  919. }
  920. .car_id {
  921. font-size: 26rpx;
  922. }
  923. }
  924. .product {
  925. width: 100%;
  926. background-color: #fff;
  927. margin-top: 16rpx;
  928. padding: 20rpx 32rpx;
  929. margin-bottom: 16rpx;
  930. .fat_product {
  931. width: 100%;
  932. display: flex;
  933. align-items: center;
  934. .product_img {
  935. width: 132rpx;
  936. height: 132rpx;
  937. border-radius: 12rpx;
  938. overflow: hidden;
  939. margin-right: 16rpx;
  940. image {
  941. width: 100%;
  942. height: 100%;
  943. }
  944. }
  945. .product_name {
  946. height: 132rpx;
  947. font-size: 28rpx;
  948. color: #333333;
  949. display: flex;
  950. flex-direction: column;
  951. justify-content: space-between;
  952. span {
  953. color: #FD4912;
  954. font-weight: 600;
  955. font-size: 28rpx;
  956. text {
  957. font-size: 22rpx;
  958. }
  959. }
  960. }
  961. }
  962. .sun_product {
  963. width: 100%;
  964. // height: 126rpx;
  965. border-radius: 12rpx;
  966. margin-top: 20rpx;
  967. .item {
  968. margin-bottom: 20rpx;
  969. padding: 12rpx 16rpx;
  970. background: linear-gradient(180deg, #EEF7FF 0%, #F6FBFF 100%);
  971. }
  972. .sun_name {
  973. font-weight: 600;
  974. font-size: 26rpx;
  975. }
  976. .sun_price {
  977. display: flex;
  978. align-items: center;
  979. justify-content: space-between;
  980. span {
  981. font-weight: 600;
  982. font-size: 22rpx;
  983. color: #FD4912;
  984. tetx {
  985. font-size: 18rpx;
  986. }
  987. }
  988. .look {
  989. width: 144rpx;
  990. height: 48rpx;
  991. background: #FFFFFF;
  992. border-radius: 61rpx;
  993. border: 1px solid #2D88F4;
  994. font-size: 24rpx;
  995. color: #2D88F4;
  996. text-align: center;
  997. line-height: 48rpx;
  998. }
  999. }
  1000. }
  1001. }
  1002. .time_line {
  1003. background: #FFFFFF;
  1004. border-radius: 16px;
  1005. padding: 16rpx 32rpx;
  1006. .center {
  1007. display: flex;
  1008. align-items: center;
  1009. justify-content: space-between;
  1010. .left_title {
  1011. font-weight: 600;
  1012. .title {
  1013. font-size: 28rpx;
  1014. color: #2D88F4;
  1015. }
  1016. span {
  1017. font-size: 24rpx;
  1018. color: #666666;
  1019. }
  1020. }
  1021. }
  1022. }
  1023. .order_data {
  1024. background-color: #FFFFFF;
  1025. padding: 16rpx 32rpx;
  1026. border-radius: 16rpx;
  1027. margin-top: 16rpx;
  1028. .order_item {
  1029. border-bottom: 1px solid #EEEEEE;
  1030. padding-bottom: 12rpx;
  1031. margin-bottom: 16rpx;
  1032. .item_title {
  1033. font-weight: 600;
  1034. font-size: 26rpx;
  1035. color: #333333;
  1036. }
  1037. .item_child {
  1038. margin-top: 12rpx;
  1039. margin-right: 16rpx;
  1040. display: flex;
  1041. align-items: center;
  1042. span {
  1043. width: 130rpx;
  1044. font-size: 26rpx;
  1045. color: #666666;
  1046. }
  1047. .center {
  1048. flex: 1;
  1049. }
  1050. }
  1051. }
  1052. }
  1053. }
  1054. .btn {
  1055. width: 100%;
  1056. height: 109rpx;
  1057. background: #FFFFFF;
  1058. display: flex;
  1059. align-items: center;
  1060. justify-content: end;
  1061. margin-top: 10rpx;
  1062. font-size: 28rpx;
  1063. padding-right: 24rpx;
  1064. .customer {
  1065. border-radius: 49rpx;
  1066. border: 1px solid #2D88F4;
  1067. padding: 14rpx 32rpx;
  1068. display: flex;
  1069. align-items: center;
  1070. justify-content: center;
  1071. color: #2D88F4;
  1072. }
  1073. .accept {
  1074. display: flex;
  1075. align-items: center;
  1076. justify-content: center;
  1077. padding: 14rpx 32rpx;
  1078. background: linear-gradient(90deg, #77B6FF 0%, #449AFF 100%);
  1079. border-radius: 49rpx;
  1080. margin: 0 24rpx;
  1081. color: #FFFFFF;
  1082. }
  1083. .func {
  1084. // flex: 1;
  1085. display: flex;
  1086. align-items: center;
  1087. justify-content: end;
  1088. .accept {
  1089. display: flex;
  1090. align-items: center;
  1091. justify-content: center;
  1092. padding: 14rpx 22rpx;
  1093. background: linear-gradient(90deg, #77B6FF 0%, #449AFF 100%);
  1094. border-radius: 49rpx;
  1095. // margin: 0 24rpx;
  1096. color: #FFFFFF;
  1097. }
  1098. }
  1099. }
  1100. ::v-deep .u-dot {
  1101. background-color: #2D88F4;
  1102. }
  1103. }
  1104. </style>