From e2ca529f2d095293d737b5a2f0b7562e85919418 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期五, 04 七月 2025 09:15:16 +0800
Subject: [PATCH] 检验方案

---
 src/views/qms/SamplingRulesList.vue                                     |    2 
 src/views/qms/modules/defect/DefectModel.vue                            |    1 
 src/views/qms/InspectionToolsList.vue                                   |    2 
 src/views/qms/modules/inspectionTools/InspectionToolsModel.vue          |    1 
 src/views/qms/modules/samplingRules/SamplingRulesModel.vue              |    1 
 src/views/base/modules/shift/ShiftModel.vue                             |   12 
 src/views/qms/modules/inspectionItem/InspectionItemModel.vue            |    1 
 src/views/base/modules/warehouse/WarehouseModel.vue                     |    1 
 src/views/qms/InspectionPlanList.vue                                    |  429 +++++++++++++++++
 src/views/qms/InspectionItemList.vue                                    |    2 
 src/views/base/SupplierList.vue                                         |    2 
 src/views/base/modules/group/GroupModal.vue                             |    1 
 src/views/qms/modules/inspectionPlan/InspectionPlanModel.vue            |  525 +++++++++++++++++++++
 src/views/base/modules/FactoryManager/SelectUserModal.vue               |    1 
 src/views/base/WarehouseList.vue                                        |    2 
 src/views/base/modules/group/SelectUserModal.vue                        |    1 
 src/views/base/modules/supplier/SupplierModel.vue                       |    1 
 src/views/qms/modules/inspectionPlan/JSelectInspectionItemListModal.vue |  258 ++++++++++
 src/views/qms/DefectList.vue                                            |    2 
 src/views/qms/modules/inspectionPlan/InspectionPlanItemList.vue         |  103 ++++
 src/views/qms/modules/inspectionPlan/MaterialListModal.vue              |  137 +++++
 src/views/base/modules/FactoryManager/FactoryModal.vue                  |    1 
 22 files changed, 1,478 insertions(+), 8 deletions(-)

diff --git a/src/views/base/SupplierList.vue b/src/views/base/SupplierList.vue
index 270a0c6..81e83ca 100644
--- a/src/views/base/SupplierList.vue
+++ b/src/views/base/SupplierList.vue
@@ -102,7 +102,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.supplierStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/base/WarehouseList.vue b/src/views/base/WarehouseList.vue
index fbb8ec7..38dde11 100644
--- a/src/views/base/WarehouseList.vue
+++ b/src/views/base/WarehouseList.vue
@@ -98,7 +98,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.warehouseStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/base/modules/FactoryManager/FactoryModal.vue b/src/views/base/modules/FactoryManager/FactoryModal.vue
index 328546f..dea6f54 100644
--- a/src/views/base/modules/FactoryManager/FactoryModal.vue
+++ b/src/views/base/modules/FactoryManager/FactoryModal.vue
@@ -5,6 +5,7 @@
     :ok=false
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
     @cancel="handleCancel"
diff --git a/src/views/base/modules/FactoryManager/SelectUserModal.vue b/src/views/base/modules/FactoryManager/SelectUserModal.vue
index 4a374c6..ee1d373 100644
--- a/src/views/base/modules/FactoryManager/SelectUserModal.vue
+++ b/src/views/base/modules/FactoryManager/SelectUserModal.vue
@@ -5,6 +5,7 @@
       :title="title"
       :width="1000"
       :visible="visible"
+      :maskClosable="false"
       @ok="handleOk"
       @cancel="handleCancel"
       cancelText="鍏抽棴">
diff --git a/src/views/base/modules/group/GroupModal.vue b/src/views/base/modules/group/GroupModal.vue
index a7d7e2d..70dca51 100644
--- a/src/views/base/modules/group/GroupModal.vue
+++ b/src/views/base/modules/group/GroupModal.vue
@@ -4,6 +4,7 @@
     :width="800"
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     @ok="handleOk"
     @cancel="handleCancel"
     cancelText="鍏抽棴"
diff --git a/src/views/base/modules/group/SelectUserModal.vue b/src/views/base/modules/group/SelectUserModal.vue
index 5aed197..36eeb3b 100644
--- a/src/views/base/modules/group/SelectUserModal.vue
+++ b/src/views/base/modules/group/SelectUserModal.vue
@@ -5,6 +5,7 @@
       :title="title"
       :width="1000"
       :visible="visible"
+      :maskClosable="false"
       @ok="handleOk"
       @cancel="handleCancel"
       cancelText="鍏抽棴">
diff --git a/src/views/base/modules/shift/ShiftModel.vue b/src/views/base/modules/shift/ShiftModel.vue
index dce3877..6ebf032 100644
--- a/src/views/base/modules/shift/ShiftModel.vue
+++ b/src/views/base/modules/shift/ShiftModel.vue
@@ -1,6 +1,14 @@
 <template>
-  <a-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading" :okButtonProps="{ props: {disabled: disableSubmit} }"
-           @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
+  <a-modal 
+  :title="title" 
+  :width="800" 
+  :visible="visible" 
+  :maskClosable="false"
+  :confirmLoading="confirmLoading" 
+  :okButtonProps="{ props: {disabled: disableSubmit} }"
+  @ok="handleOk" 
+  @cancel="handleCancel" 
+  cancelText="鍏抽棴">
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
         <a-row :gutter="24">
diff --git a/src/views/base/modules/supplier/SupplierModel.vue b/src/views/base/modules/supplier/SupplierModel.vue
index 8f5aa30..68eef68 100644
--- a/src/views/base/modules/supplier/SupplierModel.vue
+++ b/src/views/base/modules/supplier/SupplierModel.vue
@@ -3,6 +3,7 @@
     :title="title"
     :width="800"
     :visible="visible"
+    :maskClosable="false"
     :confirmLoading="confirmLoading"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
diff --git a/src/views/base/modules/warehouse/WarehouseModel.vue b/src/views/base/modules/warehouse/WarehouseModel.vue
index c268b71..2e3c80f 100644
--- a/src/views/base/modules/warehouse/WarehouseModel.vue
+++ b/src/views/base/modules/warehouse/WarehouseModel.vue
@@ -4,6 +4,7 @@
     :width="800"
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
     @cancel="handleCancel"
