Jelajahi Sumber

订单功能

ymy 2 tahun lalu
induk
melakukan
fdcd069f58

+ 9 - 0
src/api/omsOrder.ts

@@ -0,0 +1,9 @@
+import request from '@/benyun/utils/request'
+
+export function query(data : any) {
+	return request({
+		url: '/omsOrder/omsOrder/query',
+		method: 'POST',
+		data: data
+	})
+}

+ 169 - 0
src/benyun/components/byArea/byArea.vue

@@ -0,0 +1,169 @@
+<template>
+  <div class="by-area">
+    <el-row>
+      <el-col :span="6">
+        <div class="area-box first">
+          <div class="left-label">省:</div>
+          <div class="right-area">
+            <el-select v-model="provinceCode" clearable @clear="clearProvince" class="areaSelect" :class="{'error':provinceError}" @change="onProvince" size="mini" placeholder="请选择省">
+              <el-option
+                v-for="item in optionsProvince"
+                :key="item.id"
+                :label="item.name"
+                :value="item.code">
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+      </el-col>
+      <el-col :span="6">
+        <div class="area-box">
+          <div class="left-label">市</div>
+          <div class="right-area">
+            <el-select v-model="cityCode" clearable class="areaSelect" :class="{'error':cityError}" @clear="clearCity" @change="onCity" size="mini" placeholder="请选择市">
+              <el-option
+                v-for="item in optionsCity"
+                :key="item.id"
+                :label="item.name"
+                :value="item.code">
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+      </el-col>
+      <el-col :span="6">
+        <div class="area-box last">
+          <div class="left-label">区/县:</div>
+          <div class="right-area">
+            <el-select v-model="countyCode" clearable @clear="clearCounty" class="areaSelect" :class="{'error':countyError}" @change="onCounty" size="mini" placeholder="请选择区/县">
+              <el-option
+                v-for="item in optionsCounty"
+                :key="item.id"
+                :label="item.name"
+                :value="item.code">
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Mixins,Watch } from "vue-property-decorator";
+import VueViews from '@/benyun/compVue/VueViews'
+@Component
+export default class ByArea extends VueViews {
+  provinceCode='';
+  cityCode='';
+  countyCode='';
+  province='';
+  city='';
+  county='';
+  area='';
+  areaCode='';
+  optionsProvince:Array<any>=[];
+  optionsCity:Array<any>=[];
+  optionsCounty:Array<any>=[];
+  provinceError = false;
+  cityError = false;
+  countyError = false;
+
+  mounted(){
+    this.request({
+      data:{
+        parentCode:'86'
+      },
+      success:(data:any) => {
+        this.optionsProvince = data;
+        console.log(this.optionsProvince)
+      }
+    })
+  }
+
+  clearProvince(){
+    this.cityCode='';
+    this.countyCode='';
+    this.province='';
+    this.city='';
+    this.county='';
+    this.area='';
+    this.areaCode='';
+    this.optionsCity=[];
+    this.optionsCounty=[];
+    this.provinceError = false;
+    this.onChange();
+  }
+  clearCity(){
+    this.countyCode='';
+    this.city='';
+    this.county='';
+    this.area=this.province;
+    this.areaCode=this.provinceCode+'0000';
+    this.optionsCounty=[];
+    this.cityError = false;
+    this.onChange();
+  }
+  clearCounty(){
+    this.countyCode='';
+    this.county='';
+    this.area=this.city;
+    this.countyError = false;
+    this.areaCode=this.cityCode+'00';
+    this.onChange();
+  }
+  onProvince(v:any){
+
+  }
+  onCity(v:any){}
+  onCounty(v:any){}
+  onChange(){
+    
+  }
+
+  request(data:any){
+    let parame:any = {
+      url:'/omsOrder/omsArea/getByParentCode',
+      method: 'GET',
+    };
+    parame.data = data.data;
+    parame.success = (res:any) => {
+      data.success(res.data)
+    }
+    parame.fail = (err:any) => {
+      
+    }
+    this.requestHandle(parame);
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.by-area{
+  width: 100%;
+  .area-box{
+    padding: 0 4px;
+    display: flex;
+    align-items: center;
+    .left-label{
+      // width: 100px;
+      text-align: right;
+      // flex-shrink: 0;
+      // .require{
+      //   color: #F00;
+      //   padding: 0 2px;
+      // }
+    }
+    .right-area{
+      width: 100%;
+    }
+  }
+  .first{
+    padding-left: 0;
+  }
+  .last{
+    padding-right: 0;
+  }
+}
+</style>

+ 4 - 0
src/benyun/plugins/componentRegister.ts

@@ -43,6 +43,10 @@ const comps: Array<ComBase> = [
     name: "collapseCheckbox",
     component: () => import("@/benyun/components/collapseCheckbox/collapseCheckbox.vue"),
   },
+  {
+    name: "byArea",
+    component: () => import("@/benyun/components/byArea/byArea.vue"),
+  },
 ];
 
 const install = function (Vue: any) {

+ 40 - 0
src/components/buyer/buyer.vue

@@ -0,0 +1,40 @@
+<template>
+  <div class="buyer">
+    <el-input placeholder="请选择" v-model="value" size="mini" class="buyer-with-select" clearable>
+      <el-button slot="append" icon="el-icon-more" @click="showProduct"></el-button>
+    </el-input>
+    <productDialog ref="product" @confirm="confirm" />
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class Buyer extends Vue {
+  value=''
+
+  showProduct(){
+    (this.$refs.product as any).setShow(true)
+  }
+  confirm(data:Array<any>){
+    
+  }
+}
+</script>
+<style lang="scss" scoped>
+.buyer{
+  width: 100%;
+}
+</style>
+<style lang="scss">
+.buyer-with-select{
+  margin-bottom: 4px;
+  .el-input-group__append{
+    background-color: #fff !important;
+    width: 40px !important;
+    .el-icon-more{
+      font-size: 20px;
+    }
+  }  
+}
+</style>

+ 3 - 3
src/views/audit/materialAdd/index.vue

@@ -340,9 +340,9 @@
 		}
 		created() {
 			// 获取机构商品分类
-			api.institutionList({}).then((res : any) => {
-				console.log('机构商品分类 ==> ', res);
-			})
+			// api.institutionList({}).then((res : any) => {
+			// 	console.log('机构商品分类 ==> ', res);
+			// })
 		}
 		doSave() {
 			this.getFormData()

+ 71 - 0
src/views/demo/order/components/filterMinMax.vue

@@ -0,0 +1,71 @@
+<template>
+  <div class="min-max">
+    <div v-if="title">{{title}}:</div>
+    <div class="munber-time">
+      <el-input v-model="value[minField]" class="number-input" size="mini" type="number" @input="mininput"></el-input>
+      <span class="split"> - </span>
+      <el-input v-model="value[maxField]" class="number-input" size="mini" type="number" @input="maxinput"></el-input>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderProduct extends Vue {
+  value:any={}
+
+  @Prop()
+  title!: string;
+  
+  @Prop()
+  minField!:string
+
+  @Prop()
+  maxField!:string
+
+  mininput(){
+    this.$emit('change',this.value)
+  }
+  maxinput(){
+    const max = Number(this.value[this.maxField]);
+    const min = Number(this.value[this.minField]);
+    if(max < min){
+      this.$message({
+        message: '最大值不能超过最小值',
+        type: 'warning'
+      })
+      this.value[this.maxField] = null;
+      return
+    }
+    this.$emit('change',this.value)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.min-max{
+  width: 100%;
+  padding-bottom: 4px;
+  .munber-time{
+    width: 100%;
+    display: flex;
+    align-items: center;
+    .split{
+      padding: 0 8px;
+    }
+  }
+}
+</style>
+
+<style lang="scss">
+.number-input{
+  width: 70px; 
+  flex-shrink: 0; 
+  padding: 0;
+  .el-input__inner{
+    padding: 0 !important;
+    text-align: center;
+  }
+}
+</style>

+ 57 - 0
src/views/demo/order/components/inputSelect.vue

@@ -0,0 +1,57 @@
+<template>
+  <el-input :placeholder="placeholder" v-model="value" class="input-with-select" size="mini" @input="input">
+    <el-select v-model="select" slot="append" placeholder="请选择" @change="change">
+      <el-option v-for="(item,index) of options" :key="index" :label="item.label" :value="item.value"></el-option>
+    </el-select>
+  </el-input>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class InputSelect extends Vue {
+  value='';
+  select='';
+  placeholder='';
+
+  @Prop()
+  options!:Array<any>
+
+  mounted(){
+    if(this.options){
+      this.select = this.options[0].value;
+      this.placeholder = this.options[0].label;
+    }
+  }
+
+  change(v:any){
+    for(const item of this.options){
+      if(item.value == v){
+        this.placeholder = item.label
+      }
+    }
+  }
+  input(v:any){
+    this.$emit('input',{
+      value:this.value,
+      code:this.select
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.input-with-select{
+  padding-bottom: 4px;
+  width: 100%;
+}
+</style>
+
+<style lang="scss">
+.input-with-select{
+  .el-input-group__append{
+    background-color: #fff !important;
+    width: 110px !important;
+  }  
+}
+</style>

+ 41 - 0
src/views/demo/order/components/orderProduct.vue

@@ -0,0 +1,41 @@
+<template>
+  <div class="order-product">
+    <el-input placeholder="商品" v-model="value" size="mini" class="product-with-select" clearable>
+      <el-button slot="append" icon="el-icon-more" @click="showProduct"></el-button>
+    </el-input>
+    <productDialog ref="product" @confirm="confirm" />
+  </div>
+  
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderProduct extends Vue {
+  value=''
+
+  showProduct(){
+    (this.$refs.product as any).setShow(true)
+  }
+  confirm(data:Array<any>){
+    
+  }
+}
+</script>
+<style lang="scss" scoped>
+.order-product{
+  width: 100%;
+}
+</style>
+<style lang="scss">
+.product-with-select{
+  margin-bottom: 4px;
+  .el-input-group__append{
+    background-color: #fff !important;
+    width: 40px !important;
+    .el-icon-more{
+      font-size: 20px;
+    }
+  }  
+}
+</style>

+ 640 - 0
src/views/oms/order/components/addOrder.vue

@@ -0,0 +1,640 @@
+<template>
+  <vxe-modal v-model="value" id="addOrder" @show="show" width="70%" height="80%" min-width="460" min-height="320" 
+    show-zoom resize transfer show-footer>
+      <template #title>
+        <span>创建新订单</span>
+      </template>
+      <template #default>
+        <el-collapse v-model="activeNames">
+          <el-collapse-item title="基本信息" name="1" class="add-order-item">
+            <by-form :propConfig="config" ref="baseform"></by-form>
+          </el-collapse-item>
+          <el-collapse-item title="买家信息" name="2">
+            <by-form :propConfig="config2" ref="infoform">
+              <template v-slot:slotField='{ value }'>
+                <div class="updateBuyer">
+                  <el-checkbox v-model="value.slotField">更新买家收货人信息</el-checkbox>
+                </div>
+              </template>
+              <template v-slot:address='{ value }'>
+                地址
+              </template>
+            </by-form>
+          </el-collapse-item>
+          <el-collapse-item title="商品订单" name="3">
+            <div class="addProductTool">
+              <by-tool :propConfig="toolConfig"></by-tool>
+            </div>
+            
+            <by-table :propConfig="tableConfig" ref="table">
+              <template v-slot:slotField='{ row }'>插槽:{{ row.name }}</template>
+            </by-table>
+          </el-collapse-item>
+          <el-collapse-item title="订单支付情况" name="4">
+            <el-radio-group v-model="radioPay" @input="inputPay">
+              <el-radio :label="1">待付款</el-radio>
+              <el-radio :label="2">快速支付&已付款</el-radio>
+              <el-radio :label="3">手工添加支付信息</el-radio>
+            </el-radio-group>
+            <by-form v-if="radioPay == 3" :propConfig="payConfig" ref="payform"></by-form>
+          </el-collapse-item>
+          <el-collapse-item title="发票信息" name="5">
+            <by-form :propConfig="invoicesConfig" ref="invoicesform"></by-form>
+          </el-collapse-item>
+        </el-collapse>
+      </template>
+      <template #footer>
+        <div class="btn">
+          <el-button type="primary" size="small">确定并继续</el-button>
+          <el-button type="primary" size="small">确定</el-button>
+        </div>
+      </template>
+    </vxe-modal>
+</template>
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+
+@Component
+export default class AddOrder extends Vue {
+  value=false;
+  userName:any='';//用户信息
+  orderValue:any={}; //新增订单值
+  radioPay=null;
+  activeNames:Array<any> =['1','2','3','4','5'];
+  config:any={
+    attr:{
+      size:'mini',
+      rules:{
+        shopName:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }],
+        sourceId:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }],
+        orderDate:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }]
+      }
+    },
+    columns:[
+      [{
+        span:6,
+        label:'店铺名称',
+        prop:'shopName',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入店铺名称',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'线上订单',
+        prop:'sourceId',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入线上订单',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'订单日期',
+        prop:'orderDate',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入订单日期',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'运费',
+        prop:'freight',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入订单日期',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'快递公司',
+        prop:'logisticsCompany',
+        component:'by-select',
+        compConfig:{
+          attr:{
+            placeholder:'请选择快递公司',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'业务员',
+        prop:'createBy',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            readonly:true
+          }
+        }
+      }],
+      [{
+        label:'多标签',
+        prop:'labels',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'以逗号分隔,单个标签不能超过十个字符',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        label:'买家留言',
+        prop:'buyerMessage',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入买家留言',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        label:'卖家备注',
+        prop:'remark',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入卖家备注',
+            clearable:true
+          }
+        }
+      }]
+    ]
+  }
+  config2:any={
+    attr:{
+      size:'mini',
+      rules:{
+        shopName:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }],
+        sourceId:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }],
+        orderDate:[{
+          required: true, message: '请输入名称', trigger: 'blur'
+        }]
+      }
+    },
+    columns:[
+      [{
+        span:6,
+        label:'买家账号',
+        prop:'buyerId',
+        component:'by-buyer',
+        compConfig:{}
+      },{
+        span:6,
+        label:'收货人',
+        prop:'receiverName',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入收货人',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        // label:'插槽',
+        labelWidth:'0px',
+        slot:true,
+        prop:'slotField',
+      }],
+      [{
+        span:24,
+        label:'收货地址',
+        // slot:true,
+        prop:'address',
+        component:'by-area'
+      }],
+      [{
+        span:24,
+        label:'详细地址',
+        prop:'address',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入详细地址',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'电话',
+        prop:'receiverPhone',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入电话',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'手机',
+        prop:'receiverMobile',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入手机',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'邮编',
+        prop:'receiverZip',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入邮编',
+            clearable:true
+          }
+        }
+      }]
+    ]
+  }
+  tableConfig:any={
+    attr:{
+      size:'mini',
+      seq:true,
+      align:'center',
+      checkbox:true,
+    },
+    columns:[{
+      title:'名称|款式编码|商品编码',
+      field:'id',
+      width:300
+    },{
+      title:'数量',
+      field:'qty',
+      width:100
+    },{
+      title:'单价',
+      field:'price',
+      width:100
+    },{
+      title:'原价',
+      field:'basePrice',
+      width:100
+    },{
+      title:'成交金额',
+      field:'amount',
+      width:100
+    },{
+      title:'库存',
+      field:'store',
+      width:100
+    },{
+      title:'操作',
+      action:true,
+      plugins:[{
+        icon:'el-icon-delete',
+        name:'删除',
+        audit:'',
+        event:{
+          click:(item:any) => {
+            console.log('该行数据:',item)
+          }
+        }
+      }]
+    }]
+  }
+  toolConfig={
+    customTools:[
+      {
+        name: '新增商品', icon: 'el-icon-plus', event:{
+          click:()=>{
+            console.log('新增123')
+          }
+        }
+      },
+      {
+        name: '添加赠品', icon: 'el-icon-plus', event:{
+          click:()=>{
+            console.log('新增123')
+          }
+        }
+      },
+      {
+        name: '导入商品', icon: 'el-icon-bottom', event:{
+          click:()=>{
+            console.log('新增123')
+          }
+        }
+      }
+    ]
+  }
+  invoicesConfig:any={
+    attr:{
+      size:'mini'
+    },
+    columns:[
+      [{
+        span:6,
+        label:'发票类型',
+        prop:'type',
+        component:'by-select',
+        compConfig:{
+          attr:{
+            placeholder:'发票类型',
+            clearable:true,
+            data:[{
+              value: '1',
+              label: '个人电子普通'
+            }, {
+              value: '2',
+              label: '单位电子普通'
+            }, {
+              value: '3',
+              label: '个人纸质普通'
+            }, {
+              value: '4',
+              label: '单位纸质普通'
+            }, {
+              value: '5',
+              label: '个人电子增值税'
+            }, {
+              value: '6',
+              label: '单位电子增值税'
+            }, {
+              value: '7',
+              label: '个人纸质增值税'
+            }, {
+              value: '8',
+              label: '单位纸质增值税'
+            }]
+          }
+        }
+      },{
+        span:6,
+        label:'发票抬头',
+        prop:'title',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'发票税号',
+        prop:'taxNo',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'发票地址',
+        prop:'address',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'专票银行',
+        prop:'account',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'发票电话',
+        prop:'phone',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'专票账户',
+        prop:'account',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'专票邮箱',
+        prop:'email',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'专票人',
+        prop:'userName',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'专票电话',
+        prop:'userPhone',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:12,
+        label:'专票地址',
+        prop:'userAddress',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      }]
+    ]
+  }
+  payConfig:any={
+    attr:{
+      size:'mini'
+    },
+    columns:[
+      [{
+        span:6,
+        label:'支付方法',
+        prop:'payment',
+        component:'by-select',
+        rules:[
+          { required: true, message: '请选择时间', trigger: 'change' }
+        ],
+        compConfig:{
+          attr:{
+            placeholder:'支付方法',
+            clearable:true,
+            data:[{
+              value: '1',
+              label: '支付宝'
+            }, {
+              value: '2',
+              label: '快钱'
+            }, {
+              value: '3',
+              label: '财付通'
+            }]
+          }
+        }
+      },{
+        span:6,
+        label:'支付日期',
+        prop:'payDate',
+        rules:[
+          { required: true, message: '请选择支付日期', trigger: 'change' }
+        ],
+        component:'by-date-picker',
+        comConfig:{
+          attr:{
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'支付账号',
+        prop:'buyerAccount',
+        component:'by-input',
+        rules:[
+          { required: true, message: '请选择支付日期', trigger: 'change' }
+        ],
+        compConfig:{
+          attr:{
+            placeholder:'支付账号',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'支付金额',
+        prop:'buyerAccount',
+        component:'by-input',
+        rules:[
+          { required: true, message: '请输入支付金额', trigger: 'blur' }
+        ],
+        compConfig:{
+          attr:{
+            type:'number',
+            placeholder:'支付金额',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'买家账号',
+        prop:'buyerPaymentId',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'买家账号',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'收款账号',
+        prop:'sellerId',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'收款账号',
+            clearable:true
+          }
+        }
+      }]
+    ]
+  }
+  setShow(v:boolean){
+    this.value = v;
+  }
+  //订单支付情况单选值
+  inputPay(v:number){
+    if(!this.orderValue.pays) this.orderValue.pays = {};
+    this.orderValue.pays.isOrderPay = null;
+    if(v == 1){
+      this.orderValue.pays.isOrderPay = 0
+    }else if(v == 2){
+      this.orderValue.pays.isOrderPay = 1
+    }
+  }
+  mounted(){
+    this.userName = this.$store.getters.name;
+    console.log('用户信息',this.userName);
+
+    
+  }
+  show(){
+    (this.$refs.baseform as any).setValue({
+      createBy:this.userName
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.btn{
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+}
+.updateBuyer{
+  padding: 0 16px;
+}
+.addProductTool{
+  width: 100%;
+  padding-bottom: 8px;
+}
+</style>
+
+<style lang="scss">
+.add-order-item{
+  .el-collapse-item__content{
+    padding-bottom: 0;
+  }
+}
+</style>

+ 59 - 0
src/views/oms/order/components/filterDate.vue

@@ -0,0 +1,59 @@
+<template>
+  <div class="filter-row">
+    <div class="label" v-if="title">{{title}}</div>
+    <div class="filter-cont">
+      <el-date-picker
+        v-model="value"
+        style="width: 100%;"
+        clearable
+        size="mini" 
+        type="daterange"
+        @change="change"
+        range-separator="-"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期">
+      </el-date-picker>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import Format from '@/benyun/utils/dateFormat'
+@Component
+export default class FilterInput extends Vue {
+  value:Array<any>=[]
+  @Prop()
+  title:string|undefined
+
+  clear(){
+    this.value = []
+  }
+
+  change(v:any){
+    this.value[0] = Format(v[0],'yyyy-MM-dd');
+    this.value[1] = Format(v[1],'yyyy-MM-dd');
+    this.$emit('change',this.value)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.filter-row{
+  width: 100%;
+  display: flex;
+  align-items: flex-start;
+  padding-bottom: 4px;
+  flex-direction: column;
+  .label{
+    // width: 80px;
+    flex-shrink: 0;
+    font-size: 14px;
+    text-align: right;
+  }
+  .filter-cont{
+    width: 100%;
+    box-sizing: border-box;
+  }
+}
+</style>

+ 52 - 0
src/views/oms/order/components/filterInput.vue

@@ -0,0 +1,52 @@
+<template>
+  <div class="filter-row">
+    <div class="label" v-if="title" :style="{width:labelWidth?labelWidth+'px':'70px'}">{{title}}</div>
+    <div class="filter-cont">
+      <el-input v-model="value" size="mini" :type="type" :placeholder="placeholder?placeholder:title" @input="input" clearable></el-input>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class FilterInput extends Vue {
+  value=''
+  @Prop()
+  title:string|undefined
+  @Prop()
+  placeholder?:string
+  @Prop()
+  type?:string
+  @Prop()
+  labelWidth?:number
+
+  clear(){
+    this.value = ''
+  }
+
+  input(v:any){
+    this.$emit('input',v)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.filter-row{
+  width: 100%;
+  display: flex;
+  align-items: center;
+  padding-bottom: 4px;
+  .label{
+    width: 70px;
+    flex-shrink: 0;
+    font-size: 14px;
+    text-align: right;
+  }
+  .filter-cont{
+    width: 100%;
+    padding-left: 8px;
+    box-sizing: border-box;
+  }
+}
+</style>

+ 71 - 0
src/views/oms/order/components/filterMinMax.vue

@@ -0,0 +1,71 @@
+<template>
+  <div class="min-max">
+    <div v-if="title">{{title}}:</div>
+    <div class="munber-time">
+      <el-input v-model="value[minField]" class="number-input" size="mini" type="number" @input="mininput"></el-input>
+      <span class="split"> - </span>
+      <el-input v-model="value[maxField]" class="number-input" size="mini" type="number" @input="maxinput"></el-input>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderProduct extends Vue {
+  value:any={}
+
+  @Prop()
+  title!: string;
+  
+  @Prop()
+  minField!:string
+
+  @Prop()
+  maxField!:string
+
+  mininput(){
+    this.$emit('change',this.value)
+  }
+  maxinput(){
+    const max = Number(this.value[this.maxField]);
+    const min = Number(this.value[this.minField]);
+    if(max < min){
+      this.$message({
+        message: '最大值不能超过最小值',
+        type: 'warning'
+      })
+      this.value[this.maxField] = null;
+      return
+    }
+    this.$emit('change',this.value)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.min-max{
+  width: 100%;
+  padding-bottom: 4px;
+  .munber-time{
+    width: 100%;
+    display: flex;
+    align-items: center;
+    .split{
+      padding: 0 8px;
+    }
+  }
+}
+</style>
+
+<style lang="scss">
+.number-input{
+  width: 70px; 
+  flex-shrink: 0; 
+  padding: 0;
+  .el-input__inner{
+    padding: 0 !important;
+    text-align: center;
+  }
+}
+</style>

+ 56 - 0
src/views/oms/order/components/inputSelect.vue

@@ -0,0 +1,56 @@
+<template>
+  <el-input :placeholder="placeholder" v-model="value" class="input-with-select" size="mini" @input="input">
+    <el-select v-model="select" slot="append" placeholder="请选择" @change="change">
+      <el-option v-for="(item,index) of options" :key="index" :label="item.label" :value="item.value"></el-option>
+    </el-select>
+  </el-input>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class InputSelect extends Vue {
+  value='';
+  select='';
+  placeholder='';
+
+  @Prop()
+  options!:Array<any>
+
+  mounted(){
+    if(this.options){
+      this.select = this.options[0].value;
+      this.placeholder = this.options[0].label;
+    }
+  }
+
+  change(v:any){
+    for(const item of this.options){
+      if(item.value == v){
+        this.placeholder = item.label
+      }
+    }
+  }
+  input(v:any){
+    let obj:any={};
+    obj[this.select] = v
+    this.$emit('input',obj)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.input-with-select{
+  padding-bottom: 4px;
+  width: 100%;
+}
+</style>
+
+<style lang="scss">
+.input-with-select{
+  .el-input-group__append{
+    background-color: #fff !important;
+    width: 110px !important;
+  }  
+}
+</style>

+ 85 - 0
src/views/oms/order/components/orderCheckbox.vue

@@ -0,0 +1,85 @@
+<template>
+  <el-collapse-item :name="keyName">
+    <template slot="title">
+      <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" class="check-title">
+        <span class="check-title">{{title}}</span>
+      </el-checkbox>
+    </template>
+    <el-checkbox-group v-if="options.length > 0" v-model="value" @change="handleCheckedItemChange">
+      <el-checkbox v-for="dataItem in options" :label="dataItem.value?dataItem.value:dataItem.label" :key="dataItem.value">{{dataItem.label}}</el-checkbox>
+    </el-checkbox-group>
+  </el-collapse-item>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderCheckbox extends Vue {
+  value:Array<any>=[]
+  activeNames:Array<any>=[1]
+  checkAll= false
+  isIndeterminate= false
+
+  @Prop()
+  title:string|undefined
+
+  @Prop()
+  options!:Array<any>
+
+  @Prop()
+  keyName:any
+
+  @Prop()
+  retType?:string
+
+  clear(){
+    this.value = []
+  }
+
+  getValue(){
+    if(this.retType == 'string'){
+      let n='';
+      for(const item of this.value){
+        if(!n){
+          n = n + ',' + item
+        }else{
+          n = item
+        }
+      }
+      return n;
+    }else{
+      return this.value;
+    }
+  }
+
+  emitFun(){
+    let v:any = this.getValue();
+    this.$emit('checkboxChange',v);
+  }
+
+  handleCheckAllChange(val:any){
+    this.value = []
+    if(val && this.options){
+      for(const item of this.options){
+        this.value.push(item.value)
+      }
+    }
+    this.isIndeterminate = false;
+    this.emitFun();
+  }
+
+  handleCheckedItemChange(value:any,config:any){
+    let checkedCount = value.length;
+    this.checkAll = checkedCount === this.options.length;
+    this.isIndeterminate = checkedCount > 0 && checkedCount < this.options.length;
+    this.emitFun();
+  }
+
+}
+</script>
+
+<style lang="scss" scoped>
+.check-title{
+  font-weight: 700;
+}
+</style>

+ 41 - 0
src/views/oms/order/components/orderProduct.vue

@@ -0,0 +1,41 @@
+<template>
+  <div class="order-product">
+    <el-input placeholder="商品" v-model="value" size="mini" class="product-with-select" clearable>
+      <el-button slot="append" icon="el-icon-more" @click="showProduct"></el-button>
+    </el-input>
+    <productDialog ref="product" @confirm="confirm" />
+  </div>
+  
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderProduct extends Vue {
+  value=''
+
+  showProduct(){
+    (this.$refs.product as any).setShow(true)
+  }
+  confirm(data:Array<any>){
+    
+  }
+}
+</script>
+<style lang="scss" scoped>
+.order-product{
+  width: 100%;
+}
+</style>
+<style lang="scss">
+.product-with-select{
+  margin-bottom: 4px;
+  .el-input-group__append{
+    background-color: #fff !important;
+    width: 40px !important;
+    .el-icon-more{
+      font-size: 20px;
+    }
+  }  
+}
+</style>

+ 57 - 0
src/views/oms/order/components/orderRadio.vue

@@ -0,0 +1,57 @@
+<template>
+  <el-collapse-item :name="keyName" :title="title">
+    <el-radio-group v-model="value" v-if="options.length > 0" @input="input">
+      <el-radio label="" class="order-radio" v-if="noLimit">不限</el-radio>
+      <el-radio v-for="(item,index) in options" :label="item.value?item.value:item.label" :key="index" class="order-radio">
+        {{item.label}}
+        <template v-if="item.slotName">
+          <slot :name="item.slotName" />
+        </template>
+      </el-radio>
+      <slot />
+    </el-radio-group>
+  </el-collapse-item>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderCheckbox extends Vue {
+  value:any=''
+  activeNames:Array<any>=[1]
+  checkAll= false
+  isIndeterminate= false
+
+  @Prop()
+  noLimit?:boolean
+
+  @Prop()
+  title:string|undefined
+
+  @Prop() 
+  options!:Array<any>
+
+  @Prop()
+  keyName:any
+
+  getValue(){
+    return this.value;
+  }
+
+  clear(){
+    this.value = ''
+  }
+
+  input(){
+    this.$emit('radioChange',this.value);
+  }
+
+
+}
+</script>
+
+<style lang="scss" scoped>
+.order-radio{
+  margin-bottom: 8px;
+}
+</style>

+ 62 - 0
src/views/oms/order/components/orderTable.vue

@@ -0,0 +1,62 @@
+<template>
+  <vxe-table
+    size="mini"
+    border
+    :data="data">
+    <vxe-column type="seq" width="60" title="序号"></vxe-column>
+    <vxe-column type="checkbox" width="50"></vxe-column>
+    <vxe-column field="sourceId" title="线上订单号" width="120"></vxe-column>
+    <vxe-column field="type" title="订单类型" width="120"></vxe-column>
+    <vxe-column field="status" title="订单状态" width="120"></vxe-column>
+    <vxe-column field="shipment" title="跨境买家指定物流" width="120"></vxe-column>
+    <vxe-column field="chosenChannel" title="实发快递渠道" width="120"></vxe-column>
+    <vxe-column field="logisticsId" title="快递单号" width="120"></vxe-column>
+    <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="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="sendDate" title="发货日期" width="120"></vxe-column>
+    <vxe-column field="signTime" title="预计送达时间" width="120"></vxe-column>
+    <vxe-column field="endTime" title="确认收货时间" width="120"></vxe-column>
+    <vxe-column field="receiverAddress" title="收货地址" width="120"></vxe-column>
+    <vxe-column field="receiverName" title="收件人" width="120"></vxe-column>
+    <vxe-column field="receiverMobile" title="手机" width="120"></vxe-column>
+    <vxe-column field="buyerMessage" title="买家留言" width="120"></vxe-column>
+    <vxe-column field="wmsCoId" title="发货仓编号" width="120"></vxe-column>
+    <vxe-column field="payDate" title="支付时间" width="120"></vxe-column>
+    <vxe-column field="freeAmount" title="抵扣金额" width="120"></vxe-column>
+    <vxe-column field="payAmount" title="应付金额" width="120"></vxe-column>
+    <vxe-column field="paidAmount" title="实付+运费" width="120"></vxe-column>
+    <vxe-column field="shopBuyerId" title="买家昵称" width="120"></vxe-column>
+    <vxe-column field="openId" title="平台买家唯一值" width="120"></vxe-column>
+    <vxe-column field="buyerPaidAmount" title="总买家实付" width="120"></vxe-column>
+    <vxe-column field="sellerIncomeAmount" title="总卖家实收" width="120"></vxe-column>
+    <vxe-column field="questionType" title="问题类型" width="120"></vxe-column>
+    <vxe-column field="questionDesc" title="问题描述" width="120"></vxe-column>
+    <vxe-column field="shopName" title="店铺" width="120"></vxe-column>
+    <vxe-column field="invoiceType" title="发票类型" width="120"></vxe-column>
+    <vxe-column field="invoiceTitle" title="发票抬头+税号" width="120"></vxe-column>
+    <!-- <vxe-column field="buyerTaxNo" title="发票税号" width="120"></vxe-column> -->
+    <vxe-column field="drpCoIdFrom" title="分销商编号" width="120"></vxe-column>
+    <vxe-column field="drpCoIdTo" title="供销商编号" width="120"></vxe-column>
+    <vxe-column field="orderDate" title="订单日期" width="120"></vxe-column>
+    <vxe-column field="remark" title="订单备注" width="120"></vxe-column>
+    <vxe-column field="note" title="线下备注" width="120"></vxe-column>
+  </vxe-table>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderTable extends Vue {
+  @Prop()
+  data!:Array<any>
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

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

@@ -0,0 +1,73 @@
+<template>
+  <div class="order-tool">
+    <el-button type="text" @click="handle('addOrder')">新增订单</el-button>
+    <div class="split"></div>
+    <el-dropdown split-button type="text" @click="auHandle">
+        审批
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item>反审批</el-dropdown-item>
+        <el-dropdown-item>批量审批</el-dropdown-item>
+        <el-dropdown-item>批量反审批</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+    <el-button type="text">设快递</el-button>
+    <el-dropdown split-button type="text" class="dropdown">
+      设快递单号
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item>批量设置快递单号</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+    <div class="split"></div>
+    <el-button type="text">转异常</el-button>
+    <el-button type="text">转正常</el-button>
+    <el-button type="text">取消订单</el-button>
+    <div class="split"></div>
+    <el-dropdown split-button type="text" class="dropdown">
+      修改
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item>添加赠品</el-dropdown-item>
+        <el-dropdown-item>改运费</el-dropdown-item>
+        <el-dropdown-item>改标签</el-dropdown-item>
+        <el-dropdown-item>改备注</el-dropdown-item>
+        <el-dropdown-item>设定业务员</el-dropdown-item>
+        <el-dropdown-item>拆分</el-dropdown-item>
+        <el-dropdown-item>合并</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class OrderTool extends Vue {
+  auHandle(){
+    console.log('123')
+  }
+
+  handle(n:string){
+    this.$emit(n)
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.order-tool{
+  height: 40px;
+  display: flex;
+  align-items: center;
+  width: 100%;
+  .order-tool-btn{
+    color: #333;
+  }
+  .split{
+    height: 10px;
+    width: 1px;
+    background-color: #CCC;
+    margin: 0 8px;
+  }
+  .dropdown{
+    padding-left: 8px;
+  }
+}
+</style>

+ 630 - 0
src/views/oms/order/index.vue

@@ -0,0 +1,630 @@
+<template>
+  <div class="order">
+    <div class="order-left">
+      <el-collapse v-model="activeNames" class="my-collapse">
+        <el-collapse-item title="基本信息" name="1">
+          <input-select :options="myOptions" @input="parameChange" />
+          <input-select :options="outLineOptions" @input="parameChange" />
+          <input-select :options="buyerOptions" @input="parameChange" />
+        </el-collapse-item>
+        <order-checkbox title="订单状态" keyName="status" :options="statusOptions" noLimit @checkboxChange="onChange($event,'status')" />
+        <order-radio title="买家留言" keyName="buyerMessageFilter" :options="buyerMessageOptions" noLimit @radioChange="onChange($event,'buyerMessageFilter')">
+          <template v-slot:buyerMessage>
+            <el-input style="width: 140px;" v-model="value.buyerMessageContent" size="mini" placeholder="留言内容"></el-input>
+          </template>
+        </order-radio>
+        <order-radio title="卖家备注" keyName="remarkFilter" :options="remarkFilterOptions" noLimit @radioChange="onChange($event,'remarkFilter')">
+          <template v-slot:remarkFilter>
+            <el-input style="width: 140px;" v-model="value.remarkContent" size="mini" placeholder="备注内容"></el-input>
+          </template>
+        </order-radio>
+        <el-collapse-item title="时间" name="time">
+          <div class="orderSelect">
+            <el-select v-model="value.dateType" placeholder="请选择时间类型" size="mini">
+              <el-option
+                v-for="item in dateTypeOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+            <i class="el-icon-info" title="附加订单时间限制,许多仅限待发货订单的查询条件将自动取消限制"></i>
+          </div>
+          <filter-date @change="onChangeTime" />
+          <div>付款后几小时未发货:</div>
+          <div class="order-time">
+            <el-input v-model="value.deliveryHours" class="deliveryHours-input" size="mini" type="number" style=""></el-input>
+            <i class="el-icon-info" title="单位小时,不支持小数位。如果数值大于0,强制为未发货订单。同时勾选店铺可以实现不同平台的未发货时效查询"></i>
+          </div>
+          <filterMinMax title="剩余发货时间(小时)" minField="deliveryRemainingMin" maxField="deliveryRemainingMax" @change="parameChange" />
+        </el-collapse-item>
+        <!-- <el-collapse-item name="info">
+          <template slot="title">
+            商品信息
+            <i class="header-icon el-icon-info" 
+              title="包含商品信息,排除商品信息,商品名称包含关键字,颜色规则包含关键字,默认仅搜索前15天的订单,如需搜索15天前的订单,请在【订单时间】加上时间条件。">
+            </i>
+          </template>
+          <div>
+            <el-checkbox v-model="value.excludeRefund">不包括退款成功商品</el-checkbox>
+          </div>
+          <div>
+            <el-checkbox v-model="value.excludeSend">不包括发货成功商品</el-checkbox>
+          </div>
+          <el-select v-model="value.includeSkuType" placeholder="请选择包含的商品" size="mini" class="orderSelect">
+            <el-option
+              v-for="item in includeSkuTypeOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+          <order-product />
+          <filter-input title="商品名称" @input="onChange($event,'itemNameKeyword')" />
+          <filter-input title="颜色规格" @input="onChange($event,'itemStyleKeyword')" />
+          <filterMinMax title="数量范围" minField="qtyMin" maxField="qtyMax" />
+          <filterMinMax title="金额范围" minField="amountMin" maxField="amountMax" />
+          <filterMinMax title="重量范围" minField="weightMin" maxField="weightMax" />
+          <div class="info-row">
+            <el-checkbox v-model="value.onlyItemInfo">以上信息均为指定的商品</el-checkbox>
+            <i class="el-icon-info" 
+              title="如果指定了商品信息,则数量金额重量均为指定商品的数量金额重量,如果没有指定任何商品信息,则为整个订单的信息。">
+            </i>
+          </div>
+          <filterMinMax title="优惠金额范围" minField="freeAmountMin" maxField="freeAmountMax" />
+          <el-select v-model="value.excludeSkuType" placeholder="请选择排除的商品" size="mini" class="orderSelect">
+            <el-option
+              v-for="item in excludeSkuTypeOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+          <order-product />
+        </el-collapse-item> -->
+        <order-checkbox title="平台订单状态" keyName="shopStatusList" :options="shopStatusListOption" noLimit @checkboxChange="onChange($event,'shopStatusList')" />
+        <order-radio title="便签|线下备注 " keyName="noteFilter" :options="noteFilterOptions" noLimit @radioChange="onChange($event,'noteFilter')">
+          <template v-slot:noteContent>
+            <el-input style="width: 140px;" v-model="value.noteContent" size="mini" placeholder="备注内容"></el-input>
+          </template>
+        </order-radio>
+        <order-radio title="订单来源" keyName="sourceFrom" :options="sourceFromOptions" noLimit @radioChange="onChange($event,'sourceFrom')" />
+        <order-checkbox title="订单类型" keyName="type" :options="typeOption" noLimit @checkboxChange="onChange($event,'type')" />
+        <el-collapse-item title="付款方式 & 是否付款" name="codAndPay">
+          <div class="box01">
+            <el-radio-group v-model="radio" @input="colChange">
+              <el-radio :label="0">不限</el-radio>
+              <el-radio :label="1">在线支付</el-radio>
+              <el-radio :label="2">货到付款</el-radio>
+            </el-radio-group>
+          </div>
+          <div class="box01">
+            <el-radio-group v-model="radio2" @input="payChange">
+              <el-radio :label="0">不限</el-radio>
+              <el-radio :label="1">未付款</el-radio>
+              <el-radio :label="2">已付款</el-radio>
+            </el-radio-group>
+          </div>
+        </el-collapse-item>
+        <el-collapse-item title="标签&多标签 | 旗帜" name="flag">
+          <div>包含旗帜</div>
+          <div class="orderSelect">
+            <el-select v-model="value.includeFlags" multiple collapse-tags size="mini" placeholder="请选择旗帜" clearable>
+              <el-option
+                v-for="item in flagsOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+          <div>排除旗帜</div>
+          <div class="orderSelect">
+            <el-select v-model="value.excludeFlags" multiple collapse-tags size="mini" placeholder="请选择旗帜" clearable>
+              <el-option
+                v-for="item in flagsOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+        </el-collapse-item>
+        <order-checkbox title="店铺" keyName="shopIdList" :options="shopIdListOptions" @checkboxChange="onChange($event,'shopIdList')" />
+
+        <order-checkbox title="省份" keyName="receiverProvinceCode" :options="provinceOptions" @checkboxChange="onChange($event,'receiverProvinceCode')" />
+      </el-collapse>
+      <div class="searchHandle">
+        <el-button size="mini">重置</el-button>
+        <el-button type="primary" size="mini" @click="search">搜索</el-button>
+      </div>
+    </div>
+    <div class="order-right">
+      <div class="tool">
+        <order-tool @addOrder="addOrder"/>
+      </div>
+      <div class="table">
+        <order-table :data="data"/>
+        <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" />
+    </div>
+  </div>
+</template>
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import filterInput from './components/filterInput.vue'
+import OrderCheckbox from "./components/orderCheckbox.vue";
+import OrderRadio from './components/orderRadio.vue'
+import filterDate from './components/filterDate.vue'
+import OrderTool from "./components/orderTool.vue";
+import OrderTable from "./components/orderTable.vue";
+import AddOrder from "./components/addOrder.vue";
+import InputSelect from "./components/inputSelect.vue";
+import OrderProduct from "./components/orderProduct.vue";
+import filterMinMax from './components/filterMinMax.vue'
+import { query } from '@/api/omsOrder'
+@Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,filterMinMax}})
+export default class Order extends Vue {
+  activeNames:Array<any>=['1']
+  radio=''
+  radio2=''
+  data:Array<any> = []
+  page:any={
+    pageNo: 1, //当前页
+    pageSize: 20, //每页条数
+    total: 0 //总条数
+  }
+  value:any={
+    sourceId:'',  //线上订单号
+    shopBuyerId:'', //买家昵称
+    buyerId:'', //买家ID
+    logisticsId:'', //快递单号
+    logisticsCompany:'', //快递公司
+    internationalLogisticsId:'', //国际物流单号
+    isSubmitte:'', //数据是否已提交
+    drpCoIdFrom:'', //分销商编号
+    drpCoIdTo:'', //供销商编号
+    sourceFrom:'', //订单来源
+    dateType:1,//时间类型
+    deliveryRemainingMin:0, //订单剩余发货时间(小时)-小于等于
+    deliveryRemainingMax:null, //订单剩余发货时间(小时)-大于等于
+    includeSkuType:1, //包含编码类型
+    type:'', //订单类型
+    status:'' , //订单状态
+    excludeSkuType:1, //排除编码类型
+  }
+  myOptions=[{
+    label:'内部订单号',
+    value:'orderId'
+  }]
+  outLineOptions=[{
+    label:'线上订单号',
+    value:'sourceId'
+  },{
+    label:'支付单号',
+    value:'outerPayId'
+  }]
+  buyerOptions=[{
+    label:'买家账号',
+    value:'buyerId'
+  },{
+    label:'快递单号',
+    value:'logisticsId'
+  },{
+    label:'收件人-省',
+    value:'receiverProvince'
+  },{
+    label:'收件人-市',
+    value:'receiverCity'
+  },{
+    label:'收件人-区',
+    value:'receiverDistrict'
+  },{
+    label:'收货地址',
+    value:'receiverAddress'
+  },{
+    label:'收件人',
+    value:'receiverName'
+  },{
+    label:'手机号',
+    value:'receiverMobile'
+  },{
+    label:'固定电话',
+    value:'receiverPhone'
+  }]
+
+  //买家留言
+  buyerMessageOptions=[{
+    label:'无留言',
+    value:1
+  },{
+    label:'未处理的留言',
+    value:2
+  },{
+    slotName:'buyerMessage',
+    label:'有留言',
+    value:3
+  }]
+  //卖家备注
+  remarkFilterOptions=[{
+    label:'无备注',
+    value:1,
+  },{
+    label:'未处理的备注',
+    value:2,
+  },{
+    label:'有备注',
+    slotName:'remarkFilter',
+    value:3,
+  }]
+  //订单时间类型
+  dateTypeOptions=[{
+    label:'订单时间',
+    value:1
+  },{
+    label:'发货时间',
+    value:2
+  },{
+    label:'付款时间',
+    value:3
+  },{
+    label:'确认收货时间',
+    value:4
+  },{
+    label:'计划发货时间',
+    value:5
+  }]
+  //包含编码类型
+  includeSkuTypeOptions=[{
+    label:'包含任意商品编码',
+    value:1
+  },{
+    label:'包含任意款式编码',
+    value:2
+  },{
+    label:'包含全部商品编码',
+    value:3
+  },{
+    label:'包含全部款式编码',
+    value:4
+  },{
+    label:'仅包含指定商品编码',
+    value:5
+  },{
+    label:'仅包含指定款式编码',
+    value:6
+  },{
+    label:'包含任意店铺商品编码',
+    value:7
+  },{
+    label:'包含任意店铺款式编码',
+    value:8
+  }]
+  //排除编码类型
+  excludeSkuTypeOptions=[{
+    label:'排除任意商品编码',
+    value:1
+  },{
+    label:'排除任意款式编码',
+    value:2
+  }]//平台订单状态
+  shopStatusListOption:Array<any>=[{
+    label:'没有创建支付宝交易',
+    value:1
+  },{
+    label:'等待买家付款',
+    value:2
+  }]
+
+  noteFilterOptions:Array<any>=[{
+    label:'无备注',
+    value:1,
+  },{
+    label:'有备注',
+    slotName:'noteContent',
+    value:2,
+  }]
+
+  //旗帜
+  flagsOptions=[{
+    label:'无旗帜',
+    value:'0'
+  },{
+    label:'红旗',
+    value:'1'
+  },{
+    label:'黄旗',
+    value:'2'
+  },{
+    label:'绿旗',
+    value:'3'
+  },{
+    label:'蓝旗',
+    value:'4'
+  },{
+    label:'紫旗',
+    value:'5'
+  }]
+
+  //订单来源
+  sourceFromOptions:Array<any>=[{
+    label:'手工下单',
+    value:'ERP'
+  },{
+    label:'复制',
+    value:'COPY'
+  },{
+    label:'合并',
+    value:'MERGE'
+  },{
+    label:'拆分;拆分还原',
+    value:'SPLIT'
+  },{
+    label:'手机',
+    value:'MOBILE'
+  },{
+    label:'导入',
+    value:'IMPORT'
+  },{
+    label:'供销推送',
+    value:'drp-s'
+  },{
+    label:'快手;微商城',
+    value:'KWAISHOP'
+  },{
+    label:'拼多多',
+    value:'PINDUODUO'
+  },{
+    label:'头条放心购',
+    value:'TOUTIAOFXG'
+  },{
+    label:'聚水潭',
+    value:'JUSHUITAN'
+  }]
+
+  //订单类型
+  typeOption:Array<any>=[{
+    label:'普通订单'
+  },{
+    label:'补发订单'
+  },{
+    label:'分销Plus'
+  },{
+    label:'供销Plus'
+  },{
+    label:'换货订单'
+  }]
+
+  //订单状态 
+  statusOptions:Array<any>=[{
+    label:'待付款',
+    value:'WaitPay'
+  },{
+    label:'发货中',
+    value:'Delivering'
+  },{
+    label:'被合并',
+    value:'Merged'
+  },{
+    label:'异常',
+    value:'Question'
+  },{
+    label:'被拆分',
+    value:'Split'
+  },{
+    label:'等供销商|外仓发货',
+    value:'WaitOuterSent'
+  },{
+    label:'已付款待审核',
+    value:'WaitConfirm'
+  },{
+    label:'已客审待财审',
+    value:'WaitFConfirm'
+  },{
+    label:'已发货',
+    value:'Sent'
+  },{
+    label:'取消',
+    value:'Cancelled'
+  }]
+  shopIdListOptions:Array<any>=[{
+    label:'店铺1',
+    value:'1'
+  }]
+
+  //省份
+  provinceOptions:Array<any>=[{
+    label:'北京',
+    value:'1'
+  },{
+    label:'天津',
+    value:'2'
+  },{
+    label:'上海',
+    value:'3'
+  },{
+    label:'河北省',
+    value:'4'
+  },{
+    label:'广西壮族自治区',
+    value:'5'
+  }]
+
+
+  mounted(){
+    this.getList()
+  }
+
+  search(){
+    this.page.pageNo = 1;
+    this.getList(this.value)
+  }
+
+  addOrder(){
+    (this.$refs.addOrder as any).setShow(true)
+  }
+
+  //组件返回事件
+  onChange(v:any,code:string){
+    this.value[code] = v;
+  }
+  parameChange(parames:any){
+    for(const key in parames){
+      if(this.value[key]){
+        this.value[key] = parames[key]
+      }else{
+        Vue.set(this.value, key, parames[key]);
+      }
+    }
+  }
+  colChange(v:any){
+    if(v == 1){
+      this.value.isCod = false
+    }else if(v == 2){
+      this.value.isCod = true
+    }else{
+      this.value.isCod = null
+    }
+  }
+  payChange(v:any){
+    if(v == 1){
+      this.value.isPay = false
+    }else if(v == 2){
+      this.value.isPay = true
+    }else{
+      this.value.isPay = null
+    }
+  }
+  onChangeTime(v:Array<any>){
+    this.value.dateBegin = v[0];
+    this.value.dateEnd = v[1];
+  }
+  //获取订单列表数据
+  getList(parames?:any){
+    let data:any = parames?(this as any).$lodash.cloneDeep(parames):{};
+    data.pageNo = this.page.pageNo;
+    data.pageSize = this.page.pageSize;
+    query(data).then((res:any) => {
+      this.data = res.data.records;
+      this.page.pageNo = res.data.pages;
+      this.page.pageSize = res.data.size;
+      this.page.total = res.data.total;
+    }).catch((err:any) => {
+
+    })
+  }
+
+  handleSizeChange(v:number){
+    this.page.pageSize = v;
+    this.getList();
+  }
+  handleCurrentChange(v:number){
+    this.page.pageNo = v;
+    this.getList();
+  }
+
+}
+</script>
+
+<style lang="scss" scoped>
+.order{
+  width: 100%;
+  display: flex;
+  overflow-x: hidden;
+  .order-left{
+    width: 240px;
+    flex-shrink: 0;
+    background-color: #f0f0f0;
+    border-right: solid 1px #CCC;
+    box-sizing: border-box;
+    padding: 4px;
+    
+    .my-collapse{
+      padding: 0 4px;
+      background: #FFF;
+    }
+    .searchHandle{
+      display: flex;
+      justify-content: center;
+      width: 100%;
+      box-sizing: border-box;
+      padding: 8px;
+    }
+    .box01{
+      width: 100%;
+      padding-bottom: 8px;
+    }
+  }
+  .filter-box{
+    width: calc(100% - 8px);
+    background-color: #FFF;
+    box-sizing: border-box;
+    padding: 8px;
+    border:solid 1px #EEE;
+    
+    .filter-row:last-child{
+      padding: 0;
+    }
+  }
+  .order-right{
+    width: calc(100% - 240px);
+    box-sizing: border-box;
+    padding-left: 8px;
+    .tool{
+      width: 100%;
+    }
+    .table{
+      width: 100%;
+      .page{
+        width: 100%;
+        display: flex;
+        justify-content: flex-end;
+        padding: 16px;
+        box-sizing: border-box;
+      }
+    }
+  }
+  .el-icon-info{
+    font-size: 16px;
+    margin-left: 4px;
+  }
+}
+// .order-label{
+//   font-size: 12px;
+// }
+.orderSelect{
+  width: 100%;
+  margin-bottom: 4px;
+}
+.order-time{
+  width: 100%;
+  display: flex;
+  align-items: center;
+  padding-bottom: 4px;
+  
+}
+</style>
+
+<style lang="scss">
+.order-left{
+  .el-collapse-item__content{
+    padding-bottom: 0;
+  }
+  .el-collapse-item__header{
+    font-weight: 700 !important;
+  }
+}
+.deliveryHours-input{
+  width: 70px; 
+  flex-shrink: 0; 
+  padding: 0;
+  .el-input__inner{
+    padding: 0 !important;
+    text-align: center;
+  }
+}
+</style>