index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. <template>
  2. <view :data-theme="theme">
  3. <view class="order-details">
  4. <!-- 给header上与data上加on为退款订单-->
  5. <view class="header bg_color">
  6. <view class="picTxt acea-row row-middle">
  7. <view class="data">
  8. <view class="state">{{
  9. orderInfo.status | orderStatusFilter
  10. }}</view>
  11. <view v-if="orderInfo.refundReasonTime !== null">{{
  12. orderInfo.refundReasonTime
  13. }}</view>
  14. <view v-if="orderInfo.createTime">{{ orderInfo.createTime }}</view>
  15. </view>
  16. </view>
  17. </view>
  18. <view class="borderPad" style="margin: -100rpx auto 0 auto">
  19. <view
  20. v-if="
  21. orderInfo.status !== 9 && (shippingType === 1 || shippingType === 3)
  22. "
  23. class="nav"
  24. >
  25. <view class="navCon acea-row row-between-wrapper">
  26. <view :class="orderInfo.status == 0 ? 'on' : ''">待付款</view>
  27. <view :class="orderInfo.status == 1 ? 'on' : ''">待发货</view>
  28. <view :class="orderInfo.status == 4 ? 'on' : ''">待收货</view>
  29. <view :class="orderInfo.status == 5 ? 'on' : ''">已收货</view>
  30. <view :class="orderInfo.status == 6 ? 'on' : ''">已完成</view>
  31. </view>
  32. <!-- 订单状态(0:待支付,1:待发货,2:部分发货, 3:待核销,4:待收货,5:已收货,6:已完成,9:已取消) -->
  33. <view class="progress acea-row row-between-wrapper">
  34. <view
  35. class="iconfont"
  36. :class="
  37. (orderInfo.status == 0
  38. ? 'icon-webicon318'
  39. : 'icon-yuandianxiao') +
  40. ' ' +
  41. (orderInfo.status >= 0 ? 'font_color' : '')
  42. "
  43. >
  44. </view>
  45. <view
  46. class="line"
  47. :class="orderInfo.status > 0 ? 'bg_color' : ''"
  48. ></view>
  49. <view
  50. class="iconfont"
  51. :class="
  52. (orderInfo.status == 1
  53. ? 'icon-webicon318'
  54. : 'icon-yuandianxiao') +
  55. ' ' +
  56. (orderInfo.status >= 1 ? 'font_color' : '')
  57. "
  58. >
  59. </view>
  60. <view
  61. class="line"
  62. :class="orderInfo.status > 2 ? 'bg_color' : ''"
  63. ></view>
  64. <view
  65. class="iconfont"
  66. :class="
  67. (orderInfo.status == 4
  68. ? 'icon-webicon318'
  69. : 'icon-yuandianxiao') +
  70. ' ' +
  71. (orderInfo.status >= 4 ? 'font_color' : '')
  72. "
  73. >
  74. </view>
  75. <view
  76. class="line"
  77. :class="orderInfo.status > 4 ? 'bg_color' : ''"
  78. ></view>
  79. <view
  80. class="iconfont"
  81. :class="
  82. (orderInfo.status == 5
  83. ? 'icon-webicon318'
  84. : 'icon-yuandianxiao') +
  85. ' ' +
  86. (orderInfo.status >= 5 ? 'font_color' : '')
  87. "
  88. >
  89. </view>
  90. <view
  91. class="line"
  92. :class="orderInfo.status > 5 ? 'bg_color' : ''"
  93. ></view>
  94. <view
  95. class="iconfont"
  96. :class="
  97. (orderInfo.status == 6
  98. ? 'icon-webicon318'
  99. : 'icon-yuandianxiao') +
  100. ' ' +
  101. (orderInfo.status >= 6 ? 'font_color' : '')
  102. "
  103. >
  104. </view>
  105. </view>
  106. </view>
  107. <view v-if="shippingType === 2" class="nav">
  108. <view class="navCon acea-row row-between-wrapper">
  109. <view :class="orderInfo.status == 0 ? 'on' : ''">待付款</view>
  110. <view :class="orderInfo.status == 3 ? 'on' : ''">待核销</view>
  111. <view :class="orderInfo.status == 6 ? 'on' : ''">已收货</view>
  112. </view>
  113. <!-- 订单状态(0:待支付,1:待发货,2:部分发货, 3:待核销,4:待收货,5:已收货,6:已完成,9:已取消) -->
  114. <view class="progress acea-row row-between-wrapper">
  115. <view
  116. class="iconfont"
  117. :class="
  118. (orderInfo.status == 0
  119. ? 'icon-webicon318'
  120. : 'icon-yuandianxiao') +
  121. ' ' +
  122. (orderInfo.status >= 0 ? 'font_color' : '')
  123. "
  124. >
  125. </view>
  126. <view
  127. class="line"
  128. :class="orderInfo.status > 0 ? 'bg_color' : ''"
  129. ></view>
  130. <view
  131. class="iconfont"
  132. :class="
  133. (orderInfo.status == 3
  134. ? 'icon-webicon318'
  135. : 'icon-yuandianxiao') +
  136. ' ' +
  137. (orderInfo.status >= 3 ? 'font_color' : '')
  138. "
  139. >
  140. </view>
  141. <view
  142. class="line"
  143. :class="orderInfo.status > 4 ? 'bg_color' : ''"
  144. ></view>
  145. <view
  146. class="iconfont"
  147. :class="
  148. (orderInfo.status == 5
  149. ? 'icon-webicon318'
  150. : 'icon-yuandianxiao') +
  151. ' ' +
  152. (orderInfo.status >= 5 ? 'font_color' : '')
  153. "
  154. >
  155. </view>
  156. </view>
  157. </view>
  158. <view
  159. v-for="(item, index) in orderInfo.merchantOrderList"
  160. :key="item.merId"
  161. >
  162. <view class="borRadius14 orderGoodsBox">
  163. <orderGoods
  164. :orderInfo="item"
  165. :orderNo="orderNo"
  166. :cartInfo="item.orderInfoList"
  167. :jump="true"
  168. :orderData="orderInfo"
  169. :isShowBtn="false"
  170. ></orderGoods>
  171. <view class="flex justify-between userRemarkBox">
  172. <view class="f-s-30 color28">配送方式:</view>
  173. <view class="cor-86 f-s-30">自动发货</view>
  174. </view>
  175. <view class="flex justify-between userRemarkBox">
  176. <view class="f-s-30 color28">买家留言:</view>
  177. <view class="flex align-center userRemark">
  178. <view class="cor-86 f-s-30">{{ item.userRemark || "-" }}</view>
  179. </view>
  180. <view v-show="!isShow" @click="isShow = !isShow">
  181. <view class="mark_show f-s-30">{{ item.userRemark }}</view>
  182. </view>
  183. </view>
  184. </view>
  185. <!-- 云盘信息 -->
  186. <view
  187. v-if="secondType === ProductTypeEnum.CloudDrive && orderInfo.paid"
  188. >
  189. <view
  190. v-for="(items, index) in item.orderInfoList"
  191. :key="items.id"
  192. class="borRadius14 fictitious wrapper"
  193. >
  194. <view class="item acea-row row-between">
  195. <view class="f-s-30 color28">云盘信息:</view>
  196. <!-- #ifndef H5 -->
  197. <text
  198. class="copy f-s-22 font-color"
  199. @tap="handleCopy(items.expand)"
  200. >复制</text
  201. >
  202. <!-- #endif -->
  203. <!-- #ifdef H5 -->
  204. <text
  205. class="copy copy-data f-s-22 font-color"
  206. :data-clipboard-text="items.expand"
  207. >复制</text
  208. >
  209. <!-- #endif -->
  210. </view>
  211. <view class="mt-26 bg-color-F5F5F5 rd-8rpx padding20">
  212. <view class="f-s-26 text-666 lh-34rpx break-word">
  213. {{ items.expand }}
  214. </view>
  215. </view>
  216. </view>
  217. </view>
  218. <!-- 卡密信息 -->
  219. <view
  220. v-if="secondType === ProductTypeEnum.CardPassword && orderInfo.paid"
  221. >
  222. <view
  223. v-for="items in item.orderInfoList"
  224. :key="index"
  225. class="borRadius14 fictitious wrapper"
  226. >
  227. <view class="item acea-row row-between">
  228. <view class="f-s-30 color28">卡密信息:</view>
  229. </view>
  230. <view class="mt-26">
  231. <view
  232. v-for="its in items.cardSecretList"
  233. :key="its.id"
  234. class="item acea-row row-between bg-color-F5F5F5 rd-8rpx padding20"
  235. >
  236. <view style="width: 540rpx">
  237. <view class="f-s-26 text-666 mb-20 break-word"
  238. >卡号:{{ its.cardNumber }}</view
  239. >
  240. <view class="f-s-26 text-666 break-word"
  241. >密码:{{ its.secretNum }}</view
  242. >
  243. </view>
  244. <!-- #ifndef H5 -->
  245. <text
  246. class="copy f-s-22 font-color"
  247. @tap="
  248. handleCopy(
  249. '卡号:' + its.cardNumber + ',密码:' + its.secretNum
  250. )
  251. "
  252. >复制</text
  253. >
  254. <!-- #endif -->
  255. <!-- #ifdef H5 -->
  256. <text
  257. class="copy copy-data f-s-22 font-color"
  258. :data-clipboard-text="
  259. '卡号:' + its.cardNumber + ',密码:' + its.secretNum
  260. "
  261. >复制</text
  262. >
  263. <!-- #endif -->
  264. </view>
  265. </view>
  266. </view>
  267. </view>
  268. </view>
  269. </view>
  270. <view v-if="orderExtend.length" class="borderPad">
  271. <view class="wrapper borRadius14">
  272. <systemFromInfo :orderExtend="orderExtend"></systemFromInfo>
  273. </view>
  274. </view>
  275. <!-- 订单信息 "-->
  276. <view class="borderPad">
  277. <view class="wrapper borRadius14">
  278. <view class="item acea-row row-between">
  279. <view>订单编号:</view>
  280. <view
  281. class="conter acea-row row-middle row-right"
  282. style="width: auto"
  283. ><text class="text-overflow">{{ orderInfo.orderNo }}</text>
  284. <!-- #ifndef H5 -->
  285. <text
  286. class="copy line-heightOne"
  287. @tap="handleCopy(orderInfo.orderNo)"
  288. >复制</text
  289. >
  290. <!-- #endif -->
  291. <!-- #ifdef H5 -->
  292. <text
  293. class="copy copy-data"
  294. :data-clipboard-text="orderInfo.orderNo"
  295. >复制</text
  296. >
  297. <!-- #endif -->
  298. </view>
  299. </view>
  300. <view class="item acea-row row-between" style="margin-top: 22rpx">
  301. <view>下单时间:</view>
  302. <view class="conter">{{ orderInfo.createTime || 0 }}</view>
  303. </view>
  304. <view class="item acea-row row-between">
  305. <view>支付状态:</view>
  306. <view class="conter" v-if="orderInfo.paid">已支付</view>
  307. <view class="conter" v-else>未支付</view>
  308. </view>
  309. <view v-if="orderInfo.payType" class="item acea-row row-between">
  310. <view>支付方式:</view>
  311. <view class="conter">{{ orderInfo.payType | payTypeFilter }}</view>
  312. </view>
  313. </view>
  314. <view class="wrapper borRadius14">
  315. <view class="item acea-row row-between">
  316. <view>商品总价:</view>
  317. <view class="conter">¥{{ orderInfo.proTotalPrice || 0 }}</view>
  318. </view>
  319. <view
  320. class="item acea-row row-between"
  321. v-if="orderInfo.payPostage > 0"
  322. >
  323. <view>运费:</view>
  324. <view class="conter">¥{{ orderInfo.payPostage || 0 }}</view>
  325. </view>
  326. <view
  327. class="item acea-row row-between"
  328. v-if="orderInfo.merCouponPrice > 0"
  329. >
  330. <view>店铺优惠:</view>
  331. <view class="conter">-¥{{ orderInfo.merCouponPrice || 0 }}</view>
  332. </view>
  333. <view
  334. class="item acea-row row-between"
  335. v-if="orderInfo.platCouponPrice > 0"
  336. >
  337. <view>平台优惠:</view>
  338. <view class="conter">-¥{{ orderInfo.platCouponPrice || 0 }}</view>
  339. </view>
  340. <view
  341. class="item acea-row row-between"
  342. v-if="orderInfo.integralPrice > 0"
  343. >
  344. <view>积分抵扣:</view>
  345. <view class="conter">-¥{{ orderInfo.integralPrice || 0 }}</view>
  346. </view>
  347. <view class="actualPay acea-row row-right"
  348. >实付款:<text class="money">¥{{ orderInfo.payPrice || 0 }}</text>
  349. </view>
  350. </view>
  351. <view style="height: 120rpx"></view>
  352. <!-- 订单状态(0:待支付,1:待发货,2:部分发货, 3:待核销,4:待收货,5:已收货,6:已完成,9:已取消) -->
  353. <view
  354. v-if="orderInfo.status !== 1 && orderInfo.status !== 5"
  355. class="footer acea-row row-right row-middle"
  356. >
  357. <view
  358. class="qs-btn"
  359. v-if="orderInfo.status == 0"
  360. @click.stop="cancelOrder"
  361. >取消订单</view
  362. >
  363. <view
  364. class="bnt bg_color"
  365. v-if="orderInfo.status == 4"
  366. @tap="confirmOrder"
  367. >确认收货</view
  368. >
  369. <view
  370. class="bnt cancel"
  371. v-if="orderInfo.status == 6 || orderInfo.status == 9"
  372. @tap="delOrder"
  373. >删除订单
  374. </view>
  375. <view
  376. class="bnt bg_color"
  377. v-if="orderInfo.status == 0"
  378. @tap="goPay(orderInfo)"
  379. >立即付款</view
  380. >
  381. <view
  382. class="bnt bg_color"
  383. v-if="orderInfo.status > 0"
  384. @tap="goOrderConfirm"
  385. >
  386. 再次购买</view
  387. >
  388. </view>
  389. </view>
  390. </view>
  391. </view>
  392. </template>
  393. <script>
  394. // +----------------------------------------------------------------------
  395. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  396. // +----------------------------------------------------------------------
  397. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  398. // +----------------------------------------------------------------------
  399. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  400. // +----------------------------------------------------------------------
  401. // | Author: CRMEB Team <admin@crmeb.com>
  402. // +----------------------------------------------------------------------
  403. import easyLoadimage from "@/components/base/easy-loadimage.vue";
  404. import {
  405. getOrderDetail,
  406. orderTake,
  407. orderDel,
  408. orderCancel,
  409. strToBase64Api,
  410. orderStatusImgApi,
  411. } from "@/api/order.js";
  412. import { cartBatchAddApi } from "@/api/product.js";
  413. import orderGoods from "../components/orderGoods";
  414. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  415. import { toLogin } from "@/libs/login.js";
  416. import { mapGetters } from "vuex";
  417. import { ProductTypeEnum } from "@/enums/productEnums";
  418. // #ifdef MP
  419. import uQRCode from "@/js_sdk/Sansnn-uQRCode/uqrcode.js";
  420. // #endif
  421. import { setThemeColor } from "@/utils/setTheme.js";
  422. import { Debounce } from "@/utils/validate.js";
  423. import systemFromInfo from "@/components/systemFromInfo";
  424. const app = getApp();
  425. export default {
  426. components: {
  427. orderGoods,
  428. easyLoadimage,
  429. systemFromInfo,
  430. },
  431. data() {
  432. return {
  433. ProductTypeEnum: ProductTypeEnum,
  434. codeImg: "",
  435. qrcodeSize: 100,
  436. orderNo: "",
  437. cartInfo: [], //购物车产品
  438. orderInfo: {
  439. systemStore: {},
  440. pstatus: {},
  441. }, //订单详情
  442. status: {}, //订单底部按钮状态
  443. totalPrice: "0",
  444. id: 0, //订单id
  445. uniId: "",
  446. utils: this.$util,
  447. againStatus: 0,
  448. secondType: 0, //二级订单类型
  449. isShow: true,
  450. theme: app.globalData.theme,
  451. bgColor: "#e93323",
  452. shippingType: 1,
  453. statusPic: "",
  454. isUserAddress: false, //是否只显示一次收货地址
  455. orderExtend: [], //系统表单数据
  456. };
  457. },
  458. computed: {
  459. //是否是虚拟商品
  460. isProductType() {
  461. return (
  462. this.secondType === this.ProductTypeEnum.CloudDrive ||
  463. this.secondType === this.ProductTypeEnum.CardPassword
  464. );
  465. },
  466. ...mapGetters(["isLogin", "chatUrl", "userInfo"]),
  467. },
  468. onLoad: function (options) {
  469. if (!options.orderNo)
  470. return this.$util.Tips(
  471. {
  472. title: "缺少参数",
  473. },
  474. {
  475. tab: 3,
  476. url: 1,
  477. }
  478. );
  479. this.$set(this, "orderNo", options.orderNo);
  480. this.bgColor = setThemeColor();
  481. uni.setNavigationBarColor({
  482. frontColor: "#ffffff",
  483. backgroundColor: this.bgColor,
  484. });
  485. },
  486. onShow() {
  487. if (this.isLogin) {
  488. this.getOrderInfo();
  489. } else {
  490. toLogin();
  491. }
  492. },
  493. onHide: function () {
  494. this.isClose = true;
  495. },
  496. // 滚动监听
  497. onPageScroll(e) {
  498. // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
  499. uni.$emit("scroll");
  500. },
  501. onReady: function () {
  502. // #ifdef H5
  503. this.$nextTick(function () {
  504. const clipboard = new ClipboardJS(".copy-data");
  505. clipboard.on("success", () => {
  506. this.$util.Tips({
  507. title: "复制成功",
  508. });
  509. });
  510. });
  511. // #endif
  512. },
  513. methods: {
  514. /**
  515. * 打开支付组件
  516. *
  517. */
  518. goPay: Debounce(function (item) {
  519. uni.showLoading({
  520. title: "加载中...",
  521. });
  522. uni.navigateTo({
  523. url: `/pages/goods/order_payment/index?orderNo=${item.orderNo}&payPrice=${item.payPrice}`,
  524. });
  525. }),
  526. /**
  527. * 拨打电话
  528. */
  529. makePhone: function (e) {
  530. uni.makePhoneCall({
  531. phoneNumber: e,
  532. });
  533. },
  534. /**
  535. * 获取订单详细信息
  536. *
  537. */
  538. getOrderInfo: function () {
  539. let that = this;
  540. uni.showLoading({
  541. title: "正在加载中",
  542. });
  543. getOrderDetail(that.orderNo)
  544. .then((res) => {
  545. uni.hideLoading();
  546. let data = res.data;
  547. that.$set(that, "orderInfo", data);
  548. that.$set(that, "id", data.id);
  549. that.$set(that, "secondType", data.secondType);
  550. that.$set(
  551. that,
  552. "shippingType",
  553. data.merchantOrderList[0].shippingType
  554. );
  555. that.$set(that, "cartInfo", data.merchantOrderList[0].orderInfoList);
  556. that.$set(
  557. that,
  558. "orderExtend",
  559. data.orderExtend ? JSON.parse(data.orderExtend) : []
  560. );
  561. if (that.orderInfo.refundStatus > 0) {
  562. uni.setNavigationBarColor({
  563. frontColor: "#fff",
  564. backgroundColor: "#666666",
  565. });
  566. }
  567. })
  568. .catch((err) => {
  569. that.$util.Tips(
  570. {
  571. title: err,
  572. },
  573. {
  574. tab: 4,
  575. url: "/pages/user/index",
  576. }
  577. );
  578. });
  579. },
  580. //剪切订单号
  581. // #ifndef H5
  582. handleCopy: function (num) {
  583. uni.setClipboardData({
  584. data: num,
  585. });
  586. },
  587. // #endif
  588. /**
  589. * 打电话
  590. */
  591. goTel: function () {
  592. uni.makePhoneCall({
  593. phoneNumber: this.orderInfo.deliveryId,
  594. });
  595. },
  596. /**
  597. * 再此购买
  598. *
  599. */
  600. goOrderConfirm: Debounce(function () {
  601. uni.showLoading({
  602. title: "加载中...",
  603. });
  604. let cartListRequest = [];
  605. let that = this;
  606. this.cartInfo.map((item) => {
  607. cartListRequest.push({
  608. productId: parseFloat(item.productId),
  609. productAttrUnique: item.attrValueId,
  610. cartNum: parseFloat(item.payNum),
  611. });
  612. });
  613. cartBatchAddApi(cartListRequest)
  614. .then(function (res) {
  615. uni.switchTab({
  616. url: "/pages/order_addcart/order_addcart",
  617. });
  618. })
  619. .catch((res) => {
  620. return this.$util.Tips({
  621. title: res,
  622. });
  623. });
  624. }),
  625. confirmOrder: Debounce(function () {
  626. let that = this;
  627. uni.showModal({
  628. title: "确认收货",
  629. content: "为保障权益,请收到货确认无误后,再确认收货",
  630. success: function (res) {
  631. if (res.confirm) {
  632. orderTake(that.orderNo)
  633. .then((res) => {
  634. return that.$util.Tips(
  635. {
  636. title: "操作成功",
  637. icon: "success",
  638. },
  639. function () {
  640. that.getOrderInfo();
  641. }
  642. );
  643. })
  644. .catch((err) => {
  645. return that.$util.Tips({
  646. title: err,
  647. });
  648. });
  649. }
  650. },
  651. });
  652. }),
  653. /**
  654. *
  655. * 删除订单
  656. */
  657. delOrder: Debounce(function () {
  658. uni.showModal({
  659. content: "确定删除该订单",
  660. cancelText: "取消",
  661. confirmText: "确定",
  662. showCancel: true,
  663. confirmColor: "#f55850",
  664. success: (res) => {
  665. if (res.confirm) {
  666. let that = this;
  667. orderDel(this.orderNo)
  668. .then((res) => {
  669. return that.$util.Tips(
  670. {
  671. title: "删除成功",
  672. icon: "success",
  673. },
  674. {
  675. tab: 4,
  676. url: "/pages/user/index",
  677. }
  678. );
  679. })
  680. .catch((err) => {
  681. return that.$util.Tips({
  682. title: err,
  683. });
  684. });
  685. } else {
  686. }
  687. },
  688. });
  689. }),
  690. cancelOrder: Debounce(function () {
  691. let self = this;
  692. uni.showModal({
  693. title: "提示",
  694. content: "确认取消该订单?",
  695. success: function (res) {
  696. if (res.confirm) {
  697. orderCancel(self.orderNo)
  698. .then((data) => {
  699. self.$util.Tips(
  700. {
  701. title: "取消成功",
  702. },
  703. {
  704. tab: 4,
  705. url: "/pages/user/index",
  706. }
  707. );
  708. })
  709. .catch((err) => {
  710. self.$util.Tips({
  711. title: err,
  712. });
  713. self.getDetail();
  714. });
  715. } else if (res.cancel) {
  716. console.log("用户点击取消");
  717. }
  718. },
  719. });
  720. }),
  721. },
  722. };
  723. </script>
  724. <style scoped lang="scss">
  725. @import "../static/css/order_details.scss";
  726. </style>