瀏覽代碼

Merge branch 'master' of http://47.107.53.207:3000/ymy/oms

AlanWong 2 年之前
父節點
當前提交
564c2835ac

+ 24 - 0
src/api/omsOrder.ts

@@ -88,4 +88,28 @@ export function merge(params:any){
 		method:'POST',
 		params:params
 	})
+}
+//已拆分数量
+export function splitQtyQuery(params:any){
+	return request({
+		url:'/omsOrder/omsOrder/splitQtyQuery',
+		method:'Get',
+		params:params
+	})
+}
+//拆分
+export function split(data:any){
+	return request({
+		url:'/omsOrder/omsOrder/split',
+		method:'POST',
+		data:data
+	})
+}
+//取消订单
+export function cancelOrder(data:any){
+	return request({
+		url:'/omsOrder/omsOrder/cancel',
+		method:'POST',
+		data:data
+	})
 }

+ 4 - 4
src/benyun/components/byArea/byArea.vue

@@ -5,7 +5,7 @@
         <div class="area-box first">
           <div class="left-label">省:</div>
           <div class="right-area">
-            <el-select v-model="provinceCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':provinceError}" @change="onProvince" size="mini" placeholder="请选择省">
+            <el-select v-model="provinceCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':provinceError}" @change="onProvince" size="small" placeholder="请选择省">
               <el-option
                 v-for="item in optionsProvince"
                 :key="item.id"
@@ -20,7 +20,7 @@
         <div class="area-box">
           <div class="left-label">市:</div>
           <div class="right-area">
-            <el-select v-model="cityCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':cityError}" @change="onCity" size="mini" placeholder="请选择市">
+            <el-select v-model="cityCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':cityError}" @change="onCity" size="small" placeholder="请选择市">
               <el-option
                 v-for="item in optionsCity"
                 :key="item.id"
@@ -35,7 +35,7 @@
         <div class="area-box last">
           <div class="left-label">区/县:</div>
           <div class="right-area">
-            <el-select v-model="countyCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':countyError}" @change="onCounty" size="mini" placeholder="请选择区/县">
+            <el-select v-model="countyCode" clearable :disabled="attrs.disabled" class="areaSelect" :class="{'error':countyError}" @change="onCounty" size="small" placeholder="请选择区/县">
               <el-option
                 v-for="item in optionsCounty"
                 :key="item.id"
@@ -50,7 +50,7 @@
         <div class="area-box last">
           <div class="left-label">街道:</div>
           <div class="right-area">
-            <el-select v-model="townCode" clearable :disabled="attrs.disabled" class="areaSelect" @change="onTown" size="mini" placeholder="请选择街道">
+            <el-select v-model="townCode" clearable :disabled="attrs.disabled" class="areaSelect" @change="onTown" size="small" placeholder="请选择街道">
               <el-option
                 v-for="item in optionsTown"
                 :key="item.id"

+ 3 - 0
src/benyun/components/byForm/byForm.vue

@@ -217,6 +217,9 @@ export default class ByForm extends VueViews {
     }else{
       this.changeSetValue(code,v)
     }
+    if((this as any).$refs.byForm){
+      (this as any).$refs.byForm.validateField(code);
+    }
     this.$emit('formChange',{value:v,code:code})
   }
   

+ 18 - 6
src/benyun/components/byInput/byInput.vue

@@ -1,25 +1,37 @@
 <template>
-  <el-input 
+  <el-input v-if="attrs.type == 'textarea'" v-model="value" @input="onChange" :rows="attrs.rows" :show-word-limit="attrs.showWordLimit" :show-password="attrs.showPassword" :placeholder="placeholder"
+  :maxlength="attrs.maxlength" :minlength="attrs.minlength" :clearable="attrs.clearable" :disabled="attrs.disabled" :prefix-icon="attrs.prefixIcon"
+  :suffix-icon="attrs.suffixIcon" :readonly="attrs.readonly"></el-input>
+  <vxe-input 
+    v-else
     v-model="value"
     :placeholder="placeholder"
     :maxlength="attrs.maxlength"
     :minlength="attrs.minlength"
-    :show-word-limit="attrs.showWordLimit"
     :clearable="attrs.clearable"
-    :show-password="attrs.showPassword"
     :disabled="attrs.disabled"
-    :size="attrs.size"
+    :size="attrs.size?attrs.size:'medium'"
     :type="attrs.type"
+    :align="attrs.align"
     :prefix-icon="attrs.prefixIcon"
     :suffix-icon="attrs.suffixIcon"
-    :rows="attrs.rows"
     :readonly="attrs.readonly"
     @input="onChange"
     @clear="onChange"
-    ></el-input>
+    ></vxe-input>
 </template>
 
 <script lang="ts">
