AnalysisSystemForRadionucli.../src/views/system/modules/DictItemModal.vue

170 lines
5.0 KiB
Vue
Raw Normal View History

2023-05-06 15:58:45 +08:00
<template>
<a-modal
:title="title"
:width="800"
:visible="visible"
:maskClosable="false"
2023-05-06 15:58:45 +08:00
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
:cancelButtonProps="{ props: { type: 'warn' } }"
2023-05-06 15:58:45 +08:00
>
<a-spin :spinning="confirmLoading">
<a-form-model ref="form" :model="model" :rules="validatorRules">
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="itemText" label="Name">
<a-input placeholder="Please Enter Name" v-model="model.itemText" />
2023-05-06 15:58:45 +08:00
</a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="itemValue" label="Item Value">
<a-input placeholder="Please Enter Item Value" v-model="model.itemValue" />
2023-05-06 15:58:45 +08:00
</a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Description">
2023-05-06 15:58:45 +08:00
<a-input v-model="model.description" />
</a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Sort">
2023-05-06 15:58:45 +08:00
<a-input-number :min="1" v-model="model.sortOrder" />
The Smaller The Value, the More Advanced
2023-05-06 15:58:45 +08:00
</a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Enable" hasFeedback>
<a-switch checkedChildren="Enable" unCheckedChildren="Disable" @change="onChose" v-model="visibleCheck" />
2023-05-06 15:58:45 +08:00
</a-form-model-item>
</a-form-model>
</a-spin>
</a-modal>
</template>
<script>
import pick from 'lodash.pick'
import { addDictItem, editDictItem } from '@/api/api'
import { getAction } from '@api/manage'
2023-05-06 15:58:45 +08:00
export default {
name: 'DictItemModal',
data() {
return {
title: '操作',
visible: false,
visibleCheck: true,
model: {},
dictId: '',
status: 1,
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
2023-05-06 15:58:45 +08:00
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
2023-05-06 15:58:45 +08:00
},
confirmLoading: false,
validatorRules: {
itemText: [{ required: true, message: 'Please Enter Name' }],
itemValue: [{ required: true, message: 'Please Enter Item Value' }, { validator: this.validateItemValue }],
2023-05-06 15:58:45 +08:00
},
}
},
created() {},
methods: {
add(dictId) {
this.dictId = dictId
//初始化默认值
this.edit({ sortOrder: 1, status: 1 })
},
edit(record) {
if (record.id) {
this.dictId = record.dictId
}
this.status = record.status
this.visibleCheck = record.status == 1 ? true : false
this.model = Object.assign({}, record)
this.model.dictId = this.dictId
this.model.status = this.status
this.visible = true
},
onChose(checked) {
if (checked) {
this.status = 1
this.visibleCheck = true
} else {
this.status = 0
this.visibleCheck = false
}
},
// 确定
handleOk() {
const that = this
// 触发表单验证
this.$refs.form.validate((valid) => {
if (valid) {
that.confirmLoading = true
this.model.itemText = (this.model.itemText || '').trim()
this.model.itemValue = (this.model.itemValue || '').trim()
this.model.description = (this.model.description || '').trim()
this.model.status = this.status
let obj
if (!this.model.id) {
obj = addDictItem(this.model)
} else {
obj = editDictItem(this.model)
}
obj
.then((res) => {
2023-05-06 15:58:45 +08:00
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
2023-05-06 15:58:45 +08:00
} else {
that.$message.warning(res.message)
2023-05-06 15:58:45 +08:00
}
})
.finally(() => {
that.confirmLoading = false
that.close()
})
} else {
return false
2023-05-06 15:58:45 +08:00
}
})
},
// 关闭
handleCancel() {
this.close()
},
close() {
this.$emit('close')
this.visible = false
this.$refs.form.resetFields()
},
validateItemValue(rule, value, callback) {
let param = {
itemValue: value,
dictId: this.dictId,
}
if (this.model.id) {
param.id = this.model.id
}
if (value) {
let reg = new RegExp("[`~!@#$^&*()=|{}'.<>《》/?!¥()—【】‘;:”“。,、?]")
if (reg.test(value)) {
callback('Cannot Have Special Charactors')
} else {
//update--begin--autor:lvdandan-----date:20201203------forJT-27【数据字典】字典 - 数据值可重复
getAction('/sys/dictItem/dictItemCheck', param).then((res) => {
if (res.success) {
callback()
} else {
callback(res.message)
}
})
//update--end--autor:lvdandan-----date:20201203------forJT-27【数据字典】字典 - 数据值可重复
2023-05-06 15:58:45 +08:00
}
} else {
callback()
2023-05-06 15:58:45 +08:00
}
},
},
}
2023-05-06 15:58:45 +08:00
</script>