<template> <view class="order-details pos-order-details"> <view class="header acea-row row-middle"> <view class="state">{{ title }}</view> <view class="data"> <view class="order-num">订单:{{ orderInfo.orderId }}</view> <view> <text class="time"> <data-format :date="orderInfo.addTime"></data-format> </text> </view> </view> </view> <view class="orderingUser acea-row row-middle">{{ orderInfo.nickname }}</view> <view class="address"> <view class="name"> {{ orderInfo.realName }} <text class="phone">{{ orderInfo.userPhone }}</text> </view> <view>{{ orderInfo.userAddress }}</view> </view> <view class="line"> <image :src="`${$VUE_APP_RESOURCES_URL}/images/line.jpg`" /> </view> <view class="pos-order-goods"> <view class="goods acea-row row-between-wrapper" v-for="(item, orderInfoIndex) in orderInfo.cartInfo" :key="orderInfoIndex"> <view class="picTxt acea-row row-between-wrapper"> <view class="pictrue"> <image :src="item.productInfo.image" /> </view> <view class="text acea-row row-between row-column"> <view class="info line2">{{ item.productInfo.storeName }}</view> <view class="attr">{{ item.productInfo.sku }}</view> </view> </view> <view class="money"> <view class="x-money">¥{{ item.productInfo.price }}</view> <view class="num">x{{ item.cartNum }}</view> <view class="y-money">¥{{ item.productInfo.otPrice ? item.productInfo.otPrice : 0 }}</view> </view> </view> </view> <view class="public-total"> 共{{ orderInfo.totalNum }}件商品,应支付 <text class="money">¥{{ orderInfo.payPrice }}</text> ( 邮费 ¥{{ orderInfo.payPostage }}) </view> <view class="wrapper"> <view class="item acea-row row-between"> <view>订单编号:</view> <view class="conter acea-row row-middle row-right"> {{ orderInfo.orderId }} <!-- #ifndef H5 --> <text class="copy copy-data" @click="copyClipboard(orderInfo.orderId)">复制</text> <!-- #endif --> </view> </view> <view class="item acea-row row-between"> <view>下单时间:</view> <!-- <view class="conter"> --> <view class="conter">{{ orderInfo.createTime }}</view> <!-- <data-format :date="orderInfo.addTime"></data-format> --> <!-- </view> --> </view> <view class="item acea-row row-between"> <view>支付状态:</view> <view class="conter">{{ orderInfo.paid == 1 ? '已支付' : '未支付' }}</view> </view> <view class="item acea-row row-between"> <view>支付方式:</view> <view class="conter">{{ payType }}</view> </view> <view class="item acea-row row-between"> <view>买家留言:</view> <view class="conter">{{ orderInfo.mark }}</view> </view> </view> <view class="wrapper"> <view class="item acea-row row-between"> <view>支付金额:</view> <view class="conter">¥{{ orderInfo.totalPrice }}</view> </view> <view class="item acea-row row-between"> <view>优惠券抵扣:</view> <view class="conter">-¥{{ orderInfo.couponPrice }}</view> </view> <view class="actualPay acea-row row-right"> 实付款: <text class="money font-color-red">¥{{ orderInfo.payPrice }}</text> </view> </view> <view class="wrapper" v-if="orderInfo.delivery_type != 'fictitious' && orderInfo._status._type === 2"> <view class="item acea-row row-between"> <view>配送方式:</view> <view class="conter" v-if="orderInfo.delivery_type === 'express'">快递</view> <view class="conter" v-if="orderInfo.delivery_type === 'send'">送货</view> </view> <view class="item acea-row row-between"> <view v-if="orderInfo.delivery_type === 'express'">快递公司:</view> <view v-if="orderInfo.delivery_type === 'send'">送货人:</view> <view class="conter">{{ orderInfo.delivery_name }}</view> </view> <view class="item acea-row row-between"> <view v-if="orderInfo.delivery_type === 'express'">快递单号:</view> <view v-if="orderInfo.delivery_type === 'send'">送货人电话:</view> <view class="conter"> {{ orderInfo.delivery_id }} <!-- #ifndef H5 --> <text class="copy copy-data" @click="copyClipboard(orderInfo.delivery_id)">复制</text> <!-- #endif --> </view> </view> </view> <view style="height:100rpx;"></view> <view class="footer acea-row row-right row-middle"> <view class="more"></view> <view class="bnt cancel" @click="modify(0)" v-if="types == 0">一键改价</view> <view class="bnt cancel" @click="modify(0)" v-if="types == -1">立即退款</view> <view class="bnt cancel" v-if="orderInfo.pay_type === 'offline' && orderInfo.paid === 0" @click="offlinePay">确认付款</view> <view class="bnt delivery" v-if="title == '未发货' && types == 1" @click="goGoodsDeliver(orderInfo)">去发货</view> <view class="bnt quick" v-if="title == '待核销' && types == 1" @click="storeCancellation(0)">快速核销</view> <view class="bnt delivery" v-if="title == '待核销' && types == 1" @click="storeCancellation(1)">立即核销</view> </view> <PriceChange :change="change" :orderInfo="orderInfo" v-on:closechange="changeclose($event)" v-on:savePrice="savePrice" :status="status"></PriceChange> </view> </template> <script> import PriceChange from '@/components/PriceChange' import DataFormat from '@/components/DataFormat' import { getAdminOrderDetail, setAdminOrderPrice, setAdminOrderRemark, setOfflinePay, setOrderRefund } from '@/api/admin' import { orderVerific } from '@/api/order' import { required, num } from '@/utils/validate' import { validatorDefaultCatch } from '@/utils/dialog' import { copyClipboard } from '@/utils' export default { name: 'AdminOrder', components: { PriceChange, DataFormat, }, props: {}, data: function() { return { order: false, change: false, order_id: '', orderInfo: { _status: {}, }, status: '', title: '', payType: '', types: '', } }, watch: { '$yroute.query.oid': function(newVal) { let that = this if (newVal != undefined) { that.order_id = newVal that.getIndex() } }, }, onShow: function() { this.order_id = this.$yroute.query.oid this.getIndex() }, methods: { goGoodsDeliver(orderInfo) { this.$yrouter.push({ path: '/pages/orderAdmin/GoodsDeliver/index', query: { oid: orderInfo.orderId }, }) }, copyClipboard, more: function() { this.order = !this.order }, modify: function(status) { this.change = true this.status = status }, changeclose: function(msg) { this.change = msg }, getIndex: function() { let that = this getAdminOrderDetail(that.order_id).then( res => { that.orderInfo = res.data that.types = res.data._status._type that.title = res.data._status._title that.payType = res.data._status._payType }, err => { uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) } ) }, async savePrice(opt) { let that = this, data = {}, price = opt.price, remark = opt.remark, refund_price = opt.refund_price.toString() data.orderId = that.orderInfo.orderId if (that.status == 0 && that.orderInfo.refundStatus === 0) { try { await this.$validator({ price: [required(required.message('金额')), num(num.message('金额'))], }).validate({ price }) } catch (e) { return validatorDefaultCatch(e) } data.price = price setAdminOrderPrice(data).then( function() { that.change = false uni.showToast({ title: '改价成功', icon: 'success', duration: 2000, }) that.getIndex() }, function() { that.change = false uni.showToast({ title: '改价失败', icon: 'none', duration: 2000, }) } ) } else if (that.status == 0 && that.orderInfo.refundStatus === 1) { try { await this.$validator({ refund_price: [required(required.message('金额')), num(num.message('金额'))], }).validate({ refund_price }) } catch (e) { return validatorDefaultCatch(e) } data.price = refund_price data.type = opt.type setOrderRefund(data).then( res => { that.change = false uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) that.getIndex() }, err => { that.change = false uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) that.getIndex() } ) } else { try { await this.$validator({ remark: [required(required.message('备注'))], }).validate({ remark }) } catch (e) { return validatorDefaultCatch(e) } data.remark = remark setAdminOrderRemark(data).then( res => { that.change = false uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) that.getIndex() }, err => { that.change = false uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) } ) } }, offlinePay: function() { setOfflinePay({ order_id: this.orderInfo.order_id }).then( res => { uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) this.getIndex() }, err => { uni.showToast({ title: err.msg, icon: 'none', duration: 2000, }) } ) }, storeCancellation(index) { const that = this that.check = true if (index == 0) { uni.showModal({ title: '确定核销订单?', content: '注意:请务必核对核销码的与客户正确性', success(res) { if (res.confirm) { uni.showLoading({ title: '查询中', }) orderVerific(that.orderInfo.verifyCode, 1) .then(res => { console.log(res) uni.hideLoading() that.iShidden = false uni.showToast({ title: res.msg, icon: 'none', duration: 1000, }) //最后就是返回上一个页面。 setTimeout(function() { uni.navigateBack({ delta: 1, // 返回上一级页面。 success: function() { console.log('成功!') }, }) }, 1000) }) .catch(err => { console.log(err) uni.hideLoading() uni.showToast({ title: err.data.msg, icon: 'none', duration: 2000, }) }) } }, }) } else { that.$yrouter.push({ path: '/pages/orderAdmin/OrderCancellation/index', }) } }, }, } </script> <style lang="less"> .quick { background: #f25555; } </style>