ymy 2 years ago
parent
commit
7356a2094c

+ 8 - 0
src/api/omsOrder.ts

@@ -112,4 +112,12 @@ export function cancelOrder(data:any){
 		method:'POST',
 		data:data
 	})
+}
+//反取消订单
+export function unCancel(data:any){
+	return request({
+		url:'/omsOrder/omsOrder/unCancel',
+		method:'POST',
+		params:data
+	})
 }

+ 3 - 2
src/views/oms/order/components/addOrder.vue

@@ -42,7 +42,7 @@
             <el-radio :label="1">快速支付&已付款</el-radio>
             <el-radio :label="2">手工添加支付信息</el-radio>
           </el-radio-group>
-          <div class="pay-row" v-else-if="orderValue.status != 'Split' && orderValue.status != 'Merged'">
+          <div class="pay-row" v-else-if="orderValue.status != 'Split' && orderValue.status != 'Merged' && orderValue.status != 'Cancelled'">
             <el-button type="text" v-if="!orderValue.pays || orderValue.pays.length == 0">快速支付</el-button>
             <el-button type="text" @click="radioPay = 2">添加手工支付</el-button>
           </div>
@@ -52,7 +52,7 @@
               <el-descriptions-item label="单号">{{item.outerPayId}}</el-descriptions-item>
               <el-descriptions-item label="金额">{{item.amount}}</el-descriptions-item>
               <el-descriptions-item label="支付日期">{{item.payDate}}</el-descriptions-item>
-              <el-descriptions-item v-if="orderValue.status == 'Split' || orderValue.status == 'Merged'" label="状态">
+              <el-descriptions-item v-if="orderValue.status == 'Split' || orderValue.status == 'Merged' || orderValue.status == 'Cancelled'" label="状态">
                 <el-tag type="info" size="mini">已失效</el-tag>
               </el-descriptions-item>
             </el-descriptions>
@@ -272,6 +272,7 @@ export default class AddOrder extends Vue {
         prop:'sourceFrom',
         descSlot:true,
         component:'by-select',
+        colspan:2,
         compConfig:{
           attr:{
             // placeholder:'请输入订单日期',

+ 26 - 4
src/views/oms/order/components/cancelOrderModel.vue

@@ -2,7 +2,7 @@
   <vxe-modal v-model="value" id="purchaseModel" width="400" height="300" show-zoom resize transfer show-footer v-loading="load">
     <div class="info">
       <div class="label">类型:</div>
-      <el-select v-model="type" placeholder="请选择" size="mini" class="cancel-type">
+      <el-select v-model="type" placeholder="请选择" size="mini" class="cancel-type" clearable>
         <el-option
           v-for="item in options"
           :key="item.value"
@@ -13,7 +13,7 @@
     </div>
     <div class="info">
       <div class="label">原因:</div>
-      <el-input v-model="reason" placeholder="请输入内容" type="texterae" rows="3"></el-input>
+      <el-input v-model="reason" class="cancel-type" placeholder="请输入内容" type="textarea" :rows="3"></el-input>
     </div>
     <template #footer>
       <div class="btn">
@@ -25,6 +25,7 @@
 
 <script lang="ts">
 import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import { cancelOrder } from '@/api/omsOrder'
 @Component
 export default class CancelOrderModel extends Vue {
   value = false;
@@ -49,7 +50,28 @@ export default class CancelOrderModel extends Vue {
     this.ids = d;
   }
   btn(){
-
+    if(!this.type){
+      this.$message('请选择取消类型!');
+      return
+    }
+    this.load = true;
+    cancelOrder({
+      idList:this.ids,
+      cancelType:this.type,
+      remark:this.reason
+    }).then(()=>{
+      this.load = false;
+      this.$message({
+        message:'订单取消成功!',
+        type:'success'
+      });
+      this.value = false;
+      this.type='';
+      this.reason = '';
+      this.$emit('handleSuccess');
+    }).catch((err:any)=>{
+      this.load = false;
+    })
   }
 }
 </script>
@@ -61,7 +83,7 @@ export default class CancelOrderModel extends Vue {
   align-items: center;
   padding-bottom: 16px;
   .label{
-    width: 100px;
+    width: 80px;
     text-align: right;
     padding-right: 8px;
     box-sizing: border-box;

+ 0 - 1
src/views/oms/order/components/loadOrderModal.vue

@@ -243,7 +243,6 @@ export default class LoadOrderModal extends Vue {
           type: 'warning',
         });
       }
-      this.$emit('handleSuccess');
     }).catch((err:any) => {
       this.load = false;
     })

+ 56 - 9
src/views/oms/order/index.vue

@@ -144,20 +144,28 @@
     </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" />
     </div>
   </div>
 </template>
@@ -177,9 +185,10 @@ 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 { query,getProvince,smt,unSmt,purchaseQty,unCancel } from '@/api/omsOrder'
 @Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
-  filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel}})
+  filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel,CancelOrderModel}})
 export default class Order extends Vue {
   activeNames:Array<any>=['1','status']
   radio=''
@@ -556,7 +565,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 +582,7 @@ export default class Order extends Vue {
     }
     if(msg){
       this.$message({
-        message:'订单“'+msg + '”不是“已付款待审核”状态,不能提交!'
+        message:'订单“'+msg + '”未付款,不能提交!'
       })
       return
     }
@@ -584,7 +593,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 +790,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
+    })
   }
 
   //同步店铺订单