From f8ea0c93a2c35e84d77d737301bb36f50b8aeebb Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期六, 06 九月 2025 18:06:13 +0800
Subject: [PATCH] art: 物料出库

---
 src/views/lsw/modules/LswMaterialInboundForm.vue |  185 +++++++++++++++++++++++++++++----------------
 1 files changed, 118 insertions(+), 67 deletions(-)

diff --git a/src/views/lsw/modules/LswMaterialInboundForm.vue b/src/views/lsw/modules/LswMaterialInboundForm.vue
index eb3dc18..a20e449 100644
--- a/src/views/lsw/modules/LswMaterialInboundForm.vue
+++ b/src/views/lsw/modules/LswMaterialInboundForm.vue
@@ -3,40 +3,34 @@
     <j-form-container :disabled="formDisabled">
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
         <a-row>
-          <a-form-model-item label="浜х嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId">
-            <a-row :gutter="24">
-              <a-col :span="24">
-                <a-form-item
-                  :labelCol="labelCol"
-                  :wrapperCol="wrapperCol"
-                  label=""
-                >
-                  <j-select-factory
-                    :disabled="disabled"
-                    v-model="model.factoryId"
-                    :multi="true"
-                    @back="backFactoryInfo"
-                    :backProduction="true"
-                    :treeProductOpera="true"
-                  ></j-select-factory>
-                </a-form-item>
-              </a-col>
-            </a-row>
-          </a-form-model-item>
           <a-col :span="12">
-            <a-form-model-item label="搴撳瓨鍦�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId">
-              <j-search-select-tag v-model="model.warehouseId" placeholder="璇烽�夋嫨搴撳瓨鍦�"
-                                   dict="base_line_side_warehouse,warehouse_name,id"></j-search-select-tag>
+            <a-form-model-item label="鏉ユ簮缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode"
+                               v-if="model.inboundCategory !== 'MATERIAL_INNER_TRANSFER'">
+              <a-input v-model="model.originalCode" placeholder="璇疯緭鍏ユ潵婧愮紪鐮�"></a-input>
+            </a-form-model-item>
+            <a-form-model-item label="鏉ユ簮绾胯竟搴�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode"
+                               v-else>
+              <j-search-select-tag v-model="model.originalCode" placeholder="璇烽�夋嫨绾胯竟搴�"
+                                   :dict-options="originalCodeDictOptions"
+                                   @change="originalCodeSelectChange"></j-search-select-tag>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-model-item label="鏉ユ簮鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalName">
+              <a-input v-model="model.originalName" placeholder="璇疯緭鍏ユ潵婧愬悕绉�"></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-model-item label="绾胯竟搴�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId">
+              <j-search-select-tag v-model="model.warehouseId" placeholder="璇烽�夋嫨绾胯竟搴�"
+                                   :dict-options="warehouseDictOptions"
+                                   @change="warehouseSelectChange"></j-search-select-tag>
             </a-form-model-item>
           </a-col>
           <a-col :span="12">
             <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber">
-              <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"></a-input>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="12">
-            <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName">
-              <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"></a-input>
+              <j-search-select-tag :dict-options="materialDictOptions" v-model="model.materialNumber"
+                                   placeholder="璇烽�夋嫨鐗╂枡缂栫爜" @change="materialSelectChange"></j-search-select-tag>
             </a-form-model-item>
           </a-col>
           <a-col :span="12">
@@ -49,15 +43,21 @@
               <a-input-number v-model="model.quantity" placeholder="璇疯緭鍏ュ叆搴撴暟閲�" style="width: 100%" />
             </a-form-model-item>
           </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+    <j-form-container disabled>
+      <a-form-model ref="form1" :model="model" slot="detail">
+        <a-row>
           <a-col :span="12">
-            <a-form-model-item label="鎺ユ敹浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiver">
-              <j-select-user-by-dep v-model="model.receiver" placeholder="璇疯緭鍏ユ帴鏀朵汉"></j-select-user-by-dep>
+            <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName">
+              <a-input v-model="model.materialName"></a-input>
             </a-form-model-item>
           </a-col>
           <a-col :span="12">
-            <a-form-model-item label="鎺ユ敹鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveTime">
-              <j-date placeholder="璇烽�夋嫨鎺ユ敹鏃堕棿" v-model="model.receiveTime" :show-time="true"
-                      date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            <a-form-model-item label="鍏ュ簱绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inboundCategory">
+              <j-search-select-tag v-model="model.inboundCategory"
+                                   dict="material_inbound_category"></j-search-select-tag>
             </a-form-model-item>
           </a-col>
         </a-row>
@@ -68,22 +68,11 @@
 
 <script>
 
