You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
385 lines
11 KiB
385 lines
11 KiB
3 years ago
|
<template>
|
||
|
<view class="pos-order-list" ref="container">
|
||
|
<view class="nav acea-row row-around row-middle">
|
||
|
<view class="item" :class="where.status == 0 ? 'on' : ''" @click="changeStatus(0)">待付款</view>
|
||
|
<view class="item" :class="where.status == 1 ? 'on' : ''" @click="changeStatus(1)">待发货</view>
|
||
|
<view class="item" :class="where.status == 2 ? 'on' : ''" @click="changeStatus(2)">待收货</view>
|
||
|
<view class="item" :class="where.status == 3 ? 'on' : ''" @click="changeStatus(3)">待评价</view>
|
||
|
<view class="item" :class="where.status == 4 ? 'on' : ''" @click="changeStatus(4)">已完成</view>
|
||
|
<view class="item" :class="where.status == -3 ? 'on' : ''" @click="changeStatus(-3)">退款</view>
|
||
|
</view>
|
||
|
<view class="list">
|
||
|
<view class="item" v-for="(item, listIndex) in list" :key="listIndex">
|
||
|
<view class="order-num acea-row row-middle" @click="toDetail(item)">
|
||
|
<text>订单号:{{ item.orderId }}</text>
|
||
|
<text class="time acea-row row-between">
|
||
|
<text>下单时间:</text>
|
||
|
<text class="conter">{{ item.createTime }}</text>
|
||
|
</text>
|
||
|
</view>
|
||
|
<view class="pos-order-goods" v-for="(val, key) in item.cartInfo" :key="key">
|
||
|
<view class="goods acea-row row-between-wrapper" @click="toDetail(item)">
|
||
|
<view class="picTxt acea-row row-between-wrapper">
|
||
|
<view class="pictrue">
|
||
|
<image :src="val.productInfo.image" />
|
||
|
</view>
|
||
|
<view class="text acea-row row-between row-column">
|
||
|
<view class="info line2">{{ val.productInfo.storeName }}</view>
|
||
|
<view class="attr" v-if="val.productInfo.sku">{{ val.productInfo.sku }}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="money">
|
||
|
<view class="x-money">¥{{ val.productInfo.price }}</view>
|
||
|
<view class="num">x{{ val.cartNum }}</view>
|
||
|
<view class="y-money" v-if="val.productInfo.otPrice">¥{{ val.productInfo.otPrice }}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="public-total">
|
||
|
共{{ item.totalNum }}件商品,应支付
|
||
|
<text class="money">¥{{ item.payPrice }}</text>
|
||
|
( 邮费 ¥{{item.totalPostage}})
|
||
|
</view>
|
||
|
<view class="operation acea-row row-between-wrapper">
|
||
|
<view class="more">
|
||
|
<!-- <view class="iconfont icon-gengduo" @click="more(index)"></view>-->
|
||
|
<!-- <view class="order" v-show="current === index">-->
|
||
|
<!-- <view class="items">-->
|
||
|
<!-- {{ where.status > 0 ? "删除" : "取消" }}订单-->
|
||
|
<!-- </view>-->
|
||
|
<!-- <view class="arrow"></view>-->
|
||
|
<!-- </view>-->
|
||
|
</view>
|
||
|
<view class="acea-row row-middle">
|
||
|
<view class="bnt" @click="modify(item, 0)" v-if="where.status == 0">一键改价</view>
|
||
|
<view class="bnt" @click="modify(item, 0)" v-if="where.status == -3 && item.refundStatus === 1">立即退款</view>
|
||
|
<view class="bnt cancel" v-if="item.pay_type === 'offline' && item.paid === 0" @click="offlinePay(item)">确认付款</view>
|
||
|
<view class="bnt" v-if="where.status == 1 && item._status._title=='未发货'" @click="goGoodsDeliver(item)">去发货</view>
|
||
|
<view class="bnt cancel" v-if="item._status._title=='待核销' && where.status == 1" @click="storeCancellation(0,item.verifyCode)">快速核销</view>
|
||
|
<view class="bnt" v-if="item._status._title=='待核销' && where.status == 1" @click="storeCancellation(1,item.verifyCode)">立即核销</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<Loading :loaded="loaded" :loading="loading"></Loading>
|
||
|
<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 Loading from "@/components/Loading";
|
||
|
import DataFormat from "@/components/DataFormat";
|
||
|
import {
|
||
|
getAdminOrderList,
|
||
|
setAdminOrderPrice,
|
||
|
setAdminOrderRemark,
|
||
|
setOfflinePay,
|
||
|
setOrderRefund
|
||
|
} from "@/api/admin";
|
||
|
import {orderVerific} from "@/api/order";
|
||
|
import {
|
||
|
required,
|
||
|
num
|
||
|
} from "@/utils/validate";
|
||
|
import {
|
||
|
validatorDefaultCatch
|
||
|
} from "@/utils/dialog";
|
||
|
export default {
|
||
|
name: "AdminOrderList",
|
||
|
components: {
|
||
|
PriceChange,
|
||
|
Loading,
|
||
|
DataFormat
|
||
|
},
|
||
|
props: {},
|
||
|
data: function() {
|
||
|
return {
|
||
|
current: "",
|
||
|
change: false,
|
||
|
types: 0,
|
||
|
where: {
|
||
|
page: 1,
|
||
|
limit: 5,
|
||
|
status: 0
|
||
|
},
|
||
|
list: [],
|
||
|
loaded: false,
|
||
|
loading: false,
|
||
|
orderInfo: {},
|
||
|
status: ""
|
||
|
};
|
||
|
},
|
||
|
watch: {
|
||
|
"$yroute.query.types": function(newVal) {
|
||
|
let that = this;
|
||
|
if (newVal != undefined) {
|
||
|
that.where.status = newVal;
|
||
|
that.init();
|
||
|
}
|
||
|
},
|
||
|
types: function() {
|
||
|
this.getIndex();
|
||
|
}
|
||
|
},
|
||
|
onShow: function() {
|
||
|
let that = this;
|
||
|
that.where.status = that.$yroute.query.types;
|
||
|
that.current = "";
|
||
|
that.getIndex();
|
||
|
},
|
||
|
onReachBottom() {
|
||
|
!this.loading && this.getIndex();
|
||
|
},
|
||
|
methods: {
|
||
|
goGoodsDeliver(item) {
|
||
|
this.$yrouter.push({
|
||
|
path: "/pages/orderAdmin/GoodsDeliver/index",
|
||
|
query: {
|
||
|
oid: item.orderId
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
more: function(index) {
|
||
|
if (this.current === index) this.current = "";
|
||
|
else this.current = index;
|
||
|
},
|
||
|
modify: function(item, status) {
|
||
|
this.change = true;
|
||
|
this.orderInfo = item;
|
||
|
this.status = status;
|
||
|
},
|
||
|
changeclose: function(msg) {
|
||
|
this.change = msg;
|
||
|
},
|
||
|
async savePrice(opt) {
|
||
|
let that = this,
|
||
|
data = {},
|
||
|
price = opt.price.toString(),
|
||
|
refund_price = opt.refund_price.toString(),
|
||
|
refund_status = that.orderInfo.refundStatus,
|
||
|
remark = opt.remark;
|
||
|
data.orderId = that.orderInfo.orderId;
|
||
|
if (that.status == 0 && refund_status === 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.init();
|
||
|
},
|
||
|
function() {
|
||
|
that.change = false;
|
||
|
uni.showToast({
|
||
|
title: "改价失败",
|
||
|
icon: "none",
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
} else if (that.status == 0 && refund_status === 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.init();
|
||
|
},
|
||
|
err => {
|
||
|
that.change = false;
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: "none",
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
} 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.init();
|
||
|
},
|
||
|
err => {
|
||
|
that.change = false;
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: "none",
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
},
|
||
|
init: function() {
|
||
|
this.list = [];
|
||
|
this.where.page = 1;
|
||
|
this.loaded = false;
|
||
|
this.loading = false;
|
||
|
this.getIndex();
|
||
|
this.current = "";
|
||
|
},
|
||
|
getIndex: function() {
|
||
|
let that = this;
|
||
|
if (that.loading || that.loaded) return;
|
||
|
that.loading = true;
|
||
|
getAdminOrderList(that.where).then(
|
||
|
res => {
|
||
|
that.loading = false;
|
||
|
that.loaded = res.data.length < that.where.limit;
|
||
|
that.list.push.apply(that.list, res.data);
|
||
|
that.where.page = that.where.page + 1;
|
||
|
},
|
||
|
err => {
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: "none",
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
changeStatus: function(val) {
|
||
|
if (this.where.status != val) {
|
||
|
this.where.status = val;
|
||
|
this.init();
|
||
|
}
|
||
|
},
|
||
|
toDetail: function(item) {
|
||
|
this.$yrouter.push({
|
||
|
path: "/pages/orderAdmin/AdminOrder/index",
|
||
|
query: {
|
||
|
oid: item.orderId
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
offlinePay: function(item) {
|
||
|
setOfflinePay({
|
||
|
order_id: item.order_id
|
||
|
}).then(
|
||
|
res => {
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: "none",
|
||
|
duration: 2000
|
||
|
});
|
||
|
this.init();
|
||
|
},
|
||
|
error => {
|
||
|
uni.showToast({
|
||
|
title: error.msg,
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
storeCancellation(index,verifyCode) {
|
||
|
const that = this;
|
||
|
that.check = true;
|
||
|
if (index == 0) {
|
||
|
uni.showModal({
|
||
|
title: "确定核销订单?",
|
||
|
content: "注意:请务必核对核销码的与客户正确性",
|
||
|
success(res) {
|
||
|
if (res.confirm) {
|
||
|
uni.showLoading({
|
||
|
title: "查询中"
|
||
|
});
|
||
|
orderVerific(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>
|