From e56be6e04cc6bfd106a354a5419f8a86f31f4003 Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期五, 30 五月 2025 17:28:04 +0800
Subject: [PATCH] 备件请购完成

---
 src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue |  151 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 122 insertions(+), 29 deletions(-)

diff --git a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue
index c0781ad..13ab68f 100644
--- a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue
+++ b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue
@@ -1,20 +1,24 @@
 <template>
   <j-modal
     :title="title"
-    :width="800"
+    :width="900"
     :visible="visible"
     :confirmLoading="confirmLoading"
     switchFullscreen
+    centered
+    :mask-closable="false"
     @ok="handleOk"
     @cancel="handleCancel"
     cancelText="鍏抽棴"
   >
 
-    <a-spin :spinning="confirmLoading">
+    <a-spin :spinning="spinning">
       <a-form-model
         ref="form"
         :model="model"
         :rules="validatorRules"
+        :labelCol="labelCol"
+        :wrapperCol="wrapperCol"
       >
         <a-form-model-item
           :labelCol="labelCol"
@@ -39,45 +43,118 @@
             v-model="model.remark"
           />
         </a-form-model-item>
+        <a-row :gutter="24">
+          <j-vxe-table
+            ref="editableDetailTable"
+            :rowNumber="true"
+            :rowSelection="true"
+            :bordered="true"
+            :alwaysEdit="true"
+            :toolbar="true"
+            keep-source
+            :height="300"
+            :loading="detail.loading"
+            :dataSource="detail.dataSource"
+            :columns="detail.columns"
+            style="margin-top: 8px;"
+          />
+        </a-row>
       </a-form-model>
     </a-spin>
   </j-modal>
 </template>
 
 <script>
-import { httpAction, getAction } from '@api/manage'
-import moment from "moment"
+import { getAction, httpAction } from '@/api/manage'
+import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
+import { JVXETypes } from '@/components/jeecg/JVxeTable'
 
 export default {
-  name: "EamSparePartRequisitionModal",
+  name: 'EamSparePartIntoModal',
+  mixins: [JVxeTableModelMixin],
+  components: {},
   data() {
     return {
-      title: "鎿嶄綔",
+      title: '鎿嶄綔',
       visible: false,
       model: {},
       labelCol: {
         xs: { span: 24 },
-        sm: { span: 5 },
+        sm: { span: 6 }
       },
       wrapperCol: {
         xs: { span: 24 },
-        sm: { span: 16 },
+        sm: { span: 15 }
       },
-
       confirmLoading: false,
+      spinning: false,
+      disabled: false,
       validatorRules: {},
       url: {
+        //add: '/eam/eamSparePartInventory/add',
+        //edit: '/eam/eamSparePartInventory/edit',
         add: "/eam/eamSparePartRequisition/add",
         edit: "/eam/eamSparePartRequisition/edit",
+        getDetails: "/eam/eamSparePartRequisitionDetail/list",
         generateRequisitionCode: "sys/sysBusinessCodeRule/generateBusinessCodeSeq"
       },
+      detail: {
+        loading: false,
+        dataSource: [],
+        columns: [
+          {
+            title: '澶囦欢',
+            key: 'partId',
+            type: JVXETypes.select,
+            width: '30%',
+            align: 'center',
+            dictCode: 'eam_spare_parts,part_name,id, del_flag!=\'1\'',
+            validateRules: [
+              { required: true, message: '澶囦欢涓嶈兘涓虹┖锛�' }
+            ]
+          },
+          // {
+          //   title: '鎵规鍙�',
+          //   key: 'batchNum',
+          //   type: JVXETypes.input,
+          //   width: '10%',
+          //   align: 'center',
+          //   validateRules: [
+          //     { required: true, message: '鎵规鍙蜂笉鑳戒负绌猴紒' }
+          //   ]
+          // },
+          {
+            title: '鏁伴噺',
+            key: 'requisitionNum',
+            type: JVXETypes.inputNumber,
+            width: '30%',
+            align: 'center',
+            validateRules: [
+              { required: true, message: '鏁伴噺涓嶈兘涓虹┖锛�' }
+            ]
+          },
+          // {
+          //   title: '鍑哄巶鏃ユ湡(鐢熶骇鏃ユ湡)',
+          //   key: 'manufactureDate',
+          //   type: JVXETypes.datetime,
+          //   width: '16%',
+          //   align: 'center',
+          //   validateRules: [
+          //     { required: false, message: '鍑哄巶鏃ユ湡(鐢熶骇鏃ユ湡)涓嶈兘涓虹┖锛�' }
+          //   ]
+          // },
+
+        ]
+      }
     }
   },
   created() {
   },
   methods: {
     add() {
+
       const that = this
+      this.visible = true;
       let params = {
         businessCode: "SpareRequisitionCodeRule"
       }
@@ -95,48 +172,64 @@
     },
     edit(record) {
       this.model = Object.assign({}, record);
+      this.detail.dataSource = record.sparePartRequisitionDetails
       this.visible = true;
     },
-    close() {
-      this.$emit('close');
-      this.visible = false;
-      this.$refs.form.clearValidate();
-    },
-    handleOk() {
-      const that = this;
+
+    async handleOk() {
+      const that = this
+      let errMap = await that.$refs.editableDetailTable.validateTable()
+      if (errMap) {
+        this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
+        return
+      }
       // 瑙﹀彂琛ㄥ崟楠岃瘉
       this.$refs.form.validate(valid => {
         if (valid) {
-          that.confirmLoading = true;
-          let httpurl = '';
-          let method = '';
+          let tableData = that.$refs.editableDetailTable.getTableData()
+          let removeData = that.$refs.editableDetailTable.getDeleteData()
+          that.model.sparePartRequisitionDetails = [...tableData]
+          that.model.removeDetailList = [...removeData]
+
+          that.confirmLoading = that.spinning = true
+          let httpurl = ''
+          let method = ''
           if (!this.model.id) {
-            httpurl += this.url.add;
-            method = 'post';
+            httpurl += this.url.add
+            method = 'post'
           } else {
-            httpurl += this.url.edit;
-            method = 'put';
+            httpurl += this.url.edit
+            method = 'put'
           }
           httpAction(httpurl, this.model, method).then((res) => {
+
             if (res.success) {
-              that.$message.success(res.message);
-              that.$emit('ok');
+              that.$message.success(res.message)
+              that.$emit('ok')
+              that.close()
             } else {
-              that.$message.warning(res.message);
+              that.$message.warning(res.message)
             }
           }).finally(() => {
-            that.confirmLoading = false;
-            that.close();
+            that.confirmLoading = that.spinning = false
           })
         } else {
-          return false;
+          return false
         }
       })
     },
+
+
+
     handleCancel() {
       this.close()
     },
 
+    close() {
+      this.$emit('close')
+      this.visible = false
+      this.$refs.form.clearValidate()
+    }
   }
 }
 </script>

--
Gitblit v1.9.3