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.
384 lines
11 KiB
384 lines
11 KiB
<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>
|
|
|