<template>
|
<a-spin :spinning='confirmLoading'>
|
<j-form-container :disabled='formDisabled'>
|
<!-- 主表单区域 -->
|
<a-form-model
|
ref='form'
|
:model='model'
|
:rules='validatorRules'
|
slot='detail'
|
>
|
<a-row>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='申请单编号'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='num'
|
>
|
<a-input
|
v-model='model.num'
|
placeholder="将由系统生成"
|
disabled
|
></a-input>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='类型'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='type'
|
>
|
<j-dict-select-tag
|
type='radio'
|
v-model='model.type'
|
dictCode='apply_type'
|
placeholder='请选择类型'
|
/>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='所在单位'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='departId'
|
>
|
<!-- <j-select-depart
|
v-model='model.departId'
|
:multi='true'
|
/> -->
|
<j-dict-select-tag
|
type='list'
|
v-model='model.departId'
|
dictCode="sys_depart,depart_name,id"
|
placeholder='请选择所在单位'
|
/>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='联系电话'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='contactNumber'
|
>
|
<a-input
|
v-model='model.contactNumber'
|
placeholder='请输入联系电话'
|
></a-input>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='申请人'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='applicant'
|
>
|
<j-dict-select-tag
|
type='list'
|
v-model='model.applicant'
|
dictCode='sys_user,realname,id'
|
placeholder='请选择申请人'
|
disabled
|
/>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='办理人'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='handlePerson'
|
>
|
<j-dict-select-tag
|
type='list'
|
v-model='model.handlePerson'
|
dictCode="sys_user,realname,id , del_flag!='1'"
|
placeholder='请选择办理人'
|
/>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span='12'>
|
<a-form-model-item
|
label='审核状态'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='auditStatus'
|
>
|
<j-dict-select-tag
|
type='list'
|
v-model='model.auditStatus'
|
dictCode='certificate_apply_status'
|
placeholder='请选择审核状态'
|
disabled
|
/>
|
</a-form-model-item>
|
</a-col>
|
<!-- <a-col :span='24'>
|
<a-form-model-item
|
label='备注'
|
:labelCol='labelCol'
|
:wrapperCol='wrapperCol'
|
prop='remark'
|
>
|
<a-input
|
v-model='model.remark'
|
placeholder='请输入备注'
|
></a-input>
|
</a-form-model-item>
|
</a-col> -->
|
</a-row>
|
</a-form-model>
|
</j-form-container>
|
<!-- 子表单区域 -->
|
<a-tabs
|
v-model='activeKey'
|
@change='handleChangeTabs'
|
>
|
<a-tab-pane
|
tab='操作证申请明细表'
|
:key='refKeys[0]'
|
:forceRender='true'
|
>
|
<j-vxe-table
|
keep-source
|
:ref='refKeys[0]'
|
:bordered='true'
|
:alwaysEdit='true'
|
:loading='operationCertificateApplyDetailTable.loading'
|
:columns='operationCertificateApplyDetailTable.columns'
|
:dataSource='operationCertificateApplyDetailTable.dataSource'
|
:maxHeight='600'
|
:disabled='formDisabled'
|
rowNumber='2'
|
:rowSelection='true'
|
:toolbar='true'
|
/>
|
<!-- :toolbarConfig='toolbarConfig' -->
|
</a-tab-pane>
|
</a-tabs>
|
</a-spin>
|
</template>
|
|
<script>
|
|
import { getAction, httpAction } from '@/api/manage'
|
import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
|
import { JVXETypes } from '@/components/jeecg/JVxeTable'
|
import { getRefPromise, VALIDATE_FAILED } from '@/components/jeecg/JVxeTable/utils/vxeUtils.js'
|
import { validateDuplicateValue } from '@/utils/util'
|
import JFormContainer from '@/components/jeecg/JFormContainer'
|
import store from '@/store'
|
|
export default {
|
name: 'OperationCertificateApplyForm',
|
mixins: [JVxeTableModelMixin],
|
components: {
|
JFormContainer
|
},
|
data() {
|
return {
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 5 }
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 16 }
|
},
|
model: {
|
auditStatus: 'created',
|
type: 'normal',
|
applicant: store.getters.userInfo.id,
|
},
|
// 新增时子表默认添加几行空数据
|
addDefaultRowNum: 1,
|
validatorRules: {
|
// num: [
|
// { required: true, message: '请输入申请单编号!' }
|
// ],
|
auditStatus: [
|
{ required: true, message: '请输入审核状态!' }
|
]
|
},
|
refKeys: ['operationCertificateApplyDetail'],
|
tableKeys: ['operationCertificateApplyDetail'],
|
activeKey: 'operationCertificateApplyDetail',
|
// 操作证申请明细表
|
operationCertificateApplyDetailTable: {
|
loading: false,
|
bordered: true,
|
dataSource: [],
|
columns: [
|
{
|
title: '用户',
|
key: 'userId',
|
type: JVXETypes.selectSearch,
|
dictCode: 'sys_user,realname,id ',
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
validateRules: [{ required: true, message: '${title}不能为空' }]
|
},
|
// {
|
// title: '设备统一编码',
|
// key: 'equipmentIds',
|
// type: JVXETypes.input,
|
// dictCode: 'mom_eam_equipment,num,id ',
|
// width: '200px',
|
// placeholder: '请输入${title}',
|
// defaultValue: '',
|
// validateRules: [{ required: true, message: '${title}不能为空' }]
|
// },
|
{
|
title: '设备统一编码',
|
key: 'equipmentIds',
|
type: JVXETypes.selectMultiple,
|
width: '270px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
dictCode: 'mom_eam_equipment,num,id, del_flag!=\'1\'',
|
validateRules: [{ required: true, message: '${title}不能为空' }]
|
},
|
// dictCode: 'mom_eam_equipment,num,id',
|
{
|
title: '上岗证号',
|
key: 'appointmentCardNum',
|
type: JVXETypes.input,
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
validateRules: [{ required: true, message: '${title}不能为空' }]
|
},
|
{
|
title: '申请/补办原因',
|
key: 'replaceReason',
|
type: JVXETypes.input,
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: ''
|
},
|
{
|
title: '备注',
|
key: 'remark',
|
type: JVXETypes.textarea,
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: ''
|
},
|
{
|
title: '理论成绩',
|
key: 'theoreticalResults',
|
type: JVXETypes.input,
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
disabled: 'achievementDisabled'
|
},
|
{
|
title: '实操成绩',
|
key: 'actualPerformance',
|
type: JVXETypes.input,
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
disabled: 'achievementDisabled'
|
},
|
{
|
title: '考试结论',
|
key: 'examinationConclusion',
|
type: JVXETypes.select,
|
dictCode: 'examination_conclusion',
|
width: '200px',
|
placeholder: '请输入${title}',
|
defaultValue: '',
|
disabled: 'achievementDisabled'
|
},
|
// {
|
// title: '状态',
|
// key: 'status',
|
// type: JVXETypes.input,
|
// width: '200px',
|
// placeholder: '请输入${title}',
|
// defaultValue: ''
|
// }
|
]
|
},
|
url: {
|
add: '/eam/operationCertificateApply/add',
|
edit: '/eam/operationCertificateApply/edit',
|
addOperationCertificate: '/eam/operationCertificate/addOperationCertificate',
|
queryById: '/eam/operationCertificateApply/queryById',
|
operationCertificateApplyDetail: {
|
list: '/eam/operationCertificateApply/queryOperationCertificateApplyDetailByMainId'
|
},
|
getNum: '/eam/sysIdentity/getNumNew',
|
}
|
}
|
},
|
props: {
|
//表单禁用
|
disabled: {
|
type: Boolean,
|
default: false,
|
required: false
|
},
|
achievement: {
|
type: Boolean,
|
default: false,
|
required: false
|
},
|
},
|
computed: {
|
formDisabled() {
|
return this.disabled
|
},
|
achievementDisabled() {
|
return this.achievement
|
}
|
},
|
created() {
|
},
|
methods: {
|
|
addBefore() {
|
this.operationCertificateApplyDetailTable.dataSource = []
|
},
|
getAllTable() {
|
let values = this.tableKeys.map(key => getRefPromise(this, key))
|
return Promise.all(values)
|
},
|
/** 调用完edit()方法之后会自动调用此方法 */
|
editAfter() {
|
this.$nextTick(() => {
|
})
|
// 加载子表数据
|
if (this.model.id) {
|
let params = { id: this.model.id }
|
this.requestSubTableData(this.url.operationCertificateApplyDetail.list, params, this.operationCertificateApplyDetailTable)
|
} else {
|
getAction(this.url.getNum, { type: 'OperationCertificateApply', length: '4' }).then((res) => {
|
if (res.success) {
|
this.model.num = res.message
|
}
|
})
|
}
|
},
|
//校验所有一对一子表表单
|
validateSubForm(allValues) {
|
return new Promise((resolve, reject) => {
|
Promise.all([]).then(() => {
|
resolve(allValues)
|
}).catch(e => {
|
if (e.error === VALIDATE_FAILED) {
|
// 如果有未通过表单验证的子表,就自动跳转到它所在的tab
|
this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index]
|
} else {
|
console.error(e)
|
}
|
})
|
})
|
},
|
/** 整理成formData */
|
classifyIntoFormData(allValues) {
|
let main = Object.assign(this.model, allValues.formValue)
|
return {
|
...main, // 展开
|
operationCertificateApplyDetailList: allValues.tablesValue[0].tableData
|
}
|
},
|
validateError(msg) {
|
this.$message.error(msg)
|
},
|
request(formData) {
|
let url = this.url.add, method = 'post'
|
if (this.model.id) {
|
url = this.url.edit
|
method = 'put'
|
}
|
this.confirmLoading = true
|
console.log("formData===>", formData);
|
httpAction(url, formData, method).then((res) => {
|
if (res.success) {
|
if (this.achievementDisabled) {
|
httpAction(this.url.addOperationCertificate, formData.operationCertificateApplyDetailList, 'post').then((res) => {
|
if (res.success) {
|
// this.$message.success(res.message)
|
} else {
|
this.$message.warning(res.message)
|
}
|
})
|
}
|
// this.$message.success(res.message)
|
this.$emit('ok')
|
this.close()
|
} else {
|
this.$message.warning(res.message)
|
}
|
}).finally(() => {
|
this.confirmLoading = false
|
})
|
},
|
|
}
|
}
|
</script>
|
|
<style scoped>
|
</style>
|