<template>
|
<j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered
|
@ok="handleOk" @cancel="handleCancel" cancelText="关闭">
|
<a-spin :spinning="spinning">
|
<a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-row>
|
<a-col :span="8">
|
<a-form-model-item label="规范编码">
|
<a-input placeholder="规范编码自动生成" v-model="model.standardCode" disabled/>
|
</a-form-model-item>
|
</a-col>
|
|
<a-col :span="8">
|
<a-form-model-item prop="standardName" label="规范名称">
|
<a-input placeholder="请输入规范名称" v-model="model.standardName"/>
|
</a-form-model-item>
|
</a-col>
|
|
<a-col :span="8">
|
<a-form-model-item prop="equipmentId" label="统一编码">
|
<lx-search-equipment-select placeholder="请输入统一编码或名称搜索" v-model="model.equipmentId" :disabled="!editable"/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
|
<!-- <a-row>-->
|
<!-- <a-col :span="8">-->
|
<!-- <a-form-model-item label="鉴定周期(年)">-->
|
<!-- <a-input-number v-model="model.evaluationPeriod" :min="1" placeholder="请输入鉴定周期(年)" style="width: 100%"/>-->
|
<!-- </a-form-model-item>-->
|
<!-- </a-col>-->
|
<!-- </a-row>-->
|
|
<a-row>
|
<!--<a-col :span="8">-->
|
<!--<a-form-model-item label="安全装置检查">-->
|
<!--<j-dict-select-tag @change="handleCheckListChange($event,1)" dict-code="yn " type="radio"-->
|
<!--:disabled="model.hasPrecisionCheck=='0'&&model.hasOtherCheck=='0'"-->
|
<!--v-model="model.hasSafetyEquipmentCheck"/>-->
|
<!--</a-form-model-item>-->
|
<!--</a-col>-->
|
|
<!--<a-col :span="8">-->
|
<!--<a-form-model-item label="设备精度检查">-->
|
<!--<j-dict-select-tag @change="handleCheckListChange($event,2)" dict-code="yn " type="radio"-->
|
<!--:disabled="model.hasSafetyEquipmentCheck=='0'&&model.hasOtherCheck=='0'"-->
|
<!--v-model="model.hasPrecisionCheck"/>-->
|
<!--</a-form-model-item>-->
|
<!--</a-col>-->
|
|
<!--<a-col :span="8">-->
|
<!--<a-form-model-item label="其他检查">-->
|
<!--<j-dict-select-tag @change="handleCheckListChange($event,3)" dict-code="yn " type="radio"-->
|
<!--:disabled="model.hasPrecisionCheck=='0'&&model.hasSafetyEquipmentCheck=='0'"-->
|
<!--v-model="model.hasOtherCheck"/>-->
|
<!--</a-form-model-item>-->
|
<!--</a-col>-->
|
|
<a-col :span="8" v-for="item in checkList">
|
<a-form-model-item :label="item.label">
|
<j-dict-select-tag @change="handleCheckListChange($event,item.key)" dict-code="yn" type="radio"
|
:disabled="checkList.filter(i=>i.key!=item.key).every(i=>i.value=='0')"
|
v-model="model[item.key]"/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
|
<a-row>
|
<a-col :span="24">
|
<a-form-model-item :labelCol="{span:2}" :wrapperCol="{span:21}" label="备注">
|
<a-textarea placeholder="请输入备注" v-model="model.remark"/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
</a-form-model>
|
|
<a-tabs :activeKey="activeTabKey" @change="handleTabChange">
|
<a-tab-pane tab="安全装置检查" :key="1" v-if="+model.hasSafetyEquipmentCheck">
|
<j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
|
:toolbarConfig="detail.toolbarConfig" keep-source
|
:height="300" :dataSource="detail.safetyEquipmentCheckList" :columns="detail.columns">
|
</j-vxe-table>
|
</a-tab-pane>
|
|
<a-tab-pane tab="设备精度检查" :key="2" v-if="+model.hasPrecisionCheck" forceRender>
|
<j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar
|
:toolbarConfig="detail.toolbarConfig" keep-source
|
:height="300" :dataSource="detail.precisionCheckList" :columns="detail.precisionCheckColumns">
|
</j-vxe-table>
|
</a-tab-pane>
|
|
<a-tab-pane tab="其他检查" :key="3" v-if="+model.hasOtherCheck" forceRender>
|
<j-vxe-table ref="editableDetailTable3" rowNumber rowSelection bordered alwaysEdit toolbar
|
:toolbarConfig="detail.toolbarConfig" keep-source
|
:height="300" :dataSource="detail.otherCheckList" :columns="detail.columns">
|
</j-vxe-table>
|
</a-tab-pane>
|
</a-tabs>
|
</a-spin>
|
</j-modal>
|
</template>
|
|
<script>
|
import { httpAction, getAction } from '@/api/manage'
|
import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
|
import { JVXETypes } from '@/components/jeecg/JVxeTable'
|
import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
|
|
export default {
|
name: 'EamTechnicalStatusEvaluationStandardModal',
|
components: {
|
LxSearchEquipmentSelect
|
},
|
mixins: [JVxeTableModelMixin],
|
data() {
|
return {
|
title: '操作',
|
visible: false,
|
model: {},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 6 }
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 15 }
|
},
|
spinning: false,
|
confirmLoading: false,
|
editable: true,
|
validatorRules: {
|
standardName: [{ required: true, message: '请输入规范名称', trigger: 'change' }],
|
equipmentId: [{ required: true, message: '请输入统一编码或名称搜索', trigger: 'change' }]
|
},
|
checkList: [
|
{
|
label: '安全装置检查',
|
dictValue: 'SAFETY_EQUIPMENT_CHECK',
|
key: 'hasSafetyEquipmentCheck',
|
value: '1',
|
order: 1
|
},
|
{
|
label: '设备精度检查',
|
dictValue: 'PRECISION_CHECK',
|
key: 'hasPrecisionCheck',
|
value: '1',
|
order: 2
|
},
|
{
|
label: '其他检查',
|
dictValue: 'OTHER_CHECK',
|
key: 'hasOtherCheck',
|
value: '1',
|
order: 3
|
}
|
],
|
activeTabKey: 1,
|
upgradeFlag: false,
|
detail: {
|
safetyEquipmentCheckList: [],
|
precisionCheckList: [],
|
otherCheckList: [],
|
columns: [
|
{
|
title: 'ID',
|
key: 'id',
|
type: JVXETypes.hidden
|
},
|
{
|
title: 'standardId',
|
key: 'standardId',
|
type: JVXETypes.hidden
|
},
|
{
|
title: '项目序号',
|
key: 'itemCode',
|
type: JVXETypes.inputNumber,
|
align: 'center',
|
placeholder: '请输入项目序号',
|
width: 150,
|
validateRules: [
|
{ required: true, message: '请输入${title}' },
|
{ unique: true, message: '${title}不能重复' }
|
]
|
},
|
{
|
title: '检查项目',
|
key: 'itemName',
|
placeholder: '请输入${title}',
|
type: JVXETypes.textarea,
|
align: 'center',
|
validateRules: [{ required: true, message: '请输入${title}' }]
|
}
|
],
|
precisionCheckColumns: [
|
{
|
title: 'ID',
|
key: 'id',
|
type: JVXETypes.hidden
|
},
|
{
|
title: 'standardId',
|
key: 'standardId',
|
type: JVXETypes.hidden
|
},
|
{
|
title: '项目序号',
|
key: 'itemCode',
|
type: JVXETypes.inputNumber,
|
align: 'center',
|
placeholder: '请输入项目序号',
|
width: 150,
|
validateRules: [
|
{ required: true, message: '请输入${title}' },
|
{ unique: true, message: '${title}不能重复' }
|
]
|
},
|
{
|
title: '检查项目',
|
key: 'itemName',
|
placeholder: '请输入${title}',
|
type: JVXETypes.textarea,
|
align: 'center',
|
validateRules: [{ required: true, message: '请输入${title}' }]
|
},
|
{
|
title: '检查子项目',
|
key: 'subItemName',
|
placeholder: '请输入${title}',
|
type: JVXETypes.textarea,
|
align: 'center',
|
validateRules: [{ required: true, message: '请输入${title}' }]
|
},
|
{
|
title: '允差值',
|
key: 'toleranceValue',
|
placeholder: '请输入${title}',
|
type: JVXETypes.input,
|
align: 'center',
|
validateRules: [{ required: true, message: '请输入${title}' }]
|
}
|
],
|
toolbarConfig: {
|
// prefix 前缀;suffix 后缀
|
slot: ['prefix', 'suffix'],
|
// add 新增按钮;remove 删除按钮;clearSelection 清空选择按钮
|
btn: ['add', 'remove', 'clearSelection']
|
}
|
},
|
url: {
|
add: '/eam/eamTechnicalStatusEvaluationStandard/add',
|
edit: '/eam/eamTechnicalStatusEvaluationStandard/edit',
|
upgrade: '/eam/eamTechnicalStatusEvaluationStandard/upgrade',
|
detail: '/eam/eamTechnicalStatusEvaluationStandardDetail/queryList'
|
}
|
}
|
},
|
methods: {
|
add() {
|
this.editable = true
|
//初始化默认值
|
this.edit({
|
hasSafetyEquipmentCheck: '1',
|
hasPrecisionCheck: '1',
|
hasOtherCheck: '1'
|
})
|
},
|
|
/**
|
* 行记录编辑时触发
|
* @param record 页面表格行记录
|
*/
|
edit(record, upgradeFlag = false) {
|
this.upgradeFlag = upgradeFlag
|
console.log('upgradeFlag', this.upgradeFlag)
|
this.detail.safetyEquipmentCheckList = this.detail.precisionCheckList = this.detail.otherCheckList = []
|
this.model = Object.assign({}, record)
|
this.hasCheckedCheckList = []
|
this.checkList.forEach(item => {
|
if (+this.model[item.key]) this.hasCheckedCheckList.push(item)
|
})
|
this.activeTabKey = this.hasCheckedCheckList[0].order
|
this.visible = true
|
if (record.id) {
|
this.editable = false
|
this.loadDetail(record.id)
|
}
|
},
|
|
/**
|
* 检查选择发生改变后触发
|
* @param value 检查选择值 0为否 1为是
|
* @param key 检查选择对应标签key
|
*/
|
handleCheckListChange(value, key) {
|
this.checkList.find(item => item.key == key).value = value
|
if (+value) this.hasCheckedCheckList.push(this.checkList.find(item => item.key == key))
|
else {
|
this.hasCheckedCheckList = this.hasCheckedCheckList.filter(item => item.key != key)
|
if (!this.hasCheckedCheckList.some(item => item.key == key)) this.activeTabKey = this.hasCheckedCheckList.sort((x, y) => x.order - y.order)[0].order
|
}
|
},
|
|
loadDetail(standardId) {
|
this.spinning = true
|
getAction(this.url.detail, { standardId })
|
.then(res => {
|
console.log('res', res)
|
if (res.success) {
|
this.detail.safetyEquipmentCheckList = res.result.filter(item => item.checkCategory == 'SAFETY_EQUIPMENT_CHECK')
|
this.detail.precisionCheckList = res.result.filter(item => item.checkCategory == 'PRECISION_CHECK')
|
this.detail.otherCheckList = res.result.filter(item => item.checkCategory == 'OTHER_CHECK')
|
}
|
})
|
.finally(() => {
|
this.spinning = false
|
})
|
},
|
|
/**
|
* 标签切换时触发
|
* @param key 切换后的标签key
|
* @returns {Promise<boolean>}
|
*/
|
async handleTabChange(key) {
|
let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
|
if (errMap) return false
|
this.activeTabKey = key
|
},
|
|
async handleOk() {
|
// 先校验当前tab下的表格
|
let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
|
if (errMap) return false
|
|
// 校验已选择的检查项表格为空
|
let allTableData = []
|
const hasCheckedCheckList = this.hasCheckedCheckList.sort((x, y) => x.order - y.order)
|
for (let index = 0; index < hasCheckedCheckList.length; index++) {
|
let tableData = this.$refs['editableDetailTable' + hasCheckedCheckList[index].order].getTableData()
|
if (tableData.length == 0) {
|
this.$notification.warning({
|
message: '消息',
|
description: hasCheckedCheckList[index].label + '必填项不能为空'
|
})
|
return
|
}
|
tableData = tableData.map(item => {
|
return {
|
...item,
|
checkCategory: hasCheckedCheckList[index].dictValue
|
}
|
})
|
allTableData = [...allTableData, ...tableData]
|
}
|
const that = this
|
// 触发表单验证
|
this.$refs.form.validate(valid => {
|
if (valid) {
|
that.confirmLoading = true
|
let httpUrl = ''
|
let method = ''
|
if (!this.model.id) {
|
httpUrl += this.url.add
|
method = 'post'
|
} else {
|
if (!this.upgradeFlag) httpUrl += this.url.edit
|
else httpUrl += this.url.upgrade
|
method = 'put'
|
}
|
this.model.tableDetailList = allTableData
|
httpAction(httpUrl, this.model, method).then((res) => {
|
if (res.success) {
|
that.$notification.success({
|
message: '消息',
|
description: res.message
|
})
|
that.$emit('ok')
|
} else {
|
that.$notification.warning({
|
message: '消息',
|
description: res.message
|
})
|
}
|
}).finally(() => {
|
that.confirmLoading = false
|
that.close()
|
})
|
} else {
|
return false
|
}
|
})
|
},
|
|
handleCancel() {
|
this.close()
|
},
|
|
close() {
|
this.$emit('close')
|
this.visible = false
|
this.$refs.form.clearValidate()
|
}
|
|
|
}
|
}
|
</script>
|