修改发现
This commit is contained in:
parent
f441e1ad4b
commit
d72120f788
2
admin-client/src/components.d.ts
vendored
2
admin-client/src/components.d.ts
vendored
|
|
@ -84,8 +84,10 @@ declare module 'vue' {
|
||||||
ExternalJump: typeof import('./core/components/ExternalJump.vue')['default']
|
ExternalJump: typeof import('./core/components/ExternalJump.vue')['default']
|
||||||
FindBack: typeof import('./core/components/FindBack.vue')['default']
|
FindBack: typeof import('./core/components/FindBack.vue')['default']
|
||||||
GenerateCron: typeof import('./core/components/GenerateCron.vue')['default']
|
GenerateCron: typeof import('./core/components/GenerateCron.vue')['default']
|
||||||
|
HmActionTypeSelect: typeof import('./core/components/curd/select-components/hm-action-type-select.vue')['default']
|
||||||
HmImage: typeof import('./core/components/huanmeng/hm-image.vue')['default']
|
HmImage: typeof import('./core/components/huanmeng/hm-image.vue')['default']
|
||||||
HmImageTypeSelect: typeof import('./core/components/curd/select-components/hm-image-type-select.vue')['default']
|
HmImageTypeSelect: typeof import('./core/components/curd/select-components/hm-image-type-select.vue')['default']
|
||||||
|
HmTenantGroupSelect: typeof import('./core/components/curd/select-components/hm-tenant-group-select.vue')['default']
|
||||||
HmTenantSelect: typeof import('./core/components/curd/select-components/hm-tenant-select.vue')['default']
|
HmTenantSelect: typeof import('./core/components/curd/select-components/hm-tenant-select.vue')['default']
|
||||||
Index: typeof import('./core/components/vue3-cron-core/Index.vue')['default']
|
Index: typeof import('./core/components/vue3-cron-core/Index.vue')['default']
|
||||||
LablesCharacters: typeof import('./core/components/characters/lables-characters.vue')['default']
|
LablesCharacters: typeof import('./core/components/characters/lables-characters.vue')['default']
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
<template>
|
||||||
|
<a-select :options="options" :value="modelValue" @change="updateValue" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
import type { SelectProps } from "ant-design-vue";
|
||||||
|
import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
|
||||||
|
import type { SelectValue } from "ant-design-vue/lib/select";
|
||||||
|
|
||||||
|
// 定义 options
|
||||||
|
const options = ref<SelectProps["options"]>([]);
|
||||||
|
|
||||||
|
// 使用 withDefaults 添加默认值
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
modelValue: SelectValue;
|
||||||
|
}>(),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
// 定义 emits
|
||||||
|
const emits = defineEmits(["update:modelValue"]);
|
||||||
|
|
||||||
|
// 异步获取数据并更新 options
|
||||||
|
AppDictionaryCache.appDictionaryActionTypeCache
|
||||||
|
.getDataListSelect()
|
||||||
|
.then((data) => {
|
||||||
|
// console.log(data);
|
||||||
|
options.value?.push(...data);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 定义方法以触发 update:modelValue 事件
|
||||||
|
function updateValue(value: SelectValue) {
|
||||||
|
emits("update:modelValue", value);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
/* 你的样式代码 */
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
<template>
|
||||||
|
<a-select :options="options" :value="modelValue" @change="updateValue" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
import type { SelectProps } from "ant-design-vue";
|
||||||
|
import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
|
||||||
|
import type { SelectValue } from "ant-design-vue/lib/select";
|
||||||
|
import SysDictionaryService from "@/services/system/SysDictionaryService";
|
||||||
|
// 定义 options
|
||||||
|
const options = ref<SelectProps["options"]>([]);
|
||||||
|
|
||||||
|
// 使用 withDefaults 添加默认值
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
modelValue: SelectValue;
|
||||||
|
tenantId: string;
|
||||||
|
ShowAll: boolean; //
|
||||||
|
}>(),
|
||||||
|
{
|
||||||
|
ShowAll: false, // 默认值设置为 true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
console.log(props.tenantId);
|
||||||
|
var tenantId = props.tenantId;
|
||||||
|
if (tenantId == null) {
|
||||||
|
tenantId = "00000000-0000-0000-0000-000000000000";
|
||||||
|
}
|
||||||
|
// 定义 emits
|
||||||
|
const emits = defineEmits(["update:modelValue"]);
|
||||||
|
|
||||||
|
async function LoadData(_tenantId: string) {
|
||||||
|
const response = await SysDictionaryService.getDictionaryByProjectCode(
|
||||||
|
tenantId
|
||||||
|
);
|
||||||
|
var data = [];
|
||||||
|
if (response.data != null) {
|
||||||
|
data = response.data;
|
||||||
|
}
|
||||||
|
data.map((item) => {
|
||||||
|
let _options: any[] = [];
|
||||||
|
if (item.children.length > 0) {
|
||||||
|
item.children.map((c) => {
|
||||||
|
_options.push({
|
||||||
|
value: c.code,
|
||||||
|
label: c.name,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
options.value?.push({
|
||||||
|
label: item.name,
|
||||||
|
options: _options,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadData(tenantId);
|
||||||
|
// 异步获取数据并更新 options
|
||||||
|
// AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => {
|
||||||
|
// // console.log(data);
|
||||||
|
// options.value?.push(...data);
|
||||||
|
// if (props.ShowAll) {
|
||||||
|
// options.value?.unshift({ value: '', label: '全部' });
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
// 定义方法以触发 update:modelValue 事件
|
||||||
|
function updateValue(value: SelectValue) {
|
||||||
|
emits("update:modelValue", value);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
/* 你的样式代码 */
|
||||||
|
</style>
|
||||||
|
|
@ -5,6 +5,7 @@ import AppDictionaryTenantCache from "./cache/AppDictionaryTenantCache";
|
||||||
import AppDictionaryTypesCache from "./cache/AppDictionaryTypesCache";
|
import AppDictionaryTypesCache from "./cache/AppDictionaryTypesCache";
|
||||||
import AppDictionaryPersonalitysCache from "./cache/AppDictionaryPersonalitysCache";
|
import AppDictionaryPersonalitysCache from "./cache/AppDictionaryPersonalitysCache";
|
||||||
import AppDictionaryLablesCache from "./cache/AppDictionaryLablesCache";
|
import AppDictionaryLablesCache from "./cache/AppDictionaryLablesCache";
|
||||||
|
import AppDictionaryActionTypeCache from "./cache/AppDictionaryActionTypeCache";
|
||||||
/**
|
/**
|
||||||
* 基础数据缓存类
|
* 基础数据缓存类
|
||||||
*/
|
*/
|
||||||
|
|
@ -33,6 +34,11 @@ class AppDictionaryCache {
|
||||||
* 标签配置
|
* 标签配置
|
||||||
*/
|
*/
|
||||||
static appDictionaryLablesCache: AbstractDictionaryCache = new AppDictionaryLablesCache();
|
static appDictionaryLablesCache: AbstractDictionaryCache = new AppDictionaryLablesCache();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动作类型
|
||||||
|
*/
|
||||||
|
static appDictionaryActionTypeCache: AbstractDictionaryCache = new AppDictionaryActionTypeCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
export default AppDictionaryCache;
|
export default AppDictionaryCache;
|
||||||
|
|
|
||||||
22
admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts
vendored
Normal file
22
admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { AbstractDictionaryCache, AppDictionaryModel, _AbstractDictionaryCache } from './AbstractDictionaryCache'
|
||||||
|
import { DefaultOptionType } from "ant-design-vue/es/select";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片类型配置
|
||||||
|
*/
|
||||||
|
class AppDictionaryActionTypeCache extends AbstractDictionaryCache {
|
||||||
|
protected code: string = "categorymenu_actiontype";
|
||||||
|
public static _lock: Promise<void> | null = null;
|
||||||
|
constructor() {
|
||||||
|
super(AppDictionaryActionTypeCache._lock);
|
||||||
|
}
|
||||||
|
public async getDataListSelect(): Promise<DefaultOptionType[]> {
|
||||||
|
const _data = await this.getDataList();
|
||||||
|
return _data.map((item) => {
|
||||||
|
return { label: item.name, value: item.value, name: item.code, } as DefaultOptionType;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AppDictionaryActionTypeCache;
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
import Http from "@/core/utils/Http";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* T_Category_Child_Menu服务
|
||||||
|
*/
|
||||||
|
export default class T_Category_Child_MenuService {
|
||||||
|
|
||||||
|
static urlPrefix = "/api/v1/admin/T_Category_Child_Menu";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据列表
|
||||||
|
* @param current
|
||||||
|
* @param pageSize
|
||||||
|
* @param search
|
||||||
|
* @param searchSort
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static findList(current: number, pageSize: number, search: any = {}, searchSort: any[] = []) {
|
||||||
|
return Http.post(`${this.urlPrefix}/findList`, {
|
||||||
|
page: current,
|
||||||
|
size: pageSize,
|
||||||
|
search,
|
||||||
|
searchSort
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除集合数据
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static deleteList(ids: string[]) {
|
||||||
|
return Http.post(`${this.urlPrefix}/deleteList`, ids)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询表单
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static findForm(id?: string | undefined) {
|
||||||
|
return Http.get(`${this.urlPrefix}/findForm${(id ? '/' + id : '')}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存表单数据
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param formData
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static saveForm(id: string | undefined, formData: any) {
|
||||||
|
return Http.post(`${this.urlPrefix}/${id ? 'update' : 'create'}`, formData)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出 excel
|
||||||
|
*
|
||||||
|
* @param search
|
||||||
|
* @param searchSort
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static exportExcel(search: any = {}, searchSort: any[] = []) {
|
||||||
|
return Http.download(`${this.urlPrefix}/exportExcel`, {
|
||||||
|
page: -1,
|
||||||
|
size: -1,
|
||||||
|
search,
|
||||||
|
searchSort
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改状态
|
||||||
|
* @param id
|
||||||
|
* @param v
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static async setVisibility(id: number | undefined, v: boolean | undefined) {
|
||||||
|
return await Http.post(`${this.urlPrefix}/updateState/${id}/${(v == true ? "1" : "0")}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -61,4 +61,14 @@ export default class SysDictionaryService {
|
||||||
static getDictionaryByCode(code: string) {
|
static getDictionaryByCode(code: string) {
|
||||||
return Http.get(`${this.urlPrefix}/GetDictionaryByCode/${code}`);
|
return Http.get(`${this.urlPrefix}/GetDictionaryByCode/${code}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字典集合,包含子数据
|
||||||
|
* @param code 字典编码
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
static getDictionaryByProjectCode(code: string) {
|
||||||
|
return Http.get(`${this.urlPrefix}/GetDictionaryByProjectCode/${code}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
371
admin-client/src/views/apps/T_Category_Child_Menus/Index.vue
Normal file
371
admin-client/src/views/apps/T_Category_Child_Menus/Index.vue
Normal file
|
|
@ -0,0 +1,371 @@
|
||||||
|
<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 PageContainer from "@/core/components/PageContainer.vue";
|
||||||
|
import TableCurd from "@/core/components/curd/TableCurd.vue";
|
||||||
|
import T_Category_Child_MenuService from "@/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService";
|
||||||
|
import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
|
||||||
|
defineOptions({ name: "T_Category_Child_MenuIndex" });
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
search: {
|
||||||
|
state: false,
|
||||||
|
vm: {
|
||||||
|
name: undefined,
|
||||||
|
},
|
||||||
|
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 TableCurd>>();
|
||||||
|
//表单操作对象
|
||||||
|
const refInfo = ref<InstanceType<typeof Info>>();
|
||||||
|
//检索表单
|
||||||
|
const refSearchForm = ref<FormInstance>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
*/
|
||||||
|
onMounted(() => {
|
||||||
|
findList();
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
*获取数据
|
||||||
|
*/
|
||||||
|
async function findList() {
|
||||||
|
try {
|
||||||
|
state.loading = true;
|
||||||
|
let keys = Object.keys(state.search.vm);
|
||||||
|
keys.map((k) => {
|
||||||
|
if (state.search.vm[k] == null || state.search.vm[k] == "") {
|
||||||
|
delete state.search.vm[k];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const result = await T_Category_Child_MenuService.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 = 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 T_Category_Child_MenuService.deleteList(ids);
|
||||||
|
state.loading = false;
|
||||||
|
if (result.code != 200) return;
|
||||||
|
Tools.message.success("删除成功!");
|
||||||
|
findList();
|
||||||
|
} catch (error) {
|
||||||
|
state.loading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出excel
|
||||||
|
*/
|
||||||
|
function exportExcel() {
|
||||||
|
T_Category_Child_MenuService.exportExcel(state.search.vm, state.search.sort);
|
||||||
|
}
|
||||||
|
let tempData = [];
|
||||||
|
AppDictionaryCache.appDictionaryActionTypeCache.getDataList().then((data) => {
|
||||||
|
tempData = data;
|
||||||
|
});
|
||||||
|
function Ta(r) {
|
||||||
|
let cc = tempData.find((it) => it.value == r);
|
||||||
|
if (cc != null) {
|
||||||
|
return cc.name;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
async function visibilityChange(id: number, visibility: boolean, record: any) {
|
||||||
|
var response = await T_Category_Child_MenuService.setVisibility(
|
||||||
|
id,
|
||||||
|
visibility
|
||||||
|
);
|
||||||
|
console.log(visibility, response);
|
||||||
|
// record.visibility=visibility;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<PageContainer>
|
||||||
|
<TableCurd
|
||||||
|
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]">
|
||||||
|
<!--
|
||||||
|
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||||
|
<a-form-item class="mb-0" name="name" label="名称">
|
||||||
|
<a-input v-model:value="state.search.vm.name" placeholder="名称" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
-->
|
||||||
|
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||||
|
<a-form-item class="mb-0" name="tenantId" label="项目">
|
||||||
|
<hm-tenant-select
|
||||||
|
v-model:value="state.search.vm.tenantId"
|
||||||
|
:ShowAll="false"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||||
|
<a-form-item class="mb-0" name="tenantId" label="所属分类">
|
||||||
|
<hm-tenant-group-select
|
||||||
|
:tenant-id="state.search.vm.tenantId"
|
||||||
|
v-model:value="state.search.vm.type"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<!--button-->
|
||||||
|
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" 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" /> 收起
|
||||||
|
</div>
|
||||||
|
<div v-else><AppIcon name="DownOutlined" /> 展开</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>
|
||||||
|
<!-- 列设置 -->
|
||||||
|
<a-popover>
|
||||||
|
<template #content>
|
||||||
|
<div
|
||||||
|
v-for="item in state.columns.filter((w:any) => w.fieldName.substr(0, 1) != '_')"
|
||||||
|
>
|
||||||
|
<a-checkbox v-model:checked="item.show">{{
|
||||||
|
item.title
|
||||||
|
}}</a-checkbox>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<a-button type="text">
|
||||||
|
<template #icon><AppIcon name="setting-outlined" /> </template>
|
||||||
|
</a-button>
|
||||||
|
</a-popover>
|
||||||
|
</template>
|
||||||
|
<!-- table-col -->
|
||||||
|
<template #table-col>
|
||||||
|
<template
|
||||||
|
v-for="item,index in state.columns.filter((w:any) => w.fieldName !== 'id' && w.fieldName !== 'typeName' && w.show)"
|
||||||
|
:key="item.fieldName"
|
||||||
|
>
|
||||||
|
<a-table-column
|
||||||
|
v-if="item.fieldName == 'type'"
|
||||||
|
:title="item.title"
|
||||||
|
:data-index="item.fieldName"
|
||||||
|
:sorter="item.sort ? { multiple: index + 1 } : false"
|
||||||
|
>
|
||||||
|
<template #default="{ record }">
|
||||||
|
{{ record.typeName }}
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
<a-table-column
|
||||||
|
v-else-if="item.fieldName == 'actionType'"
|
||||||
|
:title="item.title"
|
||||||
|
:data-index="item.fieldName"
|
||||||
|
:sorter="item.sort ? { multiple: index + 1 } : false"
|
||||||
|
>
|
||||||
|
<template #default="{ record }">
|
||||||
|
{{ Ta(record.actionType) }}
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
<a-table-column
|
||||||
|
v-else-if="item.fieldName == 'isEnabled'"
|
||||||
|
:title="item.title"
|
||||||
|
:data-index="item.fieldName"
|
||||||
|
:sorter="item.sort ? { multiple: index + 1 } : false"
|
||||||
|
>
|
||||||
|
<template #default="{ record }">
|
||||||
|
<a-switch
|
||||||
|
v-model:checked="record.isEnabled"
|
||||||
|
checked-children="上线"
|
||||||
|
un-checked-children="下线"
|
||||||
|
@change="visibilityChange(record.id, record.isEnabled, record)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
<a-table-column
|
||||||
|
v-else-if="item.fieldName == 'imageUrl'"
|
||||||
|
:title="item.title"
|
||||||
|
:data-index="item.fieldName"
|
||||||
|
:sorter="item.sort ? { multiple: index + 1 } : false"
|
||||||
|
width="150px"
|
||||||
|
>
|
||||||
|
<template #default="{ record }">
|
||||||
|
<a-image
|
||||||
|
:width="100"
|
||||||
|
:src="record.imageUrl + '/htslt'"
|
||||||
|
:preview="{ src: record.imageUrl }"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
<a-table-column
|
||||||
|
v-else
|
||||||
|
:title="item.title"
|
||||||
|
:data-index="item.fieldName"
|
||||||
|
:sorter="item.sort ? { multiple: index + 1 } : false"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<a-table-column
|
||||||
|
title="操作"
|
||||||
|
data-index="id"
|
||||||
|
v-if="power.update || power.delete"
|
||||||
|
width="200px"
|
||||||
|
fixed="right"
|
||||||
|
>
|
||||||
|
<template #default="{ record }">
|
||||||
|
<a
|
||||||
|
href="javascript:;"
|
||||||
|
@click="() => refInfo?.open(record.id)"
|
||||||
|
v-if="power.update"
|
||||||
|
>编辑</a
|
||||||
|
>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a-popconfirm
|
||||||
|
title="您确定要删除?"
|
||||||
|
@confirm="deleteList(record.id)"
|
||||||
|
okText="确定"
|
||||||
|
cancelText="取消"
|
||||||
|
v-if="power.delete"
|
||||||
|
>
|
||||||
|
<a class="text-danger">删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
</template>
|
||||||
|
</TableCurd>
|
||||||
|
<!-- Info -->
|
||||||
|
<Info ref="refInfo" :onSuccess="() => findList()" />
|
||||||
|
</PageContainer>
|
||||||
|
</template>
|
||||||
197
admin-client/src/views/apps/T_Category_Child_Menus/Info.vue
Normal file
197
admin-client/src/views/apps/T_Category_Child_Menus/Info.vue
Normal file
|
|
@ -0,0 +1,197 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { reactive, ref } from "vue";
|
||||||
|
import { FormInstance } from "ant-design-vue";
|
||||||
|
import Tools from "@/core/utils/Tools";
|
||||||
|
import T_Category_Child_MenuService from "@/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService";
|
||||||
|
|
||||||
|
//定义组件事件
|
||||||
|
const props = defineProps<{ onSuccess: () => void }>();
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
vm: {
|
||||||
|
id: "",
|
||||||
|
form: {} as any,
|
||||||
|
},
|
||||||
|
visible: false,
|
||||||
|
loading: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
//表单实例
|
||||||
|
const refForm = ref<FormInstance>();
|
||||||
|
|
||||||
|
//向父级导出 函数
|
||||||
|
defineExpose({
|
||||||
|
/**
|
||||||
|
* 打开表单初始化
|
||||||
|
* @param key
|
||||||
|
*/
|
||||||
|
open: (key: string = "") => {
|
||||||
|
state.visible = true;
|
||||||
|
if (state.visible) {
|
||||||
|
state.vm.id = key;
|
||||||
|
}
|
||||||
|
refForm.value?.resetFields();
|
||||||
|
//初始化表单数据
|
||||||
|
state.loading = true;
|
||||||
|
T_Category_Child_MenuService.findForm(key).then((res) => {
|
||||||
|
state.loading = false;
|
||||||
|
if (res.code != 200) return;
|
||||||
|
state.vm = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
*保存数据
|
||||||
|
*/
|
||||||
|
function save() {
|
||||||
|
refForm.value?.validate().then(async () => {
|
||||||
|
try {
|
||||||
|
state.loading = true;
|
||||||
|
const result = await T_Category_Child_MenuService.saveForm(
|
||||||
|
state.vm.id,
|
||||||
|
state.vm.form
|
||||||
|
);
|
||||||
|
state.loading = false;
|
||||||
|
if (result.code != 200) return;
|
||||||
|
Tools.message.success("操作成功!");
|
||||||
|
props.onSuccess();
|
||||||
|
state.visible = false;
|
||||||
|
} catch (error) {
|
||||||
|
state.loading = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
v-model:open="state.visible"
|
||||||
|
:title="state.vm.id ? '编辑' : '新建'"
|
||||||
|
centered
|
||||||
|
@ok="state.visible = false"
|
||||||
|
:width="800"
|
||||||
|
>
|
||||||
|
<template #footer>
|
||||||
|
<a-button type="primary" :loading="state.loading" @click="save()">
|
||||||
|
提交</a-button
|
||||||
|
>
|
||||||
|
<a-button @click="state.visible = false">关闭</a-button>
|
||||||
|
</template>
|
||||||
|
<a-spin :spinning="state.loading">
|
||||||
|
<a-form ref="refForm" layout="vertical" :model="state.vm.form">
|
||||||
|
<a-row :gutter="[16, 0]">
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item label="项目" name="tenantId">
|
||||||
|
<hm-tenant-select v-model:value="state.vm.form.tenantId" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="所属分类"
|
||||||
|
name="type"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<hm-tenant-group-select
|
||||||
|
:tenant-id="state.vm.form.tenantId"
|
||||||
|
v-model:value="state.vm.form.type"
|
||||||
|
/>
|
||||||
|
<!-- <a-input
|
||||||
|
v-model:value="state.vm.form.type"
|
||||||
|
placeholder="请输入"
|
||||||
|
/> -->
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="名称"
|
||||||
|
name="name"
|
||||||
|
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model:value="state.vm.form.name"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item label="副标题" name="subTitle">
|
||||||
|
<a-input
|
||||||
|
v-model:value="state.vm.form.subTitle"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="动作类型"
|
||||||
|
name="actionType"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<hm-action-type-select
|
||||||
|
v-model:value="state.vm.form.actionType"
|
||||||
|
></hm-action-type-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="动作内容(动作类型为聊天,动作内容为聊天角色Id,页面->跳转页面地址,)"
|
||||||
|
name="actionId"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model:value="state.vm.form.actionId"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="图片Id(动作类型为聊天,图片id为0,会使用角色背景图片)"
|
||||||
|
name="imageId"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<hm-image v-model="state.vm.form.imageId" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="排序"
|
||||||
|
name="orderById"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model:value="state.vm.form.orderById"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="图片地址(如果填入,上面的图片id将不起作用)"
|
||||||
|
name="imageUrl"
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model:value="state.vm.form.imageUrl"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item
|
||||||
|
label="是否启用"
|
||||||
|
name="isEnabled"
|
||||||
|
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
|
||||||
|
>
|
||||||
|
<a-select v-model:value="state.vm.form.isEnabled">
|
||||||
|
<a-select-option :value="true">启用</a-select-option>
|
||||||
|
<a-select-option :value="false">禁用</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
@ -58,7 +58,7 @@ async function findList() {
|
||||||
// state.total = result.data.total;
|
// state.total = result.data.total;
|
||||||
// state.columns = result.data.columns;
|
// state.columns = result.data.columns;
|
||||||
state.data = Tools.genTreeData(result.data, null);
|
state.data = Tools.genTreeData(result.data, null);
|
||||||
state.expandedRowKeys =[];// result.data.map((item: any) => item.id);
|
state.expandedRowKeys =result.data.map((item: any) => item.id);//[];//
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
state.loading = false;
|
state.loading = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,187 @@
|
||||||
|
using MiaoYu.Repository.ChatAI.Admin.Entities;
|
||||||
|
using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||||
|
|
||||||
|
using TencentCloud.Tsf.V20180326.Models;
|
||||||
|
namespace MiaoYu.Api.Admin.ApplicationServices.Apps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发现页类别菜单 服务 T_Category_Child_MenuService
|
||||||
|
/// </summary>
|
||||||
|
public class T_Category_Child_MenuService(
|
||||||
|
IRepository<T_Category_Child_Menu> defaultRepository,
|
||||||
|
IRepository<T_Image_Config> imageRepository,
|
||||||
|
IRepository<T_Character> character,
|
||||||
|
IRepository<SysDictionary> sysDictionary)
|
||||||
|
: ApplicationService<IRepository<T_Category_Child_Menu>>(defaultRepository)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取列表数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pagingSearchInput"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<PagingView> FindListAsync(PagingSearchInput<T_Category_Child_Menu> pagingSearchInput)
|
||||||
|
{
|
||||||
|
var query = this._defaultRepository.Select
|
||||||
|
|
||||||
|
//项目
|
||||||
|
.WhereIf(pagingSearchInput.Search?.TenantId != null,
|
||||||
|
w => w.TenantId == pagingSearchInput.Search.TenantId)
|
||||||
|
.WhereIf(!string.IsNullOrEmpty(pagingSearchInput.Search?.Type),
|
||||||
|
w => w.Type == pagingSearchInput.Search.Type)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.OrderByDescending(w => w.Id)
|
||||||
|
.Select(w => new
|
||||||
|
{
|
||||||
|
TypeName = "",
|
||||||
|
w.TenantId,
|
||||||
|
w.Id,
|
||||||
|
w.Type,
|
||||||
|
Name = w.Name == null && w.ActionType == "Chat" ? character.Select.FirstOrDefault(it => it.Id.ToString() == w.ActionId).Name : w.Name,
|
||||||
|
w.ActionId,
|
||||||
|
w.ActionType,
|
||||||
|
ImageId = w.ImageId == 0 && w.ActionType == "Chat" ? character.Select.FirstOrDefault(it => it.Id.ToString() == w.ActionId).BgImg : w.ImageId,
|
||||||
|
w.OrderById,
|
||||||
|
w.ImageUrl,
|
||||||
|
w.IsEnabled,
|
||||||
|
w.SubTitle,
|
||||||
|
// w.LastModificationTime,
|
||||||
|
// w.CreationTime
|
||||||
|
})
|
||||||
|
;
|
||||||
|
|
||||||
|
var result = await _defaultRepository.AsPagingViewAsync(query, pagingSearchInput);
|
||||||
|
|
||||||
|
var imageIds = new List<int>();
|
||||||
|
result.DataSource.ForEach(it =>
|
||||||
|
{
|
||||||
|
|
||||||
|
if (it.TryGetValue("ImageId", out var bgImg))
|
||||||
|
{
|
||||||
|
if (int.TryParse(bgImg.ToString(), out var t))
|
||||||
|
{
|
||||||
|
imageIds.Add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
var imageList = imageRepository.GetAllList(it => imageIds.Contains(it.ImageId));
|
||||||
|
|
||||||
|
|
||||||
|
result.DataSource.ForEach(it =>
|
||||||
|
{
|
||||||
|
if (it.TryGetValue("Type", out var type))
|
||||||
|
{
|
||||||
|
it["TypeName"] = sysDictionary.Select.FirstOrDefault(item => item.Code == type.ToString())?.Name ?? "";
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(it["ImageUrl"]?.ToString()))
|
||||||
|
{
|
||||||
|
setImageId(it, imageList, "ImageId", "ImageUrl");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setImageId(Dictionary<string, object?> it, List<T_Image_Config> imageList, string key, string keyurl)
|
||||||
|
{
|
||||||
|
it.TryAdd(keyurl, "");
|
||||||
|
if (it.TryGetValue(key, out var bgImg))
|
||||||
|
{
|
||||||
|
if (int.TryParse(bgImg.ToString(), out var t))
|
||||||
|
{
|
||||||
|
var img = imageList.FirstOrDefault(it => it.ImageId == t);
|
||||||
|
if (img != null)
|
||||||
|
{
|
||||||
|
it[keyurl] = img.Url ?? "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据id数组删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids">ids</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task DeleteListAsync(List<int> ids)
|
||||||
|
{
|
||||||
|
await this._defaultRepository.DeleteByIdsAsync(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询表单数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">id</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Dictionary<string, object>> FindFormAsync(int id)
|
||||||
|
{
|
||||||
|
var res = new Dictionary<string, object>();
|
||||||
|
var form = await this._defaultRepository.FindByIdAsync(id);
|
||||||
|
//form = form.NullSafe();
|
||||||
|
if (form == null)
|
||||||
|
{
|
||||||
|
form = new T_Category_Child_Menu()
|
||||||
|
{
|
||||||
|
IsEnabled = true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
//if (form.CreateTime == null || form.CreateTime == DateTime.MinValue)
|
||||||
|
//{
|
||||||
|
// form.CreateTime = DateTime.Now;
|
||||||
|
//}
|
||||||
|
//if (form.UpdateTime == null || form.UpdateTime == DateTime.MinValue)
|
||||||
|
//{
|
||||||
|
// form.UpdateTime = DateTime.Now;
|
||||||
|
//}
|
||||||
|
res[nameof(id)] = id;
|
||||||
|
res[nameof(form)] = form;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form">form</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Task SaveFormAsync(T_Category_Child_Menu form)
|
||||||
|
{
|
||||||
|
return this._defaultRepository.InsertOrUpdateAsync(form);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出Excel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pagingSearchInput"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<byte[]> ExportExcelAsync(PagingSearchInput<T_Category_Child_Menu> pagingSearchInput)
|
||||||
|
{
|
||||||
|
pagingSearchInput.Page = -1;
|
||||||
|
var tableViewModel = await this.FindListAsync(pagingSearchInput);
|
||||||
|
return ExcelUtil.ExportExcelByPagingView(tableViewModel, null, "Id");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
|
||||||
|
public async Task<bool> UpdateState(bool state, int id)
|
||||||
|
{
|
||||||
|
var form = await this._defaultRepository.FindByIdAsync(id);
|
||||||
|
if (form == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
form.IsEnabled = state;
|
||||||
|
await SaveFormAsync(form);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -162,10 +162,38 @@ public class SysDictionaryService : ApplicationService<IRepository<SysDictionary
|
||||||
|
|
||||||
var dictionary = await _defaultRepository.FindAsync(w => w.Code == code);
|
var dictionary = await _defaultRepository.FindAsync(w => w.Code == code);
|
||||||
if (dictionary == null) return default;
|
if (dictionary == null) return default;
|
||||||
var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).ToListAsync();
|
var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).OrderBy(it => it.Sort).ToListAsync();
|
||||||
if (!dictionarys.Any()) return default;
|
if (!dictionarys.Any()) return default;
|
||||||
var result = new List<SysDictionaryDto>();
|
var result = new List<SysDictionaryDto>();
|
||||||
return CreateDictionaryTree(dictionary.Id, dictionarys);
|
return CreateDictionaryTree(dictionary.Id, dictionarys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tenant"></param>
|
||||||
|
/// <param name="code"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<SysDictionaryDto>> GetDictionaryByProjectCodeAsync(string tenant, string code)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(tenant))
|
||||||
|
{
|
||||||
|
MessageBox.Show("参数Code是空!");
|
||||||
|
}
|
||||||
|
//拿到租户
|
||||||
|
var dictionary = await _defaultRepository.FindAsync(w => w.Code == tenant);
|
||||||
|
if (dictionary == null) return default;
|
||||||
|
//拿到租户的子标签
|
||||||
|
//var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).OrderBy(it => it.Sort).ToListAsync();
|
||||||
|
//if (dictionarys.Count == 0) return default;
|
||||||
|
var list = await _defaultRepository.SelectNoTracking.ToListAsync();
|
||||||
|
|
||||||
|
//dictionarys.ForEach(_dictionary =>
|
||||||
|
//{
|
||||||
|
|
||||||
|
//});
|
||||||
|
//var result = new List<SysDictionaryDto>();
|
||||||
|
return CreateDictionaryTree(dictionary.Id, list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
using MiaoYu.Api.Admin.ApplicationServices.Apps;
|
||||||
|
using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||||
|
namespace MiaoYu.Api.Admin.Controllers.Apps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发现页类别菜单 控制器
|
||||||
|
/// </summary>
|
||||||
|
[ControllerDescriptor(MenuId = "请设置菜单Id 系统菜单表中查找,如果不设置不受权限保护!", DisplayName = "发现页类别菜单")]
|
||||||
|
public class T_Category_Child_MenuController : AdminControllerBase<T_Category_Child_MenuService>
|
||||||
|
{
|
||||||
|
public T_Category_Child_MenuController(T_Category_Child_MenuService defaultService)
|
||||||
|
: base(defaultService)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pagingSearchInput"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Display, DisplayName = "查看数据")]
|
||||||
|
[HttpPost]
|
||||||
|
public Task<PagingView> FindListAsync([FromBody] PagingSearchInput<T_Category_Child_Menu> pagingSearchInput)
|
||||||
|
{
|
||||||
|
return this._defaultService.FindListAsync(pagingSearchInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据id数组删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids">ids</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Delete, DisplayName = "删除数据")]
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<bool> DeleteListAsync([FromBody] List<int> ids)
|
||||||
|
{
|
||||||
|
await this._defaultService.DeleteListAsync(ids);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询表单数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">id</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ActionDescriptor(DisplayName = "查看表单")]
|
||||||
|
[HttpGet("{id?}")]
|
||||||
|
public Task<Dictionary<string, object>> FindFormAsync([FromRoute] int id)
|
||||||
|
{
|
||||||
|
return this._defaultService.FindFormAsync(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[RequestLimitFilter(Duration = 1, LimitCount = 1)]
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Insert, DisplayName = "创建表单")]
|
||||||
|
[HttpPost]
|
||||||
|
[ApiCheckModel]
|
||||||
|
public Task CreateAsync([FromBody] T_Category_Child_Menu form)
|
||||||
|
{
|
||||||
|
return this._defaultService.SaveFormAsync(form);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[RequestLimitFilter(Duration = 1, LimitCount = 1)]
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Update, DisplayName = "编辑表单")]
|
||||||
|
[HttpPost]
|
||||||
|
[ApiCheckModel]
|
||||||
|
public Task UpdateAsync([FromBody] T_Category_Child_Menu form)
|
||||||
|
{
|
||||||
|
return this._defaultService.SaveFormAsync(form);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出Excel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pagingSearchInput"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Export, DisplayName = "导出数据")]
|
||||||
|
[ApiResourceCacheFilter(10)]
|
||||||
|
[HttpPost]
|
||||||
|
public async Task ExportExcelAsync([FromBody] PagingSearchInput<T_Category_Child_Menu> pagingSearchInput)
|
||||||
|
{
|
||||||
|
var data = await this._defaultService.ExportExcelAsync(pagingSearchInput);
|
||||||
|
var name = $"{PermissionUtil.GetControllerDisplayName(this.GetType())}列表数据 {DateTime.Now.ToString("yyyy-MM-dd")}.xls";
|
||||||
|
base.HttpContext.DownLoadFile(data, Tools.GetFileContentType[".xls"].ToStr(), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改角色状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <param name="v"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ActionDescriptor(PermissionFunctionConsts.Function_Update, DisplayName = "修改角色状态")]
|
||||||
|
[HttpPost("{id?}/{v?}")]
|
||||||
|
public async Task<bool> UpdateState([FromRoute] int id, [FromRoute] int v)
|
||||||
|
{
|
||||||
|
return await this._defaultService.UpdateState(v == 0 ? false : true, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -112,4 +112,16 @@ public class SysDictionaryController : AdminControllerBase<SysDictionaryService>
|
||||||
return _defaultService.GetDictionaryByCodeAsync(code);
|
return _defaultService.GetDictionaryByCodeAsync(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据编码获取 字典集合
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tenant"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{tenant}")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public Task<List<SysDictionaryDto>> GetDictionaryByProjectCodeAsync([FromRoute] string tenant)
|
||||||
|
{
|
||||||
|
return _defaultService.GetDictionaryByProjectCodeAsync(tenant,"");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -195,6 +195,59 @@
|
||||||
<param name="name"></param>
|
<param name="name"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService">
|
||||||
|
<summary>
|
||||||
|
发现页类别菜单 服务 T_Category_Child_MenuService
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.#ctor(HZY.Framework.Repository.EntityFramework.IRepository{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu},HZY.Framework.Repository.EntityFramework.IRepository{MiaoYu.Repository.ChatAI.Admin.Entities.T_Image_Config},HZY.Framework.Repository.EntityFramework.IRepository{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Character},HZY.Framework.Repository.EntityFramework.IRepository{MiaoYu.Repository.Admin.Entities.Systems.SysDictionary})">
|
||||||
|
<summary>
|
||||||
|
发现页类别菜单 服务 T_Category_Child_MenuService
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu})">
|
||||||
|
<summary>
|
||||||
|
获取列表数据
|
||||||
|
</summary>
|
||||||
|
<param name="pagingSearchInput"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
根据id数组删除
|
||||||
|
</summary>
|
||||||
|
<param name="ids">ids</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.FindFormAsync(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
查询表单数据
|
||||||
|
</summary>
|
||||||
|
<param name="id">id</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.SaveFormAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu)">
|
||||||
|
<summary>
|
||||||
|
保存数据
|
||||||
|
</summary>
|
||||||
|
<param name="form">form</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu})">
|
||||||
|
<summary>
|
||||||
|
导出Excel
|
||||||
|
</summary>
|
||||||
|
<param name="pagingSearchInput"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Apps.T_Category_Child_MenuService.UpdateState(System.Boolean,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
修改状态
|
||||||
|
</summary>
|
||||||
|
<param name="state"></param>
|
||||||
|
<param name="id"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Apps.T_CharacterService">
|
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Apps.T_CharacterService">
|
||||||
<summary>
|
<summary>
|
||||||
人物表 服务 T_CharacterService
|
人物表 服务 T_CharacterService
|
||||||
|
|
@ -1648,6 +1701,14 @@
|
||||||
<param name="code"></param>
|
<param name="code"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.ApplicationServices.Systems.SysDictionaryService.GetDictionaryByProjectCodeAsync(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="tenant"></param>
|
||||||
|
<param name="code"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Systems.SysFunctionService">
|
<member name="T:MiaoYu.Api.Admin.ApplicationServices.Systems.SysFunctionService">
|
||||||
<summary>
|
<summary>
|
||||||
功能服务
|
功能服务
|
||||||
|
|
@ -2064,6 +2125,61 @@
|
||||||
<param name="name"></param>
|
<param name="name"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController">
|
||||||
|
<summary>
|
||||||
|
发现页类别菜单 控制器
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.FindListAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu})">
|
||||||
|
<summary>
|
||||||
|
获取列表
|
||||||
|
</summary>
|
||||||
|
<param name="pagingSearchInput"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.DeleteListAsync(System.Collections.Generic.List{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
根据id数组删除
|
||||||
|
</summary>
|
||||||
|
<param name="ids">ids</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.FindFormAsync(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
查询表单数据
|
||||||
|
</summary>
|
||||||
|
<param name="id">id</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.CreateAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu)">
|
||||||
|
<summary>
|
||||||
|
添加
|
||||||
|
</summary>
|
||||||
|
<param name="form"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.UpdateAsync(MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu)">
|
||||||
|
<summary>
|
||||||
|
编辑
|
||||||
|
</summary>
|
||||||
|
<param name="form"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.ExportExcelAsync(MiaoYu.Shared.Admin.Models.PagingViews.PagingSearchInput{MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu})">
|
||||||
|
<summary>
|
||||||
|
导出Excel
|
||||||
|
</summary>
|
||||||
|
<param name="pagingSearchInput"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Apps.T_Category_Child_MenuController.UpdateState(System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
修改角色状态
|
||||||
|
</summary>
|
||||||
|
<param name="id"></param>
|
||||||
|
<param name="v"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:MiaoYu.Api.Admin.Controllers.Apps.T_CharacterController">
|
<member name="T:MiaoYu.Api.Admin.Controllers.Apps.T_CharacterController">
|
||||||
<summary>
|
<summary>
|
||||||
人物表 控制器
|
人物表 控制器
|
||||||
|
|
@ -3246,6 +3362,13 @@
|
||||||
<param name="code"></param>
|
<param name="code"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:MiaoYu.Api.Admin.Controllers.Systems.SysDictionaryController.GetDictionaryByProjectCodeAsync(System.String)">
|
||||||
|
<summary>
|
||||||
|
根据编码获取 字典集合
|
||||||
|
</summary>
|
||||||
|
<param name="tenant"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:MiaoYu.Api.Admin.Controllers.Systems.SysFunctionController">
|
<member name="T:MiaoYu.Api.Admin.Controllers.Systems.SysFunctionController">
|
||||||
<summary>
|
<summary>
|
||||||
功能控制器
|
功能控制器
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发现页类别菜单
|
||||||
|
/// </summary>
|
||||||
|
[EntityDescription(FieldIgnored = true)]
|
||||||
|
public class T_Category_Child_Menu : DefaultEntityV4
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 菜单类型 => 备注: 菜单类型(banner,热门推荐,热门小说)
|
||||||
|
/// </summary>
|
||||||
|
public string? Type { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 名称 => 备注: 名称
|
||||||
|
/// </summary>
|
||||||
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 动作I => 备注: 动作Id
|
||||||
|
/// </summary>
|
||||||
|
public string? ActionId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 动作类型 => 备注: 动作类型
|
||||||
|
/// </summary>
|
||||||
|
public string? ActionType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 图片Id => 备注: 图片Id
|
||||||
|
/// </summary>
|
||||||
|
public Int32 ImageId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 排序 => 备注: 排序
|
||||||
|
/// </summary>
|
||||||
|
public Int32 OrderById { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 图片补位 => 备注: 图片补位
|
||||||
|
/// </summary>
|
||||||
|
public string? ImageUrl { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否启用 => 备注: IsEnabled
|
||||||
|
/// </summary>
|
||||||
|
public Boolean IsEnabled { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 副标题 => 备注: SubTitle
|
||||||
|
/// </summary>
|
||||||
|
public string? SubTitle { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -37,6 +37,56 @@
|
||||||
</summary>
|
</summary>
|
||||||
<param name="webApplication"></param>
|
<param name="webApplication"></param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu">
|
||||||
|
<summary>
|
||||||
|
发现页类别菜单
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.Type">
|
||||||
|
<summary>
|
||||||
|
菜单类型 => 备注: 菜单类型(banner,热门推荐,热门小说)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.Name">
|
||||||
|
<summary>
|
||||||
|
名称 => 备注: 名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.ActionId">
|
||||||
|
<summary>
|
||||||
|
动作I => 备注: 动作Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.ActionType">
|
||||||
|
<summary>
|
||||||
|
动作类型 => 备注: 动作类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.ImageId">
|
||||||
|
<summary>
|
||||||
|
图片Id => 备注: 图片Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.OrderById">
|
||||||
|
<summary>
|
||||||
|
排序 => 备注: 排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.ImageUrl">
|
||||||
|
<summary>
|
||||||
|
图片补位 => 备注: 图片补位
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.IsEnabled">
|
||||||
|
<summary>
|
||||||
|
是否启用 => 备注: IsEnabled
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Category_Child_Menu.SubTitle">
|
||||||
|
<summary>
|
||||||
|
副标题 => 备注: SubTitle
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Character">
|
<member name="T:MiaoYu.Repository.ChatAI.Admin.Entities.Apps.T_Character">
|
||||||
<summary>
|
<summary>
|
||||||
人物表
|
人物表
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user