-import { httpAction, getAction } from '@/api/manage'
-import { validateDuplicateValue } from '@/utils/util'
-import JDate from '@/components/jeecg/JDate'
-import pick from 'lodash.pick'
-import moment from 'moment'
-import { duplicateCheck } from '@/api/api'//閲嶅鏍¢獙
-import JTreeDict from '@/components/jeecg/JTreeDict'//鍒嗙被瀛楀吀鏍戝舰涓嬫媺缁勪欢
-import JSelectFactory from '../../../../src/components/jeecgbiz/JSelectFactory.vue'
+import { getAction, httpAction } from '@/api/manage'
 
 export default {
   name: 'LswMaterialInboundForm',
-  components: {
-    JDate,
-    JTreeDict,
-    JSelectFactory
-  },
+  components: {},
   props: {
     //琛ㄥ崟绂佺敤
     disabled: {
@@ -104,12 +93,17 @@
         sm: { span: 16 }
       },
       confirmLoading: false,
+      warehouseDictOptions: [],
+      materialDictOptions: [],
       validatorRules: {
-        factoryId: [
-          { required: true, message: '浜х嚎鏄繀閫夐」', trigger: 'change' }
+        originalCode: [
+          { required: true, message: '鏉ユ簮缂栫爜鏄繀閫夐」', trigger: 'change' }
+        ],
+        originalName: [
+          { required: true, message: '鏉ユ簮鍚嶇О鏄繀閫夐」', trigger: 'change' }
         ],
         warehouseId: [
-          { required: true, message: '搴撳瓨鍦版槸蹇呴�夐」', trigger: 'change' }
+          { required: true, message: '绾胯竟搴撴槸蹇呴�夐」', trigger: 'change' }
         ],
         materialNumber: [
           { required: true, message: '鐗╂枡缂栫爜鏄繀閫夐」', trigger: 'change' }
@@ -122,24 +116,27 @@
         ],
         quantity: [
           { required: true, message: '鍏ュ簱鏁伴噺鏄繀閫夐」', trigger: 'change' }
-        ],
-        receiver: [
-          { required: true, message: '鎺ユ敹浜烘槸蹇呴�夐」', trigger: 'change' }
-        ],
-        receiveTime: [
-          { required: true, message: '鎺ユ敹鏃堕棿鏄繀閫夐」', trigger: 'change' }
         ]
       },
       url: {
-        add: '/lswmaterialinbound/lswMaterialInbound/add',
-        edit: '/lswmaterialinbound/lswMaterialInbound/edit',
-        queryById: '/lswmaterialinbound/lswMaterialInbound/queryById'
+        add: '/lsw/materialInbound/add',
+        edit: '/lsw/materialInbound/edit',
+        queryById: '/lsw/materialInbound/queryById',
+        queryByProductionType: '/base/lineSideWarehouse/queryByProductionType',
+        queryByMaterialCategory: '/lsw/lswMaterial/queryByMaterialCategory'
       }
     }
   },
   computed: {
     formDisabled() {
       return this.disabled
+    },
+    originalCodeDictOptions() {
+      return this.warehouseDictOptions.map(warehouse => ({
+        ...warehouse,
+        value: warehouse.warehouseCode,
+        text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')'
+      }))
     }
   },
   created() {
@@ -147,14 +144,20 @@
     this.modelDefault = JSON.parse(JSON.stringify(this.model))
   },
   methods: {
-    backFactoryInfo(info) {
-      this.model.factoryIds = this.model.factoryId
-      this.nextFactoryOptions = info.map((item, index, arr) => {
-        let c = { label: item.text, value: item.value + '' }
-        return c
-      })
-    },
-    add() {
+    add(inboundCategory) {
+      this.warehouseDictOptions = []
+      this.materialDictOptions = []
+      if (inboundCategory === 'HEAT_TREATMENT_INBOUND') {
+        this.loadWarehouseDictOptions('OUTERFLANGE,INNERFLANGE')
+        this.loadMaterialDictOptions('BLANK')
+      } else if (inboundCategory === 'SMALL_INNER_RING') {
+        this.loadWarehouseDictOptions('ASSEMBLE')
+        this.loadMaterialDictOptions('SMALL_INNER_RING')
+      } else if (inboundCategory === 'MATERIAL_INNER_TRANSFER') {
+        this.loadWarehouseDictOptions('ASSEMBLE,OUTERFLANGE,INNERFLANG,HEATTREATMENT')
+        this.loadMaterialDictOptions('OUTER_FLANGE,INNER_FLANGE,STEEL_BALL,BLANK,COMPONENTS')
+      }
+      this.modelDefault.inboundCategory = inboundCategory
       this.edit(this.modelDefault)
     },
     edit(record) {
@@ -189,6 +192,54 @@
         }
 
       })
+    },
+    loadWarehouseDictOptions(productionType) {
+      let params = { productionType: productionType }
+      getAction(this.url.queryByProductionType, params).then(res => {
+        if (res.success) {
+          this.warehouseDictOptions = res.result.map(warehouse => ({
+            ...warehouse,
+            value: warehouse.id,
+            text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')'
+          }))
+        }
+      })
+    },
+    loadMaterialDictOptions(materialCategory) {
+      let params = { materialCategory: materialCategory }
+      getAction(this.url.queryByMaterialCategory, params).then(res => {
+        if (res.success) {
+          this.materialDictOptions = res.result.map(material => ({
+            ...material,
+            value: material.materialNumber,
+            text: material.materialNumber + '(' + material.materialName + ')'
+          }))
+        }
+      })
+    },
+    warehouseSelectChange(value) {
+      let warehouse = this.warehouseDictOptions.find(option => option.value === value)
+      if (warehouse) {
+        this.model.factoryId = warehouse.factoryId
+      } else {
+        this.model.factoryId = undefined
+      }
+    },
+    materialSelectChange(value) {
+      let material = this.materialDictOptions.find(option => option.value === value)
+      if (material) {
+        this.model.materialName = material.materialName
+      } else {
+        this.model.materialName = undefined
+      }
+    },
+    originalCodeSelectChange(value) {
+      let warehouse = this.originalCodeDictOptions.find(option => option.value === value)
+      if (warehouse) {
+        this.model.originalName = warehouse.warehouseName
+      } else {
+        this.model.originalName = undefined
+      }
     }
   }
 }

--
Gitblit v1.9.3