900b134f3b31465a0785e877b85c236813db9112..c08fa0486a19012b26deef229bfb8eab1e1013f6
4 天以前 zhangherong
art: 热处理入库
c08fa0 对比 | 目录
4 天以前 zhangherong
art: 热处理入库
729b38 对比 | 目录
已修改3个文件
282 ■■■■ 文件已修改
src/views/lsw/LswMaterialInboundList.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/lsw/modules/LswMaterialInboundForm.vue 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/lsw/modules/LswMaterialInboundModal.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/lsw/LswMaterialInboundList.vue
@@ -5,6 +5,17 @@
      <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="线边库">
              <j-dict-select-tag placeholder="请选择线边库" v-model="queryParam.warehouseId"
                                 dictCode="base_line_side_warehouse,warehouse_name,id,del_flag=0 and warehouse_status='1'"></j-dict-select-tag>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="入库类型">
              <j-dict-select-tag placeholder="请选择入库类型" v-model="queryParam.inboundCategory" dictCode="material_inbound_category"></j-dict-select-tag>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="物料编码">
              <j-input placeholder="请输入物料编码" v-model="queryParam.materialNumber"></j-input>
            </a-form-item>
@@ -22,7 +33,7 @@
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <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-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
            </span>
          </a-col>
        </a-row>
@@ -32,22 +43,16 @@
    <!-- 操作按钮区域 -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
      </a-dropdown>
      <a-button @click="handleAdd('HEAT_TREATMENT_INBOUND')" type="primary" icon="plus">热处理入库</a-button>
      <a-button @click="handleAdd('SMALL_INNER_RING')" type="primary" icon="plus">小内圈入库</a-button>
      <a-button @click="handleAdd('MATERIAL_INNER_TRANSFER')" type="primary" icon="plus">钢球调拨</a-button>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
@@ -61,46 +66,11 @@
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        class="j-table-force-nowrap"
        @change="handleTableChange">
        <template slot="htmlSlot" slot-scope="text">
          <div v-html="text"></div>
        </template>
        <template slot="imgSlot" slot-scope="text,record">
          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
        </template>
        <template slot="fileSlot" slot-scope="text">
          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
          <a-button
            v-else
            :ghost="true"
            type="primary"
            icon="download"
            size="small"
            @click="downloadFile(text)">
            下载
          </a-button>
        </template>
        <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
              <a-menu-item>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
          <a @click="handleDetail(record)">详情</a>
        </span>
      </a-table>
    </div>
@@ -137,12 +107,17 @@
            }
          },
          {
            title:'产线',
            title:'来源编码',
            align:"center",
            dataIndex: 'factoryId_dictText'
            dataIndex: 'originalCode'
          },
          {
            title:'库存地',
            title:'来源名称',
            align:"center",
            dataIndex: 'originalName'
          },
          {
            title:'线边库',
            align:"center",
            dataIndex: 'warehouseId_dictText'
          },