+/*
+config:{
+  attr:{
+    type:'text, number(数字), integer(整数),textarea,float(小数),password(密码)',
+    align:'left, center, right'
+    prefixIcon:''  //头部图标
+    suffixIcon:''  //尾部图标
+  }
+}
+*/
 import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 import VueViews from '@/benyun/compVue/VueViews'
 @Component

+ 2 - 1
src/benyun/components/sideTree/sideTree.vue

@@ -2,8 +2,9 @@
   <div class="sideTree" v-loading="load">
     <div class="tree-top">
       <el-switch
+        :width="35"
         v-model="switchValue"
-        active-text="包含下级"
+        active-text="包含下级"
         size="mini">
       </el-switch>
     </div>

+ 2 - 2
src/main.ts

@@ -22,7 +22,7 @@ import './assets/styles/element-variables.scss'
 // import VXETable from 'vxe-table'
 import XEUtils from 'xe-utils'
 import 'vxe-table/lib/style.css'
-import { VXETable, Column,Table,Modal,Button } from 'vxe-table'
+import { VXETable, Column,Table,Modal,Button,Input } from 'vxe-table'
 import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
  // 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:
 VXETable.setup({
@@ -49,7 +49,7 @@ Vue.use(Element, {
   size: Cookies.get('size') || 'medium' // set element-ui default size
 })
 
-Vue.use(Column).use(Table).use(Modal).use(Button);
+Vue.use(Column).use(Table).use(Modal).use(Button).use(Input);
 Vue.use(gmComponent);
 Vue.use(plugins);
 Vue.use(directive);

+ 1 - 1
src/views/audit/synchronous/components/synchronousOrderModal.vue

@@ -176,7 +176,7 @@ export default class SynchronousOrderModal extends Vue {
     pullItem(value).then((res:any) => {
       this.load = false;
       this.value = false;
-      if(res.data && res.data.length > 0){
+      if(res.data > 0){
         (this as any).$message({
           message: '成功更新' + res.data + '条数据!',
           type: 'success',

+ 1 - 0
src/views/demo/form.vue

@@ -39,6 +39,7 @@ export default class DemoForm extends Vue {
         compConfig:{
           attr:{
             placeholder:'请输入名称',
+            type:'integer',
             clearable:true
           }
         }

File diff suppressed because it is too large
+ 31 - 21
src/views/oms/order/components/addOrder.vue


+ 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>

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

@@ -231,7 +231,7 @@ export default class LoadOrderModal extends Vue {
     pullOrder(value).then((res:any) => {
       this.load = false;
       this.value = false;
-      if(res.data && res.data.length > 0){
+      if(res.data > 0){
         (this as any).$message({
           message: '成功更新' + res.data + '条数据!',
           type: 'success',

+ 5 - 5
src/views/oms/order/components/mergeMedal.vue

@@ -1,6 +1,6 @@
 <template>
-  <vxe-modal v-model="value" id="mergeModel" title="合并订单" @show="show" width="70%" height="80%" min-width="460" min-height="320" 
-    show-zoom resize transfer show-footer @hide="hide" v-loading="load">
+  <vxe-modal v-model="value" id="mergeModel" 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">
       <template v-slot:sourceId="{row}">
         <span>{{ row.sourceId }}</span>
@@ -115,8 +115,6 @@ export default class MergeModel extends Vue {
       width:160
     }]
   }
-  show(){}
-  hide(){}
   setShow(v:boolean){
     this.value = v
   }
@@ -149,9 +147,11 @@ export default class MergeModel extends Vue {
     merge(params).then((res:any)=>{
       this.load = false;
       this.$message({
-        message:'数据合并成功!',
+        message:'合并成功!',
         type:'success'
       })
+      this.$emit('handleSuccess');
+      this.value = false;
     }).catch((err:any) => {
       this.load = false;
     })

+ 57 - 22
src/views/oms/order/components/orderTable.vue

@@ -23,9 +23,8 @@
     </vxe-column>
     <vxe-column field="isSubmitted" title="提交状态" width="130">
       <template #default="{ row }">
-        <el-tag v-if="row.isSubmitted == 1">已提交</el-tag>
-        <el-tag v-else type="warning"> 未提交 </el-tag>
-
+        <el-tag v-if="row.isSubmitted == 1" size="small">已提交</el-tag>
+        <el-tag v-else type="warning" size="small"> 未提交 </el-tag>
       </template>
     </vxe-column>
     <vxe-column field="product" title="商品" width="140">
@@ -64,18 +63,7 @@
     </vxe-column>
     <vxe-column field="sourceFrom" title="订单来源" width="120">
       <template #default="{ row }">
-        <span v-if="row.sourceFrom == 'ERP'">手工下单</span>
-        <span v-if="row.sourceFrom == 'COPY'">复制</span>
-        <span v-if="row.sourceFrom == 'MERGE'">合并</span>
-        <span v-if="row.sourceFrom == 'SPLIT'">拆分;拆分还原</span>
-        <span v-if="row.sourceFrom == 'MOBILE'">手工下单</span>
-        <span v-if="row.sourceFrom == 'IMPORT'">导入</span>
-        <span v-if="row.sourceFrom == 'drp-s'">供销推送</span>
-        <span v-if="row.sourceFrom == 'drp-d'">分销推送</span>
-        <span v-if="row.sourceFrom == 'KWAISHOP'">快手;微商城</span>
-        <span v-if="row.sourceFrom == 'PINDUODUO'">拼多多</span>
-        <span v-if="row.sourceFrom == 'TOUTIAOFXG'">头条放心购</span>
-        <span v-if="row.sourceFrom == 'JUSHUITAN'">聚水潭</span>
+        {{ getFromText(row.sourceFrom) }}
       </template>
     </vxe-column>
     <vxe-column field="shipment" title="跨境买家指定物流" width="120"></vxe-column>
@@ -84,10 +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"></vxe-column>
-    <!-- <vxe-column field="freight" title="运费" width="70"></vxe-column> -->
+    <vxe-column field="isCod" title="是否货到付款" width="120">
+      <template #default="{ row }">
+        {{ row.isCod == 1 ? '是' :' 否' }}
+      </template>
+    </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>
@@ -132,7 +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" 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>
@@ -146,17 +138,57 @@ export default class OrderTable extends Vue {
   @Prop()
   data!:Array<any>
   height=null
-  
+
+  sourceFrom:any={
+    'ERP':'手工下单',
+    'COPY':'复制',
+    'MERGE':'合并',
+    'SPLIT':'拆分;拆分还原',
+    'MOBILE':'导入',
+    'drp-s':'供销推送',
+    'drp-d':'分销推送',
+    'KWAISHOP':'快手;微商城',
+    'PINDUODUO':'拼多多',
+    'TOUTIAOFXG':'头条放心购',
+    'JUSHUITAN':'聚水潭'
+  }
+  //订单来源转换文字信息
+  getFromText(f:any){
+    let t='';
+    if(f){
+      let arr:Array<any>=f.split(',');
+      for(const item of arr){
+        if(this.sourceFrom[item]){
+          if(t){
+            t = t + ' , ' + this.sourceFrom[item]
+          }else{
+            t = this.sourceFrom[item]
+          }
+        }
+      }
+    }
+    return t;
+  }
   //合并按钮是否显示
   showMerge(item:any){
     let r = false;
-    if(item.isSubmitted == 1 && item.pays && item.pays.length > 0){
+    if(item.isSubmitted == 1 && item.pays && item.pays.length > 0 && item.sourceFrom.indexOf('MERGE') == -1 && item.sourceFrom.indexOf('SPLIT') == -1){
       if(item.status == 'WaitConfirm' || item.status == 'Question'){
         r = true;
       }
     }
     return r;
   }
+  showSplit(item:any){
+    let r = false;
+    if(item.isSubmitted == 1 && item.pays && item.pays.length > 0 && item.sourceFrom.indexOf('MERGE') == -1 && item.sourceFrom.indexOf('SPLIT') == -1){
+      let s=['WaitConfirm','Question','Split']
+      if(s.indexOf(item.status) >= 0){
+        r = true;
+      }
+    }
+    return r;
+  }
 
   formatDate(v:string){
     return Format(v,'yyyy-MM-dd');
@@ -189,6 +221,9 @@ export default class OrderTable extends Vue {
     }
     this.$emit('mergeHandle',data);
   }
+  splitHandle(row:any){
+    this.$emit('splitHandle',row);
+  }
 }
 </script>
 
@@ -247,7 +282,7 @@ export default class OrderTable extends Vue {
 }
 .item-pro{
   .el-badge__content{
-    z-index: 10;
+    z-index: 1;
   }
 }
 </style>

+ 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">
       修改

+ 158 - 0
src/views/oms/order/components/splitModal.vue

@@ -0,0 +1,158 @@
+<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="!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>
+      </div>
+    </template>
+  </vxe-modal>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import { splitQtyQuery,split } from '@/api/omsOrder'
+@Component({components:{}})
+export default class SplitModel extends Vue {
+  value=false;
+  load=false;
+  billData:any=null;
+  hideBtn=false;
+  data:Array<any>=[]
+  config:any={
+    attr:{
+      size:'small',
+      seq:true
+    },
+    columns:[{
+      title:'名称',
+      field:'name',
+      width:300
+    },{
+      title:'价格',
+      field:'price',
+      width:130
+    },{
+      title:'商品数量',
+      field:'qty',
+      width:130
+    },{
+      title:'可拆分数量',
+      field:'splitNum',
+      width:130
+    },{
+      title:'拆分数量',
+      field:'num',
+      slot:true,
+      // component:'by-input',
+      // compConfig:{
+      //   attr:{
+      //     size:'mini',
+      //     type:'integer'
+      //   }
+      // }
+    }]
+  }
+
+  setShow(v:boolean){
+    this.value = v;
+  }
+  setData(data:any){
+    if(data){
+      this.billData = data;
+      this.data = [];
+      this.getSplitNum(data);
+    }else{
+      this.billData = null;
+      this.data = [];
+    }
+    this.$nextTick(()=>{
+      if(this.$refs.table){
+        (this.$refs.table as any).setValue(this.data);
+      }
+    })
+  }
+//获取可拆分数量
+  getSplitNum(v:any){
+    if(!v) return;
+    let data = v.items?v.items:[];
+    if(data.length == 0) return;
+    this.load = true;
+    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){
+            item.splitNum = item.qty - n;
+          }else{
+            item.splitNum = item.qty;
+          }
+          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) => {
+      this.load = false
+    })
+  }
+
+  btn(){
+    let data = (this.$refs.table as any).getValue();
+    let info:Array<any>=[];
+    if(data.length == 0){
+      this.$message('未有数据不能执行此操作!')
+      return
+    }
+    for(const item of data){
+      if(Number(item.num) > 0){
+        info.push({
+          qty:Number(item.num),
+          orderItemId:item.id
+        })
+      }
+    }
+    if(info.length == 0){
+      this.$message('请设置拆分数量!')
+      return
+    }
+    this.load = true;
+    split({
+      id:this.billData.id,
+      splitInfos:info
+    }).then((res:any) => {
+      this.load = false;
+      this.$message({
+        message:'拆分成功!',
+        type:'success'
+      })
+      this.$emit('handleSuccess');
+      this.value = false;
+    }).catch(() => {
+      this.load = false
+    })
+  }
+
+  onChangeRow(row:any){
+    if(Number(row.splitNum) < Number(row.num)){
+      this.$message('拆分数量不能大于可拆分数量!');
+      row.num = 0;
+      this.$forceUpdate()
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 44 - 6
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"/>
+        <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>
@@ -156,7 +156,8 @@
       <add-order ref="addOrder" @handleSuccess="handleSuccess" />
       <load-order-modal ref="loadOrder" @handleSuccess="handleSuccess" />
       <purchase-model ref="purchaseModel" @handleSuccess="handleSuccess" />
-      <merge-model ref="mergeModel" />
+      <merge-model ref="mergeModel" @handleSuccess="handleSuccess" />
+      <split-model ref="splitModel" @handleSuccess="handleSuccess" />
     </div>
   </div>
 </template>
@@ -174,10 +175,11 @@ import OrderProduct from "./components/orderProduct.vue";
 import filterMinMax from './components/filterMinMax.vue'
 import loadOrderModal from './components/loadOrderModal.vue' //手工下载
 import PurchaseModel from "./components/purchaseModel.vue"; //生成采购单
-import MergeModel from "./components/mergeMedal.vue";
-import { query,getProvince,smt,unSmt,purchaseQty,merge } from '@/api/omsOrder'
+import MergeModel from "./components/mergeMedal.vue"; //合并
+import SplitModel from "./components/splitModal.vue"; //拆分
+import { query,getProvince,smt,unSmt,purchaseQty } from '@/api/omsOrder'
 @Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
-  filterMinMax,loadOrderModal,PurchaseModel,MergeModel}})
+  filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel}})
 export default class Order extends Vue {
   activeNames:Array<any>=['1','status']
   radio=''
@@ -500,7 +502,7 @@ export default class Order extends Vue {
       (this.$refs.purchaseModel as any).setTableData(productData);
     })
   }
-
+  //重置搜索数据
   clearSearchValue(){
     this.value={};
     for(const key in this.$refs){
@@ -527,6 +529,13 @@ export default class Order extends Vue {
       (this.$refs.mergeModel as any).setData(data);
     }
   }
+  //拆单
+  splitHandle(row:any){
+    if(this.$refs.splitModel){
+      (this.$refs.splitModel as any).setShow(true);
+      (this.$refs.splitModel as any).setData((this as any).$lodash.cloneDeep(row));
+    }
+  }
   addOrder(){
     (this.$refs.addOrder as any).setShow(true)
   }
@@ -749,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(){

Some files were not shown because too many files changed in this diff