|
|
@ -3,73 +3,7 @@ |
|
|
|
<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-row> |
|
|
|
<el-col :span="15"> |
|
|
|
<el-form-item v-if="!isDisabled" label="中文名称" prop="fieldCnName"> |
|
|
|
<el-input v-model="form.fieldCnName" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="!isDisabled" label="字段标识" prop="fieldName"> |
|
|
|
<el-input v-model="form.fieldName" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="字段类型" prop="isDataType"> |
|
|
|
<el-select v-model="form.isDataType" placeholder="" disabled> |
|
|
|
<el-option v-for="item in dataTypeOptions" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="字段长度" prop="isColumnLength"> |
|
|
|
<el-input v-model="form.isColumnLength" placeholder="" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="著录形式" prop="isInputClass"> |
|
|
|
<el-select v-model="form.isInputClass" placeholder="" :disabled="isDisabled" @change="selectInputClass"> |
|
|
|
<el-option v-for="item in inputClassOptions" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="对应字典" prop="sysDictionaryId"> |
|
|
|
<el-select v-model="form.isDefaultValueType" placeholder="" :disabled="isDisabled"> |
|
|
|
<el-option v-for="item in dictionaryData" :key="item.id" :label="item.dicName" :value="item.dicCode" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="显示长度" prop="editLength"> |
|
|
|
<el-input v-model="form.editLength" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="默认值" prop="isDefaultValue"> |
|
|
|
<el-input v-model="form.isDefaultValue" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="9"> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>显示一整行</span> |
|
|
|
<el-checkbox v-model="form.isLine" label="" name="isLine" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>输入字段</span> |
|
|
|
<el-checkbox v-model="form.isInput" label="" name="isInput" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>必填字段</span> |
|
|
|
<el-checkbox v-model="form.isRequired" label="" name="isRequired" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>自动生成</span> |
|
|
|
<el-checkbox v-model="form.isAuto" label="" name="isAuto" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>值不重复</span> |
|
|
|
<el-checkbox v-model="form.isNoRepetition" label="" name="isNoRepetition" :disabled="isDisabled" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="checkbox-item"> |
|
|
|
<span>自动补零</span> |
|
|
|
<el-checkbox v-model="form.isFilling" label="" name="isFilling" :disabled="isDisabled" @change="changeSupplement" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="input-num" label="位数" prop="fillingDigit"> |
|
|
|
<!-- <el-input v-model="form.isSupplementNum" type="number" :min="1" :disabled="isDisabled || !form.isSupplement" /> --> |
|
|
|
<el-input-number v-model="form.isSupplementNum" controls-position="right" :min="1" :disabled="isDisabled || !form.isSupplement" style="width:80px" /> |
|
|
|
<span>位</span> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
<SettingForm ref="editForm" :is-disabled="false" :is-add="true" :this-fields="{}" /> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU"> |
|
|
|
保存 |
|
|
@ -81,110 +15,19 @@ |
|
|
|
|
|
|
|
<script> |
|
|
|
import { form } from '@crud/crud' |
|
|
|
import SettingForm from '@/views/components/category/SettingForm' |
|
|
|
|
|
|
|
const defaultForm = { |
|
|
|
id: null, |
|
|
|
fieldCnName: '', |
|
|
|
fieldName: '', |
|
|
|
isDataType: 1, |
|
|
|
isColumnLength: 100, |
|
|
|
isDefaultValue: '' |
|
|
|
} |
|
|
|
export default { |
|
|
|
components: { SettingForm }, |
|
|
|
mixins: [form(defaultForm)], |
|
|
|
data() { |
|
|
|
var checkMaxLength = (rule, value, callback) => { |
|
|
|
if (value !== undefined && (!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() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
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 { |
|
|
|
rules: { |
|
|
|
fieldCnName: [ |
|
|
|
{ required: true, message: '请输入中文名称', trigger: 'blur' } |
|
|
|
], |
|
|
|
fieldName: [ |
|
|
|
{ required: true, message: '请选择字段标识', trigger: 'blur' }, |
|
|
|
{ validator: checkFieldName, trigger: 'blur' } |
|
|
|
], |
|
|
|
isDataType: [ |
|
|
|
{ required: true, message: '请选择数据类型', trigger: 'blur' } |
|
|
|
], |
|
|
|
isColumnLength: [ |
|
|
|
{ validator: checkMaxLength, trigger: 'blur' } |
|
|
|
] |
|
|
|
}, |
|
|
|
// 字段类型 |
|
|
|
dataTypeOptions: [ |
|
|
|
{ value: 1, label: '字符' }, |
|
|
|
{ value: 2, label: '数字' } |
|
|
|
], |
|
|
|
// 著录形式 |
|
|
|
inputClassOptions: [ |
|
|
|
{ value: 'select', label: '下拉框' }, |
|
|
|
{ value: 'popover', label: '弹出框' }, |
|
|
|
{ value: 'text', label: '文本框' }, |
|
|
|
{ value: 'number', label: '数字框' }, |
|
|
|
{ value: 'date', label: '日期框' }, |
|
|
|
{ value: 'textarea', label: '文本域' } |
|
|
|
], |
|
|
|
// 对应字典 |
|
|
|
dictionaryData: [], |
|
|
|
isDisabled: false |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
getForm() { |
|
|
|
this.form.isSupplement = !!this.form.isSupplement |
|
|
|
this.form.isFullrow = !!this.form.isFullrow |
|
|
|
this.form.isInput = !!this.form.isInput |
|
|
|
this.form.isRequired = !!this.form.isRequired |
|
|
|
this.changeSupplement() |
|
|
|
}, |
|
|
|
// 著录形式为'下拉框'、'弹出框'的,对应字典不为空,反之为空; |
|
|
|
selectInputClass(value) { |
|
|
|
if (value === 'select' || value === 'popover') { |
|
|
|
// this.dictionaryData = [] |
|
|
|
// getData |
|
|
|
} else { |
|
|
|
this.dictionaryData = [] |
|
|
|
this.form.isDefaultValueType = null |
|
|
|
} |
|
|
|
|
|
|
|
if (value !== 'number') { |
|
|
|
this.form.isIncrease = false |
|
|
|
} |
|
|
|
}, |
|
|
|
// '自动补零' false - 补零位数清空 |
|
|
|
changeSupplement() { |
|
|
|
if (!this.form.isSupplement) { |
|
|
|
this.form.isSupplementNum = undefined |
|
|
|
} |
|
|
|
}, |
|
|
|
submitForm(formName) { |
|
|
|
// 选择'自动补零',位数必填 |
|
|
|
if (this.form.isSupplement) { |
|
|
|
if (!this.form.isSupplementNum) { |
|
|
|
this.$message.error('请填写位数!') |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
this.$refs[formName].validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
alert('submit!') |
|
|
|