lyh
2025-06-05 bf4cb4fdbd57f1785cdd1ddeadfb20a835d5fb6f
Merge remote-tracking branch 'origin/master'
已添加2个文件
已修改10个文件
852 ■■■■ 文件已修改
src/views/tms/InboundOrderList.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inbound/InboundApplyDetailList.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inbound/InboundApplyModelList.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inbound/InboundListRight.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inbound/InboundModel.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inboundOrder/InboundOrderModel.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inboundOrder/JSelectToolingModal.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/outBound/OutboundListLeft.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/outBound/OutboundListRight.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/outBound/OutboundModal.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
        })
      },
  },
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("请设置url.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>
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("请设置url.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>
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) {
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
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
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
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
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++) {
src/views/tms/modules/outBound/OutboundListLeft.vue
@@ -2,7 +2,7 @@
  <a-card
    :loading="cardLoading"
    :bordered="false"
    title="工具信息"
    title="工具出库"
    style="height: 100%;"
  >
    <a-spin :spinning="loading">
src/views/tms/modules/outBound/OutboundListRight.vue
@@ -55,10 +55,10 @@
          <a-button @click="handleAdd(nodeSelected)" type="primary" icon="plus" :disabled="!nodeSelected.key || nodeSelected.entity.leafFlag === '2'">新增</a-button>
      </Tooltip>
      <a-button type="primary" @click="selectOutboundOrder">申请单出库</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('tms_tools_classify')">导出</a-button>
      <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 type="primary" icon="download" @click="handleExportXls('工具出库流水')">导出</a-button>
<!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!--        <a-button type="primary" icon="import">导入</a-button>-->
<!--      </a-upload>-->
    </div>
    <!-- table区域-begin -->
@@ -210,7 +210,7 @@
          {
            title:'工具类型',
            align:"center",
            dataIndex: 'signCode'
            dataIndex: 'applicationType'
          },
          {
            title:'中文名称',
@@ -236,6 +236,11 @@
            title:'出库类型',
            align:"center",
            dataIndex: 'outStorehouseType_dictText'
          },
          {
            title:'出库方式',
            align:"center",
            dataIndex: 'operateType'
          },
          {
            title:'库位号',
@@ -277,7 +282,7 @@
          delete: "/tms/baseTools/delete",
          deleteBatch: "/tms/baseTools/deleteBatch",
          edit: '/tms/baseTools/edit',
          exportXlsUrl: "/tms/baseTools/exportXls",
          exportXlsUrl: "/tms/outStoreDetail/exportXls",
          importExcelUrl: "tms/baseTools/importExcel",
          queryParaByToolCode:"/tms/baseTools/queryByToolCode",
          queryByToolCode:"/tms/toolsConfigProperty/queryByToolCode"
src/views/tms/modules/outBound/OutboundModal.vue
@@ -260,6 +260,8 @@
    close () {
      this.$emit('close');
      this.addShow = true
      this.selectBorrowTool = false
      this.model = {}
      this.visible = false;
      this.$refs.form.clearValidate();
    },