<template>
|
<a-modal
|
:title="title"
|
:visible="visible"
|
:fullScreen="true"
|
:width="1200"
|
@ok="handleOk"
|
@cancel="handleCancel"
|
>
|
<a-spin :spinning="confirmLoading">
|
<a-form :form="form">
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="入库类型">
|
<j-dict-select-tag
|
:disabled="disableSubmit"
|
type="list"
|
v-decorator="['inStorehouseType', validatorRules.inStorehouseType]"
|
:triggerChange="true"
|
dictCode="in_storehouse_type"
|
placeholder="请选择入库类型"
|
@change="handleTypeChange"
|
/>
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="入库时间">
|
<a-date-picker
|
@change="onChange"
|
:disabled="disableSubmit"
|
style="width: 100%"
|
v-decorator="['inboundTime', validatorRules.inboundTime]"
|
/>
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item label="入库数量" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input placeholder="请输入入库数量" :disabled="disableSubmit" v-decorator="['in_number', validatorRules.applicationReason]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
|
</a-form>
|
</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>
|
<a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectSharpenList()" v-show="sharpenShow && !disableSubmit">选择刃磨出库单</a-button>
|
<a-table
|
ref="table"
|
bordered
|
size="middle"
|
rowKey="id"
|
:columns="columns"
|
:dataSource="dataSource"
|
:pagination="ipagination"
|
:loading="loading"
|
@change="handleTableChange"
|
>
|
<template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record, index">
|
<div :key="col.dataIndex">
|
<a-input-number
|
v-if="col.dataIndex == 'inStorageQuantity'"
|
:disabled="quantityDisable"
|
:value="text"
|
@change="(e) => handleChange(e, record.key, col, index)"
|
:min="1"
|
/>
|
</div>
|
</template>
|
<span slot="action" slot-scope="text, record, index">
|
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record, index)" :disabled="disableSubmit">
|
<a>删除</a>
|
</a-popconfirm>
|
</span>
|
</a-table>
|
<template slot="footer" v-if="disableSubmit == false">
|
<a-button :style="{ marginRight: '8px' }" @click="handleCancel">关闭</a-button>
|
<a-button @click="handleOk" :disabled="isDisabled" type="primary">入库</a-button>
|
</template>
|
|
<template slot="footer" v-if="disableSubmit == true">
|
<a-button :style="{ marginRight: '8px' }" @click="handleCancel">关闭</a-button>
|
</template>
|
<j-select-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>
|
</a-modal>
|
</template>
|
|
<script>
|
import pick from 'lodash.pick'
|
import JSelectToolingModal from '.././inboundOrder/JSelectToolingModal'
|
import { ajaxGetDictItems } from '@/api/api'
|
import moment from 'moment'
|
import { getAction, postAction, requestPut } from '@/api/manage'
|
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
|
import JMultiSelectTag from '@/components/dict/JMultiSelectTag'
|
import { filterObj } from '@/utils/util'
|
import JSelectReturnListModal from '.././inboundOrder/JSelectReturnListModal'
|
import JSelectSharpenListModal from '.././inboundOrder/JSelectSharpenListModal'
|
|
export default {
|
name: 'InboundOrderModel',
|
components: {
|
JSelectToolingModal,
|
JMultiSelectTag,
|
JDictSelectTag,
|
JSelectReturnListModal,
|
JSearchSelectTag,
|
JSelectSharpenListModal,
|
},
|
data() {
|
return {
|
/* 分页参数 */
|
ipagination: {
|
current: 1,
|
pageSize: 10,
|
pageSizeOptions: ['10', '20', '30'],
|
showTotal: (total, range) => {
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
},
|
showQuickJumper: true,
|
showSizeChanger: true,
|
total: 0
|
},
|
isDisabled: false,
|
selectedRowKeys: {},
|
state: {
|
show: false,
|
maintenanceValue: 1,
|
checkValue: 1,
|
maintenanceState: false,
|
checkState: false,
|
},
|
inboundDate: '',
|
applicationDate: '',
|
supplierShow: false,
|
disableSubmit: false,
|
numDisable:false,
|
quantityDisable:false,
|
onlyCodeDisable:true,
|
returnShow:false,
|
toolingShow:false,
|
sharpenShow:false,
|
addDisable:false,
|
toolinngOptions:[],
|
title: '操作',
|
visible: false,
|
model: {},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 6 },
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 18 },
|
},
|
confirmLoading: false,
|
loading: false,
|
form: this.$form.createForm(this),
|
dataSource: [],
|
toolingTreeData:[],
|
warehouseOptions:[],
|
locationOptions:[],
|
allToolingList:[],
|
param: {},
|
barcodeCurrentType: false,
|
inboundOrderId:'',
|
validatorRules: {
|
type: {
|
rules: [
|
{
|
required: true,
|
message: '请选择入库类型!',
|
},
|
],
|
},
|
inboundDate: {
|
rules: [
|
{
|
required: true,
|
message: '请选择申请入库日期!',
|
},
|
],
|
},
|
applicant: {
|
rules: [
|
{
|
required: true,
|
message: '请选择申请人!',
|
},
|
],
|
},
|
},
|
url: {
|
add: '/tms/inboundOrder/add',
|
edit: '/tms/inboundOrder/edit',
|
queryByUserName: '/sys/user/queryByUserName',
|
toolingList:'/tms/baseTools/list',
|
queryAccountList:'/tooling/storage/queryAccountList',
|
querySharpenList:'/sharpen/sharpenDetail/querySharpenList',
|
queryReturnList:'/returnInventory/queryReturnList',
|
detailList:'/tms/inboundDetail/list',
|
},
|
toolingOptions:[],
|
columns: [
|
{
|
title: '#',
|
dataIndex: '',
|
key: 'rowIndex',
|
width: 50,
|
align: 'center',
|
customRender: function (t, r, index) {
|
return parseInt(index) + 1
|
},
|
},
|
{
|
title: '工具编码',
|
align: 'center',
|
dataIndex: 'toolCode',
|
width: 150,
|
},
|
{
|
title: '工具类型',
|
align: 'center',
|
dataIndex: 'applicationType'
|
},
|
{
|
title: '中文名称',
|
align: 'center',
|
dataIndex: 'chineseName',
|
},
|
{
|
title: '型号/图号',
|
align: 'center',
|
dataIndex: 'toolModel'
|
},
|
{
|
title: '入库数量',
|
align: 'center',
|
dataIndex: 'inStorageQuantity',
|
scopedSlots: { customRender: 'inStorageQuantity' },
|
},
|
{
|
title: '操作',
|
dataIndex: 'action',
|
align: 'center',
|
scopedSlots: { customRender: 'action' },
|
},
|
],
|
}
|
},
|
created() {},
|
methods: {
|
modalFormOk() {
|
},
|
getQueryParams() {
|
this.param.pageNo = this.ipagination.current
|
this.param.pageSize = this.ipagination.pageSize
|
return filterObj(this.param)
|
},
|
add() {
|
this.edit({})
|
},
|
edit(record) {
|
let that = this
|
this.form.resetFields()
|
this.model = Object.assign({}, record)
|
this.visible = true
|
this.isDisabled = false
|
this.disableSubmit = false
|
if (record.id) {
|
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) {
|
//let t = (this.ipaginationm.current - 1) * this.ipaginationm.pageSize + index
|
const temp = [...this.dataSource]
|
const target = temp.filter(item => key === item.key)[index];
|
if (target) {
|
target[column.dataIndex] = value
|
this.dataSource = temp
|
}
|
},
|
close() {
|
this.$emit('close')
|
this.dataSource = []
|
this.visible = false
|
this.supplierShow = false,
|
this.disableSubmit = false,
|
this.numDisable = false,
|
this.quantityDisable = false,
|
this.onlyCodeDisable = true,
|
this.returnShow = false,
|
this.toolingShow = false,
|
this.sharpenShow = false,
|
this.addDisable = false
|
},
|
handleTableChange(pagination, filters, sorter) {
|
this.ipagination = pagination
|
this.detailList(this.inboundOrderId);
|
},
|
handleOk() {
|
const that = this
|
// 触发表单验证
|
this.form.validateFields((err, values) => {
|
if (!err) {
|
that.confirmLoading = true
|
let formData = Object.assign(this.model, values)
|
formData.detailData = this.dataSource
|
let http = ''
|
if(this.model.id){
|
http = this.url.edit
|
}else{
|
http = this.url.add
|
}
|
postAction(http, formData)
|
.then((res) => {
|
if (res.success) {
|
that.$message.success(res.message)
|
that.$emit('ok', new Date())
|
} else {
|
that.$message.warning(res.message)
|
}
|
})
|
.finally(() => {
|
that.confirmLoading = false
|
that.close()
|
})
|
}
|
})
|
},
|
handleCancel() {
|
this.close()
|
},
|
//选择工具
|
selectTooling: function () {
|
let ids = []
|
for (let i = 0; i < this.dataSource.length; i++) {
|
ids.push(this.dataSource[i].toolCodeId)
|
}
|
this.$refs.toolingModalForm.showModal(ids)
|
this.$refs.toolingModalForm.title = '选择工具'
|
this.$refs.toolingModalForm.disableSubmit = false
|
},
|
//选择归还工具
|
selectReturnList: function () {
|
let ids = []
|
for (let i = 0; i < this.dataSource.length; i++) {
|
ids.push(this.dataSource[i].id)
|
}
|
this.$refs.returnModalForm.showModal(ids)
|
this.$refs.returnModalForm.title = '选择归还工具'
|
this.$refs.returnModalForm.disableSubmit = false
|
},
|
//选择刃磨工具
|
selectSharpenList: function () {
|
let ids = []
|
for (let i = 0; i < this.dataSource.length; i++) {
|
ids.push(this.dataSource[i].id)
|
}
|
this.$refs.sharpenModalForm.showModal(ids)
|
this.$refs.sharpenModalForm.title = '选择刃磨工具'
|
this.$refs.sharpenModalForm.disableSubmit = false
|
},
|
handleDelete(record, index) {
|
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 {
|
this.sharpenShow = false
|
}
|
|
},
|
//添加工具按钮
|
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;
|
}
|
})
|
},
|
filterOption(input, option) {
|
return (
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
);
|
},
|
},
|
watch: {},
|
mounted() {
|
this.$bus.$on('selectionRows', (data) => {
|
//getCurrSelected 事件 接收组件传递的参数
|
for (let i = 0; i < data.length; i++) {
|
this.dataSource.push({
|
toolCodeId:data[i].id,
|
toolingId: data[i].toolingId || data[i].id,
|
toolCode: data[i].toolCode,
|
chineseName: data[i].chineseName,
|
toolModel: data[i].toolModel,
|
applicationType: data[i].applicationTypeName,
|
unitName: data[i].unitName || data[i].unitId_dictText,
|
onlyCode:data[i].onlyCode,
|
noAccountQuantity:data[i].noAccountQuantity,
|
inStorageQuantity:data[i].storageQuantity
|
})
|
}
|
//this.ipaginationm.total = this.dataSource.length
|
})
|
},
|
}
|
</script>
|
|
|
<style lang="less" scoped>
|
.ant-btn {
|
padding: 0 10px;
|
margin-left: 3px;
|
}
|
|
.ant-form-item-control {
|
line-height: 0px;
|
}
|
|
/** 主表单行间距 */
|
.ant-form .ant-form-item {
|
margin-bottom: 10px;
|
}
|
|
/** Tab页面行间距 */
|
.ant-tabs-content .ant-form-item {
|
margin-bottom: 0px;
|
}
|
|
/deep/ .notshow {
|
display: none;
|
}
|
</style>
|