orderInfo.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  1. <template>
  2. <view class="detail-view">
  3. <view class="top-view clearfix">
  4. <view class="float_left">
  5. <view class="status-view">
  6. <text class="status-text">{{ order_detail.orderMsg }}</text>
  7. <u-icon name="arrow-right" size="40"></u-icon>
  8. </view>
  9. <view class="cancel-reson" v-if="[6, 7].includes(order_detail.orderStatus) && order_detail.extends.cancelReason">
  10. 取消原因:{{ order_detail.extends.cancelReason || '无' }}
  11. </view>
  12. </view>
  13. <view class="float_right" v-if="order_detail.deliveryType === 2 && order_detail.verifyCode">
  14. <u-icon name="tags-fill" color="#ffffff"></u-icon>
  15. <text style="margin-left: 10rpx;">{{ order_detail.verifyCode }}</text>
  16. </view>
  17. </view>
  18. <view class="customer-view">
  19. <view class="title clearfix">
  20. <view class="float_left ellipsis" @click="copyOrderInfo">
  21. <text style="margin-right: 20rpx;">{{ order_detail.customerName }}</text>
  22. <u-icon color="#879BBA" margin-right="10" name="copy1" custom-prefix="custom-icon" size="28"></u-icon>
  23. </view>
  24. <view class="float_right">
  25. <!-- <u-tag :text="order_detail.orderType === 23 ? '自提' : order_detail.deliveryName || '其他'" size="mini"
  26. type="primary" mode="plain" /> -->
  27. <view class="tag">{{ order_detail.orderType === 23 ? '自提' : order_detail.deliveryName || '其他' }}</view>
  28. </view>
  29. </view>
  30. <!-- 收货地址 -->
  31. <view class="delivery-view" v-if="order_detail.receiveData && order_detail.deliveryType !== 2">
  32. <view class="name-top clearfix">
  33. <view class="float_left ellipsis">{{ order_detail.receiveData.realName || '--' }}</view>
  34. <view class="float_right mobile" @click="callPhone(order_detail.receiveData.mobile)">
  35. <text>{{ order_detail.receiveData.mobile || '--' }}</text>
  36. <!-- <u-icon name="arrow-right" size="22"></u-icon> -->
  37. </view>
  38. </view>
  39. <view v-if="order_detail.receiveData.area" class="address-view">
  40. {{ order_detail.receiveData.area.provinceName }} {{ order_detail.receiveData.area.cityName }} {{ order_detail.receiveData.area.districtName }}
  41. {{ order_detail.receiveData.address }}
  42. </view>
  43. </view>
  44. <!-- 自提点 -->
  45. <view class="delivery-view" v-if="order_detail.deliveryType === 2 && selfRuleData && selfRuleData.name">
  46. <view class="name-top clearfix">
  47. <view class="float_left ellipsis">{{ selfRuleData.name || '--' }}</view>
  48. <view class="float_right mobile" @click="callPhone(selfRuleData.mobile)">
  49. <text>{{ selfRuleData.mobile || '--' }}</text>
  50. <u-icon name="arrow-right" size="22"></u-icon>
  51. </view>
  52. </view>
  53. <view class="address-view">{{ selfRuleData.provinceName }} {{ selfRuleData.cityName }} {{ selfRuleData.districtName }} {{ selfRuleData.address }}</view>
  54. <view class="address-view" style="padding-bottom: 10rpx;">
  55. 营业时间:
  56. <text v-if="selfRuleData.startTime && selfRuleData.endTime">{{ selfRuleData.startTime }}-{{ selfRuleData.endTime }}</text>
  57. <text v-else>全天</text>
  58. <text style="padding-left: 5px">{{ selfRuleData.day.join(',') }}</text>
  59. </view>
  60. </view>
  61. <view class="remark clearfix">
  62. <view class="remark_text float_left">备注:</view>
  63. <view class="float_right">{{ order_detail.remark || '无' }}</view>
  64. </view>
  65. </view>
  66. <!-- <view v-if='order_detail.orderStatus === 6 && order_detail.extends.cancelReason' class="customer-view1"
  67. style="margin-top: 20rpx;">
  68. <view class="title clearfix">
  69. <view class="float_left ellipsis">取消原因</view>
  70. </view>
  71. <view class="remark">{{ order_detail.extends.cancelReason || '无' }}</view>
  72. </view> -->
  73. <view class="customer-view" style="margin-top: 20rpx;" v-if="order_detail.deliveryType === 3 && order_detail.logisticsData">
  74. <view class="title clearfix">
  75. <view class="float_left ellipsis">{{ order_detail.logisticsData.name || '匿名司机' }}</view>
  76. <view class="float_right"><u-tag text="车辆信息" size="mini" type="primary" mode="plain" /></view>
  77. </view>
  78. <!-- 收货地址 -->
  79. <view class="delivery-view">
  80. <view class="name-top clearfix">
  81. <view class="float_left ellipsis">车牌号:{{ order_detail.logisticsData.truckName }}</view>
  82. <view class="float_right mobile" @click="callPhone(order_detail.logisticsData.truckTel)">
  83. <text>{{ order_detail.logisticsData.truckTel || '--' }}</text>
  84. <u-icon name="arrow-right" size="22"></u-icon>
  85. </view>
  86. </view>
  87. <view class="address-view">{{ order_detail.logisticsData.remark }}</view>
  88. </view>
  89. </view>
  90. <view class="detail-cont">
  91. <view class="info-li clearfix">
  92. <view class="label">订单编号</view>
  93. <view class="value" @click="copy(order_detail.no)">
  94. <u-icon color="#879BBA" margin-right="10" label-pos="left" :label="order_detail.no || '--'" name="copy1" custom-prefix="custom-icon" size="28"></u-icon>
  95. </view>
  96. </view>
  97. <view class="info-li clearfix">
  98. <view class="label">下单时间</view>
  99. <view class="value">{{ $u.timeFormat(order_detail.createTime, 'yyyy-mm-dd hh:MM:ss') }}</view>
  100. </view>
  101. <view class="info-li clearfix">
  102. <view class="label">出库状态</view>
  103. <view class="value">
  104. <text
  105. :class="[
  106. parseInt(order_detail.outStatus) === 4
  107. ? 'danger-status'
  108. : parseInt(order_detail.outStatus) === 5
  109. ? 'success-status'
  110. : parseInt(order_detail.outStatus) === 6
  111. ? 'warning-status'
  112. : 'primary-status'
  113. ]"
  114. >
  115. {{
  116. parseInt(order_detail.outStatus) === 4
  117. ? '未出库'
  118. : parseInt(order_detail.outStatus) === 5
  119. ? '已出库'
  120. : parseInt(order_detail.outStatus) === 6
  121. ? '部分出库'
  122. : '其他'
  123. }}
  124. </text>
  125. </view>
  126. </view>
  127. <view class="info-li clearfix">
  128. <view class="label">收款状态</view>
  129. <view class="value">
  130. <text :class="[parseInt(order_detail.payStatus) === 5 ? 'success-status' : parseInt(order_detail.payStatus) === 3 ? 'warning-status' : 'danger-status']">
  131. {{ parseInt(order_detail.payStatus) === 4 ? '未收款' : parseInt(order_detail.payStatus) === 5 ? '已收款' : '部分收款' }}
  132. </text>
  133. <text style="font-size: 22rpx;" v-if="order_detail.payStatus === 3">(剩余未支付¥{{ order_detail.notPayMoney }})</text>
  134. </view>
  135. </view>
  136. <view class="info-li clearfix">
  137. <view class="label">审核状态</view>
  138. <view class="value">
  139. <text
  140. :class="[
  141. parseInt(order_detail.auditStatus) === 1
  142. ? 'warning-status'
  143. : parseInt(order_detail.auditStatus) === 2
  144. ? 'success-status'
  145. : parseInt(order_detail.auditStatus) === 3
  146. ? 'danger-status'
  147. : parseInt(order_detail.auditStatus) === 4
  148. ? 'warning-status'
  149. : 'primary-status'
  150. ]"
  151. >
  152. {{
  153. parseInt(order_detail.auditStatus) === 1
  154. ? '待审核'
  155. : parseInt(order_detail.auditStatus) === 2
  156. ? '已通过'
  157. : parseInt(order_detail.auditStatus) === 3
  158. ? '已驳回'
  159. : parseInt(order_detail.auditStatus) === 4
  160. ? '审核中'
  161. : '其他'
  162. }}
  163. </text>
  164. </view>
  165. </view>
  166. <!-- <view v-if='order_detail.orderStatus === 6' class="info-li clearfix">
  167. <view class="label" label-position="top">取消原因
  168. <view>
  169. {{order_detail.extends.cancelReason}}
  170. </view>
  171. </view>
  172. </view> -->
  173. <view class="info-li clearfix">
  174. <view class="label">下单店铺</view>
  175. <view class="value">{{ order_detail.shopName }}</view>
  176. </view>
  177. <view class="info-li clearfix">
  178. <view class="label">业务员</view>
  179. <view class="value">{{ order_detail.salesManName || '无' }}</view>
  180. </view>
  181. <block v-if="order_detail.extends && order_detail.extends.bankData && order_detail.extends.bankData.image">
  182. <view class="info-li clearfix">
  183. <view class="label">账户名称</view>
  184. <view class="value">{{ order_detail.extends.bankData.name }}</view>
  185. </view>
  186. <view class="info-li clearfix">
  187. <view class="label">开户银行</view>
  188. <view class="value">{{ order_detail.extends.bankData.bankName }}</view>
  189. </view>
  190. <view class="info-li clearfix">
  191. <view class="label">银行账号</view>
  192. <view class="value">{{ order_detail.extends.bankData.accountNumber }}</view>
  193. </view>
  194. <view class="info-li clearfix">
  195. <view class="label">打款凭证</view>
  196. <view class="value" @click="previewImage(order_detail.extends.bankData.image)">
  197. <image style="width: 150rpx;height: 200rpx;" :src="order_detail.extends.bankData.image" mode="heightFix"></image>
  198. </view>
  199. </view>
  200. </block>
  201. </view>
  202. <view class="goods-cont">
  203. <view class="goods-title">
  204. <view class="semicircle left-yuan"></view>
  205. <view class="semicircle right-yuan"></view>
  206. <text class="goods-title-text">{{ order_detail.shopName }}</text>
  207. </view>
  208. <view class="goods-ul">
  209. <view class="semicircle left-yuan"></view>
  210. <view class="semicircle right-yuan"></view>
  211. <view v-for="(item, index) in order_detail.goodsData" :key="index" class="goods-li clearfix">
  212. <view class="goods-img float_left"><image :src="item.images[0]" mode="aspectFill"></image></view>
  213. <view class="float_left info">
  214. <view class="goods-name ellipsis">{{ item.goodsName }}</view>
  215. <view class="goods-num clearfix">
  216. <view class="float_left">
  217. 规格:{{ item.unitName }};
  218. <block v-for="(itemS, indexS) in item.specGroup" :key="indexS">{{ itemS.specValueName }};</block>
  219. </view>
  220. <view class="float_right">
  221. 购买数量:{{ $utils.formatNub(item.buyNum) }}
  222. <text v-if="item.isEq === 5 && item.u_1_buy > 0">({{ $utils.formatNub(item.u_1_buy) }}{{ item.u_1 }})</text>
  223. </view>
  224. </view>
  225. <view class="goods-num clearfix">
  226. <view class="float_left price">{{ $utils.formattedNumber(item.price) }}</view>
  227. <view class="float_right">
  228. 发货数量:
  229. <text style="color: #F67778;">{{ $utils.formatNub(item.outNum) }}</text>
  230. </view>
  231. </view>
  232. </view>
  233. </view>
  234. </view>
  235. <view class="info-li clearfix">
  236. <view class="label">商品总价</view>
  237. <view class="value">{{ $utils.formattedNumber(order_detail.totalMoney) }}</view>
  238. </view>
  239. <view class="info-li clearfix">
  240. <view class="label">运费</view>
  241. <view class="value">{{ $utils.formattedNumber(order_detail.expressMoney) }}</view>
  242. </view>
  243. <view class="info-li clearfix">
  244. <view class="label">订单优惠</view>
  245. <view class="value" style="color: #F67778">
  246. <text class="error-color">-</text>
  247. {{ $utils.formattedNumber(order_detail.orderPreferential) }}
  248. </view>
  249. </view>
  250. <view class="info-li clearfix">
  251. <view class="label">优惠券优惠</view>
  252. <view class="value" style="color: #F67778">
  253. <text class="error-color">-</text>
  254. {{ $utils.formattedNumber(order_detail.preferential) }}
  255. </view>
  256. </view>
  257. <view class="info-li b-b clearfix">
  258. <view class="label">会员卡优惠</view>
  259. <view class="value" style="color: #F67778">
  260. <text class="error-color">-</text>
  261. {{ $utils.formattedNumber(order_detail.vipDiscount) }}
  262. </view>
  263. </view>
  264. <view class="info-li b-b clearfix" v-if="Number(order_detail.retMoney) !== 0">
  265. <view class="label">退款金额</view>
  266. <view class="value">
  267. <text class="error-color">-</text>
  268. {{ $utils.formattedNumber(order_detail.retMoney) }}
  269. </view>
  270. </view>
  271. <block v-if="!order_detail.payTypeMsg && order_detail.extends && order_detail.extends.admixPayData && order_detail.extends.admixPayData.length">
  272. <view v-for="(item, index) in order_detail.extends.admixPayData" :key="index" class="info-li clearfix" :class="[index === 1 ? 'b-b' : '']">
  273. <view class="label">{{ item.title }}</view>
  274. <view class="value">{{ $utils.formattedNumber(item.payMoney) }}</view>
  275. </view>
  276. </block>
  277. <view class="info-li clearfix total-pay-money">
  278. <view class="semicircle left-yuan"></view>
  279. <view class="semicircle right-yuan"></view>
  280. <view class="label money-label">实付总金额</view>
  281. <view class="value money-value">{{ $utils.formattedNumber(order_detail.payAmount) }}</view>
  282. </view>
  283. <view class="info-li bottom-info clearfix">
  284. 支付方式:
  285. <text v-if="order_detail.payTypeMsg">{{ order_detail.payTypeMsg }}</text>
  286. <text v-else>
  287. <block v-if="order_detail.extends && order_detail.extends.admixPayData">
  288. <text v-for="(item, index) in order_detail.extends.admixPayData" :key="index">{{ item.title }};</text>
  289. </block>
  290. </text>
  291. </view>
  292. <view class="info-li bottom-info clearfix">
  293. 订单来源:
  294. <text>
  295. {{
  296. parseInt(order_detail.source) === 1
  297. ? 'ios'
  298. : parseInt(order_detail.source) === 2
  299. ? '安卓'
  300. : parseInt(order_detail.source) === 3
  301. ? '小程序'
  302. : parseInt(order_detail.source) === 4
  303. ? '后台创建'
  304. : parseInt(order_detail.source) === 5
  305. ? 'H5页面'
  306. : parseInt(order_detail.source) === 6
  307. ? 'pc页面'
  308. : parseInt(order_detail.source) === 8
  309. ? '字节跳动小程序'
  310. : '其他'
  311. }}
  312. </text>
  313. <image class="bl-line" src="../../static/img/img-bl-line.png" mode="aspectFill"></image>
  314. </view>
  315. </view>
  316. <view class="btn-bottom-view clearfix">
  317. <block v-if="order_detail.orderMsg === '待审核'">
  318. <view v-if="$accessCheck($Access.orderQueryUpdateOrderStatus)" class="left-btn" @click="cancel">
  319. <u-icon
  320. label-pos="bottom"
  321. margin-top="10rpx"
  322. custom-prefix="custom-icon"
  323. name="quxiaodingdan"
  324. color="#B8C0C8"
  325. label="取消订单"
  326. label-color="#62738E"
  327. label-size="20"
  328. size="40"
  329. ></u-icon>
  330. </view>
  331. <view v-if="$accessCheck($Access.orderQueryUpdateAuditStatus)" class="handel-btn" @click="openModel('确定要审核通过该订单吗?', '审核')">审核</view>
  332. <view
  333. v-if="$accessCheck($Access.newOrderListEdit)"
  334. class="handel-btn info-btn"
  335. @click="goPage(`/pages/order/OrderAdd?id=${order_id}&userCenterId=${userCenterId}`)"
  336. >
  337. 编辑订单
  338. </view>
  339. </block>
  340. <view
  341. v-if="$accessCheck($Access.orderQueryUpdateAuditStatus) && order_detail.orderMsg === '待出库'"
  342. class="handel-btn info-btn"
  343. @click="openModel('确定要驳回审核该订单吗?', '驳回')"
  344. >
  345. 驳回审核
  346. </view>
  347. <view class="handel-btn" v-if="order_detail.orderMsg === '部分出库'" @click="openModel('是否要再次出库?', '再次出库')">再次出库</view>
  348. <view class="handel-btn" v-if="order_detail.orderMsg === '待取消'" @click="openCancelAuditpop">取消审核</view>
  349. <view class="handel-btn info-btn" @click="toPrint">小票打印</view>
  350. </view>
  351. <u-modal v-model="model_show" :show-cancel-button="true" :content="model_content" @confirm="modelConfirm" @cancel="modelCancel"></u-modal>
  352. <u-popup v-model="show" mode="bottom">
  353. <view class="pop-ul">
  354. <view class="sku-name">请输入取消订单原因</view>
  355. <view class="pop-li"><textarea style="width: 100%;" placeholder-class="input-pl" placeholder="请输入" v-model="cancelReason" /></view>
  356. <view class="btn" @click="modelConfirm">确定</view>
  357. </view>
  358. </u-popup>
  359. <u-popup width="660" v-model="cancel_audit_show" mode="center" border-radius="10">
  360. <view class="pop-ul">
  361. <view class="title">取消订单审核</view>
  362. <view class="desc">客户发起取消订单:23131</view>
  363. <view class="desc-tip">是否同意客户取消订单,如果拒绝,请输入拒绝原因</view>
  364. <view class="pop-li" style="border: 0;">
  365. <u-input placeholder-style="color:#CAD0D7;" v-model="cancelRejectReason" type="textarea" :border="true" :height="100" :auto-height="true" />
  366. </view>
  367. <view class="btn-view">
  368. <u-button @click="cancelReject" :custom-style="{ marginRight: '20rpx' }" type="error" size="medium">拒绝</u-button>
  369. <u-button @click="cancelConfirm" type="primary" size="medium">同意</u-button>
  370. </view>
  371. </view>
  372. </u-popup>
  373. </view>
  374. </template>
  375. <script>
  376. export default {
  377. data() {
  378. return {
  379. cancelRejectReason: '',
  380. cancel_audit_show: false,
  381. model_tag: '',
  382. model_show: false,
  383. model_content: '',
  384. order_id: 0,
  385. order_detail: {},
  386. selfRuleData: {},
  387. updata_istrue: false,
  388. cancle_istrue: false,
  389. userCenterId: false,
  390. show: false,
  391. cancelReason: ''
  392. };
  393. },
  394. onPullDownRefresh() {
  395. this.getOrderInfoById();
  396. },
  397. computed: {
  398. userInfo() {
  399. return this.$store.state.userInfo;
  400. }
  401. },
  402. onLoad(options) {
  403. this.order_id = options.id;
  404. this.userCenterId = options.userCenterId;
  405. },
  406. onShow() {
  407. this.getOrderInfoById();
  408. },
  409. methods: {
  410. // 复制相应信息
  411. copyOrderInfo() {
  412. const data = this.order_detail;
  413. let goods = '';
  414. data.goodsData.forEach((item, index) => {
  415. goods = goods + item.goodsName + '(' + (Number(item.outNum) || Number(item.buyNum)) + '件)';
  416. });
  417. const copyInfo = `客户:${data.customerName}\n商品:${goods} \n客户电话:${data.customerMobile}\n业务员:${data.salesManName || '无'}\n备注:${data.remark || '无'}`;
  418. uni.setClipboardData({
  419. data: copyInfo,
  420. success: () => {
  421. this.$u.toast('内容已复制');
  422. }
  423. });
  424. },
  425. openCancelAuditpop() {
  426. this.cancel_audit_show = true;
  427. },
  428. // 详情
  429. getOrderInfoById() {
  430. this.$u.api
  431. .getOrderInfoById(this.userCenterId, {
  432. orderId: this.order_id
  433. })
  434. .then(res => {
  435. uni.stopPullDownRefresh();
  436. this.order_detail = res.data;
  437. this.selfRuleData = JSON.parse(res.data.selfRuleData);
  438. })
  439. .catch(err => {
  440. uni.stopPullDownRefresh();
  441. });
  442. },
  443. // 打开提示框
  444. openModel(content, tag) {
  445. this.model_content = content;
  446. this.model_show = true;
  447. this.model_tag = tag;
  448. },
  449. // 审核
  450. modelConfirm() {
  451. switch (this.model_tag) {
  452. case '取消订单':
  453. this.updateOrderStatus();
  454. break;
  455. case '审核':
  456. this.updateAuditStatus();
  457. break;
  458. case '驳回':
  459. this.revokeAudit();
  460. break;
  461. case '再次出库':
  462. this.reStockOut();
  463. break;
  464. }
  465. },
  466. modelCancel() {},
  467. // 取消订单
  468. updateOrderStatus() {
  469. this.$u.api
  470. .updateOrderStatus(this.order_detail.userCenterId, {
  471. orderId: this.order_detail.id,
  472. orderStatus: 6,
  473. cancelReason: this.cancelReason
  474. })
  475. .then(res => {
  476. this.$u.toast('取消成功');
  477. this.show = false;
  478. this.getOrderInfoById();
  479. });
  480. },
  481. // 审核订单
  482. updateAuditStatus() {
  483. this.$u.api
  484. .updateAuditStatus(this.order_detail.userCenterId, {
  485. orderId: this.order_detail.id,
  486. auditStatus: 2,
  487. audit: this.userInfo.name
  488. })
  489. .then(res => {
  490. this.$u.toast('审核成功');
  491. this.getOrderInfoById();
  492. });
  493. },
  494. // 驳回
  495. revokeAudit() {
  496. this.$u.api.revokeAudit(this.order_detail.id).then(res => {
  497. this.$u.toast('驳回成功');
  498. this.getOrderInfoById();
  499. });
  500. },
  501. // 再次出库
  502. reStockOut() {
  503. this.$u.api.reStockOut(this.order_detail.id).then(res => {
  504. this.$u.toast('出库成功');
  505. this.getOrderInfoById();
  506. });
  507. },
  508. previewImage(image) {
  509. // 预览图片
  510. uni.previewImage({
  511. urls: [image],
  512. longPressActions: {
  513. itemList: ['发送给朋友', '保存图片', '收藏']
  514. }
  515. });
  516. },
  517. // 单据小票打印
  518. toPrint() {
  519. this.$u.api
  520. .toPrint({
  521. objectId: this.order_detail.id,
  522. objectType: 1 // 销售单
  523. })
  524. .then(res => {
  525. this.$u.toast('操作成功');
  526. });
  527. },
  528. cancel() {
  529. this.show = true;
  530. this.model_tag = '取消订单';
  531. },
  532. async cancelReject() {
  533. if (!this.cancelRejectReason) {
  534. this.$u.toast('请输入拒绝原因');
  535. return;
  536. }
  537. this.$u.api
  538. .updateOrderStatus(this.order_detail.userCenterId, {
  539. orderId: this.order_detail.id,
  540. orderStatus: 7,
  541. cancelRejectReason: this.cancelRejectReason
  542. })
  543. .then(res => {
  544. this.$u.toast('您已拒绝客户的取消订单申请,原因是: ' + this.cancelRejectReason);
  545. this.cancel_audit_show = false;
  546. this.getOrderInfoById();
  547. });
  548. },
  549. async cancelConfirm() {
  550. this.$u.api
  551. .updateOrderStatus(this.order_detail.userCenterId, {
  552. orderId: this.order_detail.id,
  553. orderStatus: 6,
  554. cancelReason: '工作人员同意客户主动的发起取消订单'
  555. })
  556. .then(res => {
  557. this.cancel_audit_show = false;
  558. this.$u.toast('操作成功');
  559. this.getOrderInfoById();
  560. });
  561. }
  562. }
  563. };
  564. </script>
  565. <style lang="scss" scoped>
  566. .detail-view {
  567. padding-bottom: 100rpx;
  568. }
  569. .top-view {
  570. background: linear-gradient($uni-color-primary, $uni-color-primary, $uni-color-primary, #f5f5f6 100%);
  571. padding: 50rpx 30rpx 200rpx;
  572. color: #ffffff;
  573. font-size: 40rpx;
  574. .status-text {
  575. margin-right: 10rpx;
  576. }
  577. .float_right {
  578. font-size: 28rpx;
  579. }
  580. .float_left {
  581. padding-bottom: 20rpx;
  582. }
  583. .cancel-reson {
  584. font-size: 22rpx;
  585. line-height: 32rpx;
  586. opacity: 0.7;
  587. padding-top: 20rpx;
  588. }
  589. }
  590. .customer-view {
  591. width: 710rpx;
  592. background-color: #ffffff;
  593. margin: 0 auto;
  594. border-radius: 8rpx;
  595. transform: translateY(-200rpx);
  596. .title {
  597. padding: 32rpx 32rpx 24rpx;
  598. .float_left {
  599. font-size: 32rpx;
  600. font-weight: 600;
  601. width: calc(100% - 120rpx);
  602. color: #2d405e;
  603. }
  604. .float_right {
  605. .tag {
  606. width: 104rpx;
  607. height: 32rpx;
  608. background-color: rgb(218, 248, 242);
  609. color: #00c395;
  610. font-size: 20rpx;
  611. text-align: center;
  612. line-height: 32rpx;
  613. }
  614. }
  615. }
  616. .delivery-view {
  617. font-size: 26rpx;
  618. color: #879bba;
  619. margin: 0 32rpx;
  620. line-height: 36rpx;
  621. padding-bottom: 24rpx;
  622. .name-top {
  623. margin-bottom: 12rpx;
  624. .float_left {
  625. width: calc(100% - 220rpx);
  626. }
  627. .mobile {
  628. font-size: 28rpx;
  629. color: $uni-color-primary;
  630. }
  631. }
  632. }
  633. .remark {
  634. border-top: 1px solid #ecf0f7;
  635. line-height: 48rpx;
  636. padding: 24rpx 32rpx;
  637. font-size: 28rpx;
  638. .remark_text {
  639. color: #879bba;
  640. margin-right: 16rpx;
  641. }
  642. .float_right {
  643. width: 562rpx;
  644. color: #2d405e;
  645. }
  646. }
  647. }
  648. .detail-cont {
  649. width: 710rpx;
  650. margin: 0 auto;
  651. background-color: #ffffff;
  652. border-radius: 8rpx;
  653. padding: 10rpx 0;
  654. overflow: hidden;
  655. transform: translateY(-182rpx);
  656. font-size: 28rpx;
  657. color: #2d405e;
  658. font-family: DINPro-Regular;
  659. .info-li {
  660. padding: 0 32rpx;
  661. line-height: 80rpx;
  662. .label {
  663. float: left;
  664. color: #879bba;
  665. }
  666. .value {
  667. float: right;
  668. }
  669. .money-label {
  670. font-weight: bold;
  671. }
  672. .money-value {
  673. font-family: DIN-Medium;
  674. font-size: 30rpx;
  675. }
  676. }
  677. .b-b {
  678. border-bottom: 1px solid #ecf0f7;
  679. }
  680. }
  681. .semicircle {
  682. position: absolute;
  683. width: 16rpx;
  684. height: 16rpx;
  685. background-color: #f5f5f6;
  686. border-radius: 100%;
  687. bottom: -8rpx;
  688. &.left-yuan {
  689. left: -10rpx;
  690. }
  691. &.right-yuan {
  692. right: -10rpx;
  693. }
  694. }
  695. .goods-cont {
  696. width: 710rpx;
  697. margin: 0 auto;
  698. background-color: #ffffff;
  699. border-radius: 8rpx;
  700. padding: 6rpx 0;
  701. transform: translateY(-166rpx);
  702. font-size: 28rpx;
  703. color: #2d405e;
  704. font-family: DINPro-Regular;
  705. .goods-title {
  706. background-color: #fff;
  707. line-height: 96rpx;
  708. width: 710rpx;
  709. color: #2d405e;
  710. font-size: 32rpx;
  711. border-bottom: 1rpx dashed #ecf0f7;
  712. font-weight: 600;
  713. position: relative;
  714. .goods-title-text {
  715. margin-left: 24rpx;
  716. }
  717. }
  718. .goods-ul {
  719. padding: 0 24rpx 30rpx;
  720. border-bottom: 1px dashed #ecf0f7;
  721. position: relative;
  722. .goods-li {
  723. padding-top: 24rpx;
  724. .goods-img {
  725. margin-right: 20rpx;
  726. image {
  727. width: 126rpx;
  728. height: 126rpx;
  729. border-radius: 14rpx;
  730. display: block;
  731. }
  732. }
  733. .info {
  734. .goods-name {
  735. width: 470rpx;
  736. -webkit-line-clamp: 2;
  737. color: #2d405e;
  738. font-size: 28rpx;
  739. font-weight: 600;
  740. }
  741. .goods-num {
  742. color: #62738e;
  743. line-height: 50rpx;
  744. font-size: 22rpx;
  745. width: 510rpx;
  746. .float_left {
  747. &.price {
  748. font-size: 28rpx;
  749. font-weight: bold;
  750. font-family: DIN-Medium;
  751. color: #fa6400;
  752. }
  753. }
  754. }
  755. }
  756. }
  757. }
  758. .info-li {
  759. padding: 0 32rpx;
  760. line-height: 80rpx;
  761. color: #879bba;
  762. .label {
  763. float: left;
  764. }
  765. .value {
  766. float: right;
  767. }
  768. .money-label {
  769. font-weight: bold;
  770. color: #2d405e;
  771. }
  772. .money-value {
  773. font-size: 30rpx;
  774. color: #2d405e;
  775. font-family: DIN-Medium;
  776. }
  777. }
  778. .total-pay-money {
  779. border-top: 1rpx dashed #ecf0f7;
  780. position: relative;
  781. .semicircle {
  782. top: -8rpx;
  783. }
  784. }
  785. .bottom-info {
  786. line-height: 70rpx;
  787. color: #b8c0c8;
  788. position: relative;
  789. font-weight: 400;
  790. .bl-line {
  791. position: absolute;
  792. display: block;
  793. width: 710rpx;
  794. height: 16rpx;
  795. bottom: -16rpx;
  796. left: 0;
  797. }
  798. }
  799. }
  800. .pop-ul {
  801. line-height: 90rpx;
  802. .sku-name {
  803. font-weight: bold;
  804. padding: 0 24rpx;
  805. }
  806. .pop-li {
  807. padding: 24rpx;
  808. border-top: 1px solid #ecf0f7;
  809. }
  810. .btn {
  811. width: 100%;
  812. text-align: center;
  813. color: #ffffff;
  814. line-height: 90rpx;
  815. background-color: $uni-color-primary;
  816. }
  817. .title {
  818. text-align: center;
  819. font-size: 28rpx;
  820. line-height: 80rpx;
  821. border-bottom: 1px solid #ecf0f7;
  822. }
  823. .desc {
  824. font-size: 28rpx;
  825. line-height: 36rpx;
  826. padding-bottom: 10rpx;
  827. padding: 10rpx 20rpx 0;
  828. }
  829. .desc-tip {
  830. font-size: 24rpx;
  831. line-height: 36rpx;
  832. padding-bottom: 10rpx;
  833. padding: 10rpx 20rpx 0;
  834. color: #879bba;
  835. }
  836. .btn-view {
  837. text-align: center;
  838. padding: 20rpx 0;
  839. }
  840. }
  841. .btn-bottom-view {
  842. position: fixed;
  843. left: 0;
  844. bottom: 0;
  845. height: 98rpx;
  846. background-color: #ffffff;
  847. padding: 0 38rpx;
  848. width: 100%;
  849. overflow: hidden;
  850. box-shadow: 0px -4rpx 32rpx 0px rgba(156, 170, 175, 0.16);
  851. .left-btn {
  852. margin-top: 10rpx;
  853. float: left;
  854. }
  855. .handel-btn {
  856. margin-left: 30rpx;
  857. margin-top: 20rpx;
  858. float: right;
  859. width: 164rpx;
  860. font-size: 26rpx;
  861. height: 60rpx;
  862. line-height: 60rpx;
  863. text-align: center;
  864. border-radius: 32rpx;
  865. background-color: $uni-color-primary;
  866. border: 1rpx solid $uni-color-primary;
  867. color: #ffffff;
  868. &.info-btn {
  869. border: 1rpx solid #979797;
  870. background-color: transparent;
  871. color: #2d405e;
  872. }
  873. }
  874. }
  875. </style>