瀏覽代碼

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

AlanWong 2 年之前
父節點
當前提交
466c04c27e

+ 2 - 3
src/components/skuModal/productModal.vue

@@ -42,7 +42,7 @@ export default class ProductModal extends Vue {
           compConfig:{
             attr:{
               clearable:true,
-              placeholder:'请输入名称'
+              placeholder:'请输入物料ID'
             }
           }
         },{
@@ -53,7 +53,7 @@ export default class ProductModal extends Vue {
           compConfig:{
             attr:{
               clearable:true,
-              placeholder:'请输入名称'
+              placeholder:'请输入标题'
             }
           }
         }]
@@ -118,7 +118,6 @@ export default class ProductModal extends Vue {
   }
 
   created(){
-		console.log(this.mulit);
     if(this.mulit){
       this.config.table.attr.checkbox = true
     }else{

+ 162 - 0
src/components/supplierModal/supplierModal.vue

@@ -0,0 +1,162 @@
+<template>
+  <vxe-modal v-model="value" id="supplierModal" :width="width?width+'px':'60%'" @show="show" :height="height?height+'px':'80%'" min-width="500" min-height="400" 
+  show-zoom resize transfer show-footer  @confirm="confirm">
+    <template #title>
+      <span>{{title?title:'选择供应商'}}</span>
+    </template>
+    <template #default>
+      <module-view :propConfig="config" ref="view" @pagination="getList" @search="getList" @resert="getList" @clickHandle="clickHandle" />
+    </template>
+  </vxe-modal>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class SupplierModal extends Vue {
+  value=false
+  data:Array<any>=[]
+  time:any;
+  timeNum = 0;
+
+  @Prop()
+  title?:string
+
+  @Prop()
+  width?:number
+
+  @Prop()
+  height?:number
+
+  @Prop()
+  mulit?:boolean
+
+  config:any={
+    search:{
+      attr:{
+        size:'mini'
+      },
+      columns:[
+        [{
+          span:6,
+          label:'名称',
+          prop:'name',
+          component:'by-input',
+          compConfig:{
+            attr:{
+              clearable:true,
+              placeholder:'请输入名称'
+            }
+          }
+        },{
+          span:6,
+          label:'负责人',
+          prop:'contacts',
+          component:'by-input',
+          compConfig:{
+            attr:{
+              clearable:true,
+              placeholder:'请输入负责人'
+            }
+          }
+        }]
+      ]
+    },
+    tool:{
+      tools:{
+        search:true,
+        refresh:true
+      }
+    },
+    table:{
+      attr:{
+        size:'mini',
+        seq:true,
+        align:'center',
+        // radio:true,
+        pageSize:10
+      },
+      columns:[{
+        title:'名称',
+        field:'name'
+      },{
+        title:'负责人',
+        field:'contacts'
+      }]
+    },
+  }
+
+  clickHandle(n:string){
+    if(n == 'onRefresh'){
+      this.getList()
+    }
+  }
+
+  setShow(v:boolean){
+    this.value = v;
+  }
+
+  created(){
+    if(this.mulit){
+      this.config.table.attr.checkbox = true
+    }else{
+      this.config.table.attr.radio = true
+    }
+  }
+
+  //确定
+  confirm(){
+    let data:Array<any>=this.getSelectdata();
+    this.$emit('confirm',data);
+    this.value = false;
+  }
+  //获取已选中表格数据
+  getSelectdata(){
+    let data:Array<any>=[];
+    if(this.$refs.view){
+      data = (this.$refs.view as any).getSelectData()
+    }
+    return data;
+  }
+  //显示弹窗
+  show(){
+    if(this.data.length ==0){
+      this.time =setInterval(()=>{
+        this.getList()
+      },500) 
+    }
+    if(this.$refs.view){
+      (this.$refs.view as any).clearCheckboxRow();
+    }
+  }
+  getList(){
+    if(!this.$refs.view){
+      if(this.timeNum > 5){
+        clearInterval(this.time)
+      }
+      this.timeNum ++;
+      return
+    }
+    clearInterval(this.time)
+    let query:any = (this.$refs.view as any).getQuery();
+    query.isLikeSearch = '1';
+    this.$emit('supplierRequestAfter',query);
+    (this as any).$request({
+      url: '/maindata/maindataMaterialSupplier/page',
+      method: 'get',
+      params:query
+    }).then((res:any) => {
+      if(res.data.records){
+        (this.$refs.view as any).setTableValue(res.data.records);
+        this.data = res.data.records;
+        let page={
+          pageNo: res.data.current, //当前页
+          pageSize: res.data.size, //每页条数
+          total: res.data.total //总条数
+        };
+        (this.$refs.view as any).setPage(page)
+      }
+    })
+  }
+}
+</script>

+ 19 - 3
src/views/audit/productManagement/index.vue

@@ -97,6 +97,7 @@
 			</div>
 		</transition-group>
 		<import-product ref="importProduct" />
+		<synchronous-orderModal ref="synchronousOrderModal" @handleSuccess="handleSuccess" />
 	</div>
 </template>
 <script lang="ts">
@@ -105,7 +106,8 @@
 	import other from '@/api/other'
 	import ForTab from "@/components/ForTab/index.vue";
 	import ImportProduct from "./components/importProduct.vue";
-	@Component({ components: { ForTab, ImportProduct } })
+	import SynchronousOrderModal from "./components/synchronousOrderModal.vue";
+	@Component({ components: { ForTab, ImportProduct,SynchronousOrderModal } })
 	export default class productManagement extends Vue {
 		tagsData : any = [] // 标签值
 		isShow = 'home'
@@ -786,9 +788,16 @@
 					refresh: true
 				},
 				customTools: [
+				{
+						name: '商品同步', icon: 'el-icon-setting', event:{
+							click:()=>{
+								(this.$refs.synchronousOrderModal as any).setShow(true);
+							}
+						}
+					},
 					{
-						name: '商品同步', icon: 'el-icon-setting', event: {
-							click: () => {
+						name: '关联商品', icon: 'el-icon-setting', event:{
+							click:()=>{
 								(this.$refs.importProduct as any).setShow(true);
 							}
 						}
@@ -869,6 +878,13 @@
 				this.getDataList()
 			}, 500)
 		}
+		//商品同步成功
+		handleSuccess(){
+			let page = (this.$refs.moduleView as any).getPage();
+			page.pageNo = 1;
+			(this.$refs.moduleView as any).setPage(page);
+			this.getDataList()
+		}
 		// 监听单表格数据
 		getSingleValue(e : any) {
 			console.log('监听单表格 ==> ', e);

+ 9 - 9
src/views/oms/order/components/addOrder.vue

@@ -632,13 +632,13 @@ export default class AddOrder extends Vue {
             placeholder:'支付方法',
             clearable:true,
             data:[{
-              value: '1',
+              value: '支付宝',
               label: '支付宝'
             }, {
-              value: '2',
+              value: '快钱',
               label: '快钱'
             }, {
-              value: '3',
+              value: '财付通',
               label: '财付通'
             }]
           }
@@ -902,11 +902,11 @@ export default class AddOrder extends Vue {
         let t = true;
         let v = isGift ? 1 : 0;
         for(const t_item of nowData){
-          if(item.id == t_item.skuId && t_item.isGift == v){
+          if(item.id == t_item.itemId && t_item.isGift == v){
             if(!ids){
-              ids = item.id
+              ids = item.skuCode
             }else{
-              ids = ids + ',' + item.id
+              ids = ids + ',' + item.skuCode
             }
             t = false;
             break;
@@ -915,8 +915,8 @@ export default class AddOrder extends Vue {
         if(t){
           let obj:any={};
           obj.name = item.skuTitle; //商品名称
-          obj.skuId = item.id; //商品编码
-          obj.itemId = item.materialId;
+          obj.skuId = item.skuCode; //商品编码
+          obj.itemId = item.id;
           obj.styleId = item.newNumber; //款式编码
           obj.qty = 1;
           if(isGift){
@@ -927,7 +927,7 @@ export default class AddOrder extends Vue {
             obj.isGift = 0;
           }
           
-          // obj.basePrice = item.basePrice; //原价
+          obj.basePrice = item.price; //原价
           obj.amount = item.price;
           obj.stock = item.stock;
           nowData.push(obj)

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

@@ -13,7 +13,7 @@
         <div class="detail" @click="detail(row)">{{ row.sourceId }}</div>
       </template>
     </vxe-column>
-    <vxe-column field="isSubmitted" title="提交状态" width="130" fixed="left">
+    <vxe-column field="isSubmitted" title="提交状态" width="130">
       <template #default="{ row }">
         <el-tag v-if="row.isSubmitted == 1" type="success">已提交</el-tag>
         <el-tag v-else type="warning"> 未提交 </el-tag>

+ 191 - 0
src/views/oms/order/components/purchaseModel.vue

@@ -0,0 +1,191 @@
+<template>
+  <vxe-modal v-model="value" id="purchaseModel" @show="show" width="70%" height="80%" min-width="460" min-height="320" 
+    show-zoom resize transfer show-footer @hide="hide" v-loading="load">
+    <template #title>
+      <span>选择商品</span>
+    </template>
+    <el-collapse v-model="activeNames">
+      <el-collapse-item title="基本信息" name="1" class="add-order-item">
+        <by-form :propConfig="baseConfig" ref="baseform">
+          <template v-slot:organizationName='{ value }'>
+            <el-input placeholder="请选择供应商" v-model="value.organizationName" class="input-organizationName" size="mini" clearable>
+              <el-button slot="append" icon="el-icon-more" @click="handleSupplier"></el-button>
+            </el-input>
+          </template>
+        </by-form>
+      </el-collapse-item>
+
+      <el-collapse-item title="商品信息" name="2" class="add-order-item">
+        <by-table :propConfig="tableConfig" ref="table"></by-table>
+      </el-collapse-item>
+    </el-collapse>
+    <supplier-modal ref="supplierModal" @confirm="confirm" />
+  </vxe-modal>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import { addOrder,saveBaseOrder } from '@/api/omsOrder'
+import { add,multiply,subtract,divide } from '@/benyun/utils/accuracy'
+import SupplierModal from "@/components/supplierModal/supplierModal.vue";
+@Component({components:{SupplierModal}})
+export default class PurchaseModel extends Vue {
+  value=false;
+  load = false;
+  activeNames:Array<any>=['1','2']
+  baseConfig:any={
+    attr:{
+      size:'mini',
+      rules:{
+        organizationName:[{
+          required: true, message: '供应商不能为空!', trigger: 'blur'
+        }],
+        deliveryAddress:[{
+          required: true, message: '交货地点不能为空!', trigger: 'blur'
+        }],
+        deliveryData:[{
+          required: true, message: '交货时间不能为空!', trigger: 'blur'
+        }],
+        delivery:[{
+          required: true, message: '交货人不能为空!', trigger: 'blur'
+        }]
+      }
+    },
+    columns:[
+      [{
+        span:6,
+        label:'供应商',
+        prop:'organizationName',
+        slot:true
+      },{
+        span:6,
+        label:'交货地点',
+        prop:'deliveryAddress',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入交货地点',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'交货时间',
+        prop:'deliveryData',
+        component:'by-date-picker',
+        compConfig:{
+          attr:{
+            placeholder:'交货时间',
+            type:'datetime',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'交货人',
+        prop:'delivery',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入交货人',
+            clearable:true
+          }
+        }
+      }],
+      [{
+        span:6,
+        label:'交货人手机',
+        prop:'deliveryPhone',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入交货人',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'交货方式',
+        prop:'deliveryWay',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入交货方式',
+            clearable:true
+          }
+        }
+      },{
+        span:6,
+        label:'物流分类',
+        prop:'logisticClass',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            placeholder:'请输入物流分类',
+            clearable:true
+          }
+        }
+      }]
+    ]
+  }
+
+  tableConfig:any={
+    attr:{
+      size:'small',
+      align:'center'
+    },
+    columns:[{
+      title:'商品',
+      field:'name',
+      width:100,
+      slot:true
+    },{
+      title:'数量',
+      field:'qty',
+      width:100,
+      components:'by-input',
+      compConfig:{
+        attr:{
+          type:'number'
+        }
+      }
+    },{
+      title:'可采购数量',
+      field:'num'
+    }]
+  }
+
+  show(){}
+  hide(){}
+
+  setShow(v:boolean){
+    this.value = v;
+  }
+
+  handleSupplier(){
+    (this.$refs.supplierModal as any).setShow(true);
+  }
+
+  confirm(data:Array<any>){
+    if(data.length == 0){
+      this.$message('请选择供应商!')
+      return
+    }
+    let value:any = (this.$refs.baseform as any).getValue();
+    value.organizationName = data[0].name;
+    value.organizationId = data[0].id;
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
+
+<style lang="scss">
+.input-organizationName{
+  .el-input-group__append{
+    background-color: #fff !important;
+  }  
+}
+</style>

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

@@ -155,6 +155,7 @@
       </div>
       <add-order ref="addOrder" @handleSuccess="handleSuccess" />
       <load-order-modal ref="loadOrder" @handleSuccess="handleSuccess" />
+      <purchase-model ref="purchaseModel" />
     </div>
   </div>
 </template>
@@ -171,8 +172,10 @@ import InputSelect from "./components/inputSelect.vue";
 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 { query,getProvince,smt,unSmt,purchaseQty } from '@/api/omsOrder'
-@Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,filterMinMax,loadOrderModal}})
+@Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
+  filterMinMax,loadOrderModal,PurchaseModel}})
 export default class Order extends Vue {
   activeNames:Array<any>=['1','status']
   radio=''
@@ -442,6 +445,7 @@ export default class Order extends Vue {
 
   //生成采购单
   producePurchase(){
+    (this.$refs.purchaseModel as any).setShow(true);
     let data:Array<any>= (this.$refs.orderTable as any).getSelectData();
     if(data.length == 0){
       this.$message('请选择订单!');