refactor: 公告类型适配字典数据

1.新增 <dict-tag> 自定义组件,用于回显字典标签
2.重构 useDict 方法,支持查询字典数据
3.优化部分字典相关数据类型
This commit is contained in:
2023-09-17 13:26:14 +08:00
parent d5c5bcfe7e
commit 3a3a5d6b71
30 changed files with 224 additions and 84 deletions

View File

@@ -13,9 +13,7 @@
<div>
<a-empty v-if="dataList.length === 0">暂无公告</a-empty>
<div v-for="(item, idx) in dataList" :key="idx" class="item">
<a-tag v-if="item.type === 1" color="orangered">活动</a-tag>
<a-tag v-else-if="item.type === 2" color="cyan">消息</a-tag>
<a-tag v-else color="blue">通知</a-tag>
<dict-tag :dict="announcement_type" :value="item.type" />
<span class="item-content">
<a-link @click="toDetail(item.id)">{{ item.title }}</a-link>
</span>
@@ -82,13 +80,19 @@
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { getCurrentInstance, ref } from 'vue';
import {
DashboardAnnouncementRecord,
listAnnouncement,
} from '@/api/common/dashboard';
import { DataRecord, get } from '@/api/system/announcement';
const { proxy } = getCurrentInstance() as any;
const { announcement_type } = proxy.useDict({
name: 'announcement_type',
isEnum: false,
});
const dataList = ref<DashboardAnnouncementRecord[]>([]);
const dataDetail = ref<DataRecord>({});
const detailLoading = ref(false);

View File

@@ -91,9 +91,10 @@
} from '@/api/monitor/log';
const { proxy } = getCurrentInstance() as any;
const { SuccessFailureStatusEnum } = proxy.useDict(
'SuccessFailureStatusEnum'
);
const { SuccessFailureStatusEnum } = proxy.useDict({
name: 'SuccessFailureStatusEnum',
isEnum: true,
});
const loginLogList = ref<LoginLogRecord[]>([]);
const total = ref(0);

View File

@@ -101,9 +101,10 @@
} from '@/api/monitor/log';
const { proxy } = getCurrentInstance() as any;
const { SuccessFailureStatusEnum } = proxy.useDict(
'SuccessFailureStatusEnum'
);
const { SuccessFailureStatusEnum } = proxy.useDict({
name: 'SuccessFailureStatusEnum',
isEnum: true,
});
const operationLogList = ref<OperationLogRecord[]>([]);
const total = ref(0);

View File

