|
@@ -8,7 +8,24 @@
|
|
|
<input-select :options="outLineOptions" @input="parameChangeBase($event,'idType','idValue')" ref="searchCom02" />
|
|
|
<input-select :options="buyerOptions" @input="parameChangeInfo($event,'receiverInfo','receiverValue')" ref="searchCom03" />
|
|
|
</el-collapse-item>
|
|
|
- <order-checkbox title="订单状态" keyName="statusList" ref="searchCom04" :options="statusOptions" noLimit @checkboxChange="onChange($event,'statusList')" />
|
|
|
+ <order-checkbox title="订单状态" keyName="statusList" ref="searchCom04" :options="statusOptions" noLimit @checkboxChange="onChange($event,'statusList')">
|
|
|
+ <template v-slot:question>
|
|
|
+ <div class="ques-box">
|
|
|
+ <div class="questtion-top" @click="showQues = !showQues">
|
|
|
+ <div class="quest-title">
|
|
|
+ <span>异常类型</span>
|
|
|
+ <i class="el-icon-setting" @click.stop="showQuestType"></i>
|
|
|
+ </div>
|
|
|
+ <i class="el-icon-arrow-down"></i>
|
|
|
+ </div>
|
|
|
+ <el-collapse-transition>
|
|
|
+ <div class="ques-list" v-show="showQues">
|
|
|
+ <el-checkbox v-for="item of questData" :label="item.id" :key="item.value">{{item.type}}</el-checkbox>
|
|
|
+ </div>
|
|
|
+ </el-collapse-transition>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </order-checkbox>
|
|
|
<order-radio title="提交状态" keyName="isSubmitted" ref="searchComsubmitStatus" :options="submitOption" noLimit @radioChange="onChangeSmt" />
|
|
|
<order-radio title="买家留言" keyName="buyerMessageFilter" ref="searchCom05" :options="buyerMessageOptions" noLimit @radioChange="onChange($event,'buyerMessageFilter')">
|
|
|
<template v-slot:buyerMessage>
|
|
@@ -144,20 +161,30 @@
|
|
|
</div>
|
|
|
<div class="order-right">
|
|
|
<div class="tool">
|
|
|
- <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase"/>
|
|
|
+ <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase" @cancelOrder="cancelOrder"
|
|
|
+ @reCancelOrder="reCancelOrder"/>
|
|
|
</div>
|
|
|
<div class="table">
|
|
|
- <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle" @cancelOrder="cancelOrder"/>
|
|
|
+ <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle"/>
|
|
|
<div class="page">
|
|
|
<el-pagination v-if="page.total > 0" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.pageNo" :page-size="page.pageSize"
|
|
|
:layout="'total, sizes, prev, pager, next, jumper'" :total="page.total"></el-pagination>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!-- 手工下单 -->
|
|
|
<add-order ref="addOrder" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 手工下载 -->
|
|
|
<load-order-modal ref="loadOrder" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 生成采购单 -->
|
|
|
<purchase-model ref="purchaseModel" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 合并 -->
|
|
|
<merge-model ref="mergeModel" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 拆分 -->
|
|
|
<split-model ref="splitModel" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 取消订单 -->
|
|
|
+ <cancel-order-model ref="cancelOrderModel" @handleSuccess="handleSuccess" />
|
|
|
+ <!-- 异常 -->
|
|
|
+ <quest-model ref="questModel" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -177,20 +204,25 @@ import loadOrderModal from './components/loadOrderModal.vue' //手工下载
|
|
|
import PurchaseModel from "./components/purchaseModel.vue"; //生成采购单
|
|
|
import MergeModel from "./components/mergeMedal.vue"; //合并
|
|
|
import SplitModel from "./components/splitModal.vue"; //拆分
|
|
|
-import { query,getProvince,smt,unSmt,purchaseQty } from '@/api/omsOrder'
|
|
|
+import CancelOrderModel from "./components/cancelOrderModel.vue"; //取消订单
|
|
|
+import QuestModel from "./components/questModel.vue";
|
|
|
+import { query,getProvince,smt,unSmt,purchaseQty,unCancel } from '@/api/omsOrder'
|
|
|
+import { queryAll } from '@/api/question'
|
|
|
@Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
|
|
|
- filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel}})
|
|
|
+ filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel,CancelOrderModel,QuestModel}})
|
|
|
export default class Order extends Vue {
|
|
|
activeNames:Array<any>=['1','status']
|
|
|
radio=''
|
|
|
radio2=''
|
|
|
data:Array<any> = []
|
|
|
load = false;
|
|
|
+ showQues=false;
|
|
|
page:any={
|
|
|
pageNo: 1, //当前页
|
|
|
pageSize: 20, //每页条数
|
|
|
total: 0 //总条数
|
|
|
}
|
|
|
+ questData:Array<any>=[]
|
|
|
value:any={
|
|
|
// sourceId:'', //线上订单号
|
|
|
// shopBuyerId:'', //买家昵称
|
|
@@ -409,15 +441,9 @@ export default class Order extends Vue {
|
|
|
statusOptions:Array<any>=[{
|
|
|
label:'待付款',
|
|
|
value:'WaitPay'
|
|
|
- },{
|
|
|
- label:'发货中',
|
|
|
- value:'Delivering'
|
|
|
},{
|
|
|
label:'被合并',
|
|
|
value:'Merged'
|
|
|
- },{
|
|
|
- label:'异常',
|
|
|
- value:'Question'
|
|
|
},{
|
|
|
label:'被拆分',
|
|
|
value:'Split'
|
|
@@ -430,12 +456,20 @@ export default class Order extends Vue {
|
|
|
},{
|
|
|
label:'已客审待财审',
|
|
|
value:'WaitFConfirm'
|
|
|
+ },{
|
|
|
+ label:'发货中',
|
|
|
+ value:'Delivering'
|
|
|
},{
|
|
|
label:'已发货',
|
|
|
value:'Sent'
|
|
|
},{
|
|
|
label:'取消',
|
|
|
value:'Cancelled'
|
|
|
+ },{
|
|
|
+ label:'异常',
|
|
|
+ value:'Question',
|
|
|
+ slot:true,
|
|
|
+ slotName:'question'
|
|
|
}]
|
|
|
shopIdListOptions:Array<any>=[]
|
|
|
|
|
@@ -443,8 +477,20 @@ export default class Order extends Vue {
|
|
|
provinceOptions:Array<any>=[]
|
|
|
|
|
|
mounted(){
|
|
|
- this.getList()
|
|
|
- this.getProvince()
|
|
|
+ this.getList();
|
|
|
+ this.getProvince();
|
|
|
+ this.getQuestionList();
|
|
|
+ }
|
|
|
+ showQuestType(){
|
|
|
+ (this.$refs.questModel as any).setShow(true);
|
|
|
+ }
|
|
|
+ //获取异常数据
|
|
|
+ getQuestionList(){
|
|
|
+ queryAll().then((res:any) => {
|
|
|
+ this.questData = res.data;
|
|
|
+ }).catch((err:any) => {
|
|
|
+
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
//生成采购单
|
|
@@ -556,7 +602,7 @@ export default class Order extends Vue {
|
|
|
smtMst = item.sourceId
|
|
|
}
|
|
|
}
|
|
|
- if(item.status != 'WaitConfirm'){
|
|
|
+ if(!item.pays && item.pays.length == 0){
|
|
|
if(msg){
|
|
|
msg = msg + ',' + item.sourceId
|
|
|
}else{
|
|
@@ -573,7 +619,7 @@ export default class Order extends Vue {
|
|
|
}
|
|
|
if(msg){
|
|
|
this.$message({
|
|
|
- message:'订单“'+msg + '”不是“已付款待审核”状态,不能提交!'
|
|
|
+ message:'订单“'+msg + '”未付款,不能提交!'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
@@ -584,7 +630,7 @@ export default class Order extends Vue {
|
|
|
this.load = false;
|
|
|
// if(res.data == data.length){
|
|
|
(this as any).$message({
|
|
|
- message: '订单提交成功!',
|
|
|
+ message: res.msg,
|
|
|
type: 'success'
|
|
|
});
|
|
|
// }else{
|
|
@@ -781,11 +827,49 @@ export default class Order extends Vue {
|
|
|
}
|
|
|
if(msgIds){
|
|
|
this.$message({
|
|
|
- message:'订单“'+msgIds + '”不满足取消订单操作!'
|
|
|
+ message:'订单“'+msgIds + '”已经是取消状态,不能重复操作!'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ (this.$refs.cancelOrderModel as any).setShow(true);
|
|
|
+ (this.$refs.cancelOrderModel as any).setData(ids);
|
|
|
+ }
|
|
|
+ //反取消订单
|
|
|
+ reCancelOrder(){
|
|
|
+ let data:Array<any>= (this.$refs.orderTable as any).getSelectData();
|
|
|
+ if(data.length == 0){
|
|
|
+ this.$message('请选择订单!');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let ids:Array<any>=[];
|
|
|
+ let msgIds='';
|
|
|
+ for(const item of data){
|
|
|
+ if(item.status == 'Cancelled'){
|
|
|
+ ids.push(item.id)
|
|
|
+ }else{
|
|
|
+ if(msgIds){
|
|
|
+ msgIds = msgIds + ',' + item.sourceId
|
|
|
+ }else{
|
|
|
+ msgIds = item.sourceId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(msgIds){
|
|
|
+ this.$message({
|
|
|
+ message:'订单“'+msgIds + '”订单未取消,不能执行此操作!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.load = true;
|
|
|
+ unCancel({idList:ids}).then((res:any)=>{
|
|
|
+ this.load = false;
|
|
|
+ this.$message({
|
|
|
+ message:'反取消订单操作成功!'
|
|
|
+ })
|
|
|
+ this.handleSuccess();
|
|
|
+ }).catch(()=>{
|
|
|
+ this.load = false
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
//同步店铺订单
|
|
@@ -882,7 +966,36 @@ export default class Order extends Vue {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
padding-bottom: 4px;
|
|
|
-
|
|
|
+}
|
|
|
+.ques-box{
|
|
|
+ .questtion-top{
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content:space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 16px;
|
|
|
+ background-color: #EEE;
|
|
|
+ cursor: pointer;
|
|
|
+ .quest-title{
|
|
|
+ height: 30px;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .el-icon-setting{
|
|
|
+ padding-right: 8px;
|
|
|
+ color: #2d99f7;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+ i{
|
|
|
+ font-size: 16px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .ques-list{
|
|
|
+ overflow: hidden;
|
|
|
+ padding-left: 16px;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|
|
|
|