优化代码生成,DataAnnotations生成时间范围验证
This commit is contained in:
parent
9c7e79356d
commit
7ed3f1706e
@ -94,9 +94,15 @@ if (@column.WhetherAddUpdate == "Y"){
|
||||
@if(rule.Type=="pattern"){
|
||||
@:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")]
|
||||
}
|
||||
@if(rule.Type=="length"){
|
||||
@if(rule.Type=="length"&&column.NetType.StartsWith("string")){
|
||||
@:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")]
|
||||
}
|
||||
@if(rule.Type=="length"&&column.NetType.StartsWith("DateTime")){
|
||||
@:[Range(typeof(DateTime), "@(@rule.Min)", "@(@rule.Max)", ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)到@(@rule.Max)")]
|
||||
}
|
||||
@if(rule.Type=="length"&&(column.NetType.StartsWith("int")||column.NetType.StartsWith("long")||column.NetType.StartsWith("decimal")||column.NetType.StartsWith("float")||column.NetType.StartsWith("double"))){
|
||||
@:[Range(@(@rule.Min), @(@rule.Max), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)")]
|
||||
}
|
||||
}
|
||||
}
|
||||
@:public override @column.NetType @column.PropertyName { get; set; }
|
||||
@ -151,9 +157,15 @@ if (@column.WhetherAddUpdate == "Y"){
|
||||
@if(rule.Type=="pattern"){
|
||||
@:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")]
|
||||
}
|
||||
@if(rule.Type=="length"){
|
||||
@if(rule.Type=="length"&&column.NetType.StartsWith("string")){
|
||||
@:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")]
|
||||
}
|
||||
@if(rule.Type=="length"&&column.NetType.StartsWith("DateTime")){
|
||||
@:[Range(typeof(DateTime), "@(@rule.Min)", "@(@rule.Max)", ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)到@(@rule.Max)")]
|
||||
}
|
||||
@if(rule.Type=="length"&&(column.NetType.StartsWith("int")||column.NetType.StartsWith("long")||column.NetType.StartsWith("decimal")||column.NetType.StartsWith("float")||column.NetType.StartsWith("double"))){
|
||||
@:[Range(@(@rule.Min), @(@rule.Max), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)")]
|
||||
}
|
||||
}
|
||||
}
|
||||
@:public override @column.NetType @column.PropertyName { get; set; }
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<el-row :gutter="35">
|
||||
@foreach (var column in Model.TableField){
|
||||
if(@column.ColumnKey == "True"){
|
||||
@:<el-form-item style="display: none !important;">
|
||||
@:<el-form-item style="display: none !important;">
|
||||
<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" />
|
||||
</el-form-item>
|
||||
}else{
|
||||
@ -253,7 +253,7 @@ const rules = ref<FormRules>({
|
||||
@:{required: true, message: '@(@triggerTip)@(@column.ColumnComment)!', trigger: '@(@trigger)',},
|
||||
}else if(rule.Type=="array"){
|
||||
@:{ type: 'array', required: true, message: '请选择至少一种@(@column.ColumnComment)', trigger: 'change', },
|
||||
}else if(rule.Type=="length"){
|
||||
}else if(rule.Type=="length"&&(column.EffectType=="Input"||column.EffectType == "InputTextArea")){
|
||||
@:{ min: @(@rule.Min), max: @(@rule.Max), message: '长度应该是@(@rule.Min)到@(@rule.Max)', trigger: '@(@trigger)' },
|
||||
}else if(rule.Type=="pattern"){
|
||||
@:{ pattern: @(@rule.Pattern), message: '@(@column.ColumnComment)', trigger: '@(@trigger)' },
|
||||
|
||||
@ -289,7 +289,7 @@ const cancel = () => {
|
||||
const submit = async () => {
|
||||
state.loading = true;
|
||||
var lst = state.tableData;
|
||||
console.log(lst);
|
||||
// console.log(lst);
|
||||
let ignoreFields = ['remoteVerify', 'anyRule', 'columnKey'];
|
||||
lst.forEach((item: any) => {
|
||||
// 必填那一项转换
|
||||
|
||||
@ -3,54 +3,84 @@
|
||||
<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="800px">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit />
|
||||
</el-icon>
|
||||
<span> 编辑规则 </span>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
|
||||
<el-row :gutter="35">
|
||||
<el-form-item v-show="false">
|
||||
<el-form-item style="display: none !important;">
|
||||
<el-input v-model="state.ruleForm.id" />
|
||||
</el-form-item>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="验证类型" prop="type">
|
||||
<el-form-item label="">
|
||||
本字段的数据库类型是:【{{ state.column.dataType }}】,.Net类型是:【{{ state.column.netType }}】
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="验证类型" prop="type" :rules="rules.type">
|
||||
<el-select v-model="state.ruleForm.type" placeholder="请选择类型" @change="handleTypeChange">
|
||||
<el-option v-for="(item, index) in validTypeData" :key="index" :label="item.name" :value="item.code" />
|
||||
<el-option v-for="(item, index) in validTypeData" :key="index" :label="item.name"
|
||||
:value="item.code" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="state.ruleForm.type == 'pattern'">
|
||||
<el-form-item label="提示信息" prop="message">
|
||||
<el-input v-model="state.ruleForm.message" placeholder="请输入提示信息" maxlength="128" show-word-limit clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="state.ruleForm.type == 'length'">
|
||||
<el-form-item label="最小值" prop="min">
|
||||
<el-input-number v-model="state.ruleForm.min" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="state.ruleForm.type == 'length'">
|
||||
<el-form-item label="最大值" prop="max">
|
||||
<el-input-number v-model="state.ruleForm.max" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="state.ruleForm.type == 'pattern'">
|
||||
<el-form-item label="正则式" prop="pattern">
|
||||
<el-input v-model="state.ruleForm.pattern" placeholder="请输入正则表达式">
|
||||
<template #append>
|
||||
<el-button @click="openPatternDialog">选择正则</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"
|
||||
v-if="state.ruleForm.type == 'pattern'">
|
||||
<el-form-item label="数据类型" prop="dataType">
|
||||
<el-radio-group v-model="state.ruleForm.dataType">
|
||||
<el-radio v-for="(item, index) in dataTypeData" :key="index" :value="item.code" :label="item.name"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<template v-if="state.ruleForm.type == 'length'&&(state.column.netType.includes('int')||state.column.netType.includes('long')||state.column.netType.includes('string'))">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="最小值" prop="min" :rules="rules.min">
|
||||
<el-input-number v-model="state.ruleForm.min" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="最大值" prop="max" :rules="rules.max">
|
||||
<el-input-number v-model="state.ruleForm.max" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template v-if="state.ruleForm.type == 'length'&&(state.column.netType.includes('decimal')||state.column.netType.includes('float')||state.column.netType.includes('double'))">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="最小值" prop="min" :rules="rules.minDecimal">
|
||||
<el-input-number v-model="state.ruleForm.min" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="最大值" prop="max" :rules="rules.maxDecimal">
|
||||
<el-input-number v-model="state.ruleForm.max" :min="0" :max="100000" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template v-if="state.ruleForm.type == 'length'&&state.column.netType.includes('DateTime')">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="起始日期" prop="min" :rules="rules.minDate">
|
||||
<el-date-picker v-model="state.ruleForm.min" type="date" format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择起始日期" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="结束日期" prop="max" :rules="rules.maxDate">
|
||||
<el-date-picker v-model="state.ruleForm.max" type="date" format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择结束日期" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template v-if="state.ruleForm.type == 'pattern'">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="提示信息" prop="message" :rules="rules.message">
|
||||
<el-input v-model="state.ruleForm.message" placeholder="请输入提示信息" maxlength="128"
|
||||
show-word-limit clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="正则式" prop="pattern" :rules="rules.pattern">
|
||||
<el-input v-model="state.ruleForm.pattern" placeholder="请输入正则表达式">
|
||||
<template #append>
|
||||
<el-button @click="openPatternDialog">选择正则</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -93,22 +123,52 @@ const rules = ref<FormRules>({
|
||||
],
|
||||
min: [
|
||||
{
|
||||
type: 'integer',
|
||||
type:'integer',
|
||||
required: true,
|
||||
pattern: /[^\d]/g,
|
||||
message: '请输入正确的数字',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
minDecimal: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入正确的数字',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
minDate: [
|
||||
{
|
||||
required: true,
|
||||
pattern: /^\d{4}-\d{2}-\d{2}$/,
|
||||
message: '请选择起始日期',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
max: [
|
||||
{
|
||||
type: 'integer',
|
||||
type:'integer',
|
||||
required: true,
|
||||
pattern: /[^\d]/g,
|
||||
message: '请输入正确的数字',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
maxDecimal: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入正确的数字',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
maxDate: [
|
||||
{
|
||||
required: true,
|
||||
pattern: /^\d{4}-\d{2}-\d{2}$/,
|
||||
message: '请选择结束日期',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
message: [
|
||||
{
|
||||
required: true,
|
||||
@ -117,13 +177,6 @@ const rules = ref<FormRules>({
|
||||
},
|
||||
],
|
||||
pattern: [{ required: true, message: '请输入正则表达式', trigger: 'blur' }],
|
||||
// dataType: [
|
||||
// {
|
||||
// required: true,
|
||||
// message: '请选择数据类型',
|
||||
// trigger: 'change',
|
||||
// },
|
||||
// ]
|
||||
});
|
||||
const ruleFormRef = ref();
|
||||
const patternDialogRef = ref();
|
||||
@ -134,24 +187,22 @@ const validTypeData = ref([
|
||||
{ code: 'pattern', name: '正则模式' },
|
||||
{ code: 'length', name: '长度限制' },
|
||||
]);
|
||||
// const dataTypeData = ref([
|
||||
// { code: 'string', name: '字符串' },
|
||||
// { code: 'integer', name: '数字' },
|
||||
// ]);
|
||||
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
loading: false,
|
||||
ruleForm: {} as any,
|
||||
id: 0,
|
||||
column: {} as any,
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (id: number) => {
|
||||
const openDialog = (row: any) => {
|
||||
// const data = JSON.parse(JSON.stringify(row));
|
||||
// state.ruleForm = data;
|
||||
state.id = id;
|
||||
state.id = row.id;
|
||||
state.isShowDialog = true;
|
||||
state.column = row;
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
|
||||
@ -13,8 +13,8 @@
|
||||
<el-table :data="state.tableData" style="width: 100%" v-loading="state.loading" border>
|
||||
<el-table-column prop="type" label="类型" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="message" label="提示信息" minWidth="180" show-overflow-tooltip />
|
||||
<el-table-column prop="max" label="最大值" minWidth="100" show-overflow-tooltip />
|
||||
<el-table-column prop="min" label="最小值" minWidth="100" show-overflow-tooltip />
|
||||
<el-table-column prop="max" label="最大值" minWidth="100" show-overflow-tooltip />
|
||||
<el-table-column prop="pattern" label="正则式" minWidth="120" show-overflow-tooltip />
|
||||
<el-table-column prop="action" label="操作" width="100" align="center" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
@ -45,7 +45,9 @@ const state = reactive({
|
||||
loading: false,
|
||||
tableData: [] as any,
|
||||
title: '',
|
||||
column: {} as any,
|
||||
});
|
||||
const column=ref();
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
@ -58,11 +60,13 @@ const openDialog = (row: any) => {
|
||||
// state.tableData = row.rules;
|
||||
state.id = row.id;
|
||||
state.isShowDialog = true;
|
||||
state.column = row;
|
||||
// console.log('column',row);
|
||||
};
|
||||
|
||||
// 打开验证规则弹窗
|
||||
const openRuleDialog = () => {
|
||||
ruleDialogRef.value.openDialog(state.id);
|
||||
ruleDialogRef.value.openDialog(state.column);
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
|
||||
Loading…
Reference in New Issue
Block a user