瀏覽代碼

Merge branch 'master' of http://192.168.1.160:3000/zhaohanlin/rtk-web-wms-cloud

乐菲 2 周之前
父節點
當前提交
6cb3f38836

+ 7 - 0
src/api/wms/output/inrequest.js

@@ -65,6 +65,13 @@ export function getStockPage(params) {
         params,
     });
 }
+export function getMaterialPage(params) {
+    return request({
+        url: "/rtkerp/material/page",
+        method: "get",
+        params,
+    });
+}
 // 获得入库申请主分页
 export function getInRequestPage(params) {
     return request({

+ 88 - 1
src/views/rtkwms/inrequest/InRequestForm.vue

@@ -158,6 +158,13 @@
           </el-form-item>
         </el-col>
       </el-form>
+      <el-button
+        type="primary"
+        size="mini"
+        style="margin-bottom: 10px"
+        @click="add()"
+        >新增明细</el-button
+      >
       <el-table :data="formData.list" border size="mini">
         <el-table-column
           label="源单编号"
@@ -179,7 +186,28 @@
           prop="materialName"
           width="150"
           show-overflow-tooltip
-        />
+        >
+          <template v-slot="scope">
+            <el-select
+              v-model="scope.row.materialName"
+              filterable
+              remote
+              reserve-keyword
+              placeholder="请选择物料名称"
+              :remote-method="remoteMaterialName"
+              :loading="loading"
+              @change="changeMaterialName"
+            >
+              <el-option
+                v-for="item in materialNameList"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code + '-' + scope.$index"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
         <el-table-column
           label="客户编码"
           align="center"
@@ -236,6 +264,23 @@
             <el-input v-model="scope.row.remark" />
           </template>
         </el-table-column>
+        <el-table-column
+          label="操作"
+          align="center"
+          fixed="right"
+          width="150px"
+          class-name="small-padding fixed-width"
+        >
+          <template v-slot="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" :disabled="formLoading" @click="submitForm"
@@ -257,6 +302,7 @@ export default {
   },
   data() {
     return {
+      materialNameList: [],
       sourceOrderNoList: [],
       businessDescribeList: [],
       warehouseList: [],
@@ -345,6 +391,28 @@ export default {
     };
   },
   methods: {
+    handleDelete(row) {
+      console.log(row);
+      this.formData.list.splice(row.$index, 1);
+    },
+    remoteMaterialName(query) {
+      if (query !== "") {
+        let that = this;
+        this.loading = true;
+        setTimeout(async () => {
+          this.loading = false;
+          let {
+            data: { list },
+          } = await InRequestApi.getMaterialPage({
+            name: query,
+            pageSize: 999,
+          });
+          this.materialNameList = list || [];
+        }, 200);
+      } else {
+        this.materialNameList = [];
+      }
+    },
     remoteMethod(query) {
       if (query !== "") {
         let that = this;
@@ -354,6 +422,7 @@ export default {
           let { data } = await InRequestApi.getSourceOrder({
             businessType: that.formData.businessType,
             sourceOrderNo: query,
+            pageSize: 999,
           });
           this.sourceOrderNoList = data || [];
         }, 200);
@@ -361,6 +430,14 @@ export default {
         this.sourceOrderNoList = [];
       }
     },
+    add() {
+      if (!this.formData.businessType) {
+        return this.$message.error("请先选择业务类型");
+      }
+      this.formData.list = this.formData.list || [];
+      this.formData.list.push({});
+      this.formData = { ...this.formData };
+    },
     remoteWarehouse(query) {
       if (query !== "") {
         let that = this;
@@ -386,6 +463,16 @@ export default {
         }
       });
     },
+    changeMaterialName(value) {
+      let data = value.split("-");
+      this.materialNameList.map((v) => {
+        if (v.code == data[0]) {
+          v.materialNo = v.code;
+          v.materialName = v.name;
+          this.formData.list[data[1]] = v;
+        }
+      });
+    },
     changeBusinessDescribe(e) {
       this.businessDescribeList.map((v) => {
         if (v.label == e) {

+ 87 - 1
src/views/wms/output/inrequest/components/InRequestForm.vue

@@ -158,6 +158,13 @@
           </el-form-item>
         </el-col>
       </el-form>
+      <el-button
+        type="primary"
+        size="mini"
+        style="margin-bottom: 10px"
+        @click="add()"
+        >新增明细</el-button
+      >
       <el-table :data="formData.list" border size="mini">
         <el-table-column
           label="源单编号"
@@ -179,7 +186,28 @@
           prop="materialName"
           width="150"
           show-overflow-tooltip
-        />
+        >
+          <template v-slot="scope">
+            <el-select
+              v-model="scope.row.materialName"
+              filterable
+              remote
+              reserve-keyword
+              placeholder="请选择物料名称"
+              :remote-method="remoteMaterialName"
+              :loading="loading"
+              @change="changeMaterialName"
+            >
+              <el-option
+                v-for="item in materialNameList"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code + '-' + scope.$index"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
         <el-table-column
           label="客户编码"
           align="center"
@@ -236,6 +264,23 @@
             <el-input v-model="scope.row.remark" />
           </template>
         </el-table-column>
+        <el-table-column
+          label="操作"
+          align="center"
+          fixed="right"
+          width="150px"
+          class-name="small-padding fixed-width"
+        >
+          <template v-slot="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" :disabled="formLoading" @click="submitForm"
@@ -257,6 +302,7 @@ export default {
   },
   data() {
     return {
+      materialNameList: [],
       sourceOrderNoList: [],
       businessDescribeList: [],
       warehouseList: [],
@@ -345,6 +391,46 @@ export default {
     };
   },
   methods: {
+    handleDelete(row) {
+      console.log(row);
+      this.formData.list.splice(row.$index, 1);
+    },
+    remoteMaterialName(query) {
+      if (query !== "") {
+        let that = this;
+        this.loading = true;
+        setTimeout(async () => {
+          this.loading = false;
+          let {
+            data: { list },
+          } = await InRequestApi.getMaterialPage({
+            name: query,
+            pageSize: 999,
+          });
+          this.materialNameList = list || [];
+        }, 200);
+      } else {
+        this.materialNameList = [];
+      }
+    },
+    add() {
+      if (!this.formData.businessType) {
+        return this.$message.error("请先选择业务类型");
+      }
+      this.formData.list = this.formData.list || [];
+      this.formData.list.push({});
+      this.formData = { ...this.formData };
+    },
+    changeMaterialName(value) {
+      let data = value.split("-");
+      this.materialNameList.map((v) => {
+        if (v.code == data[0]) {
+          v.materialNo = v.code;
+          v.materialName = v.name;
+          this.formData.list[data[1]] = v;
+        }
+      });
+    },
     remoteMethod(query) {
       if (query !== "") {
         let that = this;