huang_an %!s(int64=2) %!d(string=hai) anos
pai
achega
d5d7c3bee5

+ 15 - 0
src/api/mes/index.js

@@ -44,3 +44,18 @@ export async function getById(id) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+export async function purchaseorderPage(params) {
+  const res = await request.get(`eom/purchaseorder/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+export async function purchaseorderGetById(id) {
+  const res = await request.get(`eom/purchaseorder/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 102 - 16
src/views/warehouseManagement/stockManagement/add.vue

@@ -80,6 +80,7 @@
           <el-col :span="8">
             <el-form-item label="入库类型" prop="bizType">
               <el-select
+                @change="onClear"
                 filterable
                 placeholder="请选择"
                 v-model="formData.bizType"
@@ -104,9 +105,16 @@
             >
               <el-input
                 placeholder="请输入"
-                clearable
                 v-model="formData.extInfo.documentSource"
-            /></el-form-item>
+                @click.native="handlePicker()"
+              >
+                <el-button
+                  slot="append"
+                  icon="el-icon-circle-close"
+                  @click.stop="onClear"
+                ></el-button>
+              </el-input>
+            </el-form-item>
             <el-form-item
               v-if="formData.bizType == 1"
               label="生产订单"
@@ -157,40 +165,50 @@
             >
             </el-date-picker></el-form-item
         ></el-col> -->
-          <el-col :span="8" v-if="formData.bizType != 2">
-            <el-form-item label="供应商" prop="supplierId">
-              <DictSelection
+          <el-col :span="8" v-if="formData.bizType == 2">
+            <el-form-item label="供应商" prop="supplierName">
+              <!-- <DictSelection
                 dictName="经销商列表"
                 clearable
                 v-model="formData.extInfo.supplierId"
                 @itemChange="ChangeSupplier"
+              /> -->
+              <el-input
+                placeholder="请输入"
+                clearable
+                v-model="formData.extInfo.supplierName"
               />
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="formData.bizType != 2">
-            <el-form-item label="供应商代号" prop="supplierCode">
+          <!-- <el-col :span="8" v-if="formData.bizType == 2">
+            <el-form-item label="物料代号" prop="supplierCode">
               <el-input
                 placeholder="请输入"
                 v-model="formData.supplierCode"
                 clearable /></el-form-item
-          ></el-col>
+          ></el-col> -->
           <el-col :span="8" v-if="formData.bizType == 2">
             <el-form-item label="客户" prop="clientName">
-              <DictSelection
+              <!-- <DictSelection
                 dictName="经销商列表"
                 clearable
                 v-model="formData.clientName"
                 @itemChange="ChangeSuppliers"
+              /> -->
+              <el-input
+                placeholder="请输入"
+                clearable
+                v-model="formData.clientName"
               />
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="formData.bizType == 2">
+          <!-- <el-col :span="8" v-if="formData.bizType == 2">
             <el-form-item label="客户代号" prop="clientCode">
               <el-input
                 placeholder="请输入"
                 v-model="formData.clientCode"
                 clearable /></el-form-item
-          ></el-col>
+          ></el-col> -->
 
           <!-- <el-col :span="8">
             <el-form-item label="送货人" prop="fromUser">
@@ -242,7 +260,7 @@
                 ></el-option>
               </el-select> </el-form-item
           ></el-col> -->
-          <el-col :span="8">
+          <!-- <el-col :span="8">
             <el-form-item label="审核人部门" prop="verifyDeptName">
               <selectTree
                 ref="tree"
@@ -279,7 +297,7 @@
                 </el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col> -->
           <!-- <el-col :span="24">
             <el-form-item label="附件" prop="contentImage">
               <selectUpload @getImgs="upload" :initData="uploadList" />
@@ -757,6 +775,29 @@
               :label="`${title}编码`"
               prop="onlyCode"
             ></el-table-column>
+            <el-table-column
+              v-if="title == '物料'"
+              label="物料代号"
+              prop="materielCode"
+            >
+              <template slot-scope="{ row }">
+                <el-input v-model="row.materielCode"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              v-if="title == '物料'"
+              label="客户代号"
+              prop="clientCode"
+            >
+              <template slot-scope="{ row }">
+                <el-input v-model="row.clientCode"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column v-if="title == '物料'" label="重量" prop="weight">
+              <template slot-scope="{ row }">
+                <el-input v-model="row.weight"></el-input>
+              </template>
+            </el-table-column>
             <el-table-column label="包装编码" prop="num"></el-table-column>
             <el-table-column label="批次号" prop="batchNo"></el-table-column>
             <el-table-column
@@ -869,10 +910,14 @@
         >
       </div>
     </el-dialog>
+
+    <!-- 销售订单 -->
+    <picker ref="pickerRef" @success="pickerSuccess" />
   </div>
 </template>
 
 <script>
+  import picker from './components/picker.vue';
   import outin from '@/api/warehouseManagement/outin';
   import { getTreeByPid, getTreeByGroup } from '@/api/classifyManage';
   import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
@@ -895,6 +940,7 @@
   import { tableHeader } from '../common';
   import { getCode } from '@/api/codeManagement/index.js';
   import { number } from 'echarts/core';
+  import { purchaseorderGetById } from '@/api/mes';
   export default {
     components: {
       selectUpload,
@@ -902,10 +948,12 @@
       selectType,
       WareHouseDailog,
       upload,
-      ReturnSelect
+      ReturnSelect,
+      picker
     },
     data() {
       return {
+        pickerRow: {},
         fromUserList: [],
         codeList: [],
         materialType,
@@ -993,6 +1041,39 @@
       this.initData();
     },
     methods: {
+      async pickerSuccess(row) {
+        console.log('===row', row);
+        this.pickerRow = row;
+        this.formData.extInfo.documentSource = row.orderNo;
+        this.formData.clientName = row.partaName;
+        this.formData.clientCode = row.partaId;
+        this.formData.extInfo.supplierName = row.partbName;
+        this.formData.extInfo.supplierId = row.partbId;
+        const data = await purchaseorderGetById(row.id);
+        if (this.warehousingMaterialList.length == 0) {
+          let list = data.data.productList.map((item) => {
+            return {
+              ...item,
+              assetName: item.productName,
+              assetCode: item.productCode,
+              categoryId: item.productCategoryId
+            };
+          });
+          this.onSelectTableData(list);
+        }
+      },
+      onClear() {
+        this.formData.extInfo.documentSource = '';
+        this.pickerRow = {};
+        this.formData.clientName = '';
+        this.formData.clientCode = '';
+        this.formData.extInfo.supplierName = '';
+        this.formData.extInfo.supplierId = '';
+        this.$forceUpdate();
+      },
+      handlePicker() {
+        this.$refs.pickerRef.open();
+      },
       codeListValue(val) {
         console.log(val);
         this.formData.extInfo.assetType = val.id;
@@ -1458,7 +1539,8 @@
               return {
                 num: item.num,
                 batchNo: item.batchNo,
-                categoryId: item.id,
+                categoryId:
+                  this.formData.bizType == 2 ? item.categoryId : item.id,
                 count: item.outInNum,
                 minPackingCount: item.minPackingCount,
                 packingCount: item.outInNum,
@@ -1488,7 +1570,10 @@
                     name: it.assetName,
                     pathIds: item.pathIds,
                     unit: it.unit,
-                    packageNo: it.num
+                    packageNo: it.num,
+                    clientCode: it.clientCode,
+                    materielCode: it.materielCode,
+                    weight: it.weight
                   };
                 });
                 item.outInDetailRecordAddPOList = list;
@@ -1518,6 +1603,7 @@
       },
       //添加明细
       async onSelectTableData(val) {
+        console.log('qwfffffffffffff===', val);
         const res = await getCode('lot_number_code');
 
         this.warehousingMaterialList.push(

+ 241 - 0
src/views/warehouseManagement/stockManagement/components/picker.vue

@@ -0,0 +1,241 @@
+<template>
+  <div>
+    <el-dialog
+      title="选择采购订单"
+      :visible.sync="dialogVisible"
+      width="60%"
+      :before-close="handleClose"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <div class="main">
+        <ele-pro-table
+          ref="table"
+          :initLoad="false"
+          :columns="columns"
+          :current.sync="current"
+          highlight-current-row
+          :datasource="datasource"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
+          @row-click="chooseRow"
+        >
+          <!-- 表头工具栏 -->
+          <template v-slot:docNo="{ row }">
+            <!-- @click="details(row)" -->
+            <el-link
+              type="primary"
+              @click="pickOrderEdit(row)"
+              :underline="false"
+            >
+              {{ row.docNo }}
+            </el-link>
+          </template>
+          <template v-slot:replied="{ row }">
+            {{ row.replied == 1 ? '是' : '否' }}
+          </template>
+          <template v-slot:reviewStatus="{ row }">
+            <span v-if="row.reviewStatus == 0">未提交</span>
+            <span v-if="row.reviewStatus == 1">审核中</span>
+            <span v-if="row.reviewStatus == 2">审核通过</span>
+            <span v-if="row.reviewStatus == 3">审核未通过</span>
+          </template>
+          <template v-slot:action="{ row }">
+            <el-radio class="radio" v-model="radio" :label="row.id"
+              ><i></i
+            ></el-radio>
+          </template>
+        </ele-pro-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="handleMine">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- <eomEdit ref="eomEditRef" /> -->
+  </div>
+</template>
+
+<script>
+  import { purchaseorderPage, getById } from '@/api/mes';
+  // import eomEdit from './eomEdit.vue';
+  export default {
+    // components: { eomEdit },
+    data() {
+      return {
+        dataSource: {},
+        dialogVisible: false,
+        pages: {
+          pageNum: 1,
+          size: 10
+        },
+        total: 0,
+        tableData: [],
+        current: {},
+        radio: null,
+        columns: [
+          {
+            columnKey: 'index',
+            type: 'index',
+            width: 80,
+            label: '序号',
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'orderNo',
+            label: '订单编号',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'contractName',
+            label: '合同名称',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'purchaseTypeName',
+            label: '采购类型',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'partaName',
+            label: '采购方名称',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'partbName',
+            label: '供应商名称',
+            showOverflowTooltip: true
+          },
+
+          {
+            columnKey: 'action',
+            slot: 'action',
+            align: 'center',
+            fixed: 'right',
+            width: 50
+          }
+        ]
+      };
+    },
+    methods: {
+      pickOrderEdit(row) {
+        this.$refs.eomEditRef.open(row);
+      },
+      async handleMine() {
+        const listParent = this.$parent.warehousingMaterialList;
+        if (this.current == null) {
+          // if (listParent.length != 0) {
+          //   this.$message.warning('当前已选择销售订单,请更换!');
+          // } else {
+          //   this.$message.warning('请先选择销售单!');
+          //   return;
+          // }
+          if (listParent.length != 0) {
+            // this.dataSource.then((res) => {
+            //   const data = res.list;
+            //   let arr = [];
+            //   for (const key in listParent) {
+            //     for (const i in data) {
+            //       if (
+            //         listParent[key].orderNo == data[i].orderNo &&
+            //         listParent[key].productId == data[i].id
+            //       ) {
+            //         arr.push({ ...data[i] });
+            //       }
+            //     }
+            //   }
+            //   getById(arr[0].id).then((rep) => {
+            //     const obj = {
+            //       ...arr[0],
+            //       tableData: rep.data.productList.map((item) => {
+            //         return {
+            //           ...item,
+            //           productId: arr[0].id,
+            //           code: item.productCode,
+            //           name: item.productName,
+            //           contactCode: arr[0].contactCode
+            //         };
+            //       })
+            //     };
+            this.$emit('success', obj);
+            this.dialogVisible = false;
+            //   });
+            // });
+            return;
+          } else {
+            this.$message.warning('请先选择采购单!');
+            return;
+          }
+        }
+        // const current = this.current.orderInfoList;
+        // for (const key in current) {
+        //   if (
+        //     current[key].bomDetailDTOS.length == 0 &&
+        //     current[key].instanceList.length == 0
+        //   ) {
+        //     this.$message.warning('当前领料单数据为空');
+        //     return;
+        //   }
+        // }
+        // const res = await getById(this.current.id);
+        // this.current = {
+        //   ...this.current,
+        //   tableData: res.data.productList.map((item) => {
+        //     return {
+        //       ...item,
+        //       productId: this.current.id,
+        //       code: item.productCode,
+        //       name: item.productName,
+        //       contactCode: this.current.contactCode
+        //     };
+        //   })
+        // };
+        this.$emit('success', this.current);
+        this.dialogVisible = false;
+      },
+      datasource({ page, limit, where }) {
+        // const res = await pickOrderPage(this.pages);
+        // this.tableData = res.data.list;
+        // this.total = res.data.count;
+        const data = purchaseorderPage({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+        this.dataSource = data;
+        return data;
+      },
+      async open() {
+        console.log(this);
+        const listParent = this.$parent.pickerRow;
+        if (JSON.stringify(listParent) == '{}') {
+          console.log(11);
+          this.current = null;
+          this.radio = null;
+        }
+        this.dialogVisible = true;
+        this.$nextTick(() => {
+          this.$refs.table.reload({
+            pageNum: 1,
+            size: 10,
+            where: {}
+          });
+        });
+        // const res = await purchaseorderPage(this.pages);
+        // console.log(res);
+        // this.tableData = res.data.list;
+        // this.total = res.data.count;
+      },
+      chooseRow(row) {
+        this.current = row;
+        this.radio = row.id;
+      },
+      handleClose(done) {
+        this.dialogVisible = false;
+      }
+    }
+  };
+</script>

+ 37 - 6
src/views/warehouseManagement/stockManagement/details.vue

@@ -73,21 +73,21 @@
                   <span>{{ infoData.clientName }}</span>
                 </el-form-item>
               </el-col>
-              <el-col :span="8" v-if="infoData.bizType == 2">
+              <!-- <el-col :span="8" v-if="infoData.bizType == 2">
                 <el-form-item label="客户代码:">
                   <span>{{ infoData.clientCode }}</span>
                 </el-form-item>
-              </el-col>
-              <el-col :span="8" v-if="infoData.bizType != 2">
+              </el-col> -->
+              <el-col :span="8" v-if="infoData.bizType == 2">
                 <el-form-item label="供应商:">
                   <span>{{ extInfo.supplierName }}</span>
                 </el-form-item>
               </el-col>
-              <el-col :span="8" v-if="infoData.bizType != 2">
+              <!-- <el-col :span="8" v-if="infoData.bizType != 2">
                 <el-form-item label="供应商代码:">
                   <span>{{ extInfo.supplierCode }}</span>
                 </el-form-item>
-              </el-col>
+              </el-col> -->
               <el-col :span="8">
                 <el-form-item label="送货人:">
                   <span>{{ infoData.fromUser }}</span>
@@ -367,6 +367,35 @@
               :label="`${handleAssetType(extInfo.assetType)}编码`"
               prop="code"
             ></el-table-column>
+
+            <el-table-column
+              v-if="handleAssetType(extInfo.assetType) == '物料'"
+              label="物料代号"
+              prop="materielCode"
+            >
+              <template slot-scope="{ row }">
+                {{ row.materielCode }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              v-if="handleAssetType(extInfo.assetType) == '物料'"
+              label="客户代号"
+              prop="clientCode"
+            >
+              <template slot-scope="{ row }">
+                {{ row.clientCode }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              v-if="handleAssetType(extInfo.assetType) == '物料'"
+              label="重量"
+              prop="weight"
+            >
+              <template slot-scope="{ row }">
+                {{ row.weight }}
+              </template>
+            </el-table-column>
+
             <el-table-column
               label="包装编码"
               prop="packageNo"
@@ -393,7 +422,7 @@
             </el-table-column>
             <el-table-column label="日期" prop="createTime" width="200">
               <template slot="header" slot-scope="scope">
-                {{ dateType == 1 ? '采购日期' : '生产日期' }}
+                {{ dateTypes == 1 ? '采购日期' : '生产日期' }}
               </template>
               <template slot-scope="{ row }">
                 {{ row.createTime }}
@@ -431,6 +460,7 @@
     components: { StatusStep, PageHeader },
     data() {
       return {
+        dateTypes: 1,
         detailList: [],
         extInfo: {},
         codeList: [],
@@ -556,6 +586,7 @@
               });
             }
           }
+          this.dateTypes = arr[0].dateType;
           this.detailList = arr;
         }
         const { data } = await getTreeByPid(0);

+ 13 - 5
src/views/warehouseManagement/warehouseDefinition/components/WarehouseEdit.vue

@@ -60,7 +60,7 @@
       <el-form-item label="权属部门" prop="departmentId">
         <DeptSelect v-model="formData.departmentId" @input="nodeClick" />
       </el-form-item>
-      <el-form-item label="权属人" prop="ownerId">
+      <el-form-item label="仓管员" prop="ownerId">
         <el-select
           filterable
           class="w100"
@@ -160,13 +160,21 @@
           code: [
             { required: true, message: '请输入仓库编码', trigger: 'blur' }
           ],
-          name: [{ required: true, message: '请输入仓库名称', trigger: 'blur' }]
+          name: [
+            { required: true, message: '请输入仓库名称', trigger: 'blur' }
+          ],
           // inventoryType: [
           //   { required: true, message: '请选择仓库类型', trigger: 'blur' }
           // ],
-          // factoryId: [
-          //   { required: true, message: '请选择工厂名称', trigger: 'blur' }
-          // ],
+          factoryId: [
+            { required: true, message: '请选择工厂名称', trigger: 'blur' }
+          ],
+          departmentId: [
+            { required: true, message: '请选择权属部门', trigger: 'blur' }
+          ],
+          ownerId: [
+            { required: true, message: '请选择权属人', trigger: 'blur' }
+          ]
           // status: [
           //   { required: true, message: '请选择仓库状态', trigger: 'blur' }
           // ]

+ 1 - 1
src/views/warehouseManagement/warehouseDefinition/details.vue

@@ -60,7 +60,7 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="权属人">
+                <el-form-item label="仓管员">
                   <span>{{ warehouseInfo.ownerName }}</span>
                 </el-form-item>
               </el-col>