修改发现
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']
|
||||
FindBack: typeof import('./core/components/FindBack.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']
|
||||
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']
|
||||
Index: typeof import('./core/components/vue3-cron-core/Index.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>
|
||||
|
|
@ -22,7 +22,7 @@ const props = withDefaults(defineProps<{
|
|||
// 定义 emits
|
||||
const emits = defineEmits(['update:modelValue']);
|
||||
|
||||
// 异步获取数据并更新 options
|
||||
// 异步获取数据并更新 options
|
||||
AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => {
|
||||
// console.log(data);
|
||||
options.value?.push(...data);
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import AppDictionaryTenantCache from "./cache/AppDictionaryTenantCache";
|
|||
import AppDictionaryTypesCache from "./cache/AppDictionaryTypesCache";
|
||||
import AppDictionaryPersonalitysCache from "./cache/AppDictionaryPersonalitysCache";
|
||||
import AppDictionaryLablesCache from "./cache/AppDictionaryLablesCache";
|
||||
import AppDictionaryActionTypeCache from "./cache/AppDictionaryActionTypeCache";
|
||||
/**
|
||||
* 基础数据缓存类
|
||||
*/
|
||||
|
|
@ -33,6 +34,11 @@ class AppDictionaryCache {
|
|||
* 标签配置
|
||||
*/
|
||||
static appDictionaryLablesCache: AbstractDictionaryCache = new AppDictionaryLablesCache();
|
||||
|
||||
/**
|
||||
* 动作类型
|
||||
*/
|
||||
static appDictionaryActionTypeCache: AbstractDictionaryCache = new AppDictionaryActionTypeCache();
|
||||
}
|
||||
|
||||
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) {
|
||||
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.columns = result.data.columns;
|
||||
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) {
|
||||
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);
|
||||
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;
|
||||
var result = new List<SysDictionaryDto>();
|
||||
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);
|
||||
}
|
||||
|
||||
/// <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>
|
||||
<returns></returns>
|
||||
</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">
|
||||
<summary>
|
||||
人物表 服务 T_CharacterService
|
||||
|
|
@ -1648,6 +1701,14 @@
|
|||
<param name="code"></param>
|
||||
<returns></returns>
|
||||
</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">
|
||||
<summary>
|
||||
功能服务
|
||||
|
|
@ -2064,6 +2125,61 @@
|
|||
<param name="name"></param>
|
||||
<returns></returns>
|
||||
</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">
|
||||
<summary>
|
||||
人物表 控制器
|
||||
|
|
@ -3246,6 +3362,13 @@
|
|||
<param name="code"></param>
|
||||
<returns></returns>
|
||||
</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">
|
||||
<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>
|
||||
<param name="webApplication"></param>
|
||||
</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">
|
||||
<summary>
|
||||
人物表
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user