mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-10-26 20:57:11 +08:00
refactor: 优化枚举字典处理,增加颜色类型
1.重构 useDict 方法,同时支持枚举和查询字典,对应后端接口增加缓存处理 2.优化 BaseEnum 处理,增加 color 字段可用于设置对应枚举背景颜色(同字典背景颜色)
This commit is contained in:
@@ -35,10 +35,6 @@ export function listRoleDict(params: RoleParam) {
|
||||
});
|
||||
}
|
||||
|
||||
export function listEnumDict(enumTypeName: string) {
|
||||
return axios.get<LabelValueState[]>(`${BASE_URL}/dict/enum/${enumTypeName}`);
|
||||
}
|
||||
|
||||
export function listDict(code: string) {
|
||||
return axios.get<LabelValueState[]>(`${BASE_URL}/dict/${code}`);
|
||||
}
|
||||
|
||||
@@ -5,32 +5,32 @@ const useDictStore = defineStore('dict', {
|
||||
state: () => ({ dict: [] as Array<DictState> }),
|
||||
actions: {
|
||||
// 获取字典
|
||||
getDict(_name: string) {
|
||||
if (_name == null || _name === '') {
|
||||
getDict(_code: string) {
|
||||
if (_code == null || _code === '') {
|
||||
return null;
|
||||
}
|
||||
for (let i = 0; i < this.dict.length; i += 1) {
|
||||
if (this.dict[i].name === _name) {
|
||||
return this.dict[i].detail;
|
||||
if (this.dict[i].code === _code) {
|
||||
return this.dict[i].items;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
// 设置字典
|
||||
setDict(_name: string, detail: Array<LabelValueState>) {
|
||||
if (_name !== null && _name !== '') {
|
||||
setDict(_code: string, items: Array<LabelValueState>) {
|
||||
if (_code !== null && _code !== '') {
|
||||
this.dict.push({
|
||||
name: _name,
|
||||
detail,
|
||||
code: _code,
|
||||
items,
|
||||
});
|
||||
}
|
||||
},
|
||||
// 删除字典
|
||||
deleteDict(_name: string) {
|
||||
deleteDict(_code: string) {
|
||||
let bln = false;
|
||||
try {
|
||||
for (let i = 0; i < this.dict.length; i += 1) {
|
||||
if (this.dict[i].name === _name) {
|
||||
if (this.dict[i].code === _code) {
|
||||
this.dict.splice(i, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ export interface LabelValueState {
|
||||
}
|
||||
|
||||
export interface DictState {
|
||||
name: string;
|
||||
detail: Array<LabelValueState>;
|
||||
code: string;
|
||||
items: Array<LabelValueState>;
|
||||
}
|
||||
|
||||
@@ -1,32 +1,24 @@
|
||||
import { ref, toRefs } from 'vue';
|
||||
import { listEnumDict, listDict } from '@/api/common';
|
||||
import { listDict } from '@/api/common';
|
||||
import { useDictStore } from '@/store';
|
||||
|
||||
/**
|
||||
* 获取字典数据
|
||||
*
|
||||
* @param dicts 字典列表
|
||||
* @param codes 字典编码列表
|
||||
*/
|
||||
export default function useDict(
|
||||
...dicts: Array<{ name: string; isEnum: boolean }>
|
||||
) {
|
||||
export default function useDict(...codes: Array<string>) {
|
||||
const res = ref<any>({});
|
||||
return (() => {
|
||||
dicts.forEach((d) => {
|
||||
const { name } = d;
|
||||
res.value[name] = [];
|
||||
const dict = useDictStore().getDict(name);
|
||||
codes.forEach((code) => {
|
||||
res.value[code] = [];
|
||||
const dict = useDictStore().getDict(code);
|
||||
if (dict) {
|
||||
res.value[name] = dict;
|
||||
} else if (d.isEnum) {
|
||||
listEnumDict(name).then((resp) => {
|
||||
res.value[name] = resp.data;
|
||||
useDictStore().setDict(name, res.value[name]);
|
||||
});
|
||||
res.value[code] = dict;
|
||||
} else {
|
||||
listDict(name).then((resp) => {
|
||||
res.value[name] = resp.data;
|
||||
useDictStore().setDict(name, res.value[name]);
|
||||
listDict(code).then((resp) => {
|
||||
res.value[code] = resp.data;
|
||||
useDictStore().setDict(code, res.value[code]);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div>
|
||||
<a-empty v-if="dataList.length === 0">暂无公告</a-empty>
|
||||
<div v-for="(item, idx) in dataList" :key="idx" class="item">
|
||||
<dict-tag :dict="announcement_type" :value="item.type" />
|
||||
<dict-tag :value="item.type" :dict="announcement_type" />
|
||||
<span class="item-content">
|
||||
<a-link @click="toDetail(item.id)">{{ item.title }}</a-link>
|
||||
</span>
|
||||
@@ -88,10 +88,7 @@
|
||||
import { DataRecord, get } from '@/api/system/announcement';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { announcement_type } = proxy.useDict({
|
||||
name: 'announcement_type',
|
||||
isEnum: false,
|
||||
});
|
||||
const { announcement_type } = proxy.useDict('announcement_type');
|
||||
|
||||
const dataList = ref<DashboardAnnouncementRecord[]>([]);
|
||||
const dataDetail = ref<DataRecord>({});
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="SuccessFailureStatusEnum"
|
||||
:options="success_failure_status_enum"
|
||||
placeholder="登录状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -91,10 +91,9 @@
|
||||
} from '@/api/monitor/log';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { SuccessFailureStatusEnum } = proxy.useDict({
|
||||
name: 'SuccessFailureStatusEnum',
|
||||
isEnum: true,
|
||||
});
|
||||
const { success_failure_status_enum } = proxy.useDict(
|
||||
'success_failure_status_enum'
|
||||
);
|
||||
|
||||
const loginLogList = ref<LoginLogRecord[]>([]);
|
||||
const total = ref(0);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="SuccessFailureStatusEnum"
|
||||
:options="success_failure_status_enum"
|
||||
placeholder="操作状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -101,10 +101,9 @@
|
||||
} from '@/api/monitor/log';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { SuccessFailureStatusEnum } = proxy.useDict({
|
||||
name: 'SuccessFailureStatusEnum',
|
||||
isEnum: true,
|
||||
});
|
||||
const { success_failure_status_enum } = proxy.useDict(
|
||||
'success_failure_status_enum'
|
||||
);
|
||||
|
||||
const operationLogList = ref<OperationLogRecord[]>([]);
|
||||
const total = ref(0);
|
||||
|
||||
@@ -128,16 +128,15 @@
|
||||
</a-table-column>
|
||||
<a-table-column title="类型" align="center">
|
||||
<template #cell="{ record }">
|
||||
<dict-tag :dict="announcement_type" :value="record.type" />
|
||||
<dict-tag :value="record.type" :dict="announcement_type" />
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="状态" align="center">
|
||||
<template #cell="{ record }">
|
||||
<a-tag v-if="record.status === 1" color="blue">待发布</a-tag>
|
||||
<a-tag v-else-if="record.status === 2" color="green"
|
||||
>已发布</a-tag
|
||||
>
|
||||
<a-tag v-else color="red">已过期</a-tag>
|
||||
<dict-tag
|
||||
:value="record.status"
|
||||
:dict="announcement_status_enum"
|
||||
/>
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="生效时间">
|
||||
@@ -354,10 +353,10 @@
|
||||
import checkPermission from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { announcement_type } = proxy.useDict({
|
||||
name: 'announcement_type',
|
||||
isEnum: false,
|
||||
});
|
||||
const { announcement_type, announcement_status_enum } = proxy.useDict(
|
||||
'announcement_type',
|
||||
'announcement_status_enum'
|
||||
);
|
||||
|
||||
const dataList = ref<DataRecord[]>([]);
|
||||
const dataDetail = ref<DataRecord>({
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="DisEnableStatusEnum"
|
||||
:options="dis_enable_status_enum"
|
||||
placeholder="状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -316,10 +316,7 @@
|
||||
import checkPermission from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { DisEnableStatusEnum } = proxy.useDict({
|
||||
name: 'DisEnableStatusEnum',
|
||||
isEnum: true,
|
||||
});
|
||||
const { dis_enable_status_enum } = proxy.useDict('dis_enable_status_enum');
|
||||
|
||||
const dataList = ref<DataRecord[]>([]);
|
||||
const dataDetail = ref<DataRecord>({
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<template #columns>
|
||||
<a-table-column title="字典标签" align="center">
|
||||
<template #cell="{ record }">
|
||||
<dict-tag :dict="dataList" :value="record.value" />
|
||||
<dict-tag :value="record.value" :dict="dataList" />
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="字典值" align="center" data-index="value" />
|
||||
@@ -115,20 +115,20 @@
|
||||
placeholder="请选择或输入背景颜色"
|
||||
allow-clear
|
||||
>
|
||||
<template #option="{ record }">
|
||||
<a-tag v-if="record.value === 'primary'" color="arcoblue">{{
|
||||
record.value
|
||||
<template #option="{ data }">
|
||||
<a-tag v-if="data.value === 'primary'" color="arcoblue">{{
|
||||
data.value
|
||||
}}</a-tag>
|
||||
<a-tag v-else-if="record.value === 'success'" color="green">{{
|
||||
record.value
|
||||
<a-tag v-else-if="data.value === 'success'" color="green">{{
|
||||
data.value
|
||||
}}</a-tag>
|
||||
<a-tag v-else-if="record.value === 'warning'" color="orangered">{{
|
||||
record.value
|
||||
<a-tag v-else-if="data.value === 'warning'" color="orangered">{{
|
||||
data.value
|
||||
}}</a-tag>
|
||||
<a-tag v-else-if="record.value === 'error'" color="red">{{
|
||||
record.value
|
||||
<a-tag v-else-if="data.value === 'error'" color="red">{{
|
||||
data.value
|
||||
}}</a-tag>
|
||||
<a-tag v-else color="gray">{{ record.value }}</a-tag>
|
||||
<a-tag v-else color="gray">{{ data.value }}</a-tag>
|
||||
</template>
|
||||
<template #suffix>
|
||||
<color-picker v-model:pureColor="form.color" shape="circle" />
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="DisEnableStatusEnum"
|
||||
:options="dis_enable_status_enum"
|
||||
placeholder="状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -355,10 +355,7 @@
|
||||
import checkPermission from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { DisEnableStatusEnum } = proxy.useDict({
|
||||
name: 'DisEnableStatusEnum',
|
||||
isEnum: true,
|
||||
});
|
||||
const { dis_enable_status_enum } = proxy.useDict('dis_enable_status_enum');
|
||||
|
||||
const dataList = ref<DataRecord[]>([]);
|
||||
const ids = ref<Array<string>>([]);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="DisEnableStatusEnum"
|
||||
:options="dis_enable_status_enum"
|
||||
placeholder="状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -125,13 +125,7 @@
|
||||
<a-table-column title="角色编码" data-index="code" />
|
||||
<a-table-column title="数据权限" :width="130">
|
||||
<template #cell="{ record }">
|
||||
<span v-if="record.dataScope === 1">全部数据权限</span>
|
||||
<span v-else-if="record.dataScope === 2"
|
||||
>本部门及以下数据权限</span
|
||||
>
|
||||
<span v-else-if="record.dataScope === 3">本部门数据权限</span>
|
||||
<span v-else-if="record.dataScope === 4">仅本人数据权限</span>
|
||||
<span v-else>自定义数据权限</span>
|
||||
<dict-tag :value="record.dataScope" :dict="data_scope_enum" />
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="角色排序" align="center" data-index="sort" />
|
||||
@@ -282,7 +276,7 @@
|
||||
>
|
||||
<a-select
|
||||
v-model="form.dataScope"
|
||||
:options="DataScopeEnum"
|
||||
:options="data_scope_enum"
|
||||
placeholder="请选择数据权限"
|
||||
/>
|
||||
</a-form-item>
|
||||
@@ -359,17 +353,10 @@
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else>
|
||||
<span v-if="dataDetail.dataScope === 1">全部数据权限</span>
|
||||
<span v-else-if="dataDetail.dataScope === 2"
|
||||
>本部门及以下数据权限</span
|
||||
>
|
||||
<span v-else-if="dataDetail.dataScope === 3"
|
||||
>本部门数据权限</span
|
||||
>
|
||||
<span v-else-if="dataDetail.dataScope === 4"
|
||||
>仅本人数据权限</span
|
||||
>
|
||||
<span v-else>自定义数据权限</span>
|
||||
<dict-tag
|
||||
:value="dataDetail.dataScope"
|
||||
:dict="data_scope_enum"
|
||||
/>
|
||||
</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="创建人">
|
||||
@@ -448,15 +435,9 @@
|
||||
import checkPermission from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { DataScopeEnum, DisEnableStatusEnum } = proxy.useDict(
|
||||
{
|
||||
name: 'DataScopeEnum',
|
||||
isEnum: true,
|
||||
},
|
||||
{
|
||||
name: 'DisEnableStatusEnum',
|
||||
isEnum: true,
|
||||
}
|
||||
const { data_scope_enum, dis_enable_status_enum } = proxy.useDict(
|
||||
'data_scope_enum',
|
||||
'dis_enable_status_enum'
|
||||
);
|
||||
|
||||
const dataList = ref<DataRecord[]>([]);
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<a-form-item field="status" hide-label>
|
||||
<a-select
|
||||
v-model="queryParams.status"
|
||||
:options="DisEnableStatusEnum"
|
||||
:options="dis_enable_status_enum"
|
||||
placeholder="状态搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -523,10 +523,7 @@
|
||||
import checkPermission from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { DisEnableStatusEnum } = proxy.useDict({
|
||||
name: 'DisEnableStatusEnum',
|
||||
isEnum: true,
|
||||
});
|
||||
const { dis_enable_status_enum } = proxy.useDict('dis_enable_status_enum');
|
||||
|
||||
const dataList = ref<DataRecord[]>([]);
|
||||
const dataDetail = ref<DataRecord>({
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
<a-select
|
||||
v-if="record.showInForm || record.showInQuery"
|
||||
v-model="record.formType"
|
||||
:options="FormTypeEnum"
|
||||
:options="form_type_enum"
|
||||
placeholder="请选择表单类型"
|
||||
/>
|
||||
<span v-else>无需设置</span>
|
||||
@@ -222,7 +222,7 @@
|
||||
<a-select
|
||||
v-if="record.showInQuery"
|
||||
v-model="record.queryType"
|
||||
:options="QueryTypeEnum"
|
||||
:options="query_type_Enum"
|
||||
placeholder="请选择查询方式"
|
||||
/>
|
||||
<span v-else>无需设置</span>
|
||||
@@ -301,15 +301,9 @@
|
||||
} from '@/api/tool/generator';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
const { FormTypeEnum, QueryTypeEnum } = proxy.useDict(
|
||||
{
|
||||
name: 'DisEnableStatusEnum',
|
||||
isEnum: true,
|
||||
},
|
||||
{
|
||||
name: 'QueryTypeEnum',
|
||||
isEnum: true,
|
||||
}
|
||||
const { form_type_enum, query_type_Enum } = proxy.useDict(
|
||||
'form_type_enum',
|
||||
'query_type_Enum'
|
||||
);
|
||||
|
||||
const tableList = ref<TableRecord[]>([]);
|
||||
|
||||
Reference in New Issue
Block a user