From 34feb4908ec7b7e5b51adf6355603978c67bd3a4 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期四, 05 六月 2025 09:53:14 +0800
Subject: [PATCH] 申请单入库

---
 src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue  |   20 
 src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue |   20 
 src/views/tms/modules/inbound/InboundListRight.vue             |   38 +
 src/views/tms/modules/inbound/InboundModel.vue                 |  201 ++++---------
 src/views/tms/InboundOrderList.vue                             |   14 
 src/views/tms/modules/inbound/InboundApplyDetailList.vue       |  145 ++++++++++
 src/views/tms/modules/inboundOrder/InboundOrderModel.vue       |   89 ++----
 src/views/tms/modules/inbound/InboundApplyModelList.vue        |  297 +++++++++++++++++++++
 src/views/tms/modules/inboundOrder/JSelectToolingModal.vue     |    7 
 9 files changed, 609 insertions(+), 222 deletions(-)

diff --git a/src/views/tms/InboundOrderList.vue b/src/views/tms/InboundOrderList.vue
index 214521c..99bc473 100644
--- a/src/views/tms/InboundOrderList.vue
+++ b/src/views/tms/InboundOrderList.vue
@@ -18,7 +18,7 @@
                 />
               </a-form-item>
             </a-col>
-          <a-col :md="6" :sm="8">
+          <!-- <a-col :md="6" :sm="8">
               <a-form-item label="缁忔墜浜�">
                 <j-search-select-tag
                   placeholder="璇烽�夋嫨缁忔墜浜�"
@@ -26,7 +26,7 @@
                   dict="sys_user,realname,id,del_flag!=1"
                 />
               </a-form-item>
-            </a-col>
+            </a-col> -->
         </a-row>
       </a-form>
     </div>
@@ -49,6 +49,7 @@
       :dataSource="dataSource"
       :pagination="ipagination"
       :loading="loading"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}"
       @change="handleTableChange"
     >
       <!--鐘舵�佹爮涓�у睍绀�-->
@@ -169,6 +170,7 @@
           scopedSlots: { customRender: 'action' },
         },
       ],
+      loading:false
     }
   },
   computed: {
@@ -190,6 +192,7 @@
           click: (e) => {
             //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰
             this.$bus.$emit('getToolingStorageData', record)
+            this.onSelectChange(record.id.split(","), [record]);
             //鐐瑰嚮褰撳墠琛屽彉鑹�
             let oldList = document.querySelectorAll('.checked-td-of-add-table')
             if (oldList) {
@@ -205,6 +208,10 @@
         },
       }
     },
+    onSelectChange(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys;
+        this.selectionRows = selectionRows;
+      },
     handleEdit: function (record) {
         this.$refs.modalForm.edit(record)
         this.$refs.modalForm.title = '缂栬緫'
@@ -217,6 +224,7 @@
     },
     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);
@@ -224,6 +232,8 @@
           } else {
             that.$message.warning(res.message);
           }
+        }).finally(() => {
+          that.loading = false
         })
       },
   },
