index.vue 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550
  1. <template>
  2. <view class="order">
  3. <view class="fix">
  4. <view class="top"></view>
  5. <view class="head">
  6. <view class="case">
  7. <view class="select_type">
  8. <div class="tab-item" :class="tabIndex == 0?'active':''"
  9. @click="getList(servicePage),tabIndex=0;productName='';productStatus=0;merchantUserInfo = '';orderList = [];buyStartTime = '';buyEndTime = ''">
  10. 普通订单</div>
  11. <div class="tab-item" :class="tabIndex == 1?'active':''"
  12. @click="getserviceList(servicePage),tabIndex=1;productName='';productStatus=0;merchantUserInfo = '';serviceList = [];buyStartTime = '';buyEndTime = ''">
  13. 服务订单</div>
  14. </view>
  15. </view>
  16. </view>
  17. <view class="manage">
  18. <view class="search">
  19. <image src="/static/index/search.png" mode=""></image>
  20. <u-input type="text" v-model="merchantUserInfo" placeholder="请输入关键词" />
  21. <span @click="searchList">搜索</span>
  22. </view>
  23. <view class="action " @click="selectTime">
  24. <view class="cuIcon-filter"></view>
  25. </view>
  26. </view>
  27. <view class="select" v-if="tabIndex == 0">
  28. <view class="type" :class="currentIndex == index?'active':''" v-for="(item,index) in typeList" :key="index"
  29. @click="selectType(item,index)">
  30. {{item.name}}
  31. </view>
  32. </view>
  33. <view class="select" v-if="tabIndex == 1">
  34. <view class="type" :class="currentIndex == index?'active':''" v-for="(item,index) in statusList" :key="index"
  35. @click="selectSeiviceType(item,index)">
  36. {{item.name}}
  37. </view>
  38. </view>
  39. </view>
  40. <mescroll-uni class="list" :fixed="false" ref="mescrollRef" @up="getList" @init="mescrollInit" :use="false"
  41. v-if="tabIndex ==0">
  42. <view class="order_item" v-for="(item,index) in orderList" :key="item.id" @click="geDetail(item)">
  43. <view class="order_id">
  44. <view class="id_left">
  45. 订单编号:{{item.orderId}}
  46. </view>
  47. <view class="id_right" v-if="item.stateCode ==0" style="color: #ff9900;">
  48. 待使用
  49. </view>
  50. <view class="id_right" v-if="item.stateCode ==1">
  51. 已使用
  52. </view>
  53. <!-- <view class="id_right" v-if="item.stateCode == 2">
  54. 待评价
  55. </view>
  56. <view class="id_right" v-if="item.stateCode ==3">
  57. 已过期
  58. </view> -->
  59. <view class="id_right" v-if="item.stateCode == 5">
  60. 待付款
  61. </view>
  62. <view class="id_right" v-if="item.stateCode == 6">
  63. 支付中
  64. </view>
  65. <view class="id_right" v-if="item.stateCode == 7">
  66. 支付失败
  67. </view>
  68. <view class="id_right" v-if="item.stateCode == 8">
  69. 已撤销
  70. </view>
  71. <view class="id_right" v-if="item.stateCode == 9">
  72. 已退款
  73. </view>
  74. <view class="id_right" v-if="item.stateCode == 10">
  75. 订单关闭
  76. </view>
  77. <view class="id_right" v-if="item.stateCode == 11">
  78. 已取消
  79. </view>
  80. <!-- <view class="id_right" v-if="item.stateCode == 4 && item.refundType !=1" style="color:#449AFF ;">
  81. 退款/售后
  82. </view> -->
  83. <view class="id_right" v-if="item.refundType ==0 && item.stateCode == 4">
  84. 售后申请中
  85. </view>
  86. <view class="id_right" v-if="item.refundType ==1 && item.stateCode == 4">
  87. 退款成功
  88. </view>
  89. <view class="id_right" v-if="item.refundType ==2 && item.stateCode == 4">
  90. 退款中
  91. </view>
  92. <view class="id_right" v-if="item.refundType ==3 && item.stateCode == 4">
  93. 退款失败
  94. </view>
  95. <view class="id_right" v-if="item.refundType ==4 && item.stateCode == 4">
  96. 拒绝退款
  97. </view>
  98. <view class="id_right" v-if="item.refundType ==99 && item.stateCode == 4">
  99. 挂起
  100. </view>
  101. </view>
  102. <!-- <view class="order_id" v-if="item.stateCode == 4 && item.refundType ">
  103. </view> -->
  104. <!-- 普通订单 -->
  105. <view class="order_product" v-if="item.categoryId != 1945013773786701826">
  106. <view class="img" >
  107. <image :src="item.productImage" mode=""></image>
  108. </view>
  109. <view class="name">
  110. {{item.productName}}
  111. <span class="exceed" v-if="item.orderType == 4"
  112. style="color: #999999;">适用范围:{{item.remark==1?'本店可用':item.remark==2?'部分分类商品可用':'部分分类商品不可用'}}</span>
  113. <span v-if="item.orderType == 4" style="color: #999999;"> 使用期限:{{item.startTime}} --{{item.endTime}}</span>
  114. <span v-if="item.orderType != 4">¥{{item.orderPrice}}</span>
  115. </view>
  116. <view class="ticket" v-if="item.isUseRights">
  117. <image src="/static/product/ticket.png" mode=""></image>
  118. </view>
  119. </view>
  120. <!-- 钣金喷漆订单 -->
  121. <view class="spec" v-if="item.categoryId == 1945013773786701826">
  122. <view class="" v-if="item.orderLinkCategorySpecItems && item.orderLinkCategorySpecItems.length>0">
  123. <view class="order_product"
  124. v-for="(specitem, specIndex) in item.orderLinkCategorySpecItems.slice(0, item.isShow ? item.orderLinkCategorySpecItems.length : 2)"
  125. :key="specIndex">
  126. <view class="img">
  127. <image :src="item.productImage" mode=""></image>
  128. </view>
  129. <view class="spec_item">
  130. <view class="top">
  131. {{item.productName}}
  132. </view>
  133. <view class="content">
  134. <view class="left">
  135. <view class="cventer">
  136. {{specitem.partName}} {{specitem.positionName}}
  137. </view>
  138. <view class="foot">
  139. {{specitem.craftName}}
  140. </view>
  141. </view>
  142. <view class="right">
  143. <span style="font-size: 22rpx;color: #333333;">¥{{specitem.soldPrice}}</span>
  144. <span
  145. style="text-decoration: line-through;font-size: 18rpx;color: #999999;">¥{{specitem.price}}</span>
  146. </view>
  147. </view>
  148. </view>
  149. </view>
  150. </view>
  151. <view class="is_show" @click.stop="unfold(index)"
  152. v-if="item.orderLinkCategorySpecItems&&item.orderLinkCategorySpecItems.length > 2">
  153. {{item.isShow?'收起查看':'展开查看'}}
  154. <image src="/static/order/hidden.png" mode="" v-if="item.isShow"></image>
  155. <image src="/static/order/show.png" mode="" v-else></image>
  156. </view>
  157. </view>
  158. <view class="time">
  159. <view class="time_left">
  160. {{item.orderStateTimeName}}:{{item.orderStateTime}}
  161. </view>
  162. <view class="time_right" @click.stop="goRecord(item)" v-if="item.auditType =='0'">
  163. 去处理
  164. </view>
  165. <view class="all_price" v-if="item.categoryId == 1945013773786701826">
  166. <span style="font-size: 22rpx;color: #FD4912;margin-right: 10rpx;">¥已优惠{{item.couponPrice}}</span>
  167. <span style="font-size: 26rpx;color: #FD4912;"><text
  168. style="font-size: 22rpx;">¥</text>{{item.orderPrice}}</span>
  169. </view>
  170. </view>
  171. </view>
  172. </mescroll-uni>
  173. <!-- 服务订单 -->
  174. <mescroll-uni class="list" :fixed="false" ref="mescrollRef" @up="getserviceList" @init="mescrollInit" :use="false"
  175. v-if="tabIndex == 1">
  176. <view class="service_order" v-for="item in serviceList" :key="item.orderNo" @click="goDetail(item)">
  177. <view class="item_title">
  178. <span>订单编号:{{item.orderNo}}</span>
  179. <span>{{item.status}}</span>
  180. </view>
  181. <view class="car_id">
  182. {{item.licenseNo}}
  183. <!-- <span>{{item.checkType==0?'上门取车':'送车到站'}}</span> -->
  184. <span v-if="item.checkType==0">上门取车</span>
  185. <span v-if="item.checkType==1">送车到站</span>
  186. <span v-if="item.checkType==21">搭电救援</span>
  187. <span v-if="item.checkType==22">换胎救援</span>
  188. <span v-if="item.checkType==23">拖车救援</span>
  189. </view>
  190. <view class="name">
  191. {{item.productName}}
  192. <span @click.stop="goGetCar(item)" v-if="item.checkType == 0">取车地点</span>
  193. </view>
  194. <view class="time">
  195. <span>{{item.date}}</span>
  196. <span> <text>¥</text> {{item.rightsId?0:item.price}}</span>
  197. </view>
  198. <view class="btn_box">
  199. <view class="btn" @click.stop="goLive(item)">
  200. 实况记录
  201. </view>
  202. <view class="btn" style="margin-left: 16rpx;" @click.stop="callService(item)">
  203. 联系客服
  204. </view>
  205. <view class="btn border" @click.stop="callUser(item)">
  206. 联系客户
  207. </view>
  208. <!-- 03显示救援接单 -->
  209. <view class="btn join" @click.stop="receive(item)" v-if="item.checkType<20 && item.statusCode ==2"
  210. style="margin-left: 16rpx;">
  211. 接单
  212. </view>
  213. <view class="btn join" @click.stop="receive(item)" v-if="item.checkType>20 && item.flowStatus =='03'"
  214. style="margin-left: 16rpx;">
  215. 接单
  216. </view>
  217. <!-- 送车到站按钮区域开始item.checkType==1 -->
  218. <view class="" v-if="item.checkType==1" style="flex:1;display: flex;justify-content: space-around;">
  219. <view class="btn join" @click.stop="collect(item)" v-if="item.statusCode ==3 && item.flowStatus =='05'">
  220. 确认收车
  221. </view>
  222. <view class="btn join" @click.stop="finish(item)" v-if="item.statusCode ==4">
  223. 检测完成
  224. </view>
  225. <view class="btn join" @click.stop="takeCar(item)" v-if="item.statusCode ==5 && item.flowStatus =='12'">
  226. 确认取车
  227. </view>
  228. <view class="btn join" @click.stop="evaluate(item)" v-if="item.flowStatus =='16' ">
  229. 去评价
  230. </view>
  231. </view>
  232. <!-- 送车到站按钮区域结束
  233. 上门取车按钮区域开始item.checkType==0 -->
  234. <view class="" v-if="item.checkType == 0" style="flex:1;display: flex;justify-content: space-around;">
  235. <view class="btn join" @click.stop="goGetCar(item)" v-if="item.statusCode ==5 && item.flowStatus == 4">
  236. 去取车
  237. </view>
  238. <view class="btn join" @click.stop="collect(item)" v-if="item.statusCode ==5 && item.flowStatus == 5">
  239. 确认取车
  240. </view>
  241. <view class="btn join" @click.stop="finish(item)"
  242. v-if="item.statusCode ==4 && item.flowStatus==7 || item.flowStatus==8">
  243. 检测完成
  244. </view>
  245. <view class="btn join" @click.stop="goAlso(item)" v-if="item.statusCode ==3 && item.flowStatus==12">
  246. 去送车
  247. </view>
  248. <view class="btn join" @click.stop="delivered(item)" v-if="item.statusCode ==3&& item.flowStatus==13">
  249. 车已送达
  250. </view>
  251. <view class="btn join" @click.stop="evaluate(item)" v-if=" item.flowStatus =='16' ">
  252. 去评价
  253. </view>
  254. </view>
  255. <!-- 上门取车按钮区域结束 -->
  256. <!-- 救援相关按钮 -->
  257. <view class="" v-if="item.checkType >20 " style="flex:1;display: flex;justify-content: space-around;">
  258. <!--flowStatus == 04 显示-->
  259. <view class="btn join" @click.stop="depart(item)" v-if="item.flowStatus == '04'">
  260. 出发
  261. </view>
  262. <view class="btn join" @click.stop="arrive(item)" v-if="item.flowStatus == '05'">
  263. 到达现场
  264. </view>
  265. <view class="btn join" @click.stop="help(item)"
  266. v-if="item.statusCode ==4 && item.flowStatus=='07' || item.flowStatus=='06'|| item.flowStatus=='08'">
  267. 救援完成
  268. </view>
  269. <view class="btn join" @click.stop="evaluate(item)" v-if=" item.flowStatus =='12' ">
  270. 去评价
  271. </view>
  272. </view>
  273. </view>
  274. <!-- 年审 -->
  275. <view class="add_service" @click.stop="addService(item)" v-if="item.checkType<20 &&item.statusCode==4 ">
  276. <span>添加收费服务</span>
  277. </view>
  278. <!-- 救援 -->
  279. <view class="add_service" @click.stop="addService(item)"
  280. v-if="item.checkType>20&&(item.flowStatus== '06'||item.flowStatus== '07'||item.flowStatus== '08') ">
  281. <span>添加收费服务</span>
  282. </view>
  283. <view class="child_order">
  284. <view class="row" v-for="row in item.children" :key="row.orderNo">
  285. <view class="row_title">
  286. <span>订单编号:{{row.orderNo}}</span>
  287. <span class="row_status">{{row.status}}</span>
  288. </view>
  289. <view class="row_name">
  290. {{row.productName}}
  291. </view>
  292. <view class="row_price">
  293. <span><text>¥</text>{{row.price}}</span>
  294. <view class="row_detail" @click.stop="lookDetail(row)">
  295. 服务明细
  296. </view>
  297. </view>
  298. <view class="row_time">
  299. {{row.date}}
  300. </view>
  301. <view class="row_btn" @click.stop="editProject(row)"
  302. v-if="(row.statusCode == '0'|| row.statusCode == '7')&&item.count==0 ">
  303. <span>修改收费服务</span>
  304. </view>
  305. </view>
  306. </view>
  307. </view>
  308. </mescroll-uni>
  309. <rangTime ref="rangTime" :mode="mode" :isYear="true" @onSubmit="onEndTimeChange" @cut="cutPopup" />
  310. <receive @cut="isReceive =false" v-if="isReceive" :titleCheckType="titleCheckType" />
  311. <serviceDetail :subOrderId="subOrderId" @cut="cutsubOrderId" v-if="isServiceDeatil" />
  312. <upload :type="uptype" :taskId="taskId" v-if="isUpload" @cut="isUpload = false" @upSuccess="upSuccess" />
  313. <evaluate :userId="userId" :taskId="taskId" v-if="iseEvaluate" @cut="cutEvaluate" />
  314. </view>
  315. </template>
  316. <script>
  317. import receive from '../order/components/receiveOrder.vue'
  318. import upload from '../order/components/upload.vue'
  319. import evaluate from '../order/components/evaluate.vue'
  320. import serviceDetail from '../order/components/serviceDetail.vue'
  321. import rangTime from '../../components/dengrq-datetime-picker/dateSelector/index.vue'
  322. export default {
  323. components: {
  324. rangTime,
  325. receive,
  326. serviceDetail,
  327. upload,
  328. evaluate
  329. },
  330. data() {
  331. return {
  332. search: '',
  333. mode: 1,
  334. currentIndex: 0,
  335. merchantId: '',
  336. buyStartTime: '',
  337. buyEndTime: '',
  338. typeList: [{
  339. type: '',
  340. name: '全部'
  341. },
  342. {
  343. type: 5,
  344. name: '待付款'
  345. },
  346. {
  347. type: 0,
  348. name: '待使用'
  349. },
  350. {
  351. type: 1,
  352. name: '已使用'
  353. },
  354. {
  355. type: 4,
  356. name: '售后'
  357. }
  358. ],
  359. statusList: [{
  360. type: '',
  361. name: '全部'
  362. },
  363. {
  364. type: 1,
  365. name: '待接单'
  366. },
  367. {
  368. type: 2,
  369. name: '服务中'
  370. },
  371. {
  372. type: 3,
  373. name: '已完成'
  374. },
  375. {
  376. type: 4,
  377. name: '售后'
  378. }
  379. ],
  380. ststusCode: '', //审车策划状态
  381. orderList: [],
  382. state: '',
  383. merchantUserInfo: '',
  384. upOption: {
  385. page: {
  386. num: 0,
  387. size: 10 // 每页数据的数量,默认10
  388. },
  389. noMoreSize: 5, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  390. empty: {
  391. tip: '暂无相关数据'
  392. }
  393. },
  394. tabIndex: 0,
  395. serviceList: [],
  396. isReceive: false, //接单成功弹窗
  397. isServiceDeatil: false, //服务明细弹窗
  398. isUpload: false, //上传图片弹窗显隐
  399. uptype: '', //上传图片类型
  400. taskId: '', //上传图片传值
  401. checkType: '', //上传图片修改状态用
  402. subOrderId: '', //服务明细传递数据
  403. paramState: '', //上传完图片修改状态
  404. serveType: '', //服务类型
  405. iseEvaluate: false, //评价弹窗显隐
  406. userId: '', //评论用户id
  407. servicePage: {
  408. num: 1,
  409. size: 10
  410. },
  411. titleCheckType: null, //接单提示区分
  412. }
  413. },
  414. methods: {
  415. //展开/收起查看钣金喷漆子选项
  416. unfold(index) {
  417. this.orderList[index].isShow = !this.orderList[index].isShow;
  418. this.$forceUpdate();
  419. },
  420. //联系客户
  421. callUser(item) {
  422. uni.makePhoneCall({
  423. phoneNumber: item.contactsPhone,
  424. success: () => {
  425. uni.showToast({
  426. title: '正在拨号',
  427. icon: 'none'
  428. })
  429. },
  430. fail: (err) => {
  431. uni.showToast({
  432. title: '拨打失败: ' + err.errMsg,
  433. icon: 'none'
  434. })
  435. }
  436. })
  437. },
  438. //俩系客服
  439. callService(item) {
  440. uni.makePhoneCall({
  441. phoneNumber: item.custSerPhone,
  442. success: () => {
  443. uni.showToast({
  444. title: '正在拨号',
  445. icon: 'none'
  446. })
  447. },
  448. fail: (err) => {
  449. uni.showToast({
  450. title: '拨打失败: ' + err.errMsg,
  451. icon: 'none'
  452. })
  453. }
  454. })
  455. },
  456. //跳转实况记录
  457. goLive(item) {
  458. uni.navigateTo({
  459. url: '/pages/order/serviceOrder/live?taskId=' + item.taskId + '&checkType=' + item.checkType
  460. })
  461. },
  462. selectTime() {
  463. this.$refs.rangTime.open()
  464. uni.hideTabBar()
  465. },
  466. onEndTimeChange(val) {
  467. this.buyStartTime = val.startDate
  468. this.buyEndTime = val.endDate
  469. if (this.tabIndex == 0) {
  470. this.orderList = []
  471. let page = {
  472. num: 1,
  473. size: 10
  474. }
  475. this.getList(page)
  476. } else {
  477. this.serviceList = []
  478. let page = {
  479. num: 1,
  480. size: 10
  481. }
  482. this.getserviceList(page)
  483. }
  484. },
  485. cutPopup() {
  486. this.isYear = false
  487. uni.showTabBar()
  488. },
  489. mescrollInit(mescroll) {
  490. this.mescroll = mescroll;
  491. },
  492. InputBlur(e) {
  493. this.search = e.detail.value
  494. },
  495. //普通订单
  496. selectType(item, index) {
  497. this.currentIndex = index
  498. this.state = item.type
  499. this.orderList = []
  500. // this.mescroll.resetUpScroll();
  501. let page = {
  502. num: 1,
  503. size: 10
  504. }
  505. this.getList(page)
  506. },
  507. //服务订单
  508. selectSeiviceType(item, index) {
  509. this.currentIndex = index
  510. this.statusCode = item.type
  511. this.serviceList = []
  512. let page = {
  513. num: 1,
  514. size: 10
  515. }
  516. this.getserviceList(page)
  517. // this.mescroll.resetUpScroll();
  518. },
  519. searchList() {
  520. if (this.tabIndex == 0) {
  521. let page = {
  522. num: 1,
  523. size: 10
  524. }
  525. this.orderList = []
  526. this.getList(page)
  527. } else {
  528. this.serviceList = []
  529. let page = {
  530. num: 1,
  531. size: 10
  532. }
  533. this.getserviceList(page)
  534. }
  535. },
  536. //跳转至订单详情页
  537. goRecord(item) {
  538. console.log(item)
  539. uni.navigateTo({
  540. url: '/pages/order/record?orderId=' + item.orderId
  541. })
  542. },
  543. //跳转至服务订单详情页
  544. goDetail(item) {
  545. uni.navigateTo({
  546. url: '/pages/order/serviceOrder/orderDetail?taskId=' + item.taskId + '&checkType=' + item.checkType +
  547. '&rightsId=' + item.rightsId
  548. })
  549. },
  550. getList(page) {
  551. let data = {
  552. merchantId: this.merchantId,
  553. pageSize: page.size,
  554. pageNo: page.num,
  555. state: this.state,
  556. merchantUserInfo: this.merchantUserInfo,
  557. buyStartTime: this.buyStartTime,
  558. buyEndTime: this.buyEndTime
  559. }
  560. this.$http.post("/app/order/locaOrder/list", data).then(res => {
  561. this.orderList = this.orderList.concat(res.data.result.records)
  562. // 展开/收起
  563. this.orderList.forEach(item => {
  564. item.isShow = false
  565. })
  566. console.log(this.orderList)
  567. this.mescroll.endSuccess(res.data.result.records.length, res.data.result.total);
  568. uni.showTabBar()
  569. }).catch(() => {
  570. this.mescroll.endErr()
  571. })
  572. },
  573. geDetail(item) {
  574. uni.navigateTo({
  575. url: '/pages/order/details?orderId=' + item.orderId
  576. })
  577. },
  578. //获取服务订单列表
  579. getserviceList(page) {
  580. let data = {
  581. merchantId: this.merchantId,
  582. pageSize: page.size,
  583. pageNo: page.num,
  584. status: this.statusCode,
  585. searchContent: this.merchantUserInfo,
  586. buyStartTime: this.buyStartTime,
  587. buyEndTime: this.buyEndTime
  588. }
  589. this.$http.post("/ts/merchant/serviceOrder", data).then(res => {
  590. this.serviceList = this.serviceList.concat(res.data.result.records)
  591. this.mescroll.endSuccess(res.data.result.records.length, res.data.result.total);
  592. })
  593. .catch(() => {
  594. this.mescroll.endErr()
  595. })
  596. },
  597. // 接单
  598. receive(item) {
  599. console.log(item)
  600. this.titleCheckType = item.checkType
  601. let data = {
  602. taskId: item.taskId,
  603. checkType: item.checkType,
  604. paramState: '04', //商户接单成功
  605. // serveType: '01'//救援02
  606. }
  607. item.checkType < 20 ? data.serveType = '01' : data.serveType = '02'
  608. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  609. if (res.data.code == 200) {
  610. this.isReceive = true
  611. this.serviceList = []
  612. let page = {
  613. num: 1,
  614. size: 10
  615. }
  616. this.getserviceList(page)
  617. }
  618. })
  619. },
  620. //收车上传照片
  621. collect(item) {
  622. console.log(item)
  623. this.taskId = item.taskId
  624. this.checkType = item.checkType
  625. //0 取车,1送车
  626. if (item.checkType == 0) {
  627. //收车
  628. // if (item.statusCode == 5) {
  629. this.uptype = 1
  630. // }
  631. // else if (item.statusCode == 4) {
  632. // this.uptype = 3
  633. // }
  634. } else if (item.checkType == 1) {
  635. //客户送车,商户收车
  636. // if (item.statusCode == 3) {
  637. this.uptype = 2
  638. // }
  639. /* else {
  640. this.uptype = 3
  641. } */
  642. }
  643. this.paramState = '07'
  644. this.serveType = '01'
  645. this.isUpload = true
  646. // this.upSuccess('07','01')
  647. },
  648. //送车到站————检测完成
  649. upSuccess() {
  650. let data = {
  651. taskId: this.taskId,
  652. checkType: this.checkType,
  653. paramState: this.paramState, //商户上传图片成功
  654. serveType: this.serveType
  655. }
  656. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  657. if (res.data.code == 200) {
  658. this.isUpload = false
  659. this.serviceList = []
  660. let page = {
  661. num: 1,
  662. size: 10
  663. }
  664. this.getserviceList(page)
  665. } else {
  666. this.isUpload = false
  667. this.serviceList = []
  668. let page = {
  669. num: 1,
  670. size: 10
  671. }
  672. this.getserviceList(page)
  673. uni.showToast({
  674. icon: 'none',
  675. title: res.data.message
  676. })
  677. }
  678. })
  679. },
  680. //检测完成上传检测图片
  681. finish(item) {
  682. console.log(item)
  683. this.taskId = item.taskId
  684. this.checkType = item.checkType
  685. this.uptype = 3
  686. //0 取车,1送车
  687. // if (item.checkType == 0) {
  688. // // if (item.statusCode == 5) {
  689. // this.uptype = 1
  690. // // }
  691. // } else if (item.checkType == 1) {
  692. // //客户送车,商户收车
  693. // if (item.statusCode == 4) {
  694. // this.uptype = 3
  695. // }
  696. // }
  697. this.isUpload = true
  698. this.paramState = '12'
  699. this.serveType = '01'
  700. this.serviceList = []
  701. let page = {
  702. num: 1,
  703. size: 10
  704. }
  705. this.getserviceList(page)
  706. },
  707. //送车到站--确认取车
  708. takeCar(item) {
  709. console.log(item)
  710. let data = {
  711. taskId: item.taskId,
  712. checkType: item.checkType,
  713. paramState: '14', //
  714. serveType: '01'
  715. }
  716. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  717. if (res.data.code == 200) {
  718. this.isUpload = false
  719. this.serviceList = []
  720. let page = {
  721. num: 1,
  722. size: 10
  723. }
  724. this.getserviceList(page)
  725. }
  726. })
  727. },
  728. //评价弹窗显示
  729. evaluate(item) {
  730. console.log(item)
  731. this.iseEvaluate = true
  732. this.taskId = item.taskId
  733. this.userId = item.userId
  734. uni.hideTabBar()
  735. },
  736. //评价弹窗隐藏
  737. cutEvaluate() {
  738. this.iseEvaluate = false
  739. uni.showTabBar()
  740. this.serviceList = []
  741. let page = {
  742. num: 1,
  743. size: 10
  744. }
  745. this.getserviceList(page)
  746. },
  747. //查看收费服务明细
  748. lookDetail(item) {
  749. this.subOrderId = item.orderNo
  750. this.isServiceDeatil = true
  751. uni.hideTabBar()
  752. },
  753. //修改服务明细
  754. editProject(row) {
  755. console.log(row)
  756. uni.navigateTo({
  757. url: '/pages/order/serviceOrder/project?orderNo=' + row.orderNo + '&checkType=' + row.checkType +
  758. '&taskId=' + row.taskId + '&productName=' + row.productName +
  759. '&type=' + 0
  760. })
  761. },
  762. cutsubOrderId() {
  763. this.isServiceDeatil = false
  764. uni.showTabBar()
  765. },
  766. //商户去取车
  767. goGetCar(item) {
  768. // 清除之前的定时器,实现防抖
  769. if (this.getCarDebounceTimer) {
  770. clearTimeout(this.getCarDebounceTimer);
  771. }
  772. // 2000ms后执行真正的逻辑
  773. this.getCarDebounceTimer = setTimeout(() => {
  774. console.log(item);
  775. let data = {
  776. taskId: item.taskId,
  777. checkType: item.checkType,
  778. paramState: '05', //商户接单成功
  779. serveType: '01'
  780. };
  781. let that = this;
  782. this.serviceList = [];
  783. let page = {
  784. num: 1,
  785. size: 10
  786. };
  787. this.getserviceList(page);
  788. uni.openLocation({
  789. longitude: Number(item.userLongitude),
  790. latitude: Number(item.userLatitude),
  791. name: item.carAddres, // 位置名称(注意:原代码可能笔误,应该是carAddress?)
  792. // address: e.F_Address, // 位置地点
  793. success: function(res) {
  794. console.log('打开系统位置地图成功');
  795. that.$http.post("/ts/merchant/update/Serve", data).then(res => {
  796. if (res.data.code == 200) {
  797. // this.isReceive = true
  798. }
  799. });
  800. },
  801. fail: function(error) {
  802. console.log(error);
  803. },
  804. });
  805. // 执行完成后清空定时器(可选,防止内存泄漏)
  806. this.getCarDebounceTimer = null;
  807. }, 2000); // 防抖间隔2000ms
  808. },
  809. // goGetCar(item) {
  810. // console.log(item)
  811. // let data = {
  812. // taskId: item.taskId,
  813. // checkType: item.checkType,
  814. // paramState: '05', //商户接单成功
  815. // serveType: '01'
  816. // }
  817. // let that = this
  818. // // uni.navigateTo({
  819. // // url: (window.location.href = `https://uri.amap.com/navigation?to=${item.userLongitude},${item.userLatitude},${item.carAddress}&mode=car&policy=1&src=https://gawl.gazhcs.com/wap/index.html&callnative=0`)
  820. // // })
  821. // this.serviceList = []
  822. // let page = {
  823. // num: 1,
  824. // size: 10
  825. // }
  826. // this.getserviceList(page)
  827. // uni.openLocation({
  828. // longitude: Number(item.userLongitude),
  829. // latitude: Number(item.userLatitude),
  830. // name: item.carAddres, // 位置名称
  831. // // address: e.F_Address, // 位置地点
  832. // success: function(res) {
  833. // console.log('打开系统位置地图成功')
  834. // that.$http.post("/ts/merchant/update/Serve", data).then(res => {
  835. // if (res.data.code == 200) {
  836. // // this.isReceive = true
  837. // }
  838. // })
  839. // },
  840. // fail: function(error) {
  841. // console.log(error)
  842. // },
  843. // })
  844. // },
  845. //救援出发
  846. depart(item) {
  847. console.log(item)
  848. let data = {
  849. taskId: item.taskId,
  850. checkType: item.checkType,
  851. paramState: '05', //商户出发成功
  852. serveType: '02'
  853. }
  854. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  855. if (res.data.code == 200) {
  856. // this.isReceive = true
  857. this.serviceList = []
  858. let page = {
  859. num: 1,
  860. size: 10
  861. }
  862. this.getserviceList(page)
  863. }
  864. })
  865. },
  866. //救援到达现场
  867. arrive(item) {
  868. // this.taskId = item.taskId
  869. // this.checkType = item.checkType
  870. // this.uptype = 4 //道路救援
  871. // this.paramState = '06'
  872. // this.serveType = '02'
  873. let params = {
  874. taskId: item.taskId,
  875. checkType: item.checkType,
  876. uptype: 4, // 道路救援
  877. paramState: '06',
  878. serveType: '02',
  879. // isUpload: true
  880. }
  881. let queryString = Object.keys(params)
  882. .map(key => `${key}=${encodeURIComponent(params[key])}`)
  883. .join('&');
  884. uni.navigateTo({
  885. // url:'/pages/order/arriveUpload、${queryString}' paramState
  886. url: `/pages/order/arriveUpload?taskId=${item.taskId}&checkType=${item.checkType}&uptype=4&paramState=06&serveType=02&jumptype=0`
  887. })
  888. },
  889. //救援完成拍照
  890. help(item) {
  891. console.log(item)
  892. this.taskId = item.taskId
  893. this.checkType = item.checkType
  894. this.uptype = 3
  895. this.isUpload = true
  896. this.paramState = '11'
  897. this.serveType = '02'
  898. this.serviceList = []
  899. let page = {
  900. num: 1,
  901. size: 10
  902. }
  903. this.getserviceList(page)
  904. },
  905. //添加收费服务
  906. addService(item) {
  907. this.$http.get("/ts/merchant/addPaidServiceCheck?taskId=" + item.taskId).then(res => {
  908. console.log(res)
  909. if (res.data.result) {
  910. uni.navigateTo({
  911. url: '/pages/order/serviceOrder/project?checkType=' + item.checkType + '&taskId=' + item.taskId +
  912. '&orderNo=' + item.orderNo + '&productName=' + item.productName + '&type=' + 1
  913. })
  914. } else {
  915. uni.showToast({
  916. icon: 'none',
  917. title: '存在未支付服务项'
  918. })
  919. }
  920. })
  921. },
  922. //去送车修改状态
  923. goAlso(item) {
  924. let data = {
  925. taskId: item.taskId,
  926. checkType: item.checkType,
  927. paramState: '13', //商户点击去送车
  928. serveType: '01'
  929. }
  930. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  931. if (res.data.code == 200) {
  932. this.serviceList = []
  933. let page = {
  934. num: 1,
  935. size: 10
  936. }
  937. this.getserviceList(page)
  938. }
  939. })
  940. },
  941. //商户点击车已送达
  942. delivered(item) {
  943. let data = {
  944. taskId: item.taskId,
  945. checkType: item.checkType,
  946. paramState: '14', //商户点击车已送达
  947. serveType: '01'
  948. }
  949. this.$http.post("/ts/merchant/update/Serve", data).then(res => {
  950. if (res.data.code == 200) {
  951. this.serviceList = []
  952. let page = {
  953. num: 1,
  954. size: 10
  955. }
  956. this.getserviceList(page)
  957. }
  958. })
  959. }
  960. },
  961. mounted() {
  962. this.mescroll.optDown.use = false
  963. // this.getList()
  964. },
  965. onShow() {
  966. let that = this
  967. uni.getStorage({
  968. key: 'login_user_info',
  969. success: function(res) {
  970. that.merchantId = res.data.merchantId
  971. that.serviceList = []
  972. that.orderList = []
  973. let page = {
  974. num: 1,
  975. size: 10
  976. }
  977. that.getList(page)
  978. that.getserviceList(page)
  979. }
  980. })
  981. const app = getApp();
  982. this.currentIndex=app.globalData.currentIndex
  983. this.tabIndex=app.globalData.tabIndex
  984. app.globalData.currentIndex=''
  985. app.globalData.tabIndex=''
  986. },
  987. }
  988. </script>
  989. <style lang="scss" scoped>
  990. .order {
  991. width: 100%;
  992. height: 100vh;
  993. background: #F7F8FC;
  994. display: flex;
  995. flex-direction: column;
  996. position: fixed;
  997. .fix {
  998. width: 100%;
  999. height: auto;
  1000. background: #ffffff;
  1001. position: sticky;
  1002. top: 0px;
  1003. border-bottom: 1px solid #EEEEEE;
  1004. /*#ifdef APP-PLUS*/
  1005. .top {
  1006. width: 100%;
  1007. height: var(--status-bar-height);
  1008. background: #FFFFFF;
  1009. }
  1010. /*#endif*/
  1011. .head {
  1012. width: 100%;
  1013. height: 112rpx;
  1014. padding: 20rpx;
  1015. display: flex;
  1016. align-items: center;
  1017. background: #fff;
  1018. position: relative;
  1019. background: #FFFFFF;
  1020. .cuIcon-back {
  1021. font-size: 40rpx;
  1022. margin-right: 40rpx;
  1023. }
  1024. .case {
  1025. width: 100%;
  1026. position: absolute;
  1027. left: 50%;
  1028. transform: translateX(-50%);
  1029. font-size: 36rpx;
  1030. font-weight: 600;
  1031. .select_type {
  1032. display: flex;
  1033. justify-content: space-around;
  1034. .tab-item {
  1035. position: relative;
  1036. padding: 18rpx 0;
  1037. cursor: pointer;
  1038. color: #333;
  1039. font-weight: 400;
  1040. font-size: 28rpx;
  1041. }
  1042. .tab-item.active {
  1043. color: #449AFF;
  1044. font-weight: 600;
  1045. }
  1046. .tab-item.active::after {
  1047. content: '';
  1048. position: absolute;
  1049. bottom: -28px;
  1050. left: 35%;
  1051. width: 38rpx;
  1052. height: 100%;
  1053. background: url(/static/product/tab-act.png) no-repeat;
  1054. background-size: contain;
  1055. }
  1056. }
  1057. }
  1058. // .action {
  1059. // position: absolute;
  1060. // right: 24rpx;
  1061. // }
  1062. }
  1063. .manage {
  1064. display: flex;
  1065. align-items: center;
  1066. width: 100%;
  1067. padding: 0 24rpx;
  1068. .search {
  1069. width: 93%;
  1070. height: 55rpx;
  1071. background: #F7F8FC;
  1072. border-radius: 12rpx;
  1073. padding: 0rpx 24rpx;
  1074. display: flex;
  1075. align-items: center;
  1076. justify-content: space-between;
  1077. margin-right: 20rpx;
  1078. // margin: 16rpx auto 0px;
  1079. image {
  1080. width: 36rpx;
  1081. height: 36rpx;
  1082. }
  1083. input {
  1084. // height: 36rpx;
  1085. font-size: 26rpx;
  1086. }
  1087. span {
  1088. font-size: 26rpx;
  1089. color: #333333;
  1090. }
  1091. }
  1092. }
  1093. .select {
  1094. width: 100%;
  1095. height: 85rpx;
  1096. display: flex;
  1097. align-items: center;
  1098. justify-content: space-between;
  1099. padding: 0px 24rpx;
  1100. background-color: #FFFFFF;
  1101. .type {
  1102. height: 54rpx;
  1103. padding: 8rpx 12rpx;
  1104. background: #F2F3F5;
  1105. border-radius: 8rpx;
  1106. }
  1107. .active {
  1108. background: #ECF5FF;
  1109. color: #2D88F4;
  1110. }
  1111. }
  1112. }
  1113. .list {
  1114. flex: 1;
  1115. width: 100%;
  1116. overflow-y: auto;
  1117. padding-bottom: var(--window-bottom);
  1118. .order_item {
  1119. width: 100%;
  1120. background-color: #fff;
  1121. padding: 20rpx 40rpx;
  1122. margin-bottom: 20rpx;
  1123. .order_id {
  1124. width: 100%;
  1125. height: 41rpx;
  1126. font-size: 26rpx;
  1127. color: #8B91A4;
  1128. display: flex;
  1129. justify-content: space-between;
  1130. align-items: center;
  1131. .id_right {}
  1132. }
  1133. .order_product {
  1134. width: 100%;
  1135. height: 132rpx;
  1136. display: flex;
  1137. margin: 10rpx 0px;
  1138. margin-bottom: 20rpx;
  1139. .img {
  1140. width: 132rpx;
  1141. height: 132rpx;
  1142. border-radius: 12rpx;
  1143. overflow: hidden;
  1144. image {
  1145. width: 132rpx;
  1146. height: 132rpx;
  1147. }
  1148. }
  1149. .name {
  1150. height: 100%;
  1151. flex: 1;
  1152. display: flex;
  1153. flex-direction: column;
  1154. justify-content: space-between;
  1155. margin-left: 20rpx;
  1156. font-size: 28rpx;
  1157. color: #000000;
  1158. span {
  1159. font-size: 22rpx;
  1160. color: #F0761D;
  1161. }
  1162. .exceed {
  1163. width: 500rpx;
  1164. overflow: hidden;
  1165. text-overflow: ellipsis;
  1166. white-space: nowrap;
  1167. }
  1168. }
  1169. .ticket {
  1170. image {
  1171. width: 50rpx;
  1172. height: 50rpx;
  1173. }
  1174. }
  1175. .schedule {
  1176. width: 15%;
  1177. }
  1178. .spec_item {
  1179. flex: 1;
  1180. margin-left: 20rpx;
  1181. display: flex;
  1182. flex-direction: column;
  1183. justify-content: space-between;
  1184. .top {
  1185. font-size: 26rpx;
  1186. height: 38rpx;
  1187. color: #000000;
  1188. margin-bottom: 6rpx;
  1189. }
  1190. .content {
  1191. width: 100%;
  1192. flex: 1;
  1193. display: flex;
  1194. justify-content: space-between;
  1195. padding-top: 15rpx;
  1196. .left {
  1197. display: flex;
  1198. flex-direction: column;
  1199. justify-content: space-between;
  1200. font-size: 22rpx;
  1201. color: #333333;
  1202. }
  1203. .right {
  1204. text-align: right;
  1205. display: flex;
  1206. flex-direction: column;
  1207. justify-content: space-between;
  1208. }
  1209. }
  1210. }
  1211. }
  1212. .is_show {
  1213. display: flex;
  1214. align-items: center;
  1215. justify-content: center;
  1216. font-size: 24rpx;
  1217. color: #2D88F4;
  1218. image {
  1219. width: 20rpx;
  1220. height: 20rpx;
  1221. margin-left: 10rpx;
  1222. }
  1223. }
  1224. .time {
  1225. width: 100%;
  1226. display: flex;
  1227. align-items: center;
  1228. justify-content: space-between;
  1229. margin-top: 20rpx;
  1230. .time_left {
  1231. // width: 30%;
  1232. font-size: 24rpx;
  1233. color: #8A91A8;
  1234. }
  1235. .time_right {
  1236. min-width: 126rpx;
  1237. height: 50rpx;
  1238. background: rgba(240, 118, 29, 0.05);
  1239. border-radius: 8rpx;
  1240. border: 1px solid #F0761D;
  1241. font-size: 26rpx;
  1242. color: #F0761D;
  1243. display: flex;
  1244. align-items: center;
  1245. justify-content: center;
  1246. }
  1247. .all_price {
  1248. min-width: 33%;
  1249. margin-left: 10rpx;
  1250. }
  1251. }
  1252. }
  1253. .service_order {
  1254. background: #FFFFFF;
  1255. padding: 22rpx 32rpx;
  1256. margin-bottom: 20rpx;
  1257. .item_title {
  1258. width: 100%;
  1259. display: flex;
  1260. justify-content: space-between;
  1261. margin-bottom: 22rpx;
  1262. span {
  1263. font-size: 26rpx;
  1264. color: #8B91A4;
  1265. }
  1266. }
  1267. .car_id {
  1268. font-size: 30rpx;
  1269. color: #333333;
  1270. font-weight: 600;
  1271. display: flex;
  1272. align-items: center;
  1273. margin-bottom: 8rpx;
  1274. span {
  1275. width: 120rpx;
  1276. height: 40rpx;
  1277. background: #FDF6F2;
  1278. border-radius: 8rpx;
  1279. font-size: 24rpx;
  1280. line-height: 40rpx;
  1281. color: #FD4912;
  1282. text-align: center;
  1283. margin-left: 16rpx;
  1284. }
  1285. }
  1286. .name {
  1287. width: 100%;
  1288. height: 62rpx;
  1289. background: linear-gradient(90deg, #F8F9FB 0%, #FBFCFD 100%);
  1290. border-radius: 12rpx;
  1291. padding: 12rpx;
  1292. font-size: 26rpx;
  1293. color: #333333;
  1294. font-weight: 600;
  1295. margin-bottom: 8rpx;
  1296. display: flex;
  1297. justify-content: space-between;
  1298. align-items: center;
  1299. span {
  1300. display: inline-block;
  1301. width: 152rpx;
  1302. height: 50rpx;
  1303. background: rgba(240, 118, 29, 0.05);
  1304. border-radius: 35rpx;
  1305. border: 1px solid #F0761D;
  1306. font-size: 26rpx;
  1307. color: #F0761D;
  1308. text-align: center;
  1309. line-height: 50rpx;
  1310. }
  1311. }
  1312. .time {
  1313. display: flex;
  1314. align-items: center;
  1315. justify-content: space-between;
  1316. font-size: 24rpx;
  1317. color: #8A91A8;
  1318. span {
  1319. text {
  1320. font-size: 16rpx;
  1321. }
  1322. color: #FD4912;
  1323. }
  1324. }
  1325. .btn_box {
  1326. display: flex;
  1327. align-items: center;
  1328. justify-content: end;
  1329. margin-top: 20rpx;
  1330. .btn {
  1331. height: 51rpx;
  1332. padding: 6rpx 24rpx;
  1333. border-radius: 61rpx;
  1334. font-size: 26rpx;
  1335. border: 1px solid #CCCCCC;
  1336. display: flex;
  1337. align-items: center;
  1338. }
  1339. .border {
  1340. border: 1px solid #2D88F4;
  1341. color: #2D88F4;
  1342. margin-left: 16rpx;
  1343. }
  1344. .join {
  1345. background: #2D88F4;
  1346. color: #FFFFFF;
  1347. border: none;
  1348. }
  1349. }
  1350. .add_service {
  1351. width: 100%;
  1352. height: 100rpx;
  1353. background: linear-gradient(180deg, #EEF7FF 0%, #F6FBFF 100%);
  1354. border-radius: 12rpx;
  1355. margin-top: 20rpx;
  1356. display: flex;
  1357. align-items: center;
  1358. justify-content: center;
  1359. span {
  1360. width: 204rpx;
  1361. height: 50rpx;
  1362. background: linear-gradient(90deg, #53A2FF 0%, #2589FF 100%);
  1363. border-radius: 49rpx;
  1364. font-size: 26rpx;
  1365. color: #FFFFFF;
  1366. display: flex;
  1367. align-items: center;
  1368. justify-content: center;
  1369. }
  1370. }
  1371. .child_order {
  1372. width: 100%;
  1373. border-radius: 12rpx;
  1374. margin: 20rpx 0px;
  1375. .row {
  1376. margin-bottom: 20rpx;
  1377. background: linear-gradient(180deg, #EEF7FF 0%, #F6FBFF 100%);
  1378. padding: 10rpx 12rpx;
  1379. .row_title {
  1380. width: 100%;
  1381. display: flex;
  1382. align-items: center;
  1383. justify-content: space-between;
  1384. font-size: 26rpx;
  1385. color: #8B91A4;
  1386. margin-bottom: 20rpx;
  1387. .row_status {
  1388. font-size: 28rpx;
  1389. color: #FF9900;
  1390. }
  1391. }
  1392. .row_name {
  1393. font-size: 26rpx;
  1394. color: #333333;
  1395. margin-bottom: 7rpx;
  1396. font-weight: 600;
  1397. }
  1398. .row_price {
  1399. display: flex;
  1400. align-items: center;
  1401. justify-content: space-between;
  1402. margin-bottom: 7rpx;
  1403. span {
  1404. font-size: 26rpx;
  1405. color: #FD4912;
  1406. font-weight: 600;
  1407. text {
  1408. font-size: 16rpx;
  1409. }
  1410. }
  1411. .row_detail {
  1412. padding: 6rpx 24rpx;
  1413. background: #FFFFFF;
  1414. border-radius: 61rpx;
  1415. border: 1px solid #2D88F4;
  1416. font-size: 24rpx;
  1417. color: #2D88F4;
  1418. display: flex;
  1419. align-items: center;
  1420. justify-content: space-between;
  1421. }
  1422. }
  1423. .row_time {
  1424. font-size: 22rpx;
  1425. color: #888888;
  1426. margin-bottom: 16rpx;
  1427. }
  1428. .row_btn {
  1429. display: flex;
  1430. align-items: center;
  1431. justify-content: end;
  1432. span {
  1433. width: 204rpx;
  1434. height: 50rpx;
  1435. background: #2D88F4;
  1436. border-radius: 8rpx;
  1437. display: flex;
  1438. align-items: center;
  1439. justify-content: center;
  1440. font-size: 26rpx;
  1441. color: #FFFFFF;
  1442. }
  1443. }
  1444. }
  1445. }
  1446. }
  1447. }
  1448. }
  1449. </style>