Browse Source

取消订单

ymy 2 years ago
parent
commit
5ce0f0c97f

+ 8 - 0
src/api/omsOrder.ts

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

+ 73 - 0
src/views/oms/order/components/cancelOrderModel.vue

@@ -0,0 +1,73 @@
+<template>
+  <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-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+    </div>
+    <div class="info">
+      <div class="label">原因:</div>
+      <el-input v-model="reason" placeholder="请输入内容" type="texterae" rows="3"></el-input>
+    </div>
+    <template #footer>
+      <div class="btn">
+        <el-button type="primary" size="small" @click="btn">确定</el-button>
+      </div>
+    </template>
+  </vxe-modal>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class CancelOrderModel extends Vue {
+  value = false;
+  load = false;
+  reason='';
+  ids:Array<any>=[]
+  options:Array<any>= [{
+    value: '商品缺货',
+    label: '商品缺货'
+  },{
+    value: '客户申请取消',
+    label: '客户申请取消'
+  },{
+    value: '重复订单',
+    label: '重复订单'
+  }];
+  type= ''
+  setShow(v:boolean){
+    this.value = v;
+  }
+  setData(d:any){
+    this.ids = d;
+  }
+  btn(){
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.info{
+  width: 100%;
+  display: flex;
+  align-items: center;
+  padding-bottom: 16px;
+  .label{
+    width: 100px;
+    text-align: right;
+    padding-right: 8px;
+    box-sizing: border-box;
+  }
+  .cancel-type{
+    width: calc(100% - 100px);
+  }
+}
+</style>

+ 3 - 4
src/views/oms/order/components/orderTable.vue

@@ -72,14 +72,13 @@
     <vxe-column field="logisticsCompany" title="快递公司" width="120"></vxe-column>
     <vxe-column field="logisticsCompanyId" title="物流公司编码" width="120"></vxe-column>
     <vxe-column field="internationalLogisticsId" title="国际物流单号" width="120"></vxe-column>
-    <vxe-column field="skus" title="商品" width="120"></vxe-column>
+    <vxe-column field="skus" title="skus" width="120"></vxe-column>
     <vxe-column field="weight" title="重量" width="70"></vxe-column>
     <vxe-column field="isCod" title="是否货到付款" width="120">
       <template #default="{ row }">
         {{ row.isCod == 1 ? '是' :' 否' }}
       </template>
     </vxe-column>
-    <!-- <vxe-column field="freight" title="运费" width="70"></vxe-column> -->
     <vxe-column field="sendDate" title="发货日期" width="120"></vxe-column>
     <vxe-column field="signTime" title="预计送达时间" width="120"></vxe-column>
     <vxe-column field="endTime" title="确认收货时间" width="120"></vxe-column>
@@ -124,8 +123,8 @@
     <vxe-column field="note" title="线下备注" width="120"></vxe-column>
     <vxe-column title="操作" width="120" fixed="right">
       <template #default="{ row }">
-        <el-button type="text" v-if="showMerge(row)" @click="mergeHandle(row)">合并</el-button>
-        <el-button type="text" v-if="showSplit(row)" @click="splitHandle(row)">拆分</el-button>
+        <el-button type="text" size="mini" v-if="showMerge(row)" @click="mergeHandle(row)">合并</el-button>
+        <el-button type="text" size="mini" v-if="showSplit(row)" @click="splitHandle(row)">拆分</el-button>
       </template>
     </vxe-column>
   </vxe-table>

+ 7 - 1
src/views/oms/order/components/orderTool.vue

@@ -24,7 +24,13 @@
     <div class="split"></div>
     <el-button type="text">转异常</el-button>
     <el-button type="text">转正常</el-button>
-    <el-button type="text">取消订单</el-button>
+    <el-dropdown split-button type="text" class="dropdown" @click="handle('cancelOrder')" @command="handleCommand">
+      取消订单
+      <i class="el-icon-info" title="只有[待付款,发货中,异常,已付款待审核,等供销商|外仓发货,已客审待财审]才可以取消订单"></i>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item command="reCancelOrder">反取消订单</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
     <div class="split"></div>
     <el-dropdown split-button type="text" class="dropdown">
       修改

+ 22 - 11
src/views/oms/order/components/splitModal.vue

@@ -1,6 +1,10 @@
 <template>
-  <vxe-modal v-model="value" id="splitModel" title="拆分订单" width="70%" height="80%" min-width="460" min-height="320" show-zoom resize transfer show-footer v-loading="load">
-    <by-table :propConfig="config" ref="table" @onChangeRow="onChangeRow"> </by-table>
+  <vxe-modal v-model="value" id="splitModel" title="拆分订单" width="70%" height="80%" min-width="460" min-height="320" show-zoom resize transfer :show-footer="!hideBtn" v-loading="load">
+    <by-table :propConfig="config" ref="table"> 
+      <template v-slot:num="{row}">
+        <vxe-input v-model="row.num" v-if="row.splitNum > 0" placeholder="请输入" type="integer" @input="onChangeRow(row)"></vxe-input>
+      </template>
+    </by-table>
     <template #footer>
       <div class="btn">
         <el-button type="primary" size="small" @click="btn">确定</el-button>
@@ -17,6 +21,7 @@ export default class SplitModel extends Vue {
   value=false;
   load=false;
   billData:any=null;
+  hideBtn=false;
   data:Array<any>=[]
   config:any={
     attr:{
@@ -42,13 +47,14 @@ export default class SplitModel extends Vue {
     },{
       title:'拆分数量',
       field:'num',
-      component:'by-input',
-      compConfig:{
-        attr:{
-          size:'mini',
-          type:'number'
-        }
-      }
+      slot:true,
+      // component:'by-input',
+      // compConfig:{
+      //   attr:{
+      //     size:'mini',
+      //     type:'integer'
+      //   }
+      // }
     }]
   }
 
@@ -79,6 +85,7 @@ export default class SplitModel extends Vue {
     splitQtyQuery({id:v.id}).then((res:any) => {
       this.load = false;
       if(res.data){
+        let j = 0;
         for(const item of data){
           let n = Number(res.data[item.id]);
           if(n){
@@ -86,10 +93,14 @@ export default class SplitModel extends Vue {
           }else{
             item.splitNum = item.qty;
           }
-          if(item.splitNum > 0){
-            this.data.push(item)
+          this.data.push(item)
+          if(item.splitNum == 0){
+            j++
           }
         }
+        if(j == this.data.length){
+          this.hideBtn = true
+        }
         (this.$refs.table as any).setValue(this.data);
       }
     }).catch((err:any) => {

+ 30 - 1
src/views/oms/order/index.vue

@@ -147,7 +147,7 @@
         <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase"/>
       </div>
       <div class="table">
-        <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle"/>
+        <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle" @cancelOrder="cancelOrder"/>
         <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>
@@ -758,6 +758,35 @@ export default class Order extends Vue {
     this.page.pageNo = v;
     this.getList();
   }
+  //取消订单
+  cancelOrder(){
+    let condi=['WaitPay','Delivering','Question','WaitOuterSent','WaitConfirm','WaitFConfirm'];
+    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(condi.indexOf(item.status) >= 0){
+        ids.push(item.id)
+      }else{
+        if(msgIds){
+          msgIds = msgIds + ',' + item.sourceId
+        }else{
+          msgIds = item.sourceId
+        }
+      }
+    }
+    if(msgIds){
+      this.$message({
+        message:'订单“'+msgIds + '”不满足取消订单操作!'
+      })
+      return
+    }
+
+  }
 
   //同步店铺订单
   loadOrder(){