<template>
|
<el-dialog
|
custom-class="sy-modal"
|
|
:title="title"
|
:close-on-click-modal="false"
|
width="600px"
|
top="4vh"
|
:before-close="onClose"
|
>
|
<div class="sy-default-form-modal-content" v-loading="loading">
|
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
|
<el-form-item label="序列号" prop="serialNumber">
|
<el-input v-model.trim="form.serialNumber" clearable placeholder="请输入..."></el-input>
|
</el-form-item>
|
<el-form-item label="系列" prop="series_CodeItemId">
|
<el-select v-model="form.series_CodeItemId" placeholder="请选择..." clearable class="full-width">
|
<el-option v-for="(item,index) in selectList.series" :key="'series-'+index" :label="item.name" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="品类" prop="cargoType_CodeItemId">
|
<el-select v-model="form.cargoType_CodeItemId" placeholder="请选择..." clearable class="full-width">
|
<el-option v-for="(item,index) in selectList.types" :key="'types-'+index" :label="item.name" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="型号" prop="materialModel_CodeItemId">
|
<el-select v-model="form.materialModel_CodeItemId" placeholder="请选择..." clearable class="full-width">
|
<el-option v-for="(item,index) in selectList.modelTypes" :key="'modelTypes-'+index" :label="item.name" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="主机厂" prop="supplier">
|
<el-input v-model.trim="form.supplier" clearable placeholder="请输入..." type="textarea" />
|
</el-form-item>
|
</el-form>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="onClose">取 消</el-button>
|
<el-button type="primary" @click="onSubmit(false)">提 交</el-button>
|
<el-button v-if="type==='add'" type="primary" @click="onSubmit(true)">提交并继续新增</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script>
|
const defaultForm = {
|
series_CodeItemId:null,
|
seriesName:'',
|
cargoType_CodeItemId:null,
|
cargoTypeName:'',
|
serialNumber:'',
|
materialModel_CodeItemId:null,
|
materialModel:'',
|
supplier:''
|
}
|
export default {
|
name:'archivesOfGoodsFormModalCompontent',
|
emits:['submitCallback','update:visible'],
|
props:{
|
visible:{
|
type:Boolean,
|
default:false
|
},
|
type:{
|
type:String,
|
default:'add'
|
},
|
row:{
|
type:Object,
|
default:function(){
|
return {}
|
}
|
},
|
selectList:{
|
type:Object,
|
default:function(){
|
return {
|
series:[],
|
types:[],
|
modelTypes:[]
|
}
|
}
|
}
|
},
|
data(){
|
return {
|
title:'',
|
loading:false,
|
form:{...defaultForm},
|
rules:{
|
series_CodeItemId:[
|
{ required: true, message: '请选择系列!', trigger: 'change' }
|
],
|
serialNumber:[
|
{ required: true, message: '请输入序列号!', trigger: 'blur' }
|
],
|
cargoType_CodeItemId:[
|
{ required: true, message: '请选择品类!', trigger: 'change' }
|
],
|
materialModel_CodeItemId:[
|
{ required: true, message: '请选择型号!', trigger: 'change' }
|
],
|
supplier:[
|
{ required: true, message: '请输入主机厂!', trigger: 'blur' }
|
]
|
}
|
}
|
},
|
watch:{
|
visible(newVal,oldVal){
|
if (newVal!==oldVal) {
|
if (newVal) {
|
this.initForm();
|
} else {
|
this.clearForm();
|
}
|
}
|
}
|
},
|
methods:{
|
initForm(){
|
if (this.type==='add') {
|
this.title = '物料新增'
|
this.restForm()
|
this.$nextTick(()=>{
|
this.$refs.form.clearValidate()
|
})
|
} else {
|
this.title = '物料修改'
|
this.form = {
|
series_CodeItemId:this.parseFieldToNumber(this.row,'Series_CodeItemId'),
|
seriesName:this.row.SeriesName,
|
cargoType_CodeItemId:this.parseFieldToNumber(this.row,'CargoType_CodeItemId'),
|
cargoTypeName:this.row.CargoTypeName,
|
materialModel_CodeItemId:this.parseFieldToNumber(this.row,'MaterialModel_CodeItemId'),
|
materialModel:this.row.MaterialModel,
|
serialNumber:this.row.SerialNumber,
|
supplier:this.row.Supplier
|
}
|
}
|
},
|
parseFieldToNumber(obj,field){
|
let res = obj[field];
|
if (res) {
|
res = Number(res)
|
}
|
return res
|
},
|
clearForm(){
|
this.form = {...defaultForm}
|
},
|
restForm(){
|
this.form = {...defaultForm,...{cargoNo:'MATERIAL-'+this.$utils.createUuid(12)}}
|
},
|
close(){
|
this.$emit('update:visible',false)
|
},
|
onClose(){
|
this.close();
|
},
|
onSubmit(isMore){
|
this.$refs.form.validate((valid) => {
|
if (valid) {
|
this.dealSubmit((f)=>{
|
if (f) {
|
if (isMore) {
|
this.restForm()
|
this.$nextTick(()=>{
|
this.$refs.form.clearValidate()
|
})
|
} else {
|
this.close();
|
}
|
this.$emit('submitCallback',!isMore)
|
}
|
})
|
}
|
})
|
},
|
dealSubmit(callback){
|
let type = '', method = '', params = {...this.form};
|
params.seriesName = function(){
|
let res = '';
|
for (let i=0;i<this.selectList.series.length;i++) {
|
if (this.selectList.series[i].value === params['series_CodeItemId']) {
|
res = this.selectList.series[i].name;
|
break;
|
}
|
}
|
return res;
|
}.call(this);
|
params.cargoTypeName = function(){
|
let res = '';
|
for (let i=0;i<this.selectList.types.length;i++) {
|
if (this.selectList.types[i].value === params['cargoType_CodeItemId']) {
|
res = this.selectList.types[i].name;
|
break;
|
}
|
}
|
return res;
|
}.call(this);
|
params.materialModel = function(){
|
let res = '';
|
for (let i=0;i<this.selectList.modelTypes.length;i++) {
|
if (this.selectList.modelTypes[i].value === params['materialModel_CodeItemId']) {
|
res = this.selectList.modelTypes[i].name;
|
break;
|
}
|
}
|
return res;
|
}.call(this);
|
if (this.type==='add') {
|
type = 'post'
|
method = 'Post'
|
} else {
|
type = 'put'
|
method = 'Put'
|
params.id = this.row.Id
|
}
|
this.loading = true
|
this.$api[type](method,params,{block:'baseMaterial'}).then((d)=>{
|
this.loading = false
|
callback && callback(true)
|
}).catch((err)=>{
|
this.loading = false
|
callback && callback(false)
|
})
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
</style>
|