Browse Source

字段管理 验证修改

master
z_yu 3 years ago
parent
commit
2ef23f3bbf
  1. 100
      src/views/archivesConfig/commonFields/module/form.vue
  2. 5
      src/views/components/field/index.vue
  3. 19
      src/views/components/field/module/form.vue

100
src/views/archivesConfig/commonFields/module/form.vue

@ -1,100 +0,0 @@
<template>
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="中文名称" prop="fieldCnName">
<el-input v-model="form.fieldCnName" style="width: 370px;" />
</el-form-item>
<el-form-item label="字段标识" prop="fieldName">
<el-input v-model="form.fieldName" style="width: 370px;" />
</el-form-item>
<el-form-item label="数据类型" prop="isDataType">
<el-select v-model="form.isDataType" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="字段长度" prop="isColumnLength">
<el-input-number v-model="form.isColumnLength" controls-position="right" style="width: 370px;" />
</el-form-item>
<el-form-item label="默认值" prop="isDefaultValue">
<el-input v-model="form.isDefaultValue" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">
取消
</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">
确认
</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import { form } from '@crud/crud'
const defaultForm = {
id: null,
fieldCnName: '',
fieldName: '',
isDataType: 1,
isColumnLength: 100,
isDefaultValue: ''
}
export default {
mixins: [form(defaultForm)],
data() {
var checkMaxLength = (rule, value, callback) => {
if (!Number.isInteger(value) || value <= 0) {
callback(new Error('请输入正整数数字值'))
} else {
if (this.form.isDataType === 1 && value > 2000) {
callback(new Error('字符最大长度不能超过2000位'))
} else if (this.form.isDataType === 2 && value > 11) {
callback(new Error('数字最大长度不能超过11位'))
} else {
callback()
}
}
}
return {
rules: {
fieldCnName: [
{ required: true, message: '请输入中文名称', trigger: 'blur' }
],
fieldName: [
{ required: true, message: '请输入字段标识', trigger: 'blur' }
],
isDataType: [
{ required: true, message: '请选择数据类型', trigger: 'blur' }
],
isColumnLength: [
{ validator: checkMaxLength, trigger: 'blur' }
]
},
options: [
{
value: 1,
label: '字符',
maxlength: 2000
},
{
value: 2,
label: '数字',
maxlength: 11
}
]
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-input-number .el-input__inner {
text-align: left;
}
</style>

5
src/views/components/field/index.vue

@ -117,6 +117,11 @@ export default {
return false return false
} }
}, },
[CRUD.HOOK.beforeToEdit](crud, form, btn) {
if (form.isColumnLength === null) {
form.isColumnLength = undefined
}
},
handleConfirm() { handleConfirm() {
verifyMaintenance(encrypt(this.form.verifyCode)).then((res) => { verifyMaintenance(encrypt(this.form.verifyCode)).then((res) => {
if (res) { if (res) {

19
src/views/components/field/module/form.vue

@ -49,7 +49,7 @@ export default {
mixins: [form(defaultForm)], mixins: [form(defaultForm)],
data() { data() {
var checkMaxLength = (rule, value, callback) => { var checkMaxLength = (rule, value, callback) => {
if (!Number.isInteger(value) || value <= 0) {
if (value !== undefined && (!Number.isInteger(value) || value <= 0)) {
callback(new Error('请输入正整数数字值')) callback(new Error('请输入正整数数字值'))
} else { } else {
if (this.form.isDataType === 1 && value > 2000) { if (this.form.isDataType === 1 && value > 2000) {
@ -61,13 +61,22 @@ export default {
} }
} }
} }
var checkFieldName = (rule, value, callback) => {
const reg = /^[A-Za-z][A-Za-z_]+[a-zA-Z]*$/
if (reg.test(value)) {
callback()
} else {
callback(new Error('字段标识只能由字母、字符“_”组成,并且必须以字母开头和结尾'))
}
}
return { return {
rules: { rules: {
fieldCnName: [ fieldCnName: [
{ required: true, message: '请输入中文名称', trigger: 'blur' } { required: true, message: '请输入中文名称', trigger: 'blur' }
], ],
fieldName: [ fieldName: [
{ required: true, message: '请输入字段标识', trigger: 'blur' }
{ required: true, message: '请选择字段标识', trigger: 'blur' },
{ validator: checkFieldName, trigger: 'blur' }
], ],
isDataType: [ isDataType: [
{ required: true, message: '请选择数据类型', trigger: 'blur' } { required: true, message: '请选择数据类型', trigger: 'blur' }
@ -79,13 +88,11 @@ export default {
options: [ options: [
{ {
value: 1, value: 1,
label: '字符',
maxlength: 2000
label: '字符'
}, },
{ {
value: 2, value: 2,
label: '数字',
maxlength: 11
label: '数字'
} }
] ]
} }

Loading…
Cancel
Save