order.vue 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816
  1. <template>
  2. <view>
  3. <view class="poster" v-if="myqr_show">
  4. <view>
  5. <image :src="myqr_url" :style="'width:' + myqr_width + 'rpx;'" mode="widthFix"></image>
  6. <view class="tool">
  7. <view>
  8. <button open-type="share" class="share-btn">
  9. <image class="img" style="width: 85rpx; margin-right: 25rpx" mode="widthFix"
  10. src="/static/static/images/share/p_dy.png"></image>
  11. </button>
  12. </view>
  13. <view>
  14. <image class="img" mode="widthFix" @tap="goSaveQrcode" src="/static/images/share/p_save.png">
  15. </image>
  16. </view>
  17. </view>
  18. <view style="text-align: center">
  19. <image class="closeImg" @tap="hidePoster" src="/static/images/share/close.png"></image>
  20. </view>
  21. </view>
  22. </view>
  23. <view class="appoint-tabs-wrapper">
  24. <view :class="'appoint-tab-item ' + (showType == 0 ? 'active' : '')" data-tab="0" @tap="onTabChange">全 部
  25. </view>
  26. <view :class="'appoint-tab-item ' + (showType == 1 ? 'active' : '')" data-tab="1" @tap="onTabChange">待支付
  27. </view>
  28. <view :class="'appoint-tab-item ' + (showType == 2 ? 'active' : '')" data-tab="2" @tap="onTabChange">待服务
  29. </view>
  30. <view :class="'appoint-tab-item ' + (showType == 3 ? 'active' : '')" data-tab="3" @tap="onTabChange">售后
  31. </view>
  32. </view>
  33. <view class="container" :style="'filter:blur(' + myqr_blur + 'rpx)'">
  34. <view class="no-order" v-if="orderList.length <= 0">
  35. <view class="c">
  36. <text>还没有任何订单呢</text>
  37. </view>
  38. </view>
  39. <view class="orders">
  40. <view class="order" v-for="(item, index) in orderList" :key="index">
  41. <view class="h">
  42. <view class="l"
  43. v-if="item.orderStatusVal == '待预约' || item.orderStatusVal == '服务中' || item.orderStatusVal == '服务已完成'">
  44. 已支付</view>
  45. <view class="l" v-else>{{ item.orderStatusVal }}</view>
  46. <view class="r"
  47. v-if="item.orderStatusVal == '待预约' || item.orderStatusVal == '服务中' || item.orderStatusVal == '服务已完成'">
  48. {{ item.orderStatusVal }}
  49. </view>
  50. <view class="r" v-else></view>
  51. </view>
  52. <!-- open-type="redirect" -->
  53. <navigator :url="'../orderDetail/orderDetail?id=' + item.id">
  54. <view class="goods">
  55. <view class="img">
  56. <image :src="item.picUrl"></image>
  57. </view>
  58. <view class="info">
  59. <!-- <view class="info-orderSn" >订单编号: {{item.orderSn}}</view> -->
  60. <view class="info-main">
  61. <text class="product-name">{{ item.goodsName }}</text>
  62. <text class="price">¥{{ item.orderPrice }}</text>
  63. </view>
  64. <view class="sku-name" v-if="item.increaseSumPrice">
  65. <view>加购: {{ item.unitDescribe }}*{{ item.unitIncreaseNumber }}</view>
  66. <view>¥{{ item.increaseSumPrice }}</view>
  67. </view>
  68. <view class="sku-name">规格:{{ item.skuName }}</view>
  69. <text class="other-info">服务{{ item.serviceTimes }}次</text>
  70. <view v-if="item.payOverTime > 0" class="over-time">
  71. {{ utils.formatOverTime(item.payOverTime) }} 后订单关闭</view>
  72. </view>
  73. </view>
  74. </navigator>
  75. <view class="b">
  76. <view class="l">
  77. <text>实付款:¥{{ item.actualPrice }}</text>
  78. </view>
  79. </view>
  80. <!-- 提醒 -->
  81. <view class="status-tips" v-if="item.orderStatusVal == '已退款'">
  82. <image mode="aspectFit"
  83. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-refund-tips.png"></image>
  84. <view class="tips-title">已退款</view>
  85. <view>已按照原支付路径退回</view>
  86. </view>
  87. <view class="status-tips" v-if="item.orderStatusVal == '服务已完成'" :data-id="item.id" @tap="goCheck">
  88. <image mode="aspectFit"
  89. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-customer-msg.png"></image>
  90. <view class="tips-title">服务验收:</view>
  91. <view>服务已完成,请评价</view>
  92. </view>
  93. <view class="customer-msg" v-if="item.customerServiceReminder">
  94. <view class="msg-title">提醒:</view>
  95. <view class="msg-text">{{ item.customerServiceReminder }}</view>
  96. </view>
  97. <view class="customer-msg" v-if="item.ticketStatus == 1">
  98. <view class="msg-title">提醒:</view>
  99. <view class="msg-text">您的售后工单正在处理中,请耐心等待</view>
  100. </view>
  101. <view class="customer-msg" v-if="item.ticketStatus == 2" :data-id="item.id" @tap="orderDetail">
  102. <view class="msg-title">提醒:</view>
  103. <view class="msg-text">您的售后工单已完成,可以去评价了哦</view>
  104. </view>
  105. <!-- 操作事件 -->
  106. <view class="order-operate-wrapper">
  107. <!-- <view catchtap="deleteOrder" wx:if="{{item.handleOption.delete}}" data-id="{{item.id}}" class="del">删除订单
  108. </view> -->
  109. <view @tap.stop.prevent="cancelOrder" v-if="item.handleOption.cancel" :data-id="item.id"
  110. class="del">取消订单</view>
  111. <view @tap.stop.prevent="refundOrder" :data-id="item.id" v-if="item.handleOption.refund"
  112. class="del">售后/退款</view>
  113. <!-- <view data-id="{{item.id}}" data-sn="{{item.orderSn}}" data-aid="{{item.addressId}}"
  114. data-type="{{item.type}}" wx:if="{{item.handleOption.book}}" class="eval-btn">评价</view> -->
  115. <!-- 抖音评价 20231007屏蔽 by leo 启用工单上的服务验收
  116. <rate-button class="eval-btn" order-id="{{item.orderSn}}" bind:init="handleInit" bind:success="handleSuccess" bind:error="handleError" />-->
  117. <!-- <view catchtap="confirmOrder" wx:if="{{item.handleOption.confirm}}" data-id="{{item.id}}">待上门</view> -->
  118. <!-- <view catchtap="refundOrder" wx:if="{{item.handleOption.refund&&item.goodsList[0].goodsSn!='1036016'}}" data-id="{{item.id}}">申请退款</view> -->
  119. <!-- <view data-id="{{item.goodsList[0].goodsId}}" catchtap="shareFriendOrCircle" >分享商品</view> -->
  120. <view @tap.stop.prevent="goAppoint" :data-id="item.id" :data-sn="item.orderSn"
  121. :data-aid="item.addressId" v-if="item.handleOption.book" :data-detail="item.detailId"
  122. class="appoint">
  123. 预约服务
  124. </view>
  125. <view @tap.stop.prevent="cancelAppoint" :data-serid="item.bookedDetailId" :data-id="item.id"
  126. :data-times="item.serviceTimes" v-if="item.handleOption.canCancelBook" class="del">
  127. 取消预约
  128. </view>
  129. <view @tap="modifyAppoint" :data-id="item.id" :data-serid="item.bookedDetailId"
  130. :data-times="item.serviceTimes" :data-sn="item.orderSn" :data-aid="item.addressId"
  131. :data-type="item.type" v-if="item.handleOption.canModify" class="warning-color">
  132. 修改预约
  133. </view>
  134. <view @tap.stop.prevent="payOrder" :data-id="item.id" :data-sn="item.orderSn"
  135. v-if="item.handleOption.pay">立即支付</view>
  136. <view class="btn-rebuy" @tap="buyAgain" :data-id="item.goodsId"
  137. v-if="item.orderStatusVal != '未支付'">再次购买</view>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. <!-- 修改预约/预约 -->
  143. <view class="refund-order-overlay" v-if="appointDiaShow">
  144. <view class="refund-order-dialog refund-order-dia-success">
  145. <image src="https://mall.zhaijieshi.cc/file/wx-huawang/g.png" mode="" class="title-icong"></image>
  146. <view class="refund-dia-title">请选择您要修改的服务</view>
  147. <view class="modify-list">
  148. <view class="modify-item" @tap="switchSer" :data-serid="item.id"
  149. v-for="(item, index) in serModifyList" :key="index">
  150. <image src="https://mall.zhaijieshi.cc/file/wx-huawang/dian2.png" mode="aspectFit"
  151. v-if="item.id == serviceId"></image>
  152. <image src="https://mall.zhaijieshi.cc/file/wx-dy/radio-unselect.png" mode="aspectFit" v-else>
  153. </image>
  154. <view :class="item.id == serviceId ? 'current-modify' : ''">{{ item.bookTime }}</view>
  155. </view>
  156. </view>
  157. <view class="dia-btn-wrapper">
  158. <view class="dia-cancel-btn" @tap="appointModifyConf">确定</view>
  159. </view>
  160. </view>
  161. <image @tap="closeModify" src="https://jzmall.lifejingzhi.com/file/mall-uni/icon-close.png"
  162. class="modify-close"></image>
  163. </view>
  164. <!-- 选择取消原因 -->
  165. <!-- 第一步 -->
  166. <view class="appoint-overlay-wrapper remark-overlay" v-if="cancelFirstShow" @tap="onCancelPopupCloseFir">
  167. <view class="remark-select" @tap.stop.prevent="onCancelClick">
  168. <view class="title" style="text-align: left">请选择要取消的服务</view>
  169. <view class="remark-list ser-list">
  170. <view :class="'remark-item ser-item ' + (item.id == serviceId ? 'current-ser' : '')"
  171. :data-id="item.id" @tap="switchSer" :data-serid="item.id" style="justify-content: flex-start"
  172. v-for="(item, index) in serModifyList" :key="index">
  173. <image mode="aspectFit" src="https://mall.zhaijieshi.cc/file/wx-huawang/dian2.png"
  174. class="radio-img" v-if="item.id == serviceId"></image>
  175. <image mode="aspectFit" src="https://mall.zhaijieshi.cc/file/wx-huawang/dian1.png"
  176. class="radio-img" v-else></image>
  177. <view :class="'remark-value ' + (item.id == serviceId ? 'current-cancel' : '')">
  178. {{ item.bookTime }}</view>
  179. <view class="ser-right">已预约</view>
  180. </view>
  181. </view>
  182. <view class="remark-conf-btn" @tap.stop.prevent="cancelFirstConfirm">下一步</view>
  183. </view>
  184. </view>
  185. <view class="appoint-overlay-wrapper remark-overlay" v-if="cancelShow" @tap="onCancelPopupClose">
  186. <view class="remark-select" @tap.stop.prevent="onCancelClick">
  187. <view class="title">选择取消原因</view>
  188. <view class="remark-list">
  189. <view class="remark-item" :data-id="item.id" @tap.stop.prevent="cancelItemSelect"
  190. v-for="(item, index) in cancelList" :key="index">
  191. <view class="remark-value">{{ item.value }}</view>
  192. <image mode="aspectFit"
  193. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-select-popup.png" class="radio-img"
  194. v-if="cancelReason == item.id"></image>
  195. <image mode="aspectFit"
  196. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-unselect-popup.png"
  197. class="radio-img" v-else></image>
  198. </view>
  199. </view>
  200. <view class="remark-conf-btn" @tap.stop.prevent="cancelItemConfirm">取消预约</view>
  201. </view>
  202. </view>
  203. </view>
  204. </template>
  205. <script module="utils" lang="wxs" src="@/utils/formatFuc.wxs"></script>
  206. <script>
  207. var util = require('../../../utils/util.js');
  208. var api = require('../../../config/api.js');
  209. var app = getApp();
  210. export default {
  211. data() {
  212. return {
  213. timer: '',
  214. orderList: [],
  215. showType: 0,
  216. page: 1,
  217. limit: 10,
  218. totalPages: 1,
  219. myqr_show: false,
  220. //我的分享二维码
  221. myqr_url: null,
  222. myqr_blur: 0,
  223. //背景模糊值
  224. myqr_width: 0,
  225. hasLogin: false,
  226. goodsId: '',
  227. tipsList: [],
  228. refundTipShow: false,
  229. refundId: '',
  230. serModifyList: [],
  231. serviceId: '',
  232. appointOrderId: '',
  233. appointDiaType: '',
  234. //1修改预约 2取消预约
  235. appointDiaShow: false,
  236. cancelShow: false,
  237. cancelList: [{
  238. id: 19,
  239. value: '【个人原因】临时有事暂时不预约'
  240. },
  241. {
  242. id: 20,
  243. value: '【个人原因】先囤着以后再约'
  244. },
  245. {
  246. id: 22,
  247. value: '【个人原因】计划有变不需要了'
  248. },
  249. {
  250. id: 21,
  251. value: '【商家原因】保洁师无法上门服务'
  252. },
  253. {
  254. id: 23,
  255. value: ' 其他'
  256. }
  257. ],
  258. cancelReason: '',
  259. cancelFirstShow: false
  260. };
  261. },
  262. onLoad: function(options) {
  263. // 页面初始化 options为页面跳转所带来的参数
  264. if (options.tab) {
  265. this.setData({
  266. showType: options.tab
  267. });
  268. }
  269. },
  270. onHide: function() {
  271. console.log('onHide');
  272. clearInterval(this.timer);
  273. },
  274. onUnload: function() {
  275. console.log('onunload');
  276. clearInterval(this.timer);
  277. },
  278. onReachBottom() {
  279. if (this.totalPages > this.page) {
  280. this.setData({
  281. page: this.page + 1
  282. });
  283. this.getOrderList();
  284. } else if (this.orderList.length > 0) {
  285. uni.showToast({
  286. title: '没有更多订单了',
  287. icon: 'none',
  288. duration: 2000
  289. });
  290. return false;
  291. }
  292. },
  293. onReady: function() {
  294. // 页面渲染完成
  295. },
  296. onShow: function() {
  297. // 页面显示
  298. this.setData({
  299. orderList: [],
  300. page: 1
  301. });
  302. // wx.pageScrollTo({
  303. // scrollTop: 0,
  304. // duration: 1000,
  305. // });
  306. this.getOrderList();
  307. },
  308. methods: {
  309. getOrderList() {
  310. uni.showLoading({
  311. title: '加载中'
  312. });
  313. let that = this;
  314. util.request(api.OrderList, {
  315. showType: that.showType,
  316. page: that.page,
  317. limit: that.limit
  318. }).then((res) => {
  319. uni.hideLoading();
  320. if (res.errno === 0) {
  321. console.log(res.data);
  322. that.setData({
  323. orderList: that.orderList.concat(res.data.data.orders),
  324. totalPages: res.data.pages
  325. });
  326. clearInterval(this.timer);
  327. // 如果有未支付订单,倒计时定时器
  328. let isHasOver = this.orderList.some((item) => {
  329. return item.payOverTime > 0;
  330. });
  331. console.log(isHasOver);
  332. if (isHasOver) {
  333. let timer = setInterval(() => {
  334. let list = this.orderList;
  335. let newList = [];
  336. list.forEach((item) => {
  337. let obj = item;
  338. if (item.payOverTime > 0) {
  339. obj.payOverTime = item.payOverTime - 1;
  340. }
  341. newList.push(obj);
  342. });
  343. this.setData({
  344. orderList: newList
  345. });
  346. }, 1000);
  347. this.setData({
  348. timer: timer
  349. });
  350. }
  351. }
  352. });
  353. },
  354. orderDetail(e) {
  355. let id = e.currentTarget.dataset.id;
  356. uni.navigateTo({
  357. url: '/pages/ucenter/orderDetail/orderDetail?id=' + id
  358. });
  359. },
  360. switchTab: function(event) {
  361. let showType = event.currentTarget.dataset.index;
  362. this.setData({
  363. orderList: [],
  364. showType: showType,
  365. page: 1,
  366. // limit: 10,
  367. totalPages: 1
  368. });
  369. this.getOrderList();
  370. },
  371. onTabChange(e) {
  372. // let showType = e.detail.name;
  373. let showType = e.currentTarget.dataset.tab;
  374. this.setData({
  375. orderList: [],
  376. showType: showType,
  377. page: 1,
  378. // limit: 10,
  379. totalPages: 1
  380. });
  381. this.getOrderList();
  382. },
  383. appointServiceOld(e) {
  384. let id = e.currentTarget.dataset.id;
  385. let addressId = e.currentTarget.dataset.aid;
  386. let type = e.currentTarget.dataset.type;
  387. if (type && type == 5) {
  388. uni.navigateTo({
  389. url: '/pages/ucenter/coupon/couponGoods?id=1'
  390. });
  391. return;
  392. }
  393. if (addressId == null || addressId == 0) {
  394. uni.navigateTo({
  395. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + id
  396. });
  397. } else {
  398. //买约分离 没有地址的预约
  399. uni.navigateTo({
  400. url: '/pages/ucenter/serviceDetail/serviceDetail?orderId=' + id
  401. });
  402. }
  403. },
  404. appointService(e) {
  405. let id = e.currentTarget.dataset.id;
  406. let addressId = e.currentTarget.dataset.aid;
  407. let type = e.currentTarget.dataset.type;
  408. let detailId = e.currentTarget.dataset.detail;
  409. uni.navigateTo({
  410. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + id + '&serviceId=' + detailId
  411. });
  412. },
  413. qrtouchstart: function() {
  414. this.setData({
  415. myqr_blur: 0,
  416. myqr_show: false
  417. });
  418. },
  419. shareFriendOrCircle: function(e) {
  420. // let that = this;
  421. // if (!app.globalData.hasLogin) {
  422. // wx.navigateTo({
  423. // url: "/pages/auth/login/login"
  424. // });
  425. // return;
  426. // }
  427. // //获取分享id 用来追踪链接
  428. // //引荐人和非引荐人的 链接不同
  429. // let imgUrl = that.data.goods.shareWxUrl ? that.data.goods.shareWxUrl : that.data.goods.gallery[0];
  430. // var path = '/pages/goods/goods?id=' + that.data.id + '&rId=' + that.data.userInfo.id;
  431. // if (that.data.userInfo.isDis) { //是引荐人
  432. // path = '/pages/goods/goods?id=' + that.data.id + '&shareId=' + that.data.wxShareId;
  433. // }
  434. // this.hidePoster();
  435. // return {
  436. // title: that.data.goods.name,
  437. // desc: that.data.myqr_ads,
  438. // path: path,
  439. // imageUrl: imgUrl
  440. // }
  441. },
  442. // 保存分享图
  443. saveShare: function() {
  444. let that = this;
  445. uni.showLoading({
  446. title: '图片保存中'
  447. });
  448. console.log(that);
  449. uni.downloadFile({
  450. url: that.myqr_url,
  451. success: function(res) {
  452. console.log(res);
  453. uni.saveImageToPhotosAlbum({
  454. filePath: res.tempFilePath,
  455. success: function(res) {
  456. uni.hideLoading();
  457. uni.showModal({
  458. title: '存图成功',
  459. content: '图片成功保存到相册了,可以分享到朋友圈了',
  460. showCancel: false,
  461. confirmText: '好的',
  462. confirmColor: '#a78845',
  463. success: function(res) {
  464. if (res.confirm) {
  465. console.log('用户点击确定');
  466. that.setData({
  467. myqr_show: false,
  468. myqr_blur: 0
  469. });
  470. }
  471. }
  472. });
  473. },
  474. fail: function(res) {
  475. uni.hideLoading();
  476. uni.showModal({
  477. title: '警告',
  478. content: '不授权无法保存',
  479. showCancel: false
  480. });
  481. that.setData({
  482. myqr_show: false,
  483. myqr_blur: 0
  484. });
  485. }
  486. });
  487. },
  488. fail: function(res) {
  489. uni.hideLoading();
  490. console.log(res);
  491. }
  492. });
  493. },
  494. // “去付款”按钮点击效果
  495. payOrder: function(e) {
  496. let that = this;
  497. let id = e.currentTarget.dataset.id;
  498. let ordern = e.currentTarget.dataset.sn;
  499. util.request(
  500. api.OrderPayCheck, {
  501. orderId: id
  502. },
  503. 'POST'
  504. ).then(function(res) {
  505. if (res.errno === 0) {
  506. const outOrderNo = res.data;
  507. console.log(res);
  508. uni.continueToPay({
  509. // orderId: this.data.orderId, // 内部订单号
  510. outOrderNo: outOrderNo,
  511. // 外部订单号 2个订单号必填一个
  512. success: (res) => {
  513. console.log(res);
  514. const {
  515. orderId,
  516. outOrderNo
  517. } = res;
  518. console.log('success res', res);
  519. console.log('orderId', orderId, 'outOrderNo', outOrderNo);
  520. uni.redirectTo({
  521. url: '/pages/ucenter/order/order'
  522. });
  523. },
  524. fail: (res) => {
  525. console.log(res);
  526. const {
  527. orderId,
  528. outOrderNo,
  529. errNo,
  530. errMsg,
  531. errLogId
  532. } = res;
  533. if (errLogId) {
  534. console.log('查询订单信息失败', errNo, errMsg, errLogId);
  535. }
  536. if (orderId || outOrderNo) {
  537. console.log('支付失败', errNo, errMsg, orderId, outOrderNo);
  538. console.log('订单号' + outOrderNo);
  539. // wx.navigateTo({
  540. // url: '/pages/ucenter/orderDetail/orderDetail?id='+outOrderNo
  541. // });
  542. }
  543. util.showErrorToast('支付失败');
  544. }
  545. });
  546. }
  547. });
  548. },
  549. payOrder(e) {
  550. let that = this;
  551. let id = e.currentTarget.dataset.id;
  552. util.request(
  553. api.OrderPrepay, {
  554. orderId: id
  555. },
  556. 'POST'
  557. ).then(function(res) {
  558. if (res.errno === 0) {
  559. const payParam = res.data;
  560. console.log('支付过程开始');
  561. uni.requestPayment({
  562. timeStamp: payParam.timeStamp,
  563. nonceStr: payParam.nonceStr,
  564. package: payParam.packageValue,
  565. signType: payParam.signType,
  566. paySign: payParam.paySign,
  567. success: function(res) {
  568. console.log('支付过程成功');
  569. uni.redirectTo({
  570. url: '/pages/ucenter/order/order'
  571. });
  572. },
  573. fail: function(res) {
  574. console.log('支付过程失败');
  575. util.showErrorToast('支付失败');
  576. },
  577. complete: function(res) {
  578. console.log('支付过程结束');
  579. }
  580. });
  581. } else {
  582. uni.showToast({
  583. title: res.errmsg,
  584. icon: 'none'
  585. });
  586. }
  587. });
  588. },
  589. // “删除”点击效果
  590. deleteOrder: function(e) {
  591. let that = this;
  592. let id = e.currentTarget.dataset.id;
  593. uni.showModal({
  594. title: '',
  595. content: '确定要删除此订单?',
  596. success: function(res) {
  597. if (res.confirm) {
  598. util.request(
  599. api.OrderDelete, {
  600. orderId: id
  601. },
  602. 'POST'
  603. ).then(function(res) {
  604. if (res.errno === 0) {
  605. uni.showToast({
  606. title: '删除订单成功'
  607. });
  608. util.redirect('/pages/ucenter/order/order');
  609. } else {
  610. util.showErrorToast(res.errmsg);
  611. }
  612. });
  613. }
  614. }
  615. });
  616. },
  617. // “取消订单”点击效果
  618. cancelOrder(e){
  619. // let that = this;
  620. let id = e.currentTarget.dataset.id;
  621. uni.showModal({
  622. title: '',
  623. content: '确定要取消此订单?',
  624. confirmColor: '#D77958',
  625. success: ()=>{
  626. util.request(
  627. api.OrderCancel, {
  628. orderId: id
  629. },
  630. 'POST'
  631. ).then((res)=>{
  632. if (res.errno === 0) {
  633. uni.showToast({
  634. title: '取消订单成功'
  635. });
  636. util.redirect('/pages/ucenter/order/order');
  637. } else {
  638. util.showErrorToast(res.errmsg);
  639. }
  640. });
  641. }
  642. });
  643. },
  644. // “待上门”点击效果
  645. confirmOrder: function(e) {
  646. let that = this;
  647. let id = e.currentTarget.dataset.id;
  648. uni.showModal({
  649. title: '',
  650. content: '确认上门服务?',
  651. success: function(res) {
  652. if (res.confirm) {
  653. util.request(
  654. api.OrderConfirm, {
  655. orderId: id
  656. },
  657. 'POST'
  658. ).then(function(res) {
  659. if (res.errno === 0) {
  660. uni.showToast({
  661. title: '确认上门成功!'
  662. });
  663. util.redirect('/pages/ucenter/order/order');
  664. } else {
  665. util.showErrorToast(res.errmsg);
  666. }
  667. });
  668. }
  669. }
  670. });
  671. },
  672. // “取消订单并退款”点击效果
  673. refundOrderOld: function(e) {
  674. let that = this;
  675. let id = e.currentTarget.dataset.id;
  676. uni.showModal({
  677. title: '',
  678. content: '确定要取消此订单?',
  679. success: function(res) {
  680. if (res.confirm) {
  681. util.request(
  682. api.OrderRefund, {
  683. orderId: id
  684. },
  685. 'POST'
  686. ).then(function(res) {
  687. if (res.errno === 0) {
  688. uni.showToast({
  689. title: '取消订单成功'
  690. });
  691. util.redirect('/pages/ucenter/order/order');
  692. } else {
  693. util.showErrorToast(res.errmsg);
  694. }
  695. });
  696. }
  697. }
  698. });
  699. },
  700. refundOrderOld: function(e) {
  701. let id = e.currentTarget.dataset.id;
  702. },
  703. refundOrder: function(e) {
  704. let id = e.currentTarget.dataset.id;
  705. uni.navigateTo({
  706. url: '/pages/ucenter/applyRefund/applyRefund?id=' + id
  707. });
  708. },
  709. buyAgain(e) {
  710. let id = e.currentTarget.dataset.id;
  711. uni.navigateTo({
  712. url: '/pages/goods/goods?id=' + id
  713. });
  714. },
  715. goCheck(e) {
  716. let id = e.currentTarget.dataset.id;
  717. uni.navigateTo({
  718. url: '/pages/ucenter/orderDetail/orderDetail?id=' + id
  719. });
  720. },
  721. handleInit(event) {
  722. const {
  723. status
  724. } = event.detail;
  725. console.log(status);
  726. },
  727. handleSuccess(event) {
  728. const {
  729. result
  730. } = event.detail;
  731. // 团购订单不支持查看评价,此时可决定按钮是否展示
  732. console.log(result);
  733. },
  734. handleError(event) {
  735. const {
  736. errMsg,
  737. errNo
  738. } = event.detail;
  739. // errNo(错误码,对应某种具体报错原因)
  740. // errMsg(报错信息)
  741. console.log(errMsg, errNo);
  742. },
  743. goAppoint(e) {
  744. let id = e.currentTarget.dataset.id;
  745. let detailId = e.currentTarget.dataset.detail;
  746. uni.navigateTo({
  747. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + id + '&serviceId=' + detailId
  748. });
  749. },
  750. switchSer(e) {
  751. let serid = e.currentTarget.dataset.serid;
  752. this.setData({
  753. serviceId: serid
  754. });
  755. },
  756. appointModifyConf() {
  757. if (this.serviceId == '' || this.serviceId == null) {
  758. uni.showToast({
  759. title: '请选择要修改的服务',
  760. icon: 'none'
  761. });
  762. return false;
  763. } else {
  764. this.setData({
  765. appointDiaShow: false
  766. });
  767. uni.navigateTo({
  768. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + this.appointOrderId +
  769. '&serviceId=' + this.serviceId
  770. });
  771. }
  772. },
  773. closeModify() {
  774. this.setData({
  775. appointDiaShow: false
  776. });
  777. },
  778. modifyAppoint(e) {
  779. let id = e.currentTarget.dataset.id;
  780. let serid = e.currentTarget.dataset.serid;
  781. let times = e.currentTarget.dataset.times;
  782. this.setData({
  783. appointOrderId: id
  784. });
  785. if (times > 1) {
  786. this.setData({
  787. appointDiaShow: true,
  788. serviceId: ''
  789. });
  790. util.request(
  791. api.getBooked, {
  792. orderId: id
  793. },
  794. 'GET'
  795. ).then((res) => {
  796. if (res.errno === 0) {
  797. this.setData({
  798. serModifyList: res.data
  799. });
  800. }
  801. });
  802. } else {
  803. uni.navigateTo({
  804. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + id + '&serviceId=' + serid
  805. });
  806. }
  807. },
  808. onCancelClick() {},
  809. cancelAppoint(e) {
  810. let id = e.currentTarget.dataset.id;
  811. let serid = e.currentTarget.dataset.serid;
  812. let times = e.currentTarget.dataset.times;
  813. this.setData({
  814. appointOrderId: id
  815. });
  816. if (times > 1) {
  817. this.setData({
  818. cancelFirstShow: true,
  819. serviceId: ''
  820. });
  821. util.request(
  822. api.getBooked, {
  823. orderId: id
  824. },
  825. 'GET'
  826. ).then((res) => {
  827. if (res.errno === 0) {
  828. this.setData({
  829. serModifyList: res.data
  830. });
  831. }
  832. });
  833. } else {
  834. this.setData({
  835. cancelShow: true,
  836. serviceId: serid
  837. });
  838. }
  839. },
  840. cancelItemSelect(e) {
  841. this.setData({
  842. cancelReason: e.currentTarget.dataset.id
  843. });
  844. },
  845. onCancelPopupClose() {
  846. this.setData({
  847. cancelShow: false
  848. });
  849. },
  850. onCancelPopupCloseFir() {
  851. this.setData({
  852. cancelFirstShow: false
  853. });
  854. },
  855. cancelFirstConfirm() {
  856. if (this.serviceId == '' || this.serviceId == null) {
  857. uni.showToast({
  858. title: '请选择要取消的服务',
  859. icon: 'none'
  860. });
  861. return false;
  862. }
  863. this.setData({
  864. cancelFirstShow: false,
  865. cancelShow: true
  866. });
  867. },
  868. cancelItemConfirm() {
  869. let that = this;
  870. if (that.cancelReason == '') {
  871. util.showErrorToast('请选择取消原因');
  872. return;
  873. }
  874. uni.showLoading({
  875. title: '提交中'
  876. });
  877. util.request(
  878. api.OrderBookCancel, {
  879. detailId: this.serviceId,
  880. cancelReason: this.cancelReason
  881. },
  882. 'POST'
  883. ).then((res) => {
  884. uni.hideLoading();
  885. if (res.errno === 0) {
  886. uni.showModal({
  887. title: '提示',
  888. content: '您已成功取消预约',
  889. showCancel: false,
  890. confirmColor: '#D77958',
  891. confirmText: '确定',
  892. success: function (res) {
  893. }
  894. });
  895. uni.showToast({
  896. title: '提交成功'
  897. });
  898. this.setData({
  899. cancelShow: false,
  900. orderList: [],
  901. page: 1
  902. });
  903. this.getOrderList();
  904. } else {
  905. uni.showToast({
  906. title: res.errmsg,
  907. icon: 'none'
  908. });
  909. }
  910. });
  911. },
  912. goSaveQrcode() {
  913. console.log('占位:函数 goSaveQrcode 未声明');
  914. },
  915. hidePoster() {
  916. console.log('占位:函数 hidePoster 未声明');
  917. }
  918. }
  919. };
  920. </script>
  921. <style>
  922. page {
  923. /* height: 100%; */
  924. width: 100%;
  925. background: #f4f4f4;
  926. }
  927. .orders-switch {
  928. width: 100%;
  929. background: #fff;
  930. height: 84rpx;
  931. }
  932. .orders-switch .item {
  933. display: inline-block;
  934. height: 82rpx;
  935. width: 18%;
  936. padding: 0 15rpx;
  937. text-align: center;
  938. }
  939. .orders-switch .item .txt {
  940. display: inline-block;
  941. height: 82rpx;
  942. padding: 0 20rpx;
  943. line-height: 82rpx;
  944. color: #9a9ba1;
  945. font-size: 30rpx;
  946. width: 170rpx;
  947. }
  948. .orders-switch .item.active .txt {
  949. color: #ab956d;
  950. border-bottom: 4rpx solid #ab956d;
  951. }
  952. .no-order {
  953. width: 100%;
  954. height: auto;
  955. margin: 0 auto;
  956. }
  957. .no-order .c {
  958. width: 100%;
  959. height: auto;
  960. padding-top: 400rpx;
  961. }
  962. .no-order .c text {
  963. margin: 0 auto;
  964. display: block;
  965. width: 258rpx;
  966. height: 29rpx;
  967. line-height: 29rpx;
  968. text-align: center;
  969. font-size: 29rpx;
  970. color: #999;
  971. }
  972. .orders {
  973. height: auto;
  974. width: 750rpx;
  975. /* overflow: hidden; */
  976. padding: 0 24rpx;
  977. margin-top: 110rpx;
  978. }
  979. .order {
  980. background: #fff;
  981. padding: 0 24rpx 24rpx 24rpx;
  982. border-radius: 24rpx;
  983. margin-bottom: 24rpx;
  984. }
  985. .order .h {
  986. height: 72rpx;
  987. border-bottom: 2rpx solid #e0e0e0;
  988. color: #191919;
  989. font-size: 28rpx;
  990. font-weight: bold;
  991. display: flex;
  992. align-items: center;
  993. justify-content: space-between;
  994. }
  995. .order .goods {
  996. display: flex;
  997. /* align-items: center; */
  998. padding: 24rpx 0 0;
  999. position: relative;
  1000. }
  1001. .order .goods .img {
  1002. height: 190rpx;
  1003. width: 190rpx;
  1004. background: #f4f4f4;
  1005. }
  1006. .order .goods .img image {
  1007. height: 190rpx;
  1008. width: 190rpx;
  1009. overflow: hidden;
  1010. border-radius: 10rpx;
  1011. }
  1012. .order .goods .info {
  1013. height: 145.83rpx;
  1014. flex: 1;
  1015. padding-left: 20rpx;
  1016. }
  1017. .info-orderSn {
  1018. font-size: 28rpx;
  1019. font-weight: bold;
  1020. }
  1021. .info-main {
  1022. display: flex;
  1023. height: 40rpx;
  1024. align-items: center;
  1025. justify-content: space-between;
  1026. /* margin-bottom: 58rpx; */
  1027. }
  1028. .info .sku-name {
  1029. color: #666666;
  1030. font-size: 24rpx;
  1031. margin: 10rpx 0;
  1032. height: 34rpx;
  1033. line-height: 34rpx;
  1034. display: flex;
  1035. justify-content: space-between;
  1036. }
  1037. .product-name {
  1038. line-height: 40rpx;
  1039. font-size: 28rpx;
  1040. /* padding-left: 20rpx;
  1041. text-indent: -16rpx; */
  1042. overflow: hidden;
  1043. text-overflow: ellipsis;
  1044. white-space: nowrap;
  1045. width: 328rpx;
  1046. font-weight: bold;
  1047. color: rgba(0, 0, 0, 0.9);
  1048. }
  1049. .info-main .price {
  1050. color: rgba(0, 0, 0, 0.9);
  1051. font-size: 24rpx;
  1052. font-weight: bold;
  1053. }
  1054. .info .other-info {
  1055. font-size: 24rpx;
  1056. color: rgba(0, 0, 0, 0.9);
  1057. line-height: 34rpx;
  1058. }
  1059. .order .goods .status {
  1060. width: 105rpx;
  1061. color: #b4282d;
  1062. font-size: 25rpx;
  1063. }
  1064. .order .b {
  1065. height: 44rpx;
  1066. line-height: 44rpx;
  1067. /* border-top: 1px solid #f4f4f4; */
  1068. font-size: 26rpx;
  1069. color: #666;
  1070. text-align: right;
  1071. }
  1072. .order .b text {
  1073. font-size: 24rpx;
  1074. color: rgba(0, 0, 0, 0.9);
  1075. font-weight: bold;
  1076. }
  1077. .order .b .r {
  1078. float: right;
  1079. }
  1080. .order .b .btn {
  1081. margin-top: 19rpx;
  1082. height: 64.5rpx;
  1083. line-height: 64.5rpx;
  1084. text-align: center;
  1085. padding: 0 20rpx;
  1086. border-radius: 5rpx;
  1087. font-size: 28rpx;
  1088. color: #fff;
  1089. background: #b4282d;
  1090. }
  1091. .order-operate-wrapper {
  1092. /* height: 80rpx; */
  1093. display: flex;
  1094. align-items: center;
  1095. justify-content: flex-end;
  1096. flex: 1;
  1097. flex-wrap: wrap;
  1098. border-top: 2rpx solid #e0e0e0;
  1099. padding: 10rpx 0 12rpx;
  1100. margin: 20rpx 0 0;
  1101. }
  1102. /* .order-operate-wrapper::after {
  1103. content: '';
  1104. flex: auto;
  1105. } */
  1106. .order-operate-wrapper>view {
  1107. text-align: center;
  1108. font-size: 24rpx;
  1109. color: #fff;
  1110. margin-left: 20rpx;
  1111. width: 145rpx;
  1112. height: 44rpx;
  1113. line-height: 44rpx;
  1114. background: #C0A182;
  1115. border-radius: 56rpx;
  1116. margin-top: 10rpx;
  1117. }
  1118. .order-operate-wrapper>view.del {
  1119. border: 2rpx solid #d8d8d8;
  1120. color: #666666;
  1121. background: #fff;
  1122. }
  1123. .order-operate-wrapper>view.appoint {
  1124. background: linear-gradient(90deg, #D77958 0%, #B24615 100%);
  1125. ;
  1126. }
  1127. .myqr {
  1128. position: fixed;
  1129. z-index: 999;
  1130. width: 100%;
  1131. text-align: center;
  1132. height: auto;
  1133. padding-top: 50rpx;
  1134. top: 0;
  1135. left: 0;
  1136. right: 0;
  1137. bottom: 0;
  1138. }
  1139. .myqr .cancel {
  1140. width: 60rpx;
  1141. height: 60rpx;
  1142. margin-top: 30rpx;
  1143. margin-left: 480rpx;
  1144. }
  1145. .myqr .img {
  1146. width: 480rpx;
  1147. }
  1148. .myqr .btn {
  1149. width: 120rpx;
  1150. height: 120rpx;
  1151. line-height: 120rpx;
  1152. margin-top: 20rpx;
  1153. padding: 30rpx;
  1154. background: #ffffff;
  1155. border-radius: 60rpx;
  1156. }
  1157. /* 会员卡蒙层的样式 */
  1158. .poster {
  1159. position: fixed;
  1160. top: 0;
  1161. bottom: 0;
  1162. right: 0;
  1163. left: 0;
  1164. background-color: #333333d1;
  1165. /* padding: 0rpx 80rpx;
  1166. padding-top: 20%;*/
  1167. z-index: 99;
  1168. height: 100%;
  1169. text-align: center;
  1170. justify-content: center;
  1171. align-items: center;
  1172. display: flex;
  1173. }
  1174. .title {
  1175. color: #fff;
  1176. margin: 20rpx 0;
  1177. font-size: 30rpx;
  1178. }
  1179. .ads {
  1180. margin: 10rpx 0rpx;
  1181. color: #fff;
  1182. }
  1183. .tool {
  1184. display: flex;
  1185. text-align: center;
  1186. justify-content: baseline;
  1187. width: 100%;
  1188. margin-top: 20rpx;
  1189. }
  1190. .tool view {
  1191. flex: 1;
  1192. }
  1193. .img {
  1194. width: 99rpx;
  1195. }
  1196. .closeImg {
  1197. width: 57rpx;
  1198. height: 57rpx;
  1199. }
  1200. .share-btn {
  1201. background-color: transparent;
  1202. }
  1203. .share-btn::after {
  1204. border: none;
  1205. }
  1206. .m-card {
  1207. width: 100%;
  1208. height: 230rpx;
  1209. margin: 20rpx 0;
  1210. }
  1211. .m-card image {
  1212. width: 100%;
  1213. height: 230rpx;
  1214. }
  1215. .appoint-tabs-wrapper {
  1216. height: 88rpx;
  1217. display: flex;
  1218. align-items: center;
  1219. line-height: 88rpx;
  1220. justify-content: space-around;
  1221. position: fixed;
  1222. left: 0;
  1223. right: 0;
  1224. top: 0rpx;
  1225. background: #fff;
  1226. z-index: 99;
  1227. }
  1228. .appoint-tab-item {
  1229. font-weight: bold;
  1230. font-size: 30rpx;
  1231. color: #191919;
  1232. /* width:80rpx; */
  1233. }
  1234. .appoint-tab-item.active {
  1235. color: #FF0101;
  1236. /* border-bottom:4rpx solid #09afff; */
  1237. }
  1238. .detail-btn {
  1239. width: 148rpx;
  1240. text-align: center;
  1241. line-height: 60rpx;
  1242. text-align: center;
  1243. font-size: 26rpx;
  1244. color: #00b9ff;
  1245. margin-top: -20rpx;
  1246. /* margin-left:340rpx; */
  1247. width: 170rpx;
  1248. height: 60rpx;
  1249. background: #ffffff;
  1250. border: 2rpx solid #00b9ff;
  1251. border-radius: 60px;
  1252. float: right;
  1253. }
  1254. .status-tips {
  1255. height: 56rpx;
  1256. background: #ebebeb;
  1257. border-radius: 10rpx;
  1258. display: flex;
  1259. align-items: center;
  1260. padding: 0 0 0 16rpx;
  1261. margin-top: 24rpx;
  1262. }
  1263. .status-tips image {
  1264. width: 36rpx;
  1265. height: 32rpx;
  1266. }
  1267. .status-tips view {
  1268. font-size: 24rpx;
  1269. color: #2e3333;
  1270. }
  1271. .status-tips .tips-title {
  1272. color: #191919;
  1273. font-weight: bold;
  1274. margin: 0 16rpx;
  1275. }
  1276. .customer-msg {
  1277. background: #ebebeb;
  1278. border-radius: 10rpx;
  1279. display: flex;
  1280. padding: 12rpx 16rpx;
  1281. margin-top: 24rpx;
  1282. }
  1283. .customer-msg .msg-title {
  1284. color: #fe2b54;
  1285. font-weight: bold;
  1286. font-size: 24rpx;
  1287. white-space: nowrap;
  1288. }
  1289. .customer-msg .msg-text {
  1290. line-height: 34rpx;
  1291. display: -webkit-box;
  1292. -webkit-box-orient: vertical;
  1293. -webkit-line-clamp: 2;
  1294. text-overflow: ellipsis;
  1295. overflow: hidden;
  1296. font-size: 24rpx;
  1297. color: #000000;
  1298. }
  1299. .over-time {
  1300. position: absolute;
  1301. top: 170rpx;
  1302. right: 0;
  1303. line-height: 40rpx;
  1304. color: #ad0000;
  1305. font-size: 28rpx;
  1306. }
  1307. .eval-btn {
  1308. text-align: center;
  1309. font-size: 24rpx;
  1310. color: #fff;
  1311. margin-left: 20rpx;
  1312. width: 160rpx;
  1313. height: 56rpx;
  1314. line-height: 56rpx;
  1315. background: linear-gradient(90deg, #ff9c49 0%, #ff8219 100%);
  1316. border-radius: 56rpx;
  1317. margin-top: 10rpx;
  1318. border: 2rpx solid #ff8219;
  1319. color: #ff8219;
  1320. background: #fff;
  1321. }
  1322. .order-operate-wrapper view.eval-btn {
  1323. border: 2rpx solid #ff8219;
  1324. color: #ff8219;
  1325. background: #fff;
  1326. }
  1327. .tips-item {
  1328. background: #fff;
  1329. border-radius: 12rpx;
  1330. padding: 30rpx 0rpx 0;
  1331. margin-bottom: 20rpx;
  1332. }
  1333. .tips-item-title {
  1334. display: flex;
  1335. height: 40rpx;
  1336. align-items: center;
  1337. justify-content: space-between;
  1338. margin-bottom: 20rpx;
  1339. padding: 0 32rpx;
  1340. }
  1341. .item-title-left {
  1342. display: flex;
  1343. align-items: center;
  1344. }
  1345. .item-title-left image {
  1346. width: 28rpx;
  1347. height: 28rpx;
  1348. margin-right: 8rpx;
  1349. }
  1350. .item-title-left text {
  1351. font-size: 28rpx;
  1352. font-weight: bold;
  1353. color: #333;
  1354. }
  1355. .item-title-right {
  1356. height: 34rpx;
  1357. background: #ffffff;
  1358. border-radius: 4rpx;
  1359. border: 1rpx solid #5fb306;
  1360. padding: 0 8rpx;
  1361. line-height: 34rpx;
  1362. font-size: 22rpx;
  1363. color: #5fb306;
  1364. }
  1365. .tips-item-line {
  1366. display: flex;
  1367. height: 44rpx;
  1368. margin-bottom: 20rpx;
  1369. align-items: center;
  1370. justify-content: space-between;
  1371. padding: 0 32rpx;
  1372. }
  1373. .tips-item-line .line-left {
  1374. font-size: 28rpx;
  1375. color: #999999;
  1376. }
  1377. .tips-item-line .line-right {
  1378. font-size: 28rpx;
  1379. color: #333333;
  1380. font-weight: bold;
  1381. width: 500rpx;
  1382. overflow: hidden;
  1383. white-space: nowrap;
  1384. text-overflow: ellipsis;
  1385. text-align: right;
  1386. }
  1387. .line-right text {
  1388. color: #5fb306;
  1389. }
  1390. .tips-item-content {
  1391. background: #ff4447;
  1392. border-radius: 0rpx 0rpx 14rpx 14rpx;
  1393. padding: 24rpx 24rpx 24rpx 32rpx;
  1394. line-height: 40rpx;
  1395. font-size: 28rpx;
  1396. color: rgba(255, 255, 255, 0.9);
  1397. }
  1398. .order-devide {
  1399. height: 40rpx;
  1400. margin-bottom: 20rpx;
  1401. display: flex;
  1402. align-items: center;
  1403. justify-content: space-between;
  1404. padding: 0 4rpx;
  1405. }
  1406. .order-devide .line {
  1407. width: 290rpx;
  1408. height: 1rpx;
  1409. background: #979797;
  1410. }
  1411. .order-devide .devide-text {
  1412. font-size: 28rpx;
  1413. color: #999999;
  1414. }
  1415. /* 退款弹框 */
  1416. .refund-order-overlay {
  1417. width: 750rpx;
  1418. height: 100vh;
  1419. background: rgba(0, 0, 0, 0.5);
  1420. display: flex;
  1421. align-items: center;
  1422. justify-content: center;
  1423. position: fixed;
  1424. top: 0;
  1425. bottom: 0;
  1426. z-index: 999;
  1427. flex-direction: column;
  1428. }
  1429. .refund-order-dialog {
  1430. width: 606rpx;
  1431. height: 644rpx;
  1432. border-radius: 14rpx;
  1433. background: #ffffff;
  1434. border-radius: 20rpx;
  1435. position: relative;
  1436. padding: 300rpx 30rpx 40rpx;
  1437. background: url('https://mall.zhaijieshi.cc/file/wx-huawang/bj3.png') no-repeat;
  1438. background-color: #ffffff;
  1439. background-size: 606rpx 210rpx;
  1440. }
  1441. .refund-order-dialog.refund-order-dia-success {
  1442. padding: 200rpx 30rpx 40rpx;
  1443. background-image: url('https://mall.zhaijieshi.cc/file/wx-huawang/bj3.png');
  1444. height: auto;
  1445. background-size: 100% 28%;
  1446. }
  1447. .title-icong {
  1448. width: 129rpx;
  1449. height: 91rpx;
  1450. position: absolute;
  1451. top: 60rpx;
  1452. left: 240rpx;
  1453. }
  1454. .refund-order-dia-success .dia-btn-wrapper {
  1455. justify-content: center;
  1456. }
  1457. .refund-order-dia-success .dia-cancel-btn {
  1458. width: 484rpx;
  1459. font-weight: bold;
  1460. border: 2rpx solid #d77958;
  1461. color: #d77958;
  1462. }
  1463. .refund-dia-title {
  1464. height: 56rpx;
  1465. font-weight: bold;
  1466. font-size: 40rpx;
  1467. color: rgba(0, 0, 0, 0.85);
  1468. line-height: 56rpx;
  1469. text-align: center;
  1470. margin: 60rpx 0 34rpx;
  1471. }
  1472. .refund-dia-tips {
  1473. width: 540rpx;
  1474. color: #333333;
  1475. line-height: 46rpx;
  1476. font-size: 32rpx;
  1477. color: rgba(0, 0, 0, 0.85);
  1478. text-align: center;
  1479. white-space: wrap;
  1480. margin-bottom: 120rpx;
  1481. font-weight: bold;
  1482. }
  1483. .dia-btn-wrapper {
  1484. height: 94rpx;
  1485. display: flex;
  1486. justify-content: space-between;
  1487. }
  1488. .dia-cancel-btn {
  1489. width: 248rpx;
  1490. height: 94rpx;
  1491. line-height: 94rpx;
  1492. border-radius: 94rpx;
  1493. border: 2rpx solid #d77958;
  1494. font-size: 32rpx;
  1495. color: #d77958;
  1496. text-align: center;
  1497. }
  1498. .dia-conf-btn {
  1499. width: 258rpx;
  1500. height: 94rpx;
  1501. line-height: 94rpx;
  1502. border-radius: 94rpx;
  1503. font-size: 32rpx;
  1504. color: #fff;
  1505. font-weight: bold;
  1506. background: #d77958;
  1507. text-align: center;
  1508. }
  1509. .modify-list {
  1510. margin: 0 0 44rpx;
  1511. max-height: 400rpx;
  1512. overflow-y: scroll;
  1513. }
  1514. .modify-item {
  1515. height: 46rpx;
  1516. margin-bottom: 18rpx;
  1517. display: flex;
  1518. align-items: center;
  1519. justify-content: center;
  1520. line-height: 46rpx;
  1521. }
  1522. .modify-item image {
  1523. width: 30rpx;
  1524. height: 30rpx;
  1525. margin-right: 16rpx;
  1526. }
  1527. .modify-item view {
  1528. font-size: 32rpx;
  1529. color: #999;
  1530. }
  1531. .modify-item view.current-modify {
  1532. color: #d77958;
  1533. /* font-weight: bold; */
  1534. }
  1535. .modify-close {
  1536. width: 80rpx;
  1537. height: 80rpx;
  1538. margin-top: 58rpx;
  1539. }
  1540. .warning-color {
  1541. background-color: #fff !important;
  1542. border: 1rpx solid #d77958;
  1543. color: #d77958 !important;
  1544. }
  1545. /* 选择备注 */
  1546. .appoint-overlay-wrapper.remark-overlay {
  1547. display: flex;
  1548. align-items: flex-end;
  1549. justify-content: center;
  1550. position: fixed;
  1551. top: 0;
  1552. left: 0;
  1553. right: 0;
  1554. bottom: 0;
  1555. background-color: rgba(0, 0, 0, 0.7);
  1556. z-index: 999;
  1557. }
  1558. .remark-select {
  1559. width: 750rpx;
  1560. padding: 0 24rpx 56rpx;
  1561. background: #ffffff;
  1562. border-radius: 24rpx 24rpx 0 0;
  1563. }
  1564. .remark-select .title {
  1565. font-weight: 600;
  1566. color: #191919;
  1567. font-size: 30rpx;
  1568. height: 90rpx;
  1569. line-height: 90rpx;
  1570. text-align: center;
  1571. border-bottom: 2rpx solid #e0e0e0;
  1572. }
  1573. .remark-item .remark-value {
  1574. color: #191919;
  1575. font-size: 26rpx;
  1576. font-weight: bold;
  1577. flex: 1;
  1578. text-align: left;
  1579. }
  1580. .remark-list .remark-item {
  1581. height: 84rpx;
  1582. display: flex;
  1583. border-bottom: 2rpx solid #e0e0e0;
  1584. align-items: center;
  1585. }
  1586. .remark-item .radio-img {
  1587. width: 26rpx;
  1588. height: 26rpx;
  1589. }
  1590. .remark-conf-btn {
  1591. width: 652rpx;
  1592. height: 90rpx;
  1593. line-height: 90rpx;
  1594. border-radius: 90rpx;
  1595. border: 4rpx solid #d77958;
  1596. text-align: center;
  1597. font-size: 36rpx;
  1598. color: #d77958;
  1599. margin: 0 auto;
  1600. margin-top: 54rpx;
  1601. }
  1602. .remark-list .remark-item.ser-item {
  1603. border: #d77958 1rpx solid;
  1604. border-radius: 12px;
  1605. height: 130rpx;
  1606. padding: 0 30rpx;
  1607. margin-bottom: 24rpx;
  1608. }
  1609. .remark-list .remark-item.ser-item.current-ser {
  1610. background: #FEEBD7;
  1611. border: none;
  1612. }
  1613. .remark-item.ser-item .remark-value {
  1614. color: #d77958;
  1615. font-size: 29rpx;
  1616. font-weight: normal;
  1617. flex: 1;
  1618. }
  1619. .remark-item.ser-item view {
  1620. color: #d77958;
  1621. font-size: 32rpx;
  1622. font-weight: normal;
  1623. }
  1624. .remark-item.ser-item.current-ser .remark-value {
  1625. color: #d77958;
  1626. }
  1627. .remark-item.ser-item.current-ser view {
  1628. color: #d77958;
  1629. }
  1630. .remark-item.ser-item .radio-img {
  1631. width: 30rpx;
  1632. height: 30rpx;
  1633. margin-right: 26rpx;
  1634. }
  1635. .ser-right {
  1636. text-align: right;
  1637. }
  1638. .remark-list.ser-list {
  1639. min-height: 500rpx;
  1640. max-height: 800rpx;
  1641. overflow-y: scroll;
  1642. }
  1643. </style>