diff --git a/src/views/tms/modules/inbound/InboundApplyDetailList.vue b/src/views/tms/modules/inbound/InboundApplyDetailList.vue
new file mode 100644
index 0000000..8c5d4fc
--- /dev/null
+++ b/src/views/tms/modules/inbound/InboundApplyDetailList.vue
@@ -0,0 +1,145 @@
+<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"
+      :rowSelection="rowSelection"
+      @change="handleTableChange"
+    >
+    </a-table>
+  </a-card>
+</template>
+
+<script>
+import { requestPut,getAction } from '@/api/manage'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+export default {
+  name: 'InboundApplyDetailList',
+  mixins: [JeecgListMixin],
+  components: {},
+  data() {
+    return {
+      url: {
+        list: '/tms/inboundDetail/list',
+      },
+      queryParam: {},
+      nodeType: 0,
+      dataSource: [],
+      disableMixinCreated:true,
+      columns: [
+        {
+          title: '宸ュ叿缂栫爜',
+          align: 'center',
+          dataIndex: 'toolCode',
+          width: '10%',
+          key: 'toolCode'
+        },
+        {
+          title: '宸ュ叿鍚嶇О',
+          dataIndex: 'chineseName',
+          align: 'center',
+          key: 'toolName'
+        },
+        {
+          title: '鍨嬪彿/鍥惧彿',
+          dataIndex: 'toolModel',
+          align: 'center',
+          key: 'toolModel'
+        },
+      
+        {
+          title: '宸ュ叿鍒嗙被',
+          dataIndex: 'applicationType',
+          align: 'center',
+        },
+         {
+          title: '鍏ュ簱鏁伴噺',
+          dataIndex: 'inStorageQuantity',
+          align: 'center',
+        },
+        {
+          title: '瀹為檯鍏ュ簱鏁伴噺',
+          dataIndex: 'inActualCount',
+          align: 'center',
+        }
+      ]
+    }
+  },
+
+  computed: {
+    rowSelection() {
+      return {
+        type: 'checkbox',
+        onChange: (selectedRowKeys, selectedRows) => {
+          this.selectedRowKeys = selectedRowKeys
+          this.onSelectChange(selectedRowKeys,selectedRows)
+        },
+        getCheckboxProps: (record) => ({
+          props: {
+            disabled: record.distable,
+          },
+        }),
+        selectedRowKeys: this.selectedRowKeys,
+      }
+    },
+  },
+
+  methods: {
+    loadData(arg) {
+        if(!this.url.list){
+          this.$message.error("璇疯缃畊rl.list灞炴��!")
+          return
+        }
+        //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭
+        if (arg === 1) {
+          this.ipagination.current = 1;
+        }
+        var params = this.getQueryParams();//鏌ヨ鏉′欢
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            for (let i = 0; i < res.result.records.length; i++) {
+            if (res.result.records[i].inStorageQuantity == res.result.records[i].inActualCount) {
+              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;
+        })
+      },
+    onSelectChange(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys;
+        this.selectionRows = selectionRows;
+        this.$emit('selectRows', selectionRows)
+      },
+
+  },
+  mounted() {
+    this.$bus.$on('getToolingStorageData', (data) => {
+      this.queryParam.inboundOrderId = data.id;
+      this.searchQuery();
+    })
+  }
+}
+</script>
+
+<style scoped>
+@import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/src/views/tms/modules/inbound/InboundApplyModelList.vue b/src/views/tms/modules/inbound/InboundApplyModelList.vue
new file mode 100644
index 0000000..4a20b63
--- /dev/null
+++ b/src/views/tms/modules/inbound/InboundApplyModelList.vue
@@ -0,0 +1,297 @@
+<template>
+  <j-modal
+    :width="1500"
+    :visible="visible"
+    switchFullscreen
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴"
+    :footer="null"
+  >
+    <!-- 鏌ヨ鍖哄煙 -->
+    <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.inboundNum" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+              <a-form-item label="鍏ュ簱绫诲瀷">
+                <j-search-select-tag
+                  placeholder="璇烽�夋嫨鍏ュ簱绫诲瀷"
+                  v-model="queryParam.inStorehouseType"
+                  dict="in_storehouse_type"
+                />
+              </a-form-item>
+            </a-col>
+          <!-- <a-col :md="6" :sm="8">
+              <a-form-item label="缁忔墜浜�">
+                <j-search-select-tag
+                  placeholder="璇烽�夋嫨缁忔墜浜�"
+                  v-model="queryParam.handler"
+                  dict="sys_user,realname,id,del_flag!=1"
+                />
+              </a-form-item>
+            </a-col> -->
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+      <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+      <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button>
+      <a-button @click="handleInbound" type="primary" icon="plus">鍏ュ簱</a-button>
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <a-table
+      ref="table"
+      size="middle"
+      bordered
+      rowKey="id"
+      :customRow="customRow"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      :loading="loading"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}"
+      @change="handleTableChange"
+    >
+    </a-table>
+    <a-tabs defaultActiveKey="1">
+      <a-tab-pane tab="宸ュ叿鍏ュ簱鏄庣粏" key="1">
+        <inbound-apply-detail-list ref="inboundDetailList" @selectRows="selectRows"></inbound-apply-detail-list>
+      </a-tab-pane>
+    </a-tabs>
+    <!-- table鍖哄煙-end -->
+  </j-modal>
+</template>
+
+<script>
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import InboundApplyDetailList from './InboundApplyDetailList'
+import { requestPut } from '@/api/manage'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
+import { postAction,getAction } from '@/api/manage'
+
+export default {
+  name: 'InboundApplyModelList',
+  mixins: [JeecgListMixin],
+  components: {
+    InboundApplyDetailList,
+    JDictSelectTag,
+    JSearchSelectTag,
+  },
+  data() {
+    return {
+      description: '鐢宠鍗曞叆搴撻�夋嫨鐣岄潰',
+      url: {
+        list: '/tms/inboundOrder/list',
+        importExcelUrl: '/tms/inboundOrder/importExcel',
+        exportXlsUrl: '/tms/inboundOrder/exportXls',
+        edit:'/tms/inboundOrder/edit',
+        addApplyInStorage:'/tms/inboundOrder/addApplyInStorage'
+      },
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '鍏ュ簱鐢宠鍗曠紪鍙�',
+          align: 'center',
+          dataIndex: 'inboundNum',
+          sorter: true,
+        },
+        {
+          title: '鍏ュ簱鍗曠被鍨�',
+          align: 'center',
+          dataIndex: 'inStorehouseType_dictText',
+        },
+        {
+          title: '缁忔墜浜�',
+          align: 'center',
+          dataIndex: 'handler_dictText',
+        },
+        {
+          title: '鐢宠鍘熷洜',
+          align: 'center',
+          dataIndex: 'applicationReason',
+        },
+        {
+          title: '鍏ュ簱鏃堕棿',
+          align: 'center',
+          dataIndex: 'inboundTime',
+          sorter: true,
+        },
+        {
+          title: '瀹℃牳浜�',
+          align: 'center',
+          dataIndex: 'reviewer_dictText',
+        },
+        {
+          title: '瀹℃牳鏃堕棿',
+          align: 'center',
+          dataIndex: 'approvalDate',
+          sorter: true,
+        },
+        {
+          title: '瀹℃牳鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus_dictText',
+        },
+         {
+          title: '鍊熺敤鍗曞彿',
+          align: 'center',
+          dataIndex: 'borrowNum',
+        },
+         {
+          title: '瀹℃壒鎰忚',
+          align: 'center',
+          dataIndex: 'approvalOpinion',
+        },
+        // {
+        //   width: 150,
+        //   title: '鎿嶄綔',
+        //   dataIndex: 'action',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'action' },
+        // },
+      ],
+      visible:false,
+      selectDetailRows:{},
+      model:{},
+      form: this.$form.createForm(this),
+      confirmLoading: false,
+      loading:false,
+      disableMixinCreated: true,
+    }
+  },
+  computed: {
+    /* 瀵煎叆璺緞椤甸潰閲嶆柊璁$畻 */
+    importExcelUrl: function () {
+      //  return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;//寮�鍙戠幆澧冩寚鍚�
+      return `${window._CONFIG['hxFileURL']}/${this.url.importExcelUrl}`
+    },
+  },
+  methods: {
+    show(){
+      this.visible = true
+      this.loadData()
+    },
+    loadData(arg) {
+        if(!this.url.list){
+          this.$message.error("璇疯缃畊rl.list灞炴��!")
+          return
+        }
+        //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭
+        if (arg === 1) {
+          this.ipagination.current = 1;
+        }
+        this.onClearSelected()
+        this.queryParam.orderStatus = '3'
+        this.queryParam.inStatus = ['1','2'].join(',')
+        var params = this.getQueryParams();//鏌ヨ鏉′欢
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records;
+            this.ipagination.total = res.result.total;
+          }
+          if(res.code===510){
+            this.$message.warning(res.message)
+          }
+          this.loading = false;
+        })
+      },
+       onClearSelected() {
+        this.selectedRowKeys = [];
+        this.selectionRows = [];
+      },
+    searchReset() {
+      this.queryParam = {}
+      this.$refs.inboundDetailList.dataSource = []
+      this.loadData(1);
+    },
+    customRow(record) {
+      return {
+        on: {
+          click: (e) => {
+            //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰
+            this.$bus.$emit('getToolingStorageData', record)
+            this.onSelectChange(record.id.split(","), [record]);
+            //鐐瑰嚮褰撳墠琛屽彉鑹�
+            let oldList = document.querySelectorAll('.checked-td-of-add-table')
+            if (oldList) {
+              for (let j = 0; j < oldList.length; j++) {
+                oldList[j].classList.remove('checked-td-of-add-table')
+              }
+            }
+            let children = e.target.parentNode.children
+            for (let i = 0; i < children.length; i++) {
+              children[i].classList.add('checked-td-of-add-table')
+            }
+          },
+        },
+      }
+    },
+    onSelectChange(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys;
+        this.selectionRows = selectionRows;
+      },
+     selectRows(selectDetailRows) {
+        this.selectDetailRows = selectDetailRows;
+      },
+    handleInbound() {
+      let that = this
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true
+          that.loading = true
+          let formData = Object.assign(this.model, values)
+          formData.detailData = this.selectDetailRows
+          formData.inStorehouseType = this.selectionRows[0].inStorehouseType
+          formData.orderId = this.selectionRows[0].id
+          postAction(this.url.addApplyInStorage, 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.loading = false
+              that.handleCancel()
+            })
+        }
+      })
+      },
+      handleCancel(){
+        this.visible = false
+
+      }
+  },
+}
+</script>
+
+<style lang="less" scoped>
+@import '~@assets/less/common.less';
+/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/tms/modules/inbound/InboundListRight.vue b/src/views/tms/modules/inbound/InboundListRight.vue
index 66bb9f3..247a0ab 100644
--- a/src/views/tms/modules/inbound/InboundListRight.vue
+++ b/src/views/tms/modules/inbound/InboundListRight.vue
@@ -58,7 +58,7 @@
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">瀵煎叆</a-button>
       </a-upload> -->
