CloudGamingAdmin/admin-server/CloudGaming.Api.Admin/wwwroot/code_generation/template/Game/tempClientIndex.cshtml
2024-11-15 02:58:48 +08:00

277 lines
8.5 KiB
Plaintext

@model GenDbTableDto
@{
var className = Model.EntityName;
var tableName = Model.TableName;
var ignores = new string[]
{
"Id",
"CreationTime",
"CreatorUserId",
"LastModificationTime",
"LastModifierUserId",
"DeletionTime",
"DeleterUserId",
"IsDeleted",
"id",
"creation_time",
"creator_user_id",
"last_modification_time",
"last_modifier_user_id",
"deletion_time",
"deleter_user_id",
"is_deleted",
};
var tableInfos = Model.TableInfos
.Where(w => !ignores.Contains(w.ColumnName))
.OrderBy(w => w.Position)
.ToList()
;
var searchKeyWords = new[] { "Title", "Name", "Phone", "Address", "Email" };
var searchKeyWord = string.Empty;
foreach (var item in searchKeyWords)
{
if (tableInfos.Any(w => w.ColumnName == item))
{
searchKeyWord = item;
break;
}
}
var dateList = Model.TableInfos.Where(w => w.CsType == "DateTime").OrderBy(w => w.Position).ToList();
var selectTable = Model.TableInfos.Where(it => it.IsTableSelect ?? false).ToList();
// if (string.IsNullOrWhiteSpace(searchKeyWord))
// {
// searchKeyWord = "请设置检索框";
// }
}
<pre>
<script lang="ts" setup>
import { reactive, ref, onMounted } from "vue";
import { FormInstance } from "ant-design-vue";
import { useAuthority } from "@@/utils/Authority";
import AppIcon from "@@/core/components/AppIcon.vue";
import Info from "./Info.vue";
import Tools from "@@/core/utils/Tools";
import PageContainerGame from "@@/core/components/PageContainerGame.vue";
import TableCurdV1 from "@@/core/components/curd/TableCurdV1.vue";
import @(className)Service from "@@/services/apps/@(Model.DataBase)/@(className)Service";
defineOptions({ name: "@(className.ToFirstCharConvertLower())Index" });
var columns = [
@foreach (var x in tableInfos)
{ <pre>
{
dataIndex: "@(x.ColumnName.ToFirstCharConvertLower())",
title: "@(x.DisplayName != null ? x.DisplayName:x.ColumnName)",
show: @(x.IsTableColumnShow==true ? "true" : "false"),
width: @((x.Width == null || string.IsNullOrEmpty(x.Width)) ? (x.DisplayName.Length * 20) : x.Width),
sorter: true,
}, </pre>
}
];
const state = reactive({
search: {
state: true,
vm: {
@foreach (var x in selectTable)
{
<pre>@(x.ColumnName.ToLower()): undefined,</pre>
}
},
sort: [] as any[],
},
loading: false,
page: 1,
size: 50,
total: 100,
columns: [] as any,
data: [] as any,
});
//权限
const power = useAuthority();
//表格
const refTableCurd = ref < InstanceType < typeof TableCurdV1 >> ();
//表单操作对象
const refInfo = ref<InstanceType<typeof Info>>();
//检索表单
const refSearchForm = ref<FormInstance>();
/**
* 初始化
*/
onMounted(() => {
findList();
});
/**
*获取数据
*/
async function findList() {
try{
state.loading = true;
const result = await @(className)Service.findList(state.page, state.size, state.search.vm, state.search.sort);
state.loading = false;
if (result.code != 200) return;
state.page = result.data.page;
state.size = result.data.size;
state.total = result.data.total;
state.columns = columns;// result.data.columns;
state.data = result.data.dataSource;
// state.visible = false;
} catch (error) {
state.loading = false;
}
}
/**
* 删除数据
* @@param id
*/
async function deleteList(id?: string) {
let ids: string[] = [];
if (id) {
ids.push(id);
} else {
ids = refTableCurd.value?.getSelectedRowKeys() ?? [];
}
if (ids.length == 0) return Tools.message.error("请选择要删除的行!");
try{
state.loading = true;
const result = await @(className)Service.deleteList(ids);
state.loading = false;
if (result.code != 200) return;
Tools.message.success("删除成功!");
findList();
} catch (error) {
state.loading = false;
}
}
/**
* 导出excel
*/
function exportExcel() {
@(className)Service.exportExcel(state.search.vm, state.search.sort);
}
</script>
<template>
<PageContainerGame>
<TableCurdV1 ref="refTableCurd"
:config="state"
@@change="
(changeTable) => {
state.page = changeTable.pagination.current ?? 1;
state.size = changeTable.pagination.pageSize ?? state.size;
state.search.sort = changeTable.sorter instanceof Array ? [...changeTable.sorter] : [changeTable.sorter];
findList();
}
"
@@show-size-change="
({ current, size }) => {
state.page = current == 0 ? 1 : current;
state.size = size;
findList();
}
"
>
<!-- search -->
<template #search>
<a-form ref="refSearchForm" :model="state.search.vm" v-if="power.search">
<a-row :gutter="[16, 0]">
@foreach (var x in selectTable)
{
<pre><a-col :xs="4" :sm="4" :md="4" :lg="4" :xl="4">
<a-form-item class="mb-0" name="name" label="@(x.DisplayName)">
<a-input v-model:value="state.search.vm.@(x.ColumnName.ToLower())" placeholder="@(x.DisplayName)" />
</a-form-item>
</a-col></pre>
}
<!--button-->
<a-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="text-right">
<a-space :size="8">
<a-button
@@click="
state.page = 1;
refSearchForm?.resetFields();
findList();
"
>
重置
</a-button>
<a-button
type="primary"
@@click="
state.page = 1;
findList();
"
>
查询
</a-button>
</a-space>
</a-col>
</a-row>
</a-form>
</template>
<!-- toolbar-left -->
<template #toolbar-left>
<!-- <a-button @@click="state.search.state = !state.search.state" v-if="power.search">
<div v-if="state.search.state"><AppIcon name="UpOutlined" />&nbsp;&nbsp;收起</div>
<div v-else><AppIcon name="DownOutlined" />&nbsp;&nbsp;展开</div>
</a-button> -->
<a-button type="primary" @@click="() => refInfo?.open()" v-if="power.insert">
<template #icon>
<AppIcon name="PlusOutlined" />
</template>
新建
</a-button>
<a-popconfirm title="您确定要删除?" @@confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
<a-button type="primary" danger>
<template #icon>
<AppIcon name="DeleteOutlined" />
</template>
批量删除
</a-button>
</a-popconfirm>
</template>
<!-- toolbar-right -->
<template #toolbar-right>
<a-dropdown>
<template #overlay>
<a-menu>
<a-menu-item key="1" @@click="exportExcel()">导出 Excel</a-menu-item>
</a-menu>
</template>
<a-button> 更多 <AppIcon name="ellipsis-outlined" /> </a-button>
</a-dropdown>
</template>
<!-- table-col -->
<template #table-col>
<template v-for="item,index in state.columns.filter((w:any) => w.dataIndex !== 'id' && w.show)" :key="item.dataIndex">
<a-table-column :title="item.title" :width="item.width" :data-index="item.dataIndex" :sorter="item.sort ? { multiple: index + 1 } : false" />
</template>
<!-- 操作 -->
<a-table-column title="操作" data-index="id" width="200px" fixed="right" v-if="power.update || power.delete">
<template #default="{ record }">
<a-button type="link" @@click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
<a-divider type="vertical" />
<a-popconfirm title="您确定要删除?" @@confirm="deleteList(record.id)" okText="确定" cancelText="取消"
v-if="power.delete">
<a-button type="link" danger>删除</a-button>
</a-popconfirm>
</template>
</a-table-column>
</template>
</TableCurdV1>
<!-- Info -->
<Info ref="refInfo" :onSuccess="() => findList()" />
</PageContainerGame>
</template>
</pre>