diff --git a/src/views/qms/DefectList.vue b/src/views/qms/DefectList.vue
index 5cf5eef..83f75f1 100644
--- a/src/views/qms/DefectList.vue
+++ b/src/views/qms/DefectList.vue
@@ -98,7 +98,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.defectStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/qms/InspectionItemList.vue b/src/views/qms/InspectionItemList.vue
index 0689c6a..476a032 100644
--- a/src/views/qms/InspectionItemList.vue
+++ b/src/views/qms/InspectionItemList.vue
@@ -98,7 +98,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.itemStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/qms/InspectionPlanList.vue b/src/views/qms/InspectionPlanList.vue
new file mode 100644
index 0000000..b1fb60e
--- /dev/null
+++ b/src/views/qms/InspectionPlanList.vue
@@ -0,0 +1,429 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :md="6" :sm="8">
+            <a-form-item label="妫�楠屾柟妗堢紪鐮�">
+              <a-input placeholder="璇疯緭鍏ユ楠屾柟妗堢紪鐮�" v-model="queryParam.planCode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+              <a-form-item label="妫�楠屾柟妗堝垎绫�">
+                <j-search-select-tag
+                  placeholder="璇烽�夋嫨妫�楠屾柟妗堝垎绫�"
+                  v-model="queryParam.planCategory"
+                  dict="plan_category"
+                />
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="8">
+              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+              <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+            </span>
+            </a-col>
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <a-table
+      ref="table"
+      size="middle"
+      bordered
+      rowKey="id"
+      :customRow="customRow"
+      :rowClassName="tableRowClass"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      :loading="loading"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}"
+      @change="handleTableChange"
+    >
+      <!--鐘舵�佹爮涓�у睍绀�-->
+        <span
+          slot="status"
+          slot-scope="text,record"
+        >
+          <a-badge
+            v-if="record.planStatus==1"
+            status="success"
+          />
+          <span
+            v-if="record.planStatus==1"
+            class="success"
+          >鍚敤</span>
+          <a-badge
+            v-if="record.planStatus==0"
+            status="error"
+          />
+          <span
+            v-if="record.planStatus==0"
+            class="error"
+          >绂佺敤</span>
+        </span>
+        <span
+          slot="publishStatus"
+          slot-scope="text,record"
+        >
+          <a-badge
+            v-if="record.publishStatus==1"
+            status="success"
+          />
+          <span
+            v-if="record.publishStatus==1"
+            class="success"
+          >宸插彂甯�</span>
+          <a-badge
+            v-if="record.publishStatus==0"
+            status="error"
+          />
+          <span
+            v-if="record.publishStatus==0"
+            class="error"
+          >寰呭彂甯�</span>
+        </span>
+        <span
+          slot="version"
+          slot-scope="text,record"
+        >
+          <span
+            v-if="record.planStatus==1"
+            class="success"
+          >{{record.version}}</span>       
+          <span
+            v-if="record.planStatus==0"
+            class="error"
+          >{{record.version}}</span>
+        </span>
+        <span
+          slot="action"
+          slot-scope="text, record"
+          v-if="record.isNewVersion == 1"
+        >
+          <a-popconfirm
+            v-if="record.publishStatus == 0 && record.planStatus == 1"
+            title="纭畾鍙戝竷鍚�?"
+            @confirm="() => handlePublish(record.id)"
+          >
+            <a>鍙戝竷</a>
+          </a-popconfirm>
+          <a-popconfirm
+            v-if="record.publishStatus == 1 && record.planStatus == 1"
+            title="纭畾鍙栨秷鍙戝竷鍚�?"
+            @confirm="() => handlePublish(record.id)"
+          >
+            <a>鍙栨秷鍙戝竷</a>
+          </a-popconfirm>
+          <a-divider type="vertical" v-if="record.publishStatus == 1 && record.planStatus == 1"/>
+           <a-popconfirm
+            v-if="record.publishStatus == 1 && record.planStatus == 1"
+            title="纭畾鍗囩増鍚�?"
+            @confirm="() => handleVersion(record.id)"
+          >
+            <a>鍗囩増</a>
+          </a-popconfirm>
+          <a-divider type="vertical" v-if="record.planStatus == 1"/>
+          <a-dropdown>
+            <a class="ant-dropdown-link">鏇村
+              <a-icon type="down" />
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item v-if="record.planStatus==1 && record.publishStatus==0">
+                <a @click="handleEdit(record)">缂栬緫</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a
+                  href="javascript:;"
+                  @click="handleDetail(record)"
+                >璇︽儏</a>
+              </a-menu-item>
+              <a-menu-item v-if="record.publishStatus==0">
+                <a-popconfirm
+                  title="纭畾鍒犻櫎鍚�?"
+                  @confirm="() => handleDelete(record.id)"
+                >
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+
+              </a-menu-item>
+              <a-menu-item v-if="record.planStatus == 0">
+                <a-popconfirm
+                  title="纭畾鍚敤鍚�?"
+                  @confirm="() => handleActive(record.id)"
+                >
+                  <a>鍚敤</a>
+                </a-popconfirm>
+              </a-menu-item>
+              <a-menu-item v-if="record.planStatus == 1 && record.publishStatus == 0">
+                <a-popconfirm
+                  title="纭畾绂佺敤鍚�?"
+                  @confirm="() => handleActive(record.id)"
+                >
+                  <a>绂佺敤</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+    </a-table>
+    <a-tabs defaultActiveKey="1">
+      <a-tab-pane tab="妫�楠屾柟妗堟楠岄」鏄庣粏" key="1">
+        <inspection-plan-item-list ref="inspectionPlanItemList"></inspection-plan-item-list>
+      </a-tab-pane>
+    </a-tabs>
+    <!-- table鍖哄煙-end -->
+    <inspection-plan-model ref="modalForm" @ok="modalFormOk"></inspection-plan-model>
+  </a-card>
+</template>
+
+<script>
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import InspectionPlanModel from './modules/inspectionPlan/InspectionPlanModel'
+import InspectionPlanItemList from './modules/inspectionPlan/InspectionPlanItemList'
+import { requestPut,postAction,getAction } from '@/api/manage'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
+
+export default {
+  name: 'InspectionPlanList',
+  mixins: [JeecgListMixin],
+  components: {
+    InspectionPlanModel,
+    InspectionPlanItemList,
+    JDictSelectTag,
+    JSearchSelectTag,
+  },
+  data() {
+    return {
+      description: '妫�楠屾柟妗�',
+      url: {
+        list: '/qms/inspectionPlan/list',
+        importExcelUrl: '/qms/inspectionPlan/importExcel',
+        exportXlsUrl: '/qms/inspectionPlan/exportXls',
+        edit:'/qms/inspectionPlan/edit',
+        submit:'/qms/inspectionPlan/submit',
+        active: '/qms/inspectionPlan/active',
+        publish:'/qms/inspectionPlan/publish',
+        version:'/qms/inspectionPlan/version'
+      },
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '妫�楠屾柟妗堢紪鐮�',
+          align: 'center',
+          dataIndex: 'planCode',
+          sorter: true,
+        },
+        {
+          title: '妫�楠屾柟妗堝悕绉�',
+          align: 'center',
+          dataIndex: 'planName',
+        },
+        {
+          title: '妫�楠屾柟妗堝垎绫�',
+          align: 'center',
+          dataIndex: 'planCategory_dictText',
+        },
+        {
+          title: '鐗╂枡缂栫爜',
+          align: 'center',
+          dataIndex: 'materialNumber',
+        },
+        {
+          title: '鐗╂枡鍚嶇О',
+          align: 'center',
+          dataIndex: 'materialName',
+        },
+        {
+          title: '鎶芥牱瑙勫垯',
+          align: 'center',
+          dataIndex: 'ruleId_dictText',
+        },
+        {
+          title: '鏂规鎻忚堪',
+          align: 'center',
+          dataIndex: 'descreption',
+        },
+        {
+          title: '鐗堟湰',
+          align: 'center',
+          scopedSlots: {
+            customRender: 'version',
+          },
+          dataIndex: 'version',
+        },
+        {
+          title: '鏂规鐘舵��',
+          align: 'center',
+          scopedSlots: {
+            customRender: 'status',
+          },
+          dataIndex: 'planStatus',
+        },
+        {
+          title: '鍙戝竷鐘舵��',
+          align: 'center',
+          scopedSlots: {
+            customRender: 'publishStatus',
+          },
+          dataIndex: 'publishStatus',
+        },
+        {
+          width: 180,
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          align: 'center',
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      loading:false
+    }
+  },
+  computed: {
+    /* 瀵煎叆璺緞椤甸潰閲嶆柊璁$畻 */
+    importExcelUrl: function () {
+      //  return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;//寮�鍙戠幆澧冩寚鍚�
+      return `${window._CONFIG['hxFileURL']}/${this.url.importExcelUrl}`
+    },
+  },
+  methods: {
+    searchQuery(){
+      this.selectedRowKeys = []
+      this.$refs.inspectionPlanItemList.dataSource = []
+      this.loadData(1);
+    },
+    searchReset() {
+      this.queryParam = {}
+      this.selectedRowKeys = []
+      this.$refs.inspectionPlanItemList.dataSource = []
+      this.loadData(1);
+    },
+    customRow(record) {
+      return {
+        on: {
+          click: (e) => {
+            this.onSelectChange(record.id.split(","), [record]); 
+          },
+        },
+      }
+    },
+    onSelectChange(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys;
+        this.selectionRows = selectionRows;
+        //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰
+        this.$bus.$emit('getInspectionPlanItemData', this.selectionRows[0])
+      },
+    handleEdit: function (record) {
+        this.$refs.modalForm.edit(record)
+        this.$refs.modalForm.title = '缂栬緫'
+        this.$refs.modalForm.disableSubmit = false
+    },
+    handleAdd() {
+      this.$refs.modalForm.add()
+      this.$refs.modalForm.title = '鏂板'
+      this.$refs.modalForm.disableSubmit = false
+    },
+    handleSubmit(record) {
+        let that = this;
+        that.loading = true
+        getAction(that.url.submit, { id:record.id}).then((res) => {
+          if (res.success) {
+            that.$message.success(res.message);
+            that.loadData();
+          } else {
+            that.$message.warning(res.message);
+          }
+        }).finally(() => {
+          that.loading = false
+        })
+      },
+       //鍚敤绂佺敤
+    handleActive(id) {
+      if (!this.url.active) {
+        this.$message.error("璇疯缃畊rl.active!")
+        return
+      }
+      let that = this;
+      requestPut(that.url.active, {}, { id: id }).then((res) => {
+        if (res.success) {
+          that.$message.success(res.message);
+          that.loadData();
+        } else {
+          that.$message.warning(res.message);
+        }
+      });
+    },
+
+    //鍙戝竷
+    handlePublish(id) {
+      if (!this.url.publish) {
+        this.$message.error("璇疯缃畊rl.publish!")
+        return
+      }
+      let that = this;
+      requestPut(that.url.publish, {}, { id: id }).then((res) => {
+        if (res.success) {
+          that.$message.success(res.message);
+          that.loadData();
+        } else {
+          that.$message.warning(res.message);
+        }
+      });
+    },
+
+    //鍗囩増
+    handleVersion(id) {
+      if (!this.url.version) {
+        this.$message.error("璇疯缃畊rl.version!")
+        return
+      }
+      let that = this;
+      requestPut(that.url.version, {}, { id: id }).then((res) => {
+        if (res.success) {
+          that.$message.success(res.message);
+          that.loadData();
+        } else {
+          that.$message.warning(res.message);
+        }
+      });
+    },
+
+    tableRowClass(record, index) {
+      if (record.isNewVersion != '1') {
+        return "frozenRowClass";
+      }
+      return "";
+    },
+  },
+}
+</script>
+
+<style lang="less" scoped>
+@import '~@assets/less/common.less';
+/deep/ .frozenRowClass {
+  color: #c9c9c9;
+}
+/deep/ .notshow {
+  display: none;
+}
+/deep/ .checked-td-of-add-table {
+  background-color: rgba(220, 220, 220, 1);
+}
+</style>
\ No newline at end of file
diff --git a/src/views/qms/InspectionToolsList.vue b/src/views/qms/InspectionToolsList.vue
index b0eb2fa..da06d5e 100644
--- a/src/views/qms/InspectionToolsList.vue
+++ b/src/views/qms/InspectionToolsList.vue
@@ -98,7 +98,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.toolStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/qms/SamplingRulesList.vue b/src/views/qms/SamplingRulesList.vue
index 28882b9..f0cca90 100644
--- a/src/views/qms/SamplingRulesList.vue
+++ b/src/views/qms/SamplingRulesList.vue
@@ -98,7 +98,7 @@
               <a-icon type="down" />
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-if="record.ruleStatus==1">
                 <a @click="handleEdit(record)">缂栬緫</a>
               </a-menu-item>
               <a-menu-item>