-      <a-button @click="handleInbound(nodeSelected)" type="primary" icon="plus">鐢宠鍗曞叆搴�</a-button>
+      <a-button @click="handleInbound" type="primary">鐢宠鍗曞叆搴�</a-button>
     </div>
 
     <!-- table鍖哄煙-begin -->
@@ -145,6 +145,7 @@
     </a-tabs>
 
     <inbound-model ref="modalForm" @ok="modalFormOk" :nodeSelected="nodeSelected"></inbound-model>
+    <inbound-apply-model-list ref="inboundApplyModelList"></inbound-apply-model-list>
   </a-card>
 </template>
 
@@ -163,6 +164,7 @@
   import ParaCommonToolList from '.././baseTools/ParaCommonToolList'
   import ParaBladeList from '.././baseTools/ParaBladeList'
   import InboundModel from './InboundModel'
+  import InboundApplyModelList from './InboundApplyModelList.vue'
 
   export default {
     name: 'InboundListRight',
@@ -176,7 +178,8 @@
       ParaTurningToolsList,
       ParaCommonToolList,
       ParaBladeList,
-      InboundModel
+      InboundModel,
+      InboundApplyModelList
     },
     data () {
       return {
@@ -211,9 +214,14 @@
             dataIndex: 'toolCode'
           },
           {
+            title:'宸ュ叿缂栧彿',
+            align:"center",
+            dataIndex: 'onlyCode'
+          },
+          {
             title:'鍏ュ簱绫诲瀷',
             align:"center",
-            dataIndex: 'inStorehouseType'
+            dataIndex: 'inStorehouseTypeName'
           },
           {
             title:'鍨嬪彿/鍥惧彿',
@@ -229,7 +237,7 @@
           {
             title:'鍏ュ簱鏁伴噺',
             align:"center",
-            dataIndex: 'inStorageQuantity'
+            dataIndex: 'inNumber'
           },
           // {
           //   title:'澶囨敞',
@@ -249,17 +257,17 @@
               return !text?"":(text.length>10?text.substr(0,10):text)
             }
           },
