| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | |
| | | <!-- 操作按钮区域 --> |
| | | <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" |
| | |
| | | :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> |
| | | |
| | |
| | | } |
| | | }, |
| | | { |
| | | title:'产线', |
| | | title:'来源编码', |
| | | align:"center", |
| | | dataIndex: 'factoryId_dictText' |
| | | dataIndex: 'originalCode' |
| | | }, |
| | | { |
| | | title:'库存地', |
| | | title:'来源名称', |
| | | align:"center", |
| | | dataIndex: 'originalName' |
| | | }, |
| | | { |
| | | title:'线边库', |
| | | align:"center", |
| | | dataIndex: 'warehouseId_dictText' |
| | | }, |
| | |
| | | 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> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | |
| | | <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: { |
| | | //表单禁用 |
| | |
| | | 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' } |
| | |
| | | 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', |
| | | } |
| | | } |
| | | }, |
| | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | add () { |
| | | add (inboundCategory) { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.add(); |
| | | this.$refs.realForm.add(inboundCategory); |
| | | }) |
| | | }, |
| | | edit (record) { |