@@ -19,7 +19,7 @@
<a-form-item field="type" hide-label>
<a-select
v-model="queryParams.type"
:options="AnnouncementTypeEnum"
:options="announcement_type"
placeholder="类型搜索"
allow-clear
style="width: 150px"
@@ -128,15 +128,15 @@
</a-table-column>
<a-table-column title="类型" align="center">
<template #cell="{ record }">
<a-tag v-if="record.type === 1" color="orangered">活动</a-tag>
<a-tag v-else-if="record.type === 2" color="cyan">消息</a-tag>
<a-tag v-else color="blue">通知</a-tag>
<dict-tag :dict="announcement_type" :value="record.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-if="record.status === 2" color="green"
>已发布</a-tag
>
<a-tag v-else color="red">已过期</a-tag>
</template>
</a-table-column>
@@ -226,14 +226,10 @@
</a-row>
<a-row :gutter="16">
<a-col :span="8">
<a-form-item
label="类型"
field="type"
tooltip="计划 v1.2.0 增加字典管理,用于维护此类信息"
>
<a-form-item label="类型" field="type">
<a-select
v-model="form.type"
:options="AnnouncementTypeEnum"
:options="announcement_type"
placeholder="请选择类型"
/>
</a-form-item>
@@ -358,7 +354,10 @@
import checkPermission from '@/utils/permission';
const { proxy } = getCurrentInstance() as any;
const { AnnouncementTypeEnum } = proxy.useDict('AnnouncementTypeEnum');
const { announcement_type } = proxy.useDict({
name: 'announcement_type',
isEnum: false,
});
const dataList = ref<DataRecord[]>([]);
const dataDetail = ref<DataRecord>({

View File

@@ -316,7 +316,10 @@
import checkPermission from '@/utils/permission';
const { proxy } = getCurrentInstance() as any;
const { DisEnableStatusEnum } = proxy.useDict('DisEnableStatusEnum');
const { DisEnableStatusEnum } = proxy.useDict({
name: 'DisEnableStatusEnum',
isEnum: true,
});
const dataList = ref<DataRecord[]>([]);
const dataDetail = ref<DataRecord>({

View File

@@ -168,7 +168,7 @@
</a-table>
</a-col>
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<dictItem ref="dictItemRef" :dict-id="dictId" />
<dict-item ref="dictItemRef" :dict-id="dictId" />
</a-col>
</a-row>

View File

@@ -44,23 +44,7 @@
<template #columns>
<a-table-column title="字典标签" align="center">
<template #cell="{ record }">
<a-tag v-if="record.color === 'primary'" color="arcoblue">{{
record.label
}}</a-tag>
<a-tag v-else-if="record.color === 'success'" color="green">{{
record.label
}}</a-tag>
<a-tag v-else-if="record.color === 'warning'" color="orangered">{{
record.label
}}</a-tag>
<a-tag v-else-if="record.color === 'error'" color="red">{{
record.label
}}</a-tag>
<a-tag v-else-if="record.color === 'default'" color="gray">{{
record.label
}}</a-tag>
<span v-else-if="!record.color">{{ record.label }}</span>
<a-tag v-else :color="record.color">{{ record.label }}</a-tag>
<dict-tag :dict="dataList" :value="record.value" />
</template>
</a-table-column>
<a-table-column title="字典值" align="center" data-index="value" />

View File

@@ -355,7 +355,10 @@
import checkPermission from '@/utils/permission';
const { proxy } = getCurrentInstance() as any;
const { DisEnableStatusEnum } = proxy.useDict('DisEnableStatusEnum');
const { DisEnableStatusEnum } = proxy.useDict({
name: 'DisEnableStatusEnum',
isEnum: true,
});
const dataList = ref<DataRecord[]>([]);
const ids = ref<Array<string>>([]);

View File

@@ -363,8 +363,12 @@
<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-if="dataDetail.dataScope === 3"
>本部门数据权限</span
>
<span v-else-if="dataDetail.dataScope === 4"
>仅本人数据权限</span
>
<span v-else>自定义数据权限</span>
</span>
</a-descriptions-item>
@@ -445,8 +449,14 @@
const { proxy } = getCurrentInstance() as any;
const { DataScopeEnum, DisEnableStatusEnum } = proxy.useDict(
'DataScopeEnum',
'DisEnableStatusEnum'
{
name: 'DataScopeEnum',
isEnum: true,
},
{
name: 'DisEnableStatusEnum',
isEnum: true,
}
);
const dataList = ref<DataRecord[]>([]);

View File

@@ -523,7 +523,10 @@
import checkPermission from '@/utils/permission';
const { proxy } = getCurrentInstance() as any;
const { DisEnableStatusEnum } = proxy.useDict('DisEnableStatusEnum');
const { DisEnableStatusEnum } = proxy.useDict({
name: 'DisEnableStatusEnum',
isEnum: true,
});
const dataList = ref<DataRecord[]>([]);
const dataDetail = ref<DataRecord>({

View File

@@ -302,8 +302,14 @@
const { proxy } = getCurrentInstance() as any;
const { FormTypeEnum, QueryTypeEnum } = proxy.useDict(
'FormTypeEnum',
'QueryTypeEnum'
{
name: 'DisEnableStatusEnum',
isEnum: true,
},
{
name: 'QueryTypeEnum',
isEnum: true,
}
);
const tableList = ref<TableRecord[]>([]);