-          {
-            title: '鎿嶄綔',
-            dataIndex: 'action',
-            align:"center",
-            fixed:"right",
-            width:147,
-            scopedSlots: { customRender: 'action' }
-          }
+          // {
+          //   title: '鎿嶄綔',
+          //   dataIndex: 'action',
+          //   align:"center",
+          //   fixed:"right",
+          //   width:147,
+          //   scopedSlots: { customRender: 'action' }
+          // }
         ],
         url: {
-          list: "/tms/inboundDetail/list",
+          list: "/tms/inStoreDetail/list",
           paraHolesToolsList:"/tms/baseTools/paraHolesToolsList",
           paraCommonToolList:"/tms/baseTools/paraCommonToolList",
           paraThreadingToolList:"/tms/baseTools/paraThreadingToolList",
@@ -308,6 +316,10 @@
           this.$refs.modalForm.title = "鏂板宸ュ叿鍏ュ簱";
           this.$refs.modalForm.disableSubmit = false;
       },
+
+      handleInbound() {
+          this.$refs.inboundApplyModelList.show();
+      },
       handleDelete(id) {
         deleteAction(this.url.delete, {id: id}).then((res) => {
                 if (res.success) {
diff --git a/src/views/tms/modules/inbound/InboundModel.vue b/src/views/tms/modules/inbound/InboundModel.vue
index 5692855..7548919 100644
--- a/src/views/tms/modules/inbound/InboundModel.vue
+++ b/src/views/tms/modules/inbound/InboundModel.vue
@@ -8,33 +8,45 @@
     @cancel="handleCancel"
   >
     <a-spin :spinning="confirmLoading">
-      <a-form :form="form">
+     <a-form-model ref="form" :model="model" :rules="validatorRules">
         <a-row style="width: 100%">
           <a-col :span="24 / 2">
-            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱绫诲瀷">
+           <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="宸ュ叿鍒嗙被缂栧彿">
+              <a-input v-model="model.classifyNum" placeholder="璇疯緭鍏ュ伐鍏峰垎绫荤紪鐮�"  :disabled="true"></a-input>
+            </a-form-model-item>
+          </a-col>
+           <a-col :span="24 / 2">
+           <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="宸ュ叿鍒嗙被鍚嶇О">
+              <a-input v-model="model.typeName" placeholder="璇疯緭鍏ュ伐鍏峰垎绫诲悕绉�"  :disabled="true"></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+        <a-row style="width: 100%">
+          <a-col :span="24 / 2">
+            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱绫诲瀷" prop="inStorehouseType">
               <j-dict-select-tag
                 :disabled="disableSubmit"
                 type="list"
-                v-decorator="['inStorehouseType', validatorRules.inStorehouseType]"
+                v-model="model.inStorehouseType"
                 :triggerChange="true"
                 dictCode="in_storehouse_type"
                 placeholder="璇烽�夋嫨鍏ュ簱绫诲瀷"
                 @change="handleTypeChange"
               />
-            </a-form-item>
+            </a-form-model-item>
           </a-col>
            <a-col :span="24 / 2">
-            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱鏃堕棿">
+            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱鏃堕棿" prop="inboundTime">
               <a-date-picker
                 @change="onChange"
                 :disabled="disableSubmit"
                 style="width: 100%"
-                v-decorator="['inboundTime', validatorRules.inboundTime]"
+                v-model="model.inboundTime"
               />
-            </a-form-item>
+            </a-form-model-item>
           </a-col>
         </a-row>
-      </a-form>
+      </a-form-model>
     </a-spin>
     <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectReturnList()" v-show="returnShow && !disableSubmit">閫夋嫨鍊熷嚭宸ュ叿</a-button>
     <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectTooling()" v-show="toolingShow && !disableSubmit">閫夋嫨宸ュ叿</a-button>
@@ -54,9 +66,9 @@
         <div :key="col.dataIndex">
           <a-input-number
             v-if="col.dataIndex == 'inStorageQuantity'"
-            :disabled="quantityDisable"
+            :disabled="record.accuracyClass == '1'"
             :value="text"
-            @change="(e) => handleChange(e, record.key, col, index)"
+            @change="(e) => handleChange(e, record, col, index)"
             :min="1"
           />
         </div>
@@ -75,9 +87,9 @@
     <template slot="footer" v-if="disableSubmit == true">
       <a-button :style="{ marginRight: '8px' }" @click="handleCancel">鍏抽棴</a-button>
     </template>
-    <j-select-tooling-modal ref="toolingModalForm" @ok="modalFormOk"></j-select-tooling-modal>
-    <j-select-return-list-modal ref="returnModalForm" @ok="modalFormOk"></j-select-return-list-modal>
-    <j-select-sharpen-list-modal ref="sharpenModalForm" @ok="modalFormOk"></j-select-sharpen-list-modal>
+    <j-select-tooling-modal ref="toolingModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-tooling-modal>
+    <j-select-return-list-modal ref="returnModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-return-list-modal>
+    <j-select-sharpen-list-modal ref="sharpenModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-sharpen-list-modal>
   </a-modal>
 </template>
 
@@ -95,7 +107,7 @@
 import JSelectSharpenListModal from '.././inboundOrder/JSelectSharpenListModal'
 
 export default {
-  name: 'InboundOrderModel',
+  name: 'InboundModel',
   components: {
     JSelectToolingModal,
     JMultiSelectTag,
@@ -118,6 +130,7 @@
         showSizeChanger: true,
         total: 0
       },
+      form: this.$form.createForm(this),
       isDisabled: false,
       selectedRowKeys: {},
       state: {
@@ -127,18 +140,11 @@
         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: {},
@@ -152,32 +158,22 @@
       },
       confirmLoading: false,
       loading: false,
-      form: this.$form.createForm(this),
       dataSource: [],
-      toolingTreeData:[],
-      warehouseOptions:[],
-      locationOptions:[],
-      allToolingList:[],
       param: {},
-      barcodeCurrentType: false,
       inboundOrderId:'',
       validatorRules: {
-        inStorehouseType: {
-          rules: [
+        inStorehouseType: [
             {
               required: true,
               message: '璇烽�夋嫨鍏ュ簱绫诲瀷!',
             },
           ],
-        },
-        inboundTime: {
-          rules: [
+        inboundTime:[
             {
               required: true,
               message: '璇烽�夋嫨鐢宠鍏ュ簱鏃ユ湡!',
             },
           ],
-        },
       },
       url: {
         addInStorage: '/tms/inboundOrder/addInStorage',
@@ -186,7 +182,6 @@
         queryReturnList:'/tms/toolLedgerDetail/list',
         detailList:'/tms/inboundDetail/list',
       },
-      toolingOptions:[],
       columns: [
         {
           title: '#',
@@ -220,6 +215,12 @@
           dataIndex: 'toolModel'
         },
         {
+          title: '鍞竴缂栫爜',
+          align: 'center',
+          dataIndex: 'onlyCode',
+          width: 150,
+        },
+        {
           title: '鍏ュ簱鏁伴噺',
           align: 'center',
           dataIndex: 'inStorageQuantity',
@@ -232,9 +233,13 @@
           scopedSlots: { customRender: 'action' },
         },
       ],
+      classifyId:''
     }
   },
-  created() {},
+  created() {
+    //澶囦唤model鍘熷鍊�
+    this.modelDefault = JSON.parse(JSON.stringify(this.model));
+  },
   methods: {
     modalFormOk() {
     },
@@ -243,56 +248,42 @@
       this.param.pageSize = this.ipagination.pageSize
       return filterObj(this.param)
     },
-    add() {
-      this.edit({})
+    add (nodeSelected) {
+      this.classifyId = nodeSelected.key
+      this.model.classifyNum =  nodeSelected.entity.classifyId
+      this.model.typeName =  nodeSelected.entity.typeName
+      this.dataSource = []
+      this.visible = true;
     },
-    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) {
-        if(record.inStorehouseType == "1"){
-          this.toolingShow = true
-        }else if(record.inStorehouseType == "2"){
-          this.returnShow = true
-        }else if(record.inStorehouseType == "5"){
-            this.sharpenShow = true
-        }
-        this.inboundOrderId = record.id
-        this.detailList(this.inboundOrderId)
-      }
-      this.initOptions()
-      this.$nextTick(() => {
-        this.form.setFieldsValue(
-          pick(this.model, 'inboundNum', 'inStorehouseType', 'inboundTime', 'applicationReason', 'handler','approvalDate','reviewer','approvalOpinion','remark')
-        )
-      })
-    },
-    handleChange(value, key, column, index) {
+    handleChange(value, record, column, index) {
       //let t = (this.ipaginationm.current - 1) * this.ipaginationm.pageSize + index
+      let key = record.key
       const temp = [...this.dataSource]
       const target = temp.filter(item => key === item.key)[index];
       if (target) {
         target[column.dataIndex] = value
-        this.dataSource = temp
+
+        if(column.dataIndex === 'inStorageQuantity'){
+          if(target['quantity']<value){
+            this.$message.error('鍏ュ簱鏁伴噺涓嶈兘澶т簬鍑哄簱鏁伴噺!')
+            this.isDisabled = true
+          }else{
+            this.isDisabled = false
+          }
+        }
+         this.dataSource = temp
       }
     },
     close() {
       this.$emit('close')
       this.dataSource = []
+      this.model = {},
       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
+       this.sharpenShow = false
     },
     handleTableChange(pagination, filters, sorter) {
       this.ipagination = pagination
@@ -306,6 +297,7 @@
           that.confirmLoading = true
           let formData = Object.assign(this.model, values)
           formData.detailData = this.dataSource
+          formData.classifyId = this.classifyId
           postAction(this.url.addInStorage, formData)
             .then((res) => {
               if (res.success) {
@@ -329,7 +321,7 @@
     selectTooling: function () {
       let ids = []
       for (let i = 0; i < this.dataSource.length; i++) {
-        ids.push(this.dataSource[i].toolCodeId)
+        ids.push(this.dataSource[i].id)
       }
       this.$refs.toolingModalForm.showModal(ids)
       this.$refs.toolingModalForm.title = '閫夋嫨宸ュ叿'
@@ -359,44 +351,22 @@
       this.dataSource.splice(index, 1)
     },
     onChange() {},
-    //鎺у埗鎵爜鎴栨墜閫�
-    selectCurrentUserType(e) {
-      if (e == '0') {
-        this.barcodeCurrentType = true
-      } else {
-        this.barcodeCurrentType = false
-      }
-    },
-    //鎵嬮�変汉鍛樺��
-    selectCurrentUserChange(e) {
-      console.log('褰撳墠鎵嬮��', e)
-      // this.form.setFieldsValue({
-      //   // userName: e,
-      //   userNameId: e,
-      // })
-    },
     //鍏ュ簱绫诲瀷
     handleTypeChange(value) {
       this.dataSource = []
       if(value == 1){
         this.toolingShow = true
         this.quantityDisable = false
-        this.addDisable = true
-        this.numDisable = false
       }else{
          this.toolingShow = false
       }
      if(value == 2){
-        this.numDisable = true
-        this.addDisable = false
         this.returnShow = true
         this.quantityDisable = true
       }else{
         this.returnShow = false
       }
       if (value == 5) {
-        this.numDisable = true
-        this.addDisable = false
         this.sharpenShow = true
         this.quantityDisable = true
       } else {
@@ -404,52 +374,12 @@
       }
       
     },
-    //娣诲姞宸ュ叿鎸夐挳
-    addTooling() {
-      const temp = [...this.dataSource];
-      temp.push({ indexId: temp.length + 1 });
-      this.dataSource = temp;
-    },
     detailList(inboundOrderId) {
       this.param.inboundOrderId = inboundOrderId
       getAction(this.url.detailList, this.getQueryParams()).then((res) => {
         if (res.success) {
           this.dataSource = res.result.records
           this.ipagination.total = res.result.total;
-        }
-      })
-    },
-    initOptions() {
-      
-      ajaxGetDictItems("mes_base_warehouse,name,id,del_flag!='1' order by num asc", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-            }
-          }
-          this.warehouseOptions = res.result;
-        }
-      })
-      ajaxGetDictItems("mes_base_storage_area,name,id,del_flag!='1'", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-            }
-          }
-          this.locationOptions = res.result;
-        }
-      })
-       ajaxGetDictItems("mes_base_tooling,num,id,del_flag!='1'", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-              res.result[i].toolingName = res.result[i].name
-            }
-          }
-          this.toolingOptions = res.result;
         }
       })
     },