diff --git a/src/views/qms/modules/defect/DefectModel.vue b/src/views/qms/modules/defect/DefectModel.vue
index 86c508f..6878389 100644
--- a/src/views/qms/modules/defect/DefectModel.vue
+++ b/src/views/qms/modules/defect/DefectModel.vue
@@ -4,6 +4,7 @@
     :width="800"
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
     @cancel="handleCancel"
diff --git a/src/views/qms/modules/inspectionItem/InspectionItemModel.vue b/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
index 76fde16..c687893 100644
--- a/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
+++ b/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
@@ -3,6 +3,7 @@
     :title="title"
     :width="800"
     :visible="visible"
+    :maskClosable="false"
     :confirmLoading="confirmLoading"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
diff --git a/src/views/qms/modules/inspectionPlan/InspectionPlanItemList.vue b/src/views/qms/modules/inspectionPlan/InspectionPlanItemList.vue
new file mode 100644
index 0000000..7b24d4c
--- /dev/null
+++ b/src/views/qms/modules/inspectionPlan/InspectionPlanItemList.vue
@@ -0,0 +1,103 @@
+<template>
+  <a-card
+    :bordered="false"
+    class="card-area"
+  >
+    <a-table
+      ref="table"
+      bordered
+      size="middle"
+      rowKey="id"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      :loading="loading"
+      @change="handleTableChange"
+    >
+    </a-table>
+  </a-card>
+</template>
+
+<script>
+import { requestPut } from '@/api/manage'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+export default {
+  name: 'InspectionPlanItemList',
+  mixins: [JeecgListMixin],
+  components: {},
+  data() {
+    return {
+      url: {
+        list: '/qms/inspectionItem/queryListByPlanId',
+      },
+      queryParam: {},
+      nodeType: 0,
+      dataSource: [],
+      disableMixinCreated:true,
+      columns: [
+        {
+          title: '妫�楠岄」鐩紪鐮�',
+          align: 'center',
+          dataIndex: 'itemCode',
+          width: '10%',
+        },
+        {
+          title: '妫�楠岄」鐩悕绉�',
+          dataIndex: 'itemName',
+          align: 'center',
+        },
+        {
+          title: '妫�楠岄」鐩垎绫�',
+          dataIndex: 'itemCategoryName',
+          align: 'center',
+        },
+      
+        {
+          title: '瀹氶噺/瀹氭��',
+          dataIndex: 'qualitativeOrQuantitativeName',
+          align: 'center',
+        },
+         {
+          title: '娴嬮噺宸ュ叿',
+          dataIndex: 'inspectionToolsNames',
+          align: 'center',
+        },
+        {
+          title: '鎺掑簭',
+          dataIndex: 'sorter',
+          align: 'center',
+        },
+        {
+          title: '鏍囧噯鍊�',
+          dataIndex: 'standardValue',
+          align: 'center',
+        },
+        {
+          title: '涓婂叕宸�',
+          dataIndex: 'maxValue',
+          align: 'center',
+        },
+        {
+          title: '涓嬪叕宸�',
+          dataIndex: 'minValue',
+          align: 'center',
+        }
+      ]
+    }
+  },
+
+  methods: {
+  },
+  mounted() {
+    this.$bus.$on('getInspectionPlanItemData', (data) => {
+      this.queryParam.inspectionPlanId = data.id;
+      this.searchQuery();
+    })
+  }
+}
+</script>
+
+<style scoped>
+@import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/src/views/qms/modules/inspectionPlan/InspectionPlanModel.vue b/src/views/qms/modules/inspectionPlan/InspectionPlanModel.vue
new file mode 100644
index 0000000..0c6c049
--- /dev/null
+++ b/src/views/qms/modules/inspectionPlan/InspectionPlanModel.vue
@@ -0,0 +1,525 @@
+<template>
+  <a-modal
+    :title="title"
+    :visible="visible"
+    :fullScreen="true"
+    :width="1200"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    :maskClosable="false"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-row style="width: 100%">
+          <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="妫�楠屾柟妗堢紪鐮�">
+              <a-input :disabled="disableSubmit" placeholder="璇疯緭鍏ユ楠屾柟妗堢紪鐮�" v-decorator="['planCode', validatorRules.planCode]" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="妫�楠屾柟妗堝悕绉�">
+              <a-input :disabled="disableSubmit" placeholder="璇疯緭鍏ユ楠屾柟妗堝悕绉�" v-decorator="['planName', validatorRules.planName]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row style="width: 100%">
+           <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="妫�楠屾柟妗堝垎绫�">
+              <j-dict-select-tag
+                :disabled="disableSubmit"
+                type="list"
+                v-decorator="['planCategory', validatorRules.planCategory]"
+                :triggerChange="true"
+                dictCode="plan_category"
+                placeholder="璇烽�夋嫨妫�楠屾柟妗堝垎绫�"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎶芥牱瑙勫垯">
+             <a-select
+                :disabled="disableSubmit"
+                :triggerChange="true"
+                :options="ruleOptions"
+                v-decorator="[ 'ruleId', validatorRules.ruleId ]"
+                placeholder='璇烽�夋嫨鎶芥牱瑙勫垯'
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+         <a-row style="width: 100%">
+          <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐗╂枡缂栫爜">
+             <a-input-search v-decorator="['materialNumber', validatorRules.materialNumber]" :disabled="disableSubmit" @search="materialSearch" enter-button
+                              placeholder='璇烽�夋嫨鐗╂枡淇℃伅'/>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24 / 2">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐗╂枡鍚嶇О">
+             <a-input :disabled="true" v-decorator="['materialName', validatorRules.materialName]" placeholder='閫夋嫨鐗╂枡鍚庤嚜鍔ㄥ甫鍑�' />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row style="width: 100%">
+          <a-col :span="24">
+            <a-form-item :labelCol="{ span: 3 }" :wrapperCol="{ span: 21 }" label="鏂规鎻忚堪">
+              <a-textarea
+                :disabled="disableSubmit"
+                :rows="2"
+                placeholder="..."
+                v-decorator="['descreption', validatorRules.descreption]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+    <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectInspectionItemList()" :disabled="disableSubmit">閫夋嫨妫�楠岄」鐩�</a-button>
+    <a-table
+      ref="table"
+      bordered
+      size="middle"
+      rowKey="id"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      :loading="loading"
+       @change="handleTableChange"
+    >
+    <template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record, index">
+        <div :key="col.dataIndex">
+          <a-input-number
+            :disabled="disableSubmit"
+            v-if="col.dataIndex == 'sorter'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+        </div>
+        <div :key="col.dataIndex">
+          <a-input-number
+            :disabled="disableSubmit"
+            v-if="col.dataIndex == 'standardValue'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="0"
+          />
+        </div>
+        <div :key="col.dataIndex">
+          <a-input-number
+            :disabled="disableSubmit"
+            v-if="col.dataIndex == 'maxValue'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="0"
+          />
+        </div>
+        <div :key="col.dataIndex">
+          <a-input-number
+            :disabled="disableSubmit"
+            v-if="col.dataIndex == 'minValue'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="0"
+          />
+        </div>
+      </template>
+    <span slot="action" slot-scope="text, record, index">
+        <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record, index)" :disabled="disableSubmit">
+          <a>鍒犻櫎</a>
+        </a-popconfirm>
+      </span>
+    </a-table>
+    <template slot="footer" v-if="disableSubmit == false">
+      <a-button :style="{ marginRight: '8px' }" @click="handleCancel">鍏抽棴</a-button>
+      <a-button @click="handleOk" :disabled="isDisabled" type="primary">纭畾</a-button>
+    </template>
+
+    <template slot="footer" v-if="disableSubmit == true">
+      <a-button :style="{ marginRight: '8px' }" @click="handleCancel">鍏抽棴</a-button>
+    </template>
+    <j-select-inspection-item-list-modal ref="inspectionItemForm" @ok="modalFormOk"></j-select-inspection-item-list-modal>
+    <material-list-modal ref="materialListModel" @sendSelectionRows="getMaterialRows"></material-list-modal>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { ajaxGetDictItems } from '@/api/api'
+import moment from 'moment'
+import { getAction, postAction, requestPut } from '@/api/manage'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
+import JMultiSelectTag from '@/components/dict/JMultiSelectTag'
+import { filterObj } from '@/utils/util'
+import JSelectInspectionItemListModal from './JSelectInspectionItemListModal'
+import store from '@/store'
+import MaterialListModal from './MaterialListModal'
+
+export default {
+  name: 'InspectionPlanModel',
+  components: {
+    JMultiSelectTag,
+    JDictSelectTag,
+    JSelectInspectionItemListModal,
+    JSearchSelectTag,
+    store,
+    MaterialListModal
+  },
+  data() {
+    return {
+     /* 鍒嗛〉鍙傛暟 */
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10', '20', '30'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0
+      },
+      isDisabled: false,
+      selectedRowKeys: {},
+      state: {
+        show: false,
+        maintenanceValue: 1,
+        checkValue: 1,
+        maintenanceState: false,
+        checkState: false,
+      },
+      inboundDate: '',
+      applicationDate: '',
+      supplierShow: false,
+      disableSubmit: false,
+      numDisable:false,
+      quantityDisable:false,
+      onlyCodeDisable:true,
+      returnShow:false,
+      toolingShow:false,
+      sharpenShow:false,
+      addDisable:false,
+      toolinngOptions:[],
+      title: '鎿嶄綔',
+      visible: false,
+      model: {},
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 6 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 },
+      },
+      confirmLoading: false,
+      loading: false,
+      form: this.$form.createForm(this),
+      dataSource: [],
+      toolingTreeData:[],
+      warehouseOptions:[],
+      locationOptions:[],
+      allToolingList:[],
+      param: {},
+      barcodeCurrentType: false,
+      planId:'',
+      validatorRules: {
+        planCode: {
+          rules: [
+            {
+              required: true,
+              message: '璇疯緭鍏ユ楠屾柟妗堢紪鐮�!',
+            },
+          ],
+        },
+        planName: {
+          rules: [
+            {
+              required: true,
+              message: '璇疯緭鍏ユ楠屾柟妗堝悕绉�!',
+            },
+          ],
+        },
+        planCategory: {
+          rules: [
+            {
+              required: true,
+              message: '璇烽�夋嫨妫�楠屾柟妗堝垎绫�!',
+            },
+          ],
+        },
+      },
+      url: {
+        add: '/qms/inspectionPlan/add',
+        edit: '/qms/inspectionPlan/edit',
+        inpspectionItemList:'/qms/inspectionItem/list',
+        detailList:'/qms/inspectionItem/queryList',
+      },
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+           width: 50,
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '妫�楠岄」鐩紪鐮�',
+          align: 'center',
+          dataIndex: 'itemCode',
+          width: 150,
+        },
+        {
+          title: '妫�楠岄」鐩悕绉�',
+          align: 'center',
+          dataIndex: 'itemName'
+        },
+        {
+          title: '妫�楠岄」鐩垎绫�',
+          align: 'center',
+          dataIndex: 'itemCategoryName',
+        },
+        {
+          title: '瀹氶噺/瀹氭��',
+          align: 'center',
+          dataIndex: 'qualitativeOrQuantitativeName'
+        },
+        {
+          title: '娴嬮噺宸ュ叿',
+          align: 'center',
+          dataIndex: 'inspectionToolsNames',
+        },
+        {
+          title: '鎺掑簭',
+          dataIndex: 'sorter',
+          align: 'center',
+          scopedSlots: { customRender: 'sorter' },
+        },
+        {
+          title: '鏍囧噯鍊�',
+          dataIndex: 'standardValue',
+          align: 'center',
+          scopedSlots: { customRender: 'standardValue' },
+        },
+        {
+          title: '涓婂叕宸�',
+          dataIndex: 'maxValue',
+          align: 'center',
+          scopedSlots: { customRender: 'maxValue' },
+        },
+        {
+          title: '涓嬪叕宸�',
+          dataIndex: 'minValue',
+          align: 'center',
+          scopedSlots: { customRender: 'minValue' },
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          align: 'center',
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      ruleOptions:[]
+    }
+  },
+  created() {
+    ajaxGetDictItems("qms_sampling_rules,rule_name,id", null).then((res) => {
+        if (res.success) {
+          this.ruleOptions = res.result
+        }
+      })
+  },
+  methods: {
+
+    materialSearch() {
+        this.$refs.materialListModel.openPage()
+        this.$refs.materialListModel.title = '閫夋嫨鐗╂枡'
+        this.$refs.materialListModel.disableSubmit = false
+      },
+      getMaterialRows(val) {
+        if (val.materialNumber) {
+          const initialData = {
+            materialNumber: val.materialNumber,
+            materialName: val.materialName
+          };
+          this.form.setFieldsValue(initialData);
+        }
+
+      },
+      handleChange(value, key, column, index) {
+        const temp = [...this.dataSource]
+        const target = temp.filter(item => key === item.key)[index];
+        if (target) {
+          target[column.dataIndex] = value
+          this.dataSource = temp
+        }
+    },
+    modalFormOk() {
+    },
+    getQueryParams() {
+      this.param.pageNo = this.ipagination.current
+      this.param.pageSize = this.ipagination.pageSize
+      return filterObj(this.param)
+    },
+    add() {
+      this.handle = store.getters.userInfo.username
+      this.edit({})
+    },
+    edit(record) {
+      let that = this
+      this.form.resetFields()
+      this.model = Object.assign({}, record)
+      this.visible = true
+      this.isDisabled = false
+      this.disableSubmit = false
+      if (record.id) {
+        this.planId = record.id
+        this.detailList(this.planId)
+      }
+      this.$nextTick(() => {
+        this.form.setFieldsValue(
+          pick(this.model, 'planCode', 'planName', 'planCategory', 'materialNumber', 'materialName','ruleId','planStatus','descreption')
+        )
+      })
+    },
+    close() {
+      this.$emit('close')
+      this.dataSource = []
+      this.visible = false
+      this.supplierShow = false,
+       this.disableSubmit = false,
+       this.numDisable = false,
+      this.quantityDisable = false,
+       this.onlyCodeDisable = true,
+       this.returnShow = false,
+       this.toolingShow = false,
+       this.sharpenShow = false,
+       this.addDisable = false
+    },
+    handleTableChange(pagination, filters, sorter) {
+      this.ipagination = pagination
+      this.detailList(this.planId);
+    },
+    handleOk() {
+      const that = this
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true
+          let formData = Object.assign(this.model, values)
+          formData.detailData = this.dataSource
+          let http = ''
+          if(this.model.id){
+            http = this.url.edit
+          }else{
+            http = this.url.add
+          }
+          postAction(http, formData)
+            .then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.$emit('ok', new Date())
+              } else {
+                that.$message.warning(res.message)
+              }
+            })
+            .finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+    //閫夋嫨宸ュ叿
+    selectInspectionItemList: function () {
+      let ids = []
+      for (let i = 0; i < this.dataSource.length; i++) {
+        ids.push(this.dataSource[i].id)
+      }
+      this.$refs.inspectionItemForm.showModal(ids)
+      this.$refs.inspectionItemForm.title = '閫夋嫨妫�楠岄」鐩�'
+      this.$refs.inspectionItemForm.disableSubmit = false
+    },
+    handleDelete(record, index) {
+      this.dataSource.splice(index, 1)
+    },
+    onChange() {},
+    //鎵嬮�変汉鍛樺��
+    selectCurrentUserChange(e) {
+      console.log('褰撳墠鎵嬮��', e)
+      // this.form.setFieldsValue({
+      //   // userName: e,
+      //   userNameId: e,
+      // })
+    },
+    detailList(planId) {
+      this.param.planId = planId
+      getAction(this.url.detailList, this.getQueryParams()).then((res) => {
+        if (res.success) {
+          this.dataSource = res.result.records
+          this.ipagination.total = res.result.total;
+        }
+      })
+    },
+     filterOption(input, option) {
+      return (
+        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      );
+    },
+  },
+  watch: {},
+  mounted() {
+    this.$bus.$on('selectionRows', (data) => {
+      //getCurrSelected 浜嬩欢 鎺ユ敹缁勪欢浼犻�掔殑鍙傛暟
+      for (let i = 0; i < data.length; i++) {
+        this.dataSource.push({
+          id:data[i].id,
+          itemCode: data[i].itemCode,
+          itemName: data[i].itemName,
+          inspectionTools: data[i].inspectionTools,
+          inspectionToolsNames: data[i].inspectionToolsNames,
+          itemCategory: data[i].itemCategory,
+          itemCategoryName:data[i].itemCategoryName,
+          itemStatus:data[i].itemStatus,
+          qualitativeOrQuantitative:data[i].qualitativeOrQuantitative,
+          qualitativeOrQuantitativeName:data[i].qualitativeOrQuantitativeName
+        })
+      }
+      //this.ipaginationm.total = this.dataSource.length
+    })
+  },
+}
+</script>
+
+
+<style  lang="less" scoped>
+.ant-btn {
+  padding: 0 10px;
+  margin-left: 3px;
+}
+
+.ant-form-item-control {
+  line-height: 0px;
+}
+
+/** 涓昏〃鍗曡闂磋窛 */
+.ant-form .ant-form-item {
+  margin-bottom: 10px;
+}
+
+/** Tab椤甸潰琛岄棿璺� */
+.ant-tabs-content .ant-form-item {
+  margin-bottom: 0px;
+}
+
+/deep/ .notshow {
+  display: none;
+}
+</style>
diff --git a/src/views/qms/modules/inspectionPlan/JSelectInspectionItemListModal.vue b/src/views/qms/modules/inspectionPlan/JSelectInspectionItemListModal.vue
new file mode 100644
index 0000000..2225872
--- /dev/null
+++ b/src/views/qms/modules/inspectionPlan/JSelectInspectionItemListModal.vue
@@ -0,0 +1,258 @@
+<template>
+  <!--鏀寔鍏ㄥ睆缂╂斁-->
+  <j-modal
+    :visible="visible"
+    :title="title"
+    switchFullscreen
+    :maskClosable="false"
+    :width="1200"
+    @ok="handleSubmit"
+    @cancel="close"
+    style="top: 50px"
+    cancelText="鍏抽棴"
+  >
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline" @keyup.enter.native="searchQuery">
+          <a-row :gutter="24">
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="妫�楠岄」鐩紪鐮�">
+                <a-input placeholder="璇疯緭鍏ユ楠岄」鐩紪鐮�,鏀寔妯$硦鏌ヨ" v-model="queryParam.itemCode"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="妫�楠岄」鐩悕绉�">
+                <a-input placeholder="璇疯緭鍏ユ楠岄」鐩悕绉�,鏀寔妯$硦鏌ヨ" v-model="queryParam.itemName"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="妫�楠岄」鐩垎绫�">
+               <j-search-select-tag
+                  placeholder="璇烽�夋嫨妫�楠岄」鐩垎绫�"
+                  v-model="queryParam.itemCategory"
+                  dict="item_category"
+                />
+              </a-form-item>
+            </a-col>
+
+            <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+            <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+          </a-row>
+        </a-form>
+      </div>
+      <!--妫�楠岄」鐩垪琛�-->
+      <a-table
+        ref="table"
+        :scroll="scrollTrigger"
+        size="middle"
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :rowSelection="rowSelection"
+        :loading="loading"
+        @change="handleTableChange"
+      >
+      </a-table>
+    </a-card>
+  </j-modal>
+</template>
+
+<script>
+import { filterObj } from '@/utils/util'
+import { getAction } from '@/api/manage'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
+
+export default {
+  name: 'JSelectInspectionItemListModal',
+  components: {JDictSelectTag,JSearchSelectTag},
+  props: {
+  },
+  data() {
+    return {
+      queryParam: {},
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          width: 50,
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '妫�楠岄」鐩紪鐮�',
+          align: 'center',
+          dataIndex: 'itemCode',
+        },
+        {
+          title: '妫�楠岄」鐩悕绉�',
+          align: 'center',
+          dataIndex: 'itemName',
+        },
+         {
+          title: '妫�楠岄」鐩垎绫�',
+          align: 'center',
+          dataIndex: 'itemCategoryName',
+        },
+        {
+          title: '瀹氶噺/瀹氭��',
+          align: 'center',
+          dataIndex: 'qualitativeOrQuantitativeName',
+        },
+        {
+          title: '娴嬮噺宸ュ叿',
+          align: 'center',
+          dataIndex: 'inspectionToolsNames',
+        }
+      ],
+      selectedRowKeys: [],
+      oldSlelectRows: [],
+      scrollTrigger: {},
+      dataSource: [],
+      selectionRows: [],
+      title: '鏍规嵁鏌ヨ缁撴灉閫夋嫨妫�楠岄」鐩�',
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['5', '10', '20'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+      },
+      departTree: [],
+      visible: false,
+      loading: false,
+      url: {
+         list: '/qms/inspectionItem/queryList',
+      },
+    }
+  },
+  computed: {
+    rowSelection() {
+      return {
+        type: 'checkbox',
+        onChange: (selectedRowKeys, selectedRows) => {
+          this.selectedRowKeys = selectedRowKeys
+          this.onSelectChange(selectedRows)
+        },
+        getCheckboxProps: (record) => ({
+          props: {
+            disabled: record.distable,
+          },
+        }),
+        selectedRowKeys: this.selectedRowKeys,
+      }
+    },
+  },
+  watch: {},
+  created() {},
+  methods: {
+    async loadData(arg) {
+      if (arg === 1) {
+        this.ipagination.current = 1
+      }
+      let that = this
+      this.loading = true
+      let params = this.getQueryParams() //鏌ヨ鏉′欢
+      await getAction(this.url.list, params).then((res) => {
+        if (res.success) {
+          for (let i = 0; i < res.result.records.length; i++) {
+            if (that.oldSlelectRows.indexOf(res.result.records[i].id) > -1) {
+              res.result.records[i].distable = true
+            } else {
+              res.result.records[i].distable = false
+            }
+          }
+          this.dataSource = res.result.records
+          this.ipagination.total = res.result.total
+        }
+        if (res.code === 510) {
+          this.$message.warning(res.message)
+        }
+        this.loading = false
+      })
+    },
+    showModal(oldSlelectRows) {
+      this.oldSlelectRows = oldSlelectRows
+      this.visible = true
+      this.loadData(1)
+    },
+    getQueryParams() {
+      let param = Object.assign({}, this.queryParam)
+      param.field = this.getQueryField()
+      param.pageNo = this.ipagination.current
+      param.pageSize = this.ipagination.pageSize
+      return filterObj(param)
+    },
+    //鏌ヨ鏉′欢澶勭悊
+    getQueryField() {
+      let str = 'id,'
+      for (let a = 0; a < this.columns.length; a++) {
+        str += ',' + this.columns[a].dataIndex
+      }
+      return str
+    },
+    searchReset(num) {
+      let that = this
+      if (num !== 0) {
+        that.loadData(1)
+      }
+      that.selectborrowIds = []
+    },
+    close() {
+      this.searchReset(0)
+      this.selectedRowKeys = []
+      this.visible = false
+    },
+    handleTableChange(pagination, filters, sorter) {
+      //TODO 绛涢��
+      // if (Object.keys(sorter).length > 0) {
+      //   this.isorter.column = sorter.field
+      //   this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc'
+      // }
+      this.ipagination = pagination
+      this.loadData()
+    },
+    handleSubmit() {
+      this.$bus.$emit('selectionRows', this.selectionRows)
+      this.searchReset(0)
+      this.close()
+    },
+    onSelectChange(selectionRows) {
+      this.selectionRows = selectionRows
+    },
+    onSearch() {
+      this.loadData(1)
+    },
+     searchQuery() {
+      this.loadData(1);
+    },
+    searchReset() {
+      this.queryParam = {}
+      this.loadData(1)
+    },
+  },
+}
+</script>
+
+<style scoped>
+.ant-table-tbody .ant-table-row td {
+  padding-top: 10px;
+  padding-bottom: 10px;
+}
+
+#components-layout-demo-custom-trigger .trigger {
+  font-size: 18px;
+  line-height: 64px;
+  padding: 0 24px;
+  cursor: pointer;
+  transition: color 0.3s;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/qms/modules/inspectionPlan/MaterialListModal.vue b/src/views/qms/modules/inspectionPlan/MaterialListModal.vue
new file mode 100644
index 0000000..7091cd4
--- /dev/null
+++ b/src/views/qms/modules/inspectionPlan/MaterialListModal.vue
@@ -0,0 +1,137 @@
+<template>
+  <a-modal :title="title" :width="1000" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel"
+           cancelText="鍏抽棴">
+    <a-card :bordered="false">
+      <!-- 鏌ヨ鍖哄煙 -->
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline" @keyup.enter.native="searchQuery">
+          <a-row :gutter="24">
+            <a-col :md="9" :sm="9">
+              <a-form-item label="鐗╂枡缂栫爜">
+                <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber"></a-input>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="9" :sm="9">
+              <a-form-item label="鐗╂枡鍚嶇О">
+                <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName"></a-input>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="3" :sm="3">
+              <a-space>
+                <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+                <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button>
+              </a-space>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <!-- table鍖哄煙-begin -->
+      <div>
+        <a-table bordered rowKey="materialNumber" :scroll="{聽 y: 300聽}" :columns="columns"
+                 :dataSource="dataSource" :pagination="ipagination" :loading="loading" :customRow="customRow"
+                 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
+                 @change="handleTableChange">
+        </a-table>
+      </div>
+      <!-- table鍖哄煙-end -->
+    </a-card>
+  </a-modal>
+</template>
+
+<script>
+  import { getAction } from '@/api/manage'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: 'MaterialListModal',
+    mixins: [JeecgListMixin],
+    data() {
+      return {
+        title: '',
+        visible: false,
+        disableMixinCreated: true,
+        columns: [
+          {
+            title: '鐗╂枡缂栫爜',
+            align: 'center',
+            dataIndex: 'materialNumber'
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡鍨嬪彿',
+            align: 'center',
+            dataIndex: 'materialModel'
+          },
+          {
+            title: '鐗╂枡绫诲瀷',
+            align: 'center',
+            dataIndex: 'materialCategory'
+          },
+          {
+            title: '鍗曚綅',
+            align: 'center',
+            dataIndex: 'materialUnit'
+          }
+        ],
+        /* 鎺掑簭鍙傛暟 */
+        isorter: {
+          column: '',
+          order: ''
+        },
+        url: {
+          list: '/lswmaterial/lswMaterial/list'
+        }
+      }
+    },
+    methods: {
+      openPage() {
+        this.visible = true
+        this.onClearSelected()
+        this.dataSource = []
+        this.loadData()
+      },
+
+      /**
+       * 鑷畾涔夎〃鏍艰
+       * @param record 琛ㄦ牸琛屼俊鎭�
+       * @returns {{style: {cursor: string}, on: {click: on.click}}}
+       */
+      customRow(record) {
+        return {
+          style: {
+            cursor: 'pointer'
+          },
+          on: {
+            click: () => {
+              this.onSelectChange([record.materialNumber], [record])
+            }
+          }
+        }
+      },
+
+      close() {
+        this.$emit('close')
+        this.visible = false
+      },
+
+      handleCancel() {
+        this.close()
+      },
+
+      handleOk() {
+        this.$emit('sendSelectionRows', this.selectionRows[0])
+        this.close()
+      }
+    }
+  }
+</script>
+<style>
+  @import '~@assets/less/common.less';
+</style>
diff --git a/src/views/qms/modules/inspectionTools/InspectionToolsModel.vue b/src/views/qms/modules/inspectionTools/InspectionToolsModel.vue
index 84aea64..913ccae 100644
--- a/src/views/qms/modules/inspectionTools/InspectionToolsModel.vue
+++ b/src/views/qms/modules/inspectionTools/InspectionToolsModel.vue
@@ -4,6 +4,7 @@
     :width="800"
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
     @cancel="handleCancel"
diff --git a/src/views/qms/modules/samplingRules/SamplingRulesModel.vue b/src/views/qms/modules/samplingRules/SamplingRulesModel.vue
index d4190f2..6352ca4 100644
--- a/src/views/qms/modules/samplingRules/SamplingRulesModel.vue
+++ b/src/views/qms/modules/samplingRules/SamplingRulesModel.vue
@@ -4,6 +4,7 @@
     :width="800"
     :visible="visible"
     :confirmLoading="confirmLoading"
+    :maskClosable="false"
     :okButtonProps="{ props: {disabled: disableSubmit} }"
     @ok="handleOk"
     @cancel="handleCancel"

--
Gitblit v1.9.3