@@ -167,60 +142,44 @@
            dataIndex: 'quantity'
          },
          {
            title:'接收人',
            title:'入库类型',
            align:"center",
            dataIndex: 'inboundCategory_dictText'
          },
          {
            title:'入库人',
            align:"center",
            dataIndex: 'receiver'
          },
          {
            title:'接收时间',
            title:'入库时间',
            align:"center",
            dataIndex: 'receiveTime'
          },
          // {
          //   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: "/lswmaterialinbound/lswMaterialInbound/list",
          delete: "/lswmaterialinbound/lswMaterialInbound/delete",
          deleteBatch: "/lswmaterialinbound/lswMaterialInbound/deleteBatch",
          exportXlsUrl: "/lswmaterialinbound/lswMaterialInbound/exportXls",
          importExcelUrl: "lswmaterialinbound/lswMaterialInbound/importExcel",
          list: "/lsw/materialInbound/list",
        },
        dictOptions:{},
        superFieldList:[],
      }
    },
    created() {
    this.getSuperFieldList();
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    methods: {
      initDictConfig(){
      handleAdd(inboundCategory) {
        this.$refs.modalForm.add(inboundCategory);
        this.$refs.modalForm.title = "新增";
        this.$refs.modalForm.disableSubmit = false;
      },
      getSuperFieldList(){
        let fieldList=[];
        fieldList.push({type:'int',value:'delFlag',text:'删除标记',dictCode:''})
        fieldList.push({type:'string',value:'factoryId',text:'产线ID',dictCode:''})
        fieldList.push({type:'string',value:'warehouseId',text:'库存地ID',dictCode:''})
        fieldList.push({type:'string',value:'materialNumber',text:'物料编码',dictCode:''})
        fieldList.push({type:'string',value:'materialName',text:'物料名称',dictCode:''})
        fieldList.push({type:'string',value:'batchNumber',text:'批次号',dictCode:''})
        fieldList.push({type:'int',value:'quantity',text:'入库数量',dictCode:''})
        fieldList.push({type:'string',value:'receiver',text:'接收人',dictCode:''})
        fieldList.push({type:'datetime',value:'receiveTime',text:'接收时间'})
        this.superFieldList = fieldList
      }
    }
  }
</script>
src/views/lsw/modules/LswMaterialInboundForm.vue
@@ -3,40 +3,25 @@
    <j-form-container :disabled="formDisabled">
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-row>
          <a-form-model-item label="产线" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId">
            <a-row :gutter="24">
              <a-col :span="24">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label=""
                >
                  <j-select-factory
                    :disabled="disabled"
                    v-model="model.factoryId"
                    :multi="true"
                    @back="backFactoryInfo"
                    :backProduction="true"
                    :treeProductOpera="true"
                  ></j-select-factory>
                </a-form-item>
              </a-col>
            </a-row>
          </a-form-model-item>
          <a-col :span="12">
            <a-form-model-item label="库存地" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId">
              <j-search-select-tag v-model="model.warehouseId" placeholder="请选择库存地"
                                   dict="base_line_side_warehouse,warehouse_name,id"></j-search-select-tag>
            <a-form-model-item label="来源编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode">
              <a-input v-model="model.originalCode" placeholder="请输入来源编码"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="来源名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalName">
              <a-input v-model="model.originalName" placeholder="请输入来源名称"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="线边库" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId">
              <j-search-select-tag v-model="model.warehouseId" placeholder="请选择线边库"
                                   :dict-options="warehouseDictOptions" @change="warehouseSelectChange"></j-search-select-tag>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="物料编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber">
              <a-input v-model="model.materialNumber" placeholder="请输入物料编码"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName">
              <a-input v-model="model.materialName" placeholder="请输入物料名称"></a-input>
              <j-search-select-tag :dict-options="materialDictOptions" v-model="model.materialNumber" placeholder="请选择物料编码" @change="materialSelectChange"></j-search-select-tag>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
@@ -49,15 +34,20 @@
              <a-input-number v-model="model.quantity" placeholder="请输入入库数量" style="width: 100%" />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </j-form-container>
    <j-form-container disabled>
      <a-form-model ref="form1" :model="model" slot="detail">
        <a-row>
          <a-col :span="12">
            <a-form-model-item label="接收人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiver">
              <j-select-user-by-dep v-model="model.receiver" placeholder="请输入接收人"></j-select-user-by-dep>
            <a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName">
              <a-input v-model="model.materialName"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="接收时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveTime">
              <j-date placeholder="请选择接收时间" v-model="model.receiveTime" :show-time="true"
                      date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
            <a-form-model-item label="入库类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inboundCategory">
              <j-search-select-tag v-model="model.inboundCategory" dict="material_inbound_category"></j-search-select-tag>
            </a-form-model-item>
          </a-col>
        </a-row>
@@ -68,21 +58,11 @@
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import JDate from '@/components/jeecg/JDate'
import pick from 'lodash.pick'
import moment from 'moment'
import { duplicateCheck } from '@/api/api'//重复校验
import JTreeDict from '@/components/jeecg/JTreeDict'//分类字典树形下拉组件
import JSelectFactory from '../../../../src/components/jeecgbiz/JSelectFactory.vue'
import { getAction, httpAction } from '@/api/manage'
export default {
  name: 'LswMaterialInboundForm',
  components: {
    JDate,
    JTreeDict,
    JSelectFactory
  },
  props: {
    //表单禁用
@@ -104,12 +84,17 @@
        sm: { span: 16 }
      },
      confirmLoading: false,
      warehouseDictOptions: [],
      materialDictOptions: [],
      validatorRules: {
        factoryId: [
          { required: true, message: '产线是必选项', trigger: 'change' }
        originalCode: [
          { required: true, message: '来源编码是必选项', trigger: 'change' }
        ],
        originalName: [
          { required: true, message: '来源名称是必选项', trigger: 'change' }
        ],
        warehouseId: [
          { required: true, message: '库存地是必选项', trigger: 'change' }
          { required: true, message: '线边库是必选项', trigger: 'change' }
        ],
        materialNumber: [
          { required: true, message: '物料编码是必选项', trigger: 'change' }
@@ -123,17 +108,13 @@
        quantity: [
          { required: true, message: '入库数量是必选项', trigger: 'change' }
        ],
        receiver: [
          { required: true, message: '接收人是必选项', trigger: 'change' }
        ],
        receiveTime: [
          { required: true, message: '接收时间是必选项', trigger: 'change' }
        ]
      },
      url: {
        add: '/lswmaterialinbound/lswMaterialInbound/add',
        edit: '/lswmaterialinbound/lswMaterialInbound/edit',
        queryById: '/lswmaterialinbound/lswMaterialInbound/queryById'
        add: '/lsw/materialInbound/add',
        edit: '/lsw/materialInbound/edit',
        queryById: '/lsw/materialInbound/queryById',
        queryByProductionType: '/base/lineSideWarehouse/queryByProductionType',
        queryByMaterialCategory: '/lsw/lswMaterial/queryByMaterialCategory',
      }
    }
  },
@@ -147,14 +128,20 @@
    this.modelDefault = JSON.parse(JSON.stringify(this.model))
  },
  methods: {
    backFactoryInfo(info) {
      this.model.factoryIds = this.model.factoryId
      this.nextFactoryOptions = info.map((item, index, arr) => {
        let c = { label: item.text, value: item.value + '' }
        return c
      })
    },
    add() {
    add(inboundCategory) {
      this.warehouseDictOptions = [];
      this.materialDictOptions = [];
      if(inboundCategory === 'HEAT_TREATMENT_INBOUND') {
        this.loadWarehouseDictOptions('OUTERFLANGE,INNERFLANGE');
        this.loadMaterialDictOptions('BLANK');
      }else if(inboundCategory === 'SMALL_INNER_RING') {
        this.loadWarehouseDictOptions('ASSEMBLE');
        this.loadMaterialDictOptions('SMALL_INNER_RING');
      } else if(inboundCategory === 'MATERIAL_INNER_TRANSFER') {
        this.loadWarehouseDictOptions('ASSEMBLE');
        this.loadMaterialDictOptions('STEEL_BALL');
      }
      this.modelDefault.inboundCategory = inboundCategory;
      this.edit(this.modelDefault)
    },
    edit(record) {
@@ -189,6 +176,38 @@
        }
      })
    },
    loadWarehouseDictOptions(productionType) {
      let params = {productionType : productionType}
      getAction(this.url.queryByProductionType, params).then(res => {
        if(res.success) {
          this.warehouseDictOptions = res.result.map(warehouse => ({...warehouse, value : warehouse.id, text: warehouse.warehouseName + '(' + warehouse.warehouseCode+')'}));
        }
      })
    },
    loadMaterialDictOptions(materialCategory) {
      let params = {materialCategory : materialCategory}
      getAction(this.url.queryByMaterialCategory, params).then(res => {
        if(res.success) {
          this.materialDictOptions = res.result.map(material => ({...material, value : material.materialNumber, text: material.materialNumber}));
        }
      })
    },
    warehouseSelectChange(value) {
      let warehouse = this.warehouseDictOptions.find(option => option.value === value)
      if(warehouse) {
        this.model.factoryId = warehouse.factoryId
      }else {
        this.model.factoryId = undefined;
      }
    },
    materialSelectChange(value) {
      let material = this.materialDictOptions.find(option => option.value === value)
      if(material) {
        this.model.materialName = material.materialName
      }else {
        this.model.materialName = undefined;
      }
    }
  }
}
src/views/lsw/modules/LswMaterialInboundModal.vue
@@ -29,10 +29,10 @@
      }
    },
    methods: {
      add () {
      add (inboundCategory) {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.add();
          this.$refs.realForm.add(inboundCategory);
        })
      },
      edit (record) {