@@ -465,13 +395,16 @@
       //getCurrSelected 浜嬩欢 鎺ユ敹缁勪欢浼犻�掔殑鍙傛暟
       for (let i = 0; i < data.length; i++) {
         this.dataSource.push({
-          toolCodeId:data[i].id,
+          id: data[i].id,
+          toolCodeId: data[i].toolCodeId,
           toolCode: data[i].toolCode,
           chineseName: data[i].chineseName,
           toolModel: data[i].toolModel,
           applicationType: data[i].applicationTypeName,
           onlyCode:data[i].onlyCode,
-          inStorageQuantity:data[i].storageQuantity
+          inStorageQuantity:data[i].storageQuantity || data[i].quantity,
+          quantity:data[i].quantity,
+          accuracyClass:data[i].accuracyClass
         })
       }
       //this.ipaginationm.total = this.dataSource.length
diff --git a/src/views/tms/modules/inboundOrder/InboundOrderModel.vue b/src/views/tms/modules/inboundOrder/InboundOrderModel.vue
index 6aae13c..06333dd 100644
--- a/src/views/tms/modules/inboundOrder/InboundOrderModel.vue
+++ b/src/views/tms/modules/inboundOrder/InboundOrderModel.vue
@@ -55,7 +55,7 @@
                 v-if="!barcodeCurrentType"
                 placeholder="璇烽�夋嫨缁忔墜浜�"
                 v-decorator="['handler', { rules: [{ required: false, message: '璇烽�夋嫨缁忔墜浜�' }] }]"
-                dict="sys_user,realname,id,del_flag=0"
+                dict="sys_user,realname,username,del_flag=0"
                 @change="selectCurrentUserChange"
               />
             </a-form-item>
@@ -64,10 +64,10 @@
           <a-col :span="24 / 2">
             <a-form-item label="瀹℃牳浜�" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <j-search-select-tag
-                :disabled="true"
+                :disabled="disableSubmit"
                 placeholder="璇烽�夋嫨瀹℃牳浜�"
                 v-decorator="['reviewer', validatorRules.reviewer]"
-                dict="sys_user,realname,id,del_flag=0"
+                dict="sys_user,realname,username,del_flag=0"
                 @change="selectCurrentUserChange"
               />
             </a-form-item>
@@ -127,7 +127,7 @@
         <div :key="col.dataIndex">
           <a-input-number
             v-if="col.dataIndex == 'inStorageQuantity'"
-            :disabled="quantityDisable"
+            :disabled="record.accuracyClass == '1'"
             :value="text"
             @change="(e) => handleChange(e, record.key, col, index)"
             :min="1"
@@ -166,6 +166,7 @@
 import { filterObj } from '@/utils/util'
 import JSelectReturnListModal from './JSelectReturnListModal'
 import JSelectSharpenListModal from './JSelectSharpenListModal'
+import store from '@/store'
 
 export default {
   name: 'InboundOrderModel',
@@ -176,6 +177,7 @@
     JSelectReturnListModal,
     JSearchSelectTag,
     JSelectSharpenListModal,
+    store
   },
   data() {
     return {
@@ -259,6 +261,14 @@
             },
           ],
         },
+        reviewer: {
+          rules: [
+            {
+              required: true,
+              message: '璇烽�夋嫨瀹℃牳浜�!',
+            },
+          ],
+        },
       },
       url: {
         add: '/tms/inboundOrder/add',
@@ -326,6 +336,7 @@
       return filterObj(this.param)
     },
     add() {
+      this.handle = store.getters.userInfo.username
       this.edit({})
     },
     edit(record) {
@@ -346,7 +357,6 @@
         this.inboundOrderId = record.id
         this.detailList(this.inboundOrderId)
       }
-      this.initOptions()
       this.$nextTick(() => {
         this.form.setFieldsValue(
           pick(this.model, 'inboundNum', 'inStorehouseType', 'inboundTime', 'applicationReason', 'handler','approvalDate','reviewer','approvalOpinion','remark')
@@ -359,6 +369,14 @@
       const target = temp.filter(item => key === item.key)[index];
       if (target) {
         target[column.dataIndex] = value
+        if(column.dataIndex === 'inStorageQuantity'){
+          if(target['quantity']<value){
+            this.$message.error('鍏ュ簱鏁伴噺涓嶈兘澶т簬鍑哄簱鏁伴噺!')
+            this.isDisabled = true
+          }else{
+            this.isDisabled = false
+          }
+        }
         this.dataSource = temp
       }
     },
@@ -417,7 +435,7 @@
     selectTooling: function () {
       let ids = []
       for (let i = 0; i < this.dataSource.length; i++) {
-        ids.push(this.dataSource[i].toolCodeId)
+        ids.push(this.dataSource[i].id)
       }
       this.$refs.toolingModalForm.showModal(ids)
       this.$refs.toolingModalForm.title = '閫夋嫨宸ュ叿'
@@ -447,14 +465,6 @@
       this.dataSource.splice(index, 1)
     },
     onChange() {},
-    //鎺у埗鎵爜鎴栨墜閫�
-    selectCurrentUserType(e) {
-      if (e == '0') {
-        this.barcodeCurrentType = true
-      } else {
-        this.barcodeCurrentType = false
-      }
-    },
     //鎵嬮�変汉鍛樺��
     selectCurrentUserChange(e) {
       console.log('褰撳墠鎵嬮��', e)
@@ -492,52 +502,12 @@
       }
       
     },
-    //娣诲姞宸ュ叿鎸夐挳
-    addTooling() {
-      const temp = [...this.dataSource];
-      temp.push({ indexId: temp.length + 1 });
-      this.dataSource = temp;
-    },
     detailList(inboundOrderId) {
       this.param.inboundOrderId = inboundOrderId
       getAction(this.url.detailList, this.getQueryParams()).then((res) => {
         if (res.success) {
           this.dataSource = res.result.records
           this.ipagination.total = res.result.total;
-        }
-      })
-    },
-    initOptions() {
-      
-      ajaxGetDictItems("mes_base_warehouse,name,id,del_flag!='1' order by num asc", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-            }
-          }
-          this.warehouseOptions = res.result;
-        }
-      })
-      ajaxGetDictItems("mes_base_storage_area,name,id,del_flag!='1'", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-            }
-          }
-          this.locationOptions = res.result;
-        }
-      })
-       ajaxGetDictItems("mes_base_tooling,num,id,del_flag!='1'", null).then((res) => {
-        if (res.success) {
-          if (res.result) {
-            for (let i = 0; i < res.result.length; i++) {
-              res.result[i].label = res.result[i].title;
-              res.result[i].toolingName = res.result[i].name
-            }
-          }
-          this.toolingOptions = res.result;
         }
       })
     },
@@ -553,13 +523,16 @@
       //getCurrSelected 浜嬩欢 鎺ユ敹缁勪欢浼犻�掔殑鍙傛暟
       for (let i = 0; i < data.length; i++) {
         this.dataSource.push({
-          toolCodeId:data[i].id,
+          id:data[i].id,
+          toolCodeId: data[i].toolCodeId,
           toolCode: data[i].toolCode,
-          chineseName: data[i].chineseName || data[i].toolName,
+          chineseName: data[i].chineseName,
           toolModel: data[i].toolModel,
           applicationType: data[i].applicationTypeName,
-          onlyCode:data[i].toolNum,
-          inStorageQuantity:data[i].storageQuantity || data[i].quantity
+          onlyCode:data[i].onlyCode,
+          quantity:data[i].quantity,
+          inStorageQuantity:data[i].storageQuantity || data[i].quantity,
+          accuracyClass:data[i].accuracyClass
         })
       }
       //this.ipaginationm.total = this.dataSource.length
diff --git a/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue b/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue
index 56cbcf2..fc45e74 100644
--- a/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue
+++ b/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue
@@ -60,7 +60,11 @@
 export default {
   name: 'JSelectToolingModal',
   components: {},
-  props: {},
+  props: {
+    classifyId:{
+        type:String
+      }
+  },
   data() {
     return {
       queryParam: {},
@@ -84,16 +88,16 @@
         {
           title: '宸ュ叿缂栧彿',
           align: 'center',
-          dataIndex: 'toolNum',
+          dataIndex: 'onlyCode',
           sorter: true,
         },
         {
           title: '宸ュ叿鍚嶇О',
           align: 'center',
-          dataIndex: 'toolName',
+          dataIndex: 'chineseName',
           sorter: true,
         },
-         {
+        {
           title: '宸ュ叿绫诲瀷',
           align: 'center',
           dataIndex: 'applicationTypeName',
@@ -134,9 +138,10 @@
       loading: false,
       url: {
         // list: '/base/tooling/list',
-         list: '/tms/toolLedgerDetail/list',
+         list: '/tms/toolLedgerDetail/queryLendTool',
          queryKnifeBom:'/toolingStorage/mesToolingOutbounds/queryKnifeBom'
       },
+      classifyId:''
     }
   },
   computed: {
@@ -166,11 +171,12 @@
       let that = this
       this.loading = true
       let params = this.getQueryParams() //鏌ヨ鏉′欢
-     params["status"] = "2"
+      params.status = "2"
+      params.classifyId = this.classifyId
       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].toolingId) > -1) {
+            if (that.oldSlelectRows.indexOf(res.result.records[i].id) > -1) {
               res.result.records[i].distable = true
             } else {
               res.result.records[i].distable = false
diff --git a/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue b/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue
index 317b880..0b22be9 100644
--- a/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue
+++ b/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue
@@ -60,7 +60,11 @@
 export default {
   name: 'JSelectToolingModal',
   components: {},
-  props: {},
+  props: {
+    classifyId:{
+        type:String
+      }
+  },
   data() {
     return {
       queryParam: {},
@@ -84,16 +88,16 @@
         {
           title: '宸ュ叿缂栧彿',
           align: 'center',
-          dataIndex: 'toolNum',
+          dataIndex: 'onlyCode',
           sorter: true,
         },
         {
           title: '宸ュ叿鍚嶇О',
           align: 'center',
-          dataIndex: 'toolName',
+          dataIndex: 'chineseName',
           sorter: true,
         },
-         {
+        {
           title: '宸ュ叿绫诲瀷',
           align: 'center',
           dataIndex: 'applicationTypeName',
@@ -134,8 +138,9 @@
       loading: false,
       url: {
         // list: '/base/tooling/list',
-         list: '/tms/toolLedgerDetail/list',
+         list: '/tms/toolLedgerDetail/querySharpenTool',
       },
+      classifyId:''
     }
   },
   computed: {
@@ -165,11 +170,12 @@
       let that = this
       this.loading = true
       let params = this.getQueryParams() //鏌ヨ鏉′欢
-      params["status"] = "5"
+      params.status = "5"
+      params.classifyId = this.classifyId
       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].toolingId) > -1) {
+            if (that.oldSlelectRows.indexOf(res.result.records[i].id) > -1) {
               res.result.records[i].distable = true
             } else {
               res.result.records[i].distable = false
diff --git a/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue b/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue
index 0ccb752..7c37496 100644
--- a/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue
+++ b/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue
@@ -60,7 +60,11 @@
 export default {
   name: 'JSelectToolingModal',
   components: {},
-  props: {},
+  props: {
+    classifyId:{
+        type:String
+      }
+  },
   data() {
     return {
       queryParam: {},
@@ -157,6 +161,7 @@
       let that = this
       this.loading = true
       let params = this.getQueryParams() //鏌ヨ鏉′欢
+      params.classifyId = this.classifyId
       await getAction(this.url.list, params).then((res) => {
         if (res.success) {
           for (let i = 0; i < res.result.records.length; i++) {

--
Gitblit v1.9.3