This commit is contained in:
zuohuaijun 2025-07-27 15:12:56 +08:00
commit 0c4683cd69
27 changed files with 295 additions and 734 deletions

View File

@ -36,7 +36,7 @@ public partial class @(@Model.ClassName)Mid
/// <param name="_@(@Model.LowerClassName)Rep"></param>
/// <param name="input"></param>
/// <returns></returns>
public static ISugarQueryable<@(@Model.ClassName)Output> GetQuery(SqlSugarRepository<@(@Model.ClassName)> _@(@Model.LowerClassName)Rep,Page@(@Model.ClassName)Input input)
public static ISugarQueryable<@(@Model.ClassName)> GetQuery(SqlSugarRepository<@(@Model.ClassName)> _@(@Model.LowerClassName)Rep,Page@(@Model.ClassName)Input input)
{
var sysCacheService = App.GetRequiredService<SysCacheService>();
var db = App.GetRequiredService<ISqlSugarClient>();
@ -80,7 +80,6 @@ public partial class @(@Model.ClassName)Mid
@:.OrderBy(u => u.OrderNo)
}
.Select<@(@Model.ClassName)Output>()
@if(!string.IsNullOrEmpty(Model.TreeName)){
@:.Mapper(c => c.Name= c.@(@Model.TreeName).ToString())
}

View File

@ -10,7 +10,7 @@ namespace @Model.NameSpace;
/// HJ:这里做优化 如果是富文本不传入
/// @(@Model.BusName)输出参数
/// </summary>
public partial class @(@Model.ClassName)Output
public partial class Page@(@Model.ClassName)Output
{
@foreach (var column in Model.TableField){
@ -74,5 +74,27 @@ if (@column.EffectType == "ApiTreeSelector"){
}
/// <summary>
/// HJ:这里用的标准的Dto,如果有特殊需要可以在Dto中添加
/// @(@Model.BusName)导入导出输出参数
/// </summary>
public partial class @(@Model.ClassName)Dto
{
@foreach (var column in Model.TableField){
@:/// <summary>
@:/// @column.ColumnComment
@:/// </summary>
@:[ImporterHeader(Name = "@(column.ColumnComment)")]
@:[ExporterHeader(DisplayName = "@(column.ColumnComment)", IsBold = true)]
@:public @column.NetType @column.PropertyName { get; set; }
@:
}
}

View File

@ -84,9 +84,9 @@ public partial class @(@Model.ClassName)Service : IDynamicApiController, ITransi
/// <returns></returns>
[ApiDescriptionSettings(Name = "Page", Description = "分页查询", Order = 1000), HttpPost]
[DisplayName("分页查询@(@Model.BusName)")]
public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(Page@(@Model.ClassName)Input input)
public async Task<SqlSugarPagedList<Page@(@Model.ClassName)Output>> Page(Page@(@Model.ClassName)Input input)
{
var list = await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
var list = await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).Select<Page@(@Model.ClassName)Output>().OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
return list;
}
@ -175,6 +175,57 @@ if (@column.ColumnKey == "True"){
}
}
}
/// <summary>
/// 导入@(@Model.BusName)
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[DisplayName("导入@(@Model.BusName)")]
public async Task Import([Required] IFormFile file)
{
using MemoryStream stream = new();
await file.CopyToAsync(stream);
var res = await new ExcelImporter().Import<@(@Model.ClassName)Dto>(stream);
if (res == null || res.Exception != null)
throw Oops.Oh(res.Exception);
var importData = res.Data.ToList();
// 按照编码条件进行批量更新或者新增
await _@(@Model.LowerClassName)Rep.Context.Storageable(importData.Adapt<List<@(@Model.ClassName)>>()).WhereColumns(u => u.Id).ExecuteCommandAsync();
}
/// <summary>
/// 导出@(@Model.BusName)
/// </summary>
/// <returns></returns>
[DisplayName("导出@(@Model.BusName)")]
public async Task<IActionResult> Export(PageMonkeyArticleInput input)
{
var list = await @(@Model.ClassName)Mid.GetQuery(_monkeyArticleRep, input).Select<@(@Model.ClassName)Dto>().OrderBuilder(input).ToListAsync();
if (list == null || list.Count < 1)
throw Oops.Oh("数据为空,导出已取消");
var res = await new ExcelExporter().ExportAsByteArray(list);
return new FileStreamResult(new MemoryStream(res), "application/octet-stream") { FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") + "@(@Model.BusName)列表.xlsx" };
}
/// <summary>
/// 下载导入@(@Model.BusName)模板
/// </summary>
/// <returns></returns>
[DisplayName("下载导入@(@Model.BusName)模板")]
public async Task<IActionResult> DownloadTemplate()
{
var res = await new ExcelImporter().GenerateTemplateBytes<@(@Model.ClassName)Dto>();
return new FileStreamResult(new MemoryStream(res), "application/octet-stream") { FileDownloadName = "@(@Model.BusName)导入模板.xlsx" };
}
/*HJ:不要,有分页了,列表多余的
/// <summary>
/// 获取@(@Model.BusName)列表

View File

@ -23,8 +23,8 @@
<el-row :gutter="10">
@if(Model.QueryWhetherList.Count > 0){
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5">
<el-form-item :label="$t('message.codegen.searchKey')" prop="searchKey">
<el-input v-model="state.queryParams.searchKey" :placeholder="$t('message.codegen.searchKeyInput')" clearable @@keyup.enter.native="handleQuery(true)" />
<el-form-item :label="$t('message.list.searchKey')" prop="searchKey">
<el-input v-model="state.queryParams.searchKey" :placeholder="$t('message.list.searchKeyInput')" clearable @@keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
foreach (var column in Model.QueryWhetherList) {
@ -37,13 +37,13 @@
} else if(@column.EffectType == "InputNumber") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')">
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" />
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
} else if(@column.EffectType == "ForeignKey") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')">
<el-select filterable="" v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable>
<el-select filterable="" v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable>
<el-option v-for="(item,index) in @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList" :key="index" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
@ -51,7 +51,7 @@
} else if(@column.EffectType == "DictSelector") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
@ -59,7 +59,7 @@
} else if(@column.EffectType == "EnumSelector") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
@ -70,7 +70,7 @@
<el-cascader
@:options="@LowerFirstLetter(@column.FkEntityName)TreeData"
@:props="{ checkStrictly: true, emitPath: false, value: '@LowerFirstLetter(@column.ValueColumn)', label: '@LowerFirstLetter(@column.DisplayColumn)' }"
:placeholder="$t('message.codegen.pleaseChoose')+ $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
:placeholder="$t('message.list.pleaseChoose')+ $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
clearable=""
class="w100"
v-model="state.queryParams.@(@column.LowerPropertyName)"
@ -86,9 +86,9 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@if(@column.QueryType == "~"){
@:<el-date-picker type="daterange" v-model="state.queryParams.@(@column.LowerPropertyName)Range" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="$t('message.codegen.beginTime')" :end-placeholder="$t('message.codegen.endTime')" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
@:<el-date-picker type="daterange" v-model="state.queryParams.@(@column.LowerPropertyName)Range" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="$t('message.list.beginTime')" :end-placeholder="$t('message.list.endTime')" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
} else {
@:<el-date-picker :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" value-format="YYYY/MM/DD" v-model="state.queryParams.@(@column.LowerPropertyName)" />
@:<el-date-picker :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" value-format="YYYY/MM/DD" v-model="state.queryParams.@(@column.LowerPropertyName)" />
}
</el-form-item>
</el-col>
@ -103,10 +103,10 @@
<el-row>
<el-col>
<el-button-group>
<el-button type="primary" icon="ele-Search" @@click="handleQuery(true)" v-auth="'@(@Model.LowerClassName)/page'" :loading="options.loading"> {{ $t('message.codegen.search') }} </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> {{ $t('message.codegen.refresh') }} </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.codegen.zoomIn') }} </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.codegen.zoomOut') }} </el-button>
<el-button type="primary" icon="ele-Search" @@click="handleQuery(true)" v-auth="'@(@Model.LowerClassName)/page'" :loading="options.loading"> {{ $t('message.list.search') }} </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> {{ $t('message.list.reset') }} </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.list.zoomIn') }} </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.list.zoomOut') }} </el-button>
</el-button-group>
</el-col>
</el-row>
@ -115,7 +115,13 @@
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName)/add'"> {{ $t('message.codegen.add') }} </el-button>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName)/add'"> {{ $t('message.list.add') }} </el-button>
<el-button-group type="primary" style="padding-left: 12px">
<el-button plain icon="ele-Upload" @@click="importData" v-auth="'@(@Model.LowerClassName)/import'"> {{ $t('message.list.import') }} </el-button>
<el-button plain icon="ele-Download" @@click="exportData" v-auth="'@(@Model.LowerClassName)/export'"> {{ $t('message.list.export') }} </el-button>
<el-button plain icon="ele-FolderOpened" @@click="downloadTemplate"> {{ $t('message.list.downloadTemplate') }} </el-button>
</el-button-group>
</template>
<template #toolbar_tools> </template>
<template #empty>
@ -132,7 +138,7 @@
@::height="60"
@:trigger="hover">
@:<template #reference>
@:<el-tag>{{ $t('message.codegen.seeFile') }}</el-tag>
@:<el-tag>{{ $t('message.list.seeFile') }}</el-tag>
@:</template>
@:<template #default>
@:<el-image
@ -144,7 +150,7 @@
@:preview-teleported=""/>
@:</template>
@:</el-popover>
@:<el-tag v-else type="info">{{ $t('message.codegen.noFile') }}</el-tag>
@:<el-tag v-else type="info">{{ $t('message.list.noFile') }}</el-tag>
@:</template>
} else if(@column.EffectType == "ForeignKey") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@ -156,8 +162,8 @@
@:</template>
} else if(@column.EffectType == "Switch") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-tag v-if="row.@(@column.LowerPropertyName)"> {{ $t('message.codegen.yes') }} </el-tag>
@:<el-tag type="danger" v-else> {{ $t('message.codegen.no') }} </el-tag>
@:<el-tag v-if="row.@(@column.LowerPropertyName)"> {{ $t('message.list.yes') }} </el-tag>
@:<el-tag type="danger" v-else> {{ $t('message.list.no') }} </el-tag>
@:</template>
} else if(@column.EffectType == "ConstSelector") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@ -183,10 +189,10 @@
<el-button icon="ele-Printer" size="small" text type="primary" @@click="handlePrint(row)" v-auth="'@(@Model.LowerClassName)/print'" />
</el-tooltip>
}
<el-tooltip :content="$t('message.codegen.edit')" placement="top">
<el-tooltip :content="$t('message.list.edit')" placement="top">
<el-button icon="ele-Edit" size="small" text type="primary" @@click="handleEdit(row)" v-auth="'@(@Model.LowerClassName)/update'" />
</el-tooltip>
<el-tooltip :content="$t('message.codegen.delete')" placement="top">
<el-tooltip :content="$t('message.list.delete')" placement="top">
<el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName)/delete'" />
</el-tooltip>
</template>
@ -195,6 +201,34 @@
@if(@Model.PrintType != "off"){
@:<PrintDialog ref="printDialogRef" :title="state.title" @@reloadTable="handleQuery" />
}
<el-dialog v-model="state.uploadVisible" :lock-scroll="false" draggable width="400px">
<template #header>
<div style="color: #fff">
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-UploadFilled /> </el-icon>
<span> {{ $t('message.list.import') }} </span>
</div>
</template>
<div>
<el-upload ref="uploadRef" drag :auto-upload="false" :limit="1" :file-list="state.fileList" action="" :on-change="handleChange" accept=".xlsx">
<el-icon class="el-icon--upload">
<ele-UploadFilled />
</el-icon>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip">请上传大小不超过 10MB 的文件</div>
</template>
</el-upload>
</div>
<template #footer>
<span class="dialog-footer">
<el-button icon="ele-CircleCloseFilled" @@click="state.uploadVisible = false">{{ $t('message.list.cancelButtonText') }}</el-button>
<el-button type="primary" icon="ele-CircleCheckFilled" @@click="uploadFile">{{ $t('message.list.confirmButtonText') }}</el-button>
</span>
</template>
</el-dialog>
<EditDialog ref="editDialogRef" :title="state.title" @@reloadTable="handleQuery" />
</template>
@ -209,6 +243,7 @@ import { auth } from '/@@/utils/authFunction';
import EditDialog from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/edit.vue';
import ModifyRecord from '/@@/components/table/modifyRecord.vue';
import { useI18n } from 'vue-i18n';
import { downloadByData, getFileName } from '/@@/utils/download';
@if(@Model.TableField.Any(x=>x.EffectType == "DatePicker")){
@:// 日历控件
@ -283,6 +318,9 @@ const state = reactive({
totalSum:[] as any,
visible: false,
title: '',
uploadVisible: false,
fileList: [] as any,
});
// 本地存储参数
@ -308,7 +346,7 @@ const checkTableColumnVisible = (tableColumnName: any) => {
id: '@(@Model.ClassName)',
name: t('message.@Model.LowerClassName.@Model.LowerClassName'),
columns: [
{ type: 'seq', title: t('message.codegen.number'), width: 60, fixed: 'left' },
{ type: 'seq', title: t('message.list.number'), width: 60, fixed: 'left' },
@foreach (var column in Model.TableField) {
var whethersortable =column.WhetherSortable == "Y" ? "sortable: true" : "sortable: false";
if(@column.WhetherTable == "Y") {
@ -336,9 +374,9 @@ const checkTableColumnVisible = (tableColumnName: any) => {
}
}
@if(@Model.TableField.Any(t => t.ColumnName == "CreateTime") && @Model.TableField.Any(t => t.ColumnName == "UpdateTime") && @Model.TableField.Any(t => t.ColumnName == "CreateUserId")){
@:{ field: 'record', title: t('message.codegen.record'), width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
@:{ field: 'record', title: t('message.list.record'), width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
}
{ field: 'buttons', title: t('message.codegen.action'), fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } },
{ field: 'buttons', title: t('message.list.action'), fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } },
],
@if(@Model.TableField.Any(x=>x.Statistical == "Y")){
@:footerMethod: ({ columns, data }) => {
@ -438,7 +476,7 @@ const resetQuery = async () => {
// 打开新增页面
const handleAdd = () => {
state.title = t('message.codegen.add')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
state.title = t('message.list.add')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
let data = {
@foreach (var column in Model.TableField){
if(@column.WhetherAddUpdate == "Y"&&@column.DefaultValue!=null){
@ -456,14 +494,14 @@ const handleAdd = () => {
// 打开编辑页面
const handleEdit = (row: any) => {
state.title = t('message.codegen.edit')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
state.title = t('message.list.edit')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
editDialogRef.value?.openDialog(row);
};
@if(@Model.PrintType != "off") {
@:// 打开打印页面
@:const handlePrint = async (row: any) => {
@:state.title = t('message.codegen.print')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
@:state.title = t('message.list.print')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
@if(@Model.PrintType != "off"){
if (@Model.IsApiService) {
@:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName');
@ -486,9 +524,9 @@ const handleEdit = (row: any) => {
// 删除
const handleDelete = (row: any) => {
ElMessageBox.confirm(t('message.codegen.confirmDelete')+t('message.@Model.LowerClassName.@Model.LowerClassName')+`:【${row.id}】?`, t('message.codegen.tips'), {
confirmButtonText: t('message.codegen.submit'),
cancelButtonText: t('message.codegen.cancel'),
ElMessageBox.confirm(t('message.list.confirmDelete')+t('message.@Model.LowerClassName.@Model.LowerClassName')+`:【${row.id}】?`, t('message.list.tips'), {
confirmButtonText: t('message.list.submit'),
cancelButtonText: t('message.list.cancel'),
type: 'warning',
}).then(async () => {
@if (@Model.IsApiService) {
@ -497,7 +535,7 @@ const handleDelete = (row: any) => {
@:await delete@(@Model.ClassName)(row);
}
await handleQuery();
ElMessage.success(t('message.codegen.deleteSuccess'));
ElMessage.success(t('message.list.deleteSuccess'));
})
.catch(() => {});
};
@ -558,6 +596,47 @@ const handleDelete = (row: any) => {
}
}
// 通过onChanne方法获得文件列表
const handleChange = (file: any, fileList: []) => {
state.fileList = fileList;
};
// 上传
const uploadFile = async () => {
if (state.fileList.length < 1) return;
state.uploadVisible = false;
options.loading = true;
await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)ImportPostForm(state.fileList[0].raw);
handleQuery();
ElMessage.success('上传成功');
state.fileList = [];
options.loading = false;
};
// 导入
const importData = () => {
state.uploadVisible = true;
};
// 导出
const exportData = async () => {
options.loading = true;
var res = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)ExportPost(state.queryParams, { responseType: 'blob' });
options.loading = false;
var fileName = getFileName(res.headers);
downloadByData(res.data as any, fileName);
};
// 下载模板
const downloadTemplate = async () => {
var res = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)DownloadTemplatePost({ responseType: 'blob' });
var fileName = getFileName(res.headers);
downloadByData(res.data as any, fileName);
};
// 与父组件的交互逻辑
const emits = defineEmits(['list-click']);
const listClick = (row: any,column:any) => {

View File

@ -23,8 +23,8 @@
<el-row :gutter="10">
@if(Model.QueryWhetherList.Count > 0){
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5">
<el-form-item :label="$t('message.codegen.searchKey')" prop="searchKey">
<el-input v-model="state.queryParams.searchKey" :placeholder="$t('message.codegen.searchKeyInput')" clearable @@keyup.enter.native="handleQuery(true)" />
<el-form-item :label="$t('message.list.searchKey')" prop="searchKey">
<el-input v-model="state.queryParams.searchKey" :placeholder="$t('message.list.searchKeyInput')" clearable @@keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
foreach (var column in Model.QueryWhetherList) {
@ -37,13 +37,13 @@
} else if(@column.EffectType == "InputNumber") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')">
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" />
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
} else if(@column.EffectType == "ForeignKey") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')">
<el-select filterable="" v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable>
<el-select filterable="" v-model="state.queryParams.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable>
<el-option v-for="(item,index) in @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList" :key="index" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
@ -51,7 +51,7 @@
} else if(@column.EffectType == "DictSelector") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
@ -59,7 +59,7 @@
} else if(@column.EffectType == "EnumSelector") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
@ -70,7 +70,7 @@
<el-cascader
@:options="@LowerFirstLetter(@column.FkEntityName)TreeData"
@:props="{ checkStrictly: true, emitPath: false, value: '@LowerFirstLetter(@column.ValueColumn)', label: '@LowerFirstLetter(@column.DisplayColumn)' }"
:placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
:placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
clearable=""
class="w100"
v-model="state.queryParams.@(@column.LowerPropertyName)"
@ -86,9 +86,9 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@if(@column.QueryType == "~"){
@:<el-date-picker type="daterange" v-model="state.queryParams.@(@column.LowerPropertyName)Range" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="$t('message.codegen.beginTime')" :end-placeholder="$t('message.codegen.endTime')" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
@:<el-date-picker type="daterange" v-model="state.queryParams.@(@column.LowerPropertyName)Range" value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="$t('message.list.beginTime')" :end-placeholder="$t('message.list.endTime')" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
} else {
@:<el-date-picker :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" value-format="YYYY/MM/DD" v-model="state.queryParams.@(@column.LowerPropertyName)" />
@:<el-date-picker :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" value-format="YYYY/MM/DD" v-model="state.queryParams.@(@column.LowerPropertyName)" />
}
</el-form-item>
</el-col>
@ -103,10 +103,10 @@
<el-row>
<el-col>
<el-button-group>
<el-button type="primary" icon="ele-Search" @@click="handleQuery(true)" v-auth="'@(@Model.LowerClassName)/page'" :loading="options.loading"> {{ $t('message.codegen.search') }} </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> {{ $t('message.codegen.refresh') }} </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.codegen.zoomIn') }} </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.codegen.zoomOut') }} </el-button>
<el-button type="primary" icon="ele-Search" @@click="handleQuery(true)" v-auth="'@(@Model.LowerClassName)/page'" :loading="options.loading"> {{ $t('message.list.search') }} </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> {{ $t('message.list.refresh') }} </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.list.zoomIn') }} </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> {{ $t('message.list.zoomOut') }} </el-button>
</el-button-group>
</el-col>
</el-row>
@ -115,10 +115,10 @@
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName)/add'"> {{ $t('message.codegen.add') }} </el-button>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName)/add'"> {{ $t('message.list.add') }} </el-button>
<el-button-group style="padding-left: 12px">
<el-button type="primary" icon="ele-Expand" @@click="handleExpand"> {{ $t('message.codegen.expand') }} </el-button>
<el-button type="primary" icon="ele-Fold" @@click="handleFold"> {{ $t('message.codegen.fold') }} </el-button>
<el-button type="primary" icon="ele-Expand" @@click="handleExpand"> {{ $t('message.list.expand') }} </el-button>
<el-button type="primary" icon="ele-Fold" @@click="handleFold"> {{ $t('message.list.fold') }} </el-button>
</el-button-group>
</template>
<template #toolbar_tools> </template>
@ -137,7 +137,7 @@
@::height="60"
@:trigger="hover">
@:<template #reference>
@:<el-tag>{{ $t('message.codegen.seeFile') }}</el-tag>
@:<el-tag>{{ $t('message.list.seeFile') }}</el-tag>
@:</template>
@:<template #default>
@:<el-image
@ -149,7 +149,7 @@
@:preview-teleported=""/>
@:</template>
@:</el-popover>
@:<el-tag v-else type="info">{{ $t('message.codegen.noFile') }}</el-tag>
@:<el-tag v-else type="info">{{ $t('message.list.noFile') }}</el-tag>
@:</template>
} else if(@column.EffectType == "ForeignKey") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@ -161,8 +161,8 @@
@:</template>
} else if(@column.EffectType == "Switch") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-tag v-if="row.@(@column.LowerPropertyName)"> {{ $t('message.codegen.yes') }} </el-tag>
@:<el-tag type="danger" v-else> {{ $t('message.codegen.no') }} </el-tag>
@:<el-tag v-if="row.@(@column.LowerPropertyName)"> {{ $t('message.list.yes') }} </el-tag>
@:<el-tag type="danger" v-else> {{ $t('message.list.no') }} </el-tag>
@:</template>
} else if(@column.EffectType == "ConstSelector") {
@:<template #row_@(@column.LowerPropertyName)="{ row }">
@ -188,10 +188,10 @@
<el-button icon="ele-Printer" size="small" text type="primary" @@click="handlePrint(row)" v-auth="'@(@Model.LowerClassName)/print'" />
</el-tooltip>
}
<el-tooltip :content="$t('message.codegen.edit')" placement="top">
<el-tooltip :content="$t('message.list.edit')" placement="top">
<el-button icon="ele-Edit" size="small" text type="primary" @@click="handleEdit(row)" v-auth="'@(@Model.LowerClassName)/update'" />
</el-tooltip>
<el-tooltip :content="$t('message.codegen.delete')" placement="top">
<el-tooltip :content="$t('message.list.delete')" placement="top">
<el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName)/delete'" />
</el-tooltip>
</template>
@ -305,7 +305,7 @@ const checkTableColumnVisible = (tableColumnName: any) => {
id: '@(@Model.ClassName)',
name: t('message.@Model.LowerClassName.@Model.LowerClassName'),
columns: [
{ type: 'seq', title: t('message.codegen.number'), width: 60, fixed: 'left' },
{ type: 'seq', title: t('message.list.number'), width: 60, fixed: 'left' },
@foreach (var column in Model.TableField) {
var whethersortable =column.WhetherSortable == "Y" ? "sortable: true" : "sortable: false";
var treetable =((Model.TabType == "Tree"||Model.TabType == "OnlyTree")&&column.ColumnName==Model.TreeName) ? ", treeNode: true, align: 'left'" : "";
@ -334,9 +334,9 @@ const checkTableColumnVisible = (tableColumnName: any) => {
}
}
@if(@Model.TableField.Any(t => t.ColumnName == "CreateTime") && @Model.TableField.Any(t => t.ColumnName == "UpdateTime") && @Model.TableField.Any(t => t.ColumnName == "CreateUserId")){
@:{ field: 'record',title: t('message.codegen.record'), width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
@:{ field: 'record',title: t('message.list.record'), width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
}
{ field: 'buttons',title: t('message.codegen.action'), fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } },
{ field: 'buttons',title: t('message.list.action'), fixed: 'right', width: 180, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid配置参数(此处可覆写任何参数)参考vxe-table官方文档
@ -413,7 +413,7 @@ const resetQuery = async () => {
// 打开新增页面
const handleAdd = () => {
state.title = t('message.codegen.add')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
state.title = t('message.list.add')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
let data = {
[state.key]: state.val,
@foreach (var column in Model.TableField){
@ -432,14 +432,14 @@ const handleAdd = () => {
// 打开编辑页面
const handleEdit = (row: any) => {
state.title = t('message.codegen.edit')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
state.title = t('message.list.edit')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
editDialogRef.value?.openDialog(row);
};
@if(@Model.PrintType != "off") {
@:// 打开打印页面
@:const handlePrint = async (row: any) => {
@:state.title = t('message.codegen.print')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
@:state.title = t('message.list.print')+t('message.@Model.LowerClassName.@Model.LowerClassName') ;
@if(@Model.PrintType != "off"){
if (@Model.IsApiService) {
@:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName');
@ -462,9 +462,9 @@ const handleEdit = (row: any) => {
// 删除
const handleDelete = (row: any) => {
ElMessageBox.confirm(t('message.codegen.confirmDelete')+t('message.@Model.LowerClassName.@Model.LowerClassName')+`:【${row.id}】?`, t('message.codegen.tips'), {
confirmButtonText: t('message.codegen.submit'),
cancelButtonText: t('message.codegen.cancel'),
ElMessageBox.confirm(t('message.list.confirmDelete')+t('message.@Model.LowerClassName.@Model.LowerClassName')+`:【${row.id}】?`, t('message.list.tips'), {
confirmButtonText: t('message.list.submit'),
cancelButtonText: t('message.list.cancel'),
type: 'warning',
}).then(async () => {
@if (@Model.IsApiService) {
@ -473,7 +473,7 @@ const handleDelete = (row: any) => {
@:await delete@(@Model.ClassName)(row);
}
await handleQuery();
ElMessage.success(t('message.codegen.deleteSuccess'));
ElMessage.success(t('message.list.deleteSuccess'));
})
.catch(() => {});
};

View File

@ -34,7 +34,7 @@
if(@column.EffectType == "ForeignKey"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-select clearable filterable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-select clearable filterable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@if(column.NetType.StartsWith("int")||column.NetType.StartsWith("long")){
@:<el-option v-for="(item,index) in @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList" :key="index" :value="parseInt(item.value)" :label="item.label" />
}
@ -53,7 +53,7 @@
<el-cascader
@:options="@LowerFirstLetter(@column.FkEntityName)TreeData"
@:props="{ checkStrictly: true, emitPath: false, value: '@LowerFirstLetter(@column.ValueColumn)', label: '@LowerFirstLetter(@column.DisplayColumn)' }"
:placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
:placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"
clearable=""
class="w100"
v-model="state.ruleForm.@(@column.LowerPropertyName)"
@ -68,19 +68,19 @@
}else if(@column.EffectType == "Input"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" :placeholder="$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" maxlength="@(@column.ColumnLength)" show-word-limit clearable />
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" :placeholder="$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" maxlength="@(@column.ColumnLength)" show-word-limit clearable />
</el-form-item>
</el-col>
}else if(@column.EffectType == "InputNumber"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-input-number v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable />
@:<el-input-number v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" clearable />
</el-form-item>
</el-col>
}else if(@column.EffectType == "InputTextArea"){
@:<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" :placeholder="$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" type="textarea"
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" :placeholder="$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')" type="textarea"
@if(@column.ColumnLength>0){
@:maxlength="@(@column.ColumnLength)"
}
@ -90,7 +90,7 @@
}else if(@column.EffectType == "DictSelector"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="@(@column.NetType.StartsWith("string") ? "item.code" : "Number(item.value)")" :label="`${item.label||''} [${item.code}] ${item.value}`"></el-option>
</el-select>
</el-form-item>
@ -98,7 +98,7 @@
}else if(@column.EffectType == "ConstSelector"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-option v-for="(item,index) in getConstType('@column.DictTypeCode')" :key="index" :label="item.name" :value="@(@column.NetType.StartsWith("string") ? "item.code" : "Number(item.value)")">{{ item.name }}</el-option>
</el-select>
</el-form-item>
@ -113,7 +113,7 @@
@if(@column.NetType.StartsWith("string")){
@:active-value="1" inactive-value="0"
}
@::active-text="$t('message.codegen.yes')" :inactive-text="$t('message.codegen.no')" />
@::active-text="$t('message.list.yes')" :inactive-text="$t('message.list.no')" />
</el-form-item>
</el-col>
}else if(@column.EffectType == "DatePicker"){
@ -141,7 +141,7 @@
}else if(@column.EffectType == "EnumSelector"){
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item :label="$t('message.@Model.LowerClassName.@column.LowerPropertyName')" prop="@(@column.LowerPropertyName)">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.codegen.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-select clearable v-model="state.ruleForm.@(@column.LowerPropertyName)" :placeholder="$t('message.list.pleaseChoose') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')">
@:<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="@(@column.NetType.StartsWith("string") ? "item.value" : "Number(item.value)")" :label="`${item.label||''} (${item.code}) [${item.value}]`"></el-option>
</el-select>
</el-form-item>
@ -162,8 +162,8 @@
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button icon="ele-CircleCloseFilled" @@click="cancel">{{ $t('message.codegen.cancel') }}</el-button>
<el-button type="primary" icon="ele-CircleCheckFilled" @@click="submit">{{ $t('message.codegen.submit') }}</el-button>
<el-button icon="ele-CircleCloseFilled" @@click="cancel">{{ $t('message.list.cancel') }}</el-button>
<el-button type="primary" icon="ele-CircleCheckFilled" @@click="submit">{{ $t('message.list.submit') }}</el-button>
</span>
</template>
</el-dialog>
@ -280,18 +280,18 @@ const rules = ref<FormRules>({
trigger="change";
}
if(rule.Type=="required"){
@:{required: true, message:t('message.codegen.pleaseInputTitle') +t('message.@Model.LowerClassName.@column.LowerPropertyName'), trigger: '@(@trigger)',},
@:{required: true, message:t('message.list.pleaseInputTitle') +t('message.@Model.LowerClassName.@column.LowerPropertyName'), trigger: '@(@trigger)',},
}else if(rule.Type=="array"){
@:{ type: 'array', required: true, message:"$t('message.codegen.pleaseInputTitle') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')'" , trigger: 'change', },
@:{ type: 'array', required: true, message:"$t('message.list.pleaseInputTitle') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')'" , trigger: 'change', },
}else if(rule.Type=="length"&&(column.EffectType=="Input"||column.EffectType == "InputTextArea")){
@:{ min: @(@rule.Min), max: @(@rule.Max), message: t('message.codegen.length') + '@(@rule.Min) - @(@rule.Max)', trigger: '@(@trigger)' },
@:{ min: @(@rule.Min), max: @(@rule.Max), message: t('message.list.length') + '@(@rule.Min) - @(@rule.Max)', trigger: '@(@trigger)' },
}else if(rule.Type=="pattern"){
@:{ pattern: @(@rule.Pattern), message: t('message.@Model.LowerClassName.@column.LowerPropertyName'), trigger: '@(@trigger)' },
}else if(rule.Type=="remote"){
@:{
@:asyncValidator: (rule, value, callback) => {
@:if (!value) {
@:callback(new Error("$t('message.codegen.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"));
@:callback(new Error("$t('message.list.pleaseInput') + $t('message.@Model.LowerClassName.@column.LowerPropertyName')"));
@:}
@:let param = {
@:fieldValue: value,
@ -301,10 +301,10 @@ const rules = ref<FormRules>({
@:if (res.data.result) {
@:callback();
@:} else {
@:callback(new Error("'@(@column.ColumnComment)'+ $t('message.codegen.disable') "));
@:callback(new Error("'@(@column.ColumnComment)'+ $t('message.list.disable') "));
@:}
@:}).finally(() => {
@:callback(new Error("$t('message.codegen.error')"));
@:callback(new Error("$t('message.list.error')"));
@:});
@:}, trigger: '@(@trigger)'
@:},

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Schlüsselwort',
searchKeyInput: 'Bitte geben Sie das Schlüsselwort für die ungefähre Suche ein',
search: 'Suchen',
refresh: 'Zurücksetzen',
zoomIn: 'Erweiterte Suche',
zoomOut: 'Ausblenden',
add: 'Hinzufügen',
print: 'Drucken',
seeFile: 'Datei anzeigen',
noFile: 'Keine Dateien vorhanden',
edit: 'Bearbeiten',
delete: 'Löschen',
number: 'Nummer',
record: 'Änderungsprotokoll',
action: 'Aktion',
cancel: 'Abbrechen',
submit: 'Bestätigen',
expand: 'Alle ausklappen',
fold: 'Alle einklappen',
pleaseChoose: 'Bitte wählen Sie',
pleaseInput: 'Bitte geben Sie ein',
pleaseInputTitle: 'Bitte wählen Sie mindestens eine',
error: 'Ein Fehler ist aufgetreten!',
disable: 'Nicht verfügbar!',
length: 'Die Länge sollte sein',
yes: 'Ja',
no: 'Nein',
beginTime: 'Startzeit',
endTime: 'Endzeit',
tips: 'Tipp',
confirmDelete: 'Löschen bestätigen',
deleteSuccess: 'Erfolgreich gelöscht!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Keyword',
searchKeyInput: 'Please enter fuzzy search keyword',
search: 'Search',
refresh: 'Reset',
zoomIn: 'Advanced Search',
zoomOut: 'Hide',
add: 'Add',
print: 'Print',
seeFile: 'View File',
noFile: 'No File',
edit: 'Edit',
delete: 'Delete',
number: 'Number',
record: 'Modification Record',
action: 'Action',
cancel: 'Cancel',
submit: 'Confirm',
expand: 'Expand All',
fold: 'Collapse All',
pleaseChoose: 'Please choose',
pleaseInput: 'Please input',
pleaseInputTitle: 'Please select at least one',
error: 'An error occurred!',
disable: 'Unavailable!',
length: 'Length should be',
yes: 'Yes',
no: 'No',
beginTime: 'Start Time',
endTime: 'End Time',
tips: 'Tips',
confirmDelete: 'Confirm Delete',
deleteSuccess: 'Deleted successfully!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Palabra clave',
searchKeyInput: 'Por favor ingrese la palabra clave de búsqueda aproximada',
search: 'Buscar',
refresh: 'Restablecer',
zoomIn: 'Búsqueda avanzada',
zoomOut: 'Ocultar',
add: 'Agregar',
print: 'Imprimir',
seeFile: 'Ver archivo',
noFile: 'No hay archivos',
edit: 'Editar',
delete: 'Eliminar',
number: 'Número',
record: 'Registro de modificaciones',
action: 'Acción',
cancel: 'Cancelar',
submit: 'Confirmar',
expand: 'Expandir todo',
fold: 'Contraer todo',
pleaseChoose: 'Por favor seleccione',
pleaseInput: 'Por favor ingrese',
pleaseInputTitle: 'Por favor seleccione al menos uno',
error: '¡Ocurrió un error!',
disable: '¡No disponible!',
length: 'La longitud debería ser',
yes: 'Sí',
no: 'No',
beginTime: 'Hora de inicio',
endTime: 'Hora de finalización',
tips: 'Consejos',
confirmDelete: 'Confirmar eliminación',
deleteSuccess: '¡Eliminado exitosamente!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Hakusana',
searchKeyInput: 'Syötä suoraan hakusanaa',
search: 'Etsi',
refresh: 'Nollaa',
zoomIn: 'Tarkennettu haku',
zoomOut: 'Piilota',
add: 'Lisää',
print: 'Tulosta',
seeFile: 'Näytä tiedosto',
noFile: 'Ei tiedostoja',
edit: 'Muokkaa',
delete: 'Poista',
number: 'Numero',
record: 'Muutosrekisteri',
action: 'Toiminto',
cancel: 'Peruuta',
submit: 'Vahvista',
expand: 'Laajenna kaikki',
fold: 'Kutsu kaikki',
pleaseChoose: 'Valitse',
pleaseInput: 'Syötä',
pleaseInputTitle: 'Valitse vähintään yksi',
error: 'Virhe tapahtui!',
disable: 'Ei käytössä!',
length: 'Pituus devrait olla',
yes: 'Kyllä',
no: 'Ei',
beginTime: 'Aloitusaika',
endTime: 'Lopetusaika',
tips: 'Vinkkejä',
confirmDelete: 'Vahvista poisto',
deleteSuccess: 'Poistettu onnistuneesti!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Mot-clé',
searchKeyInput: 'Veuillez entrer le mot-clé de recherche approximative',
search: 'Rechercher',
refresh: 'Réinitialiser',
zoomIn: 'Recherche avancée',
zoomOut: 'Cacher',
add: 'Ajouter',
print: 'Imprimer',
seeFile: 'Voir le fichier',
noFile: 'Aucun fichier',
edit: 'Modifier',
delete: 'Supprimer',
number: 'Numéro',
record: 'Enregistrement des modifications',
action: 'Action',
cancel: 'Annuler',
submit: 'Confirmer',
expand: 'Déplier tout',
fold: 'Replier tout',
pleaseChoose: 'Veuillez choisir',
pleaseInput: 'Veuillez entrer',
pleaseInputTitle: 'Veuillez sélectionner au moins un',
error: 'Une erreur est survenue!',
disable: 'Indisponible!',
length: 'La longueur devrait être',
yes: 'Oui',
no: 'Non',
beginTime: 'Heure de début',
endTime: 'Heure de fin',
tips: 'Conseils',
confirmDelete: 'Confirmer la suppression',
deleteSuccess: 'Supprimé avec succès!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Kata kunci',
searchKeyInput: 'Silakan masukkan kata kunci pencarian kabur',
search: 'Cari',
refresh: 'Reset',
zoomIn: 'Pencarian lanjutan',
zoomOut: 'Sembunyikan',
add: 'Tambah',
print: 'Cetak',
seeFile: 'Lihat file',
noFile: 'Tidak ada file',
edit: 'Edit',
delete: 'Hapus',
number: 'Nomor',
record: 'Rekam perubahan',
action: 'Aksi',
cancel: 'Batal',
submit: 'Konfirmasi',
expand: 'Perluas semua',
fold: 'Lipat semua',
pleaseChoose: 'Silakan pilih',
pleaseInput: 'Silakan masukkan',
pleaseInputTitle: 'Silakan pilih setidaknya satu',
error: 'Terjadi kesalahan!',
disable: 'Tidak tersedia!',
length: 'Panjangnya harus',
yes: 'Ya',
no: 'Tidak',
beginTime: 'Waktu mulai',
endTime: 'Waktu berakhir',
tips: 'Tips',
confirmDelete: 'Konfirmasi penghapusan',
deleteSuccess: 'Berhasil dihapus!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Parola chiave',
searchKeyInput: 'Inserisci la parola chiave di ricerca approssimativa',
search: 'Cerca',
refresh: 'Ripristina',
zoomIn: 'Ricerca avanzata',
zoomOut: 'Nascondi',
add: 'Aggiungi',
print: 'Stampa',
seeFile: 'Visualizza file',
noFile: 'Nessun file',
edit: 'Modifica',
delete: 'Elimina',
number: 'Numero',
record: 'Registro modifiche',
action: 'Azione',
cancel: 'Annulla',
submit: 'Conferma',
expand: 'Espandi tutto',
fold: 'Comprimi tutto',
pleaseChoose: 'Si prega di scegliere',
pleaseInput: 'Si prega di inserire',
pleaseInputTitle: 'Si prega di selezionare almeno uno',
error: 'Si è verificato un errore!',
disable: 'Non disponibile!',
length: 'La lunghezza dovrebbe essere',
yes: 'Sì',
no: 'No',
beginTime: 'Ora di inizio',
endTime: 'Ora di fine',
tips: 'Suggerimenti',
confirmDelete: 'Conferma eliminazione',
deleteSuccess: 'Eliminato con successo!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'キーワード',
searchKeyInput: 'あいまい検索キーワードを入力してください',
search: '検索',
refresh: 'リセット',
zoomIn: '詳細検索',
zoomOut: '非表示',
add: '追加',
print: '印刷',
seeFile: 'ファイルを表示',
noFile: 'ファイルがありません',
edit: '編集',
delete: '削除',
number: '番号',
record: '変更記録',
action: '操作',
cancel: 'キャンセル',
submit: '確定',
expand: 'すべて展開',
fold: 'すべて折りたたむ',
pleaseChoose: '選択してください',
pleaseInput: '入力してください',
pleaseInputTitle: '少なくとも1つ選択してください',
error: 'エラーが発生しました!',
disable: '利用不可!',
length: '長さは次の通りです',
yes: 'はい',
no: 'いいえ',
beginTime: '開始時間',
endTime: '終了時間',
tips: 'ヒント',
confirmDelete: '削除を確認',
deleteSuccess: '正常に削除されました!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: '키워드',
searchKeyInput: '대략적인 검색 키워드를 입력하세요',
search: '검색',
refresh: '초기화',
zoomIn: '고급 검색',
zoomOut: '숨기기',
add: '추가',
print: '인쇄',
seeFile: '파일 보기',
noFile: '파일 없음',
edit: '편집',
delete: '삭제',
number: '번호',
record: '수정 기록',
action: '작업',
cancel: '취소',
submit: '확인',
expand: '모두 확장',
fold: '모두 접기',
pleaseChoose: '선택해주세요',
pleaseInput: '입력해주세요',
pleaseInputTitle: '적어도 하나 선택해주세요',
error: '오류가 발생했습니다!',
disable: '사용 불가!',
length: '길이는 다음과 같아야 합니다',
yes: '예',
no: '아니오',
beginTime: '시작 시간',
endTime: '종료 시간',
tips: '팁',
confirmDelete: '삭제 확인',
deleteSuccess: '성공적으로 삭제되었습니다!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Kata kunci',
searchKeyInput: 'Sila masukkan kata kunci carian kabur',
search: 'Cari',
refresh: 'Tetap semula',
zoomIn: 'Carian lanjutan',
zoomOut: 'Sembunyikan',
add: 'Tambah',
print: 'Cetak',
seeFile: 'Lihat fail',
noFile: 'Tiada fail',
edit: 'Edit',
delete: 'Padam',
number: 'Nombor',
record: 'Rekod pengubahan',
action: 'Tindakan',
cancel: 'Batal',
submit: 'Sahkan',
expand: 'Kembangkan semua',
fold: 'Lipat semua',
pleaseChoose: 'Sila pilih',
pleaseInput: 'Sila masukkan',
pleaseInputTitle: 'Sila pilih sekurang-kurangnya satu',
error: 'Ralat berlaku!',
disable: 'Tidak boleh digunakan!',
length: 'Panjangnya sepatutnya',
yes: 'Ya',
no: 'Tidak',
beginTime: 'Masa mula',
endTime: 'Masa tamat',
tips: 'Petua',
confirmDelete: 'Sahkan padam',
deleteSuccess: 'Berjaya dipadam!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Nøkkelord',
searchKeyInput: 'Vennligst angi søkenøkkelord',
search: 'Søk',
refresh: 'Tilbakestill',
zoomIn: 'Avansert søk',
zoomOut: 'Skjul',
add: 'Legg til',
print: 'Skriv ut',
seeFile: 'Se fil',
noFile: 'Ingen fil',
edit: 'Rediger',
delete: 'Slett',
number: 'Nummer',
record: 'Endringslogg',
action: 'Handling',
cancel: 'Avbryt',
submit: 'Bekreft',
expand: 'Utvid alle',
fold: 'Skjul alle',
pleaseChoose: 'Velg',
pleaseInput: 'Skriv inn',
pleaseInputTitle: 'Velg minst én',
error: 'En feil oppstod!',
disable: 'Ikke tilgjengelig!',
length: 'Lengden bør være',
yes: 'Ja',
no: 'Nei',
beginTime: 'Starttid',
endTime: 'Sluttid',
tips: 'Tips',
confirmDelete: 'Bekreft sletting',
deleteSuccess: 'Slettet vellykket!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Słowo kluczowe',
searchKeyInput: 'Proszę wprowadzić słowo kluczowe wyszukiwania nieprecyzyjnego',
search: 'Szukaj',
refresh: 'Resetuj',
zoomIn: 'Zaawansowane wyszukiwanie',
zoomOut: 'Ukryj',
add: 'Dodaj',
print: 'Drukuj',
seeFile: 'Pokaż plik',
noFile: 'Brak pliku',
edit: 'Edytuj',
delete: 'Usuń',
number: 'Numer',
record: 'Rejestr zmian',
action: 'Akcja',
cancel: 'Anuluj',
submit: 'Potwierdź',
expand: 'Rozwiń wszystkie',
fold: 'Zwiń wszystkie',
pleaseChoose: 'Proszę wybrać',
pleaseInput: 'Proszę wprowadzić',
pleaseInputTitle: 'Proszę wybrać co najmniej jeden',
error: 'Wystąpił błąd!',
disable: 'Nie dostępne!',
length: 'Długość powinna wynosić',
yes: 'Tak',
no: 'Nie',
beginTime: 'Czas rozpoczęcia',
endTime: 'Czas zakończenia',
tips: 'Wskazówki',
confirmDelete: 'Potwierdź usunięcie',
deleteSuccess: 'Usunięto pomyślnie!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Palavra-chave',
searchKeyInput: 'Por favor, insira a palavra-chave de busca aproximada',
search: 'Pesquisar',
refresh: 'Redefinir',
zoomIn: 'Pesquisa avançada',
zoomOut: 'Ocultar',
add: 'Adicionar',
print: 'Imprimir',
seeFile: 'Ver arquivo',
noFile: 'Nenhum arquivo',
edit: 'Editar',
delete: 'Excluir',
number: 'Número',
record: 'Registro de alterações',
action: 'Ação',
cancel: 'Cancelar',
submit: 'Confirmar',
expand: 'Expandir tudo',
fold: 'Recolher tudo',
pleaseChoose: 'Por favor, escolha',
pleaseInput: 'Por favor, insira',
pleaseInputTitle: 'Por favor, selecione pelo menos um',
error: 'Ocorreu um erro!',
disable: 'Indisponível!',
length: 'O comprimento deve ser',
yes: 'Sim',
no: 'Não',
beginTime: 'Hora de início',
endTime: 'Hora de término',
tips: 'Dicas',
confirmDelete: 'Confirmar exclusão',
deleteSuccess: 'Excluído com sucesso!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'Ключевое слово',
searchKeyInput: 'Пожалуйста, введите ключевое слово для нечеткого поиска',
search: 'Поиск',
refresh: 'Сбросить',
zoomIn: 'Расширенный поиск',
zoomOut: 'Скрыть',
add: 'Добавить',
print: 'Печать',
seeFile: 'Просмотреть файл',
noFile: 'Файл не найден',
edit: 'Редактировать',
delete: 'Удалить',
number: 'Номер',
record: 'Запись изменений',
action: 'Действие',
cancel: 'Отменить',
submit: 'Подтвердить',
expand: 'Развернуть все',
fold: 'Свернуть все',
pleaseChoose: 'Пожалуйста, выберите',
pleaseInput: 'Пожалуйста, введите',
pleaseInputTitle: 'Пожалуйста, выберите хотя бы один',
error: 'Произошла ошибка!',
disable: 'Недоступно!',
length: 'Длина должна быть',
yes: 'Да',
no: 'Нет',
beginTime: 'Время начала',
endTime: 'Время окончания',
tips: 'Советы',
confirmDelete: 'Подтвердить удаление',
deleteSuccess: 'Успешно удалено!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: 'คีย์เวิร์ด',
searchKeyInput: 'โปรดป้อนคีย์เวิร์ดการค้นหาที่คลุมเครือ',
search: 'ค้นหา',
refresh: 'รีเซ็ต',
zoomIn: 'ค้นหาเพิ่มเติม',
zoomOut: 'ซ่อน',
add: 'เพิ่ม',
print: 'พิมพ์',
seeFile: 'ดูไฟล์',
noFile: 'ไม่มีไฟล์',
edit: 'แก้ไข',
delete: 'ลบ',
number: 'หมายเลข',
record: 'บันทึกการแก้ไข',
action: 'การกระทำ',
cancel: 'ยกเลิก',
submit: 'ยืนยัน',
expand: 'ขยายทั้งหมด',
fold: 'พับทั้งหมด',
pleaseChoose: 'โปรดเลือก',
pleaseInput: 'โปรดป้อน',
pleaseInputTitle: 'โปรดเลือกอย่างน้อยหนึ่งรายการ',
error: 'เกิดข้อผิดพลาด!',
disable: 'ไม่พร้อมใช้งาน!',
length: 'ความยาวควรเป็น',
yes: 'ใช่',
no: 'ไม่',
beginTime: 'เวลาเริ่มต้น',
endTime: 'เวลาสิ้นสุด',
tips: 'เคล็ดลับ',
confirmDelete: 'ยืนยันการลบ',
deleteSuccess: 'ลบสำเร็จ!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: '关键字',
searchKeyInput: '请输入模糊查询关键字迎',
search: '查询',
refresh: '重置',
zoomIn: '高级查询',
zoomOut: '隐藏',
add: '新增',
print: '打印',
seeFile: '查看文件',
noFile: '暂无文件',
edit: '编辑',
delete: '删除',
number: '序号',
record: '修改记录',
action: '操作',
cancel: '取 消',
submit: '确 定',
expand: '全部展开',
fold: '全部折叠',
pleaseChoose: '请选择 ',
pleaseInput: '请输入 ',
pleaseInputTitle: '请选择至少一种 ',
error: '发生错误了!',
disable: '不可用!',
length: '长度应该是 ',
yes: '是',
no: '否',
beginTime: '开始时间 ',
endTime: '结束时间 ',
tips: '提示',
confirmDelete : '确定删除 ',
deleteSuccess: '删除成功!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: '關鍵字',
searchKeyInput: '請輸入模糊查詢關鍵字',
search: '查詢',
refresh: '重置',
zoomIn: '高級查詢',
zoomOut: '隱藏',
add: '新增',
print: '打印',
seeFile: '查看文件',
noFile: '暫無文件',
edit: '編輯',
delete: '刪除',
number: '序號',
record: '修改記錄',
action: '操作',
cancel: '取消',
submit: '確定',
expand: '全部展開',
fold: '全部摺疊',
pleaseChoose: '請選擇',
pleaseInput: '請輸入',
pleaseInputTitle: '請選擇至少一種',
error: '發生錯誤了!',
disable: '不可用!',
length: '長度應該是',
yes: '是',
no: '否',
beginTime: '開始時間',
endTime: '結束時間',
tips: '提示',
confirmDelete: '確定刪除',
deleteSuccess: '刪除成功!',
},
};

View File

@ -1,36 +0,0 @@
export default {
codegen: {
searchKey: '關鍵字',
searchKeyInput: '請輸入模糊查詢關鍵字',
search: '查詢',
refresh: '重置',
zoomIn: '高級查詢',
zoomOut: '隱藏',
add: '新增',
print: '列印',
seeFile: '查看檔案',
noFile: '暫無檔案',
edit: '編輯',
delete: '刪除',
number: '序號',
record: '修改記錄',
action: '操作',
cancel: '取消',
submit: '確定',
expand: '全部展開',
fold: '全部摺疊',
pleaseChoose: '請選擇',
pleaseInput: '請輸入',
pleaseInputTitle: '請選擇至少一種',
error: '發生錯誤了!',
disable: '不可用!',
length: '長度應該是',
yes: '是',
no: '否',
beginTime: '開始時間',
endTime: '結束時間',
tips: '提示',
confirmDelete: '確定刪除',
deleteSuccess: '刪除成功!',
},
};

View File

@ -355,5 +355,37 @@ export default {
welcomein: 'Welcome to use Admin.NET - A general permission development framework',
emailRequired: 'Email cannot be empty',
emailNotMatch: 'Email must be the same as the account',
confirmCopyRole: 'Confirm copying role: [{roleName}]?',
authAccount: 'Authorized Account',
successCopy: 'Copy Successful',
sysMessage: 'System Message',
idleTimeoutMessage: 'Long time no operation, system logged out.',
successSave: 'Save Successful',
searchKey: 'Keyword',
searchKeyInput: 'Please enter fuzzy search keyword',
search: 'Search',
zoomIn: 'Advanced Search',
zoomOut: 'Hide',
seeFile: 'View File',
noFile: 'No Files Available',
number: 'Serial Number',
action: 'Action',
cancel: 'Cancel',
submit: 'Confirm',
expand: 'Expand All',
fold: 'Collapse All',
pleaseChoose: 'Please select ',
pleaseInput: 'Please enter ',
pleaseInputTitle: 'Please select at least one ',
error: 'An error occurred!',
length: 'Length should be ',
yes: 'Yes',
no: 'No',
beginTime: 'Start Time ',
endTime: 'End Time ',
tips: 'Tips',
deleteSuccess: 'Deletion successful!',
uploadFile: 'Drag files here, or [Click to Upload]',
pleaseUploadFile: 'Please upload files no larger than 10MB',
},
};

View File

@ -361,5 +361,31 @@ export default {
sysMessage: '系统消息',
idleTimeoutMessage: '长时间未操作,已退出系统。',
successSave: '保存成功',
searchKey: '关键字',
searchKeyInput: '请输入模糊查询关键字迎',
search: '查询',
zoomIn: '高级查询',
zoomOut: '隐藏',
seeFile: '查看文件',
noFile: '暂无文件',
number: '序号',
action: '操作',
cancel: '取 消',
submit: '确 定',
expand: '全部展开',
fold: '全部折叠',
pleaseChoose: '请选择 ',
pleaseInput: '请输入 ',
pleaseInputTitle: '请选择至少一种 ',
error: '发生错误了!',
length: '长度应该是 ',
yes: '是',
no: '否',
beginTime: '开始时间 ',
endTime: '结束时间 ',
tips: '提示',
deleteSuccess: '删除成功!',
uploadFile: '将文件拖到此处,或【点击上传】',
pleaseUploadFile: '请上传大小不超过 10MB 的文件',
},
};

View File

@ -86,9 +86,9 @@
<el-icon class="el-icon--upload">
<ele-UploadFilled />
</el-icon>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__text">{{ $t('message.list.uploadFile') }}</div>
<template #tip>
<div class="el-upload__tip">请上传大小不超过 10MB 的文件</div>
<div class="el-upload__tip">{{ $t('message.list.pleaseUploadFile') }}</div>
</template>
</el-upload>
</div>