diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/LabelValueVO.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/LabelValueVO.java index 2a7b3b4c..78257473 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/LabelValueVO.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/LabelValueVO.java @@ -23,6 +23,8 @@ import lombok.NoArgsConstructor; import io.swagger.v3.oas.annotations.media.Schema; +import com.fasterxml.jackson.annotation.JsonInclude; + /** * 键值对信息 * @@ -49,8 +51,21 @@ public class LabelValueVO implements Serializable { @Schema(description = "值", example = "1") private V value; + /** + * 颜色 + */ + @Schema(description = "颜色", example = "#165DFF") + @JsonInclude(JsonInclude.Include.NON_NULL) + private String color; + public LabelValueVO(String label, V value) { this.label = label; this.value = value; } + + public LabelValueVO(String label, V value, String color) { + this.label = label; + this.value = value; + this.color = color; + } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/DictItemMapper.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/DictItemMapper.java index fdfcf180..b4968a19 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/DictItemMapper.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/DictItemMapper.java @@ -16,7 +16,12 @@ package top.charles7c.cnadmin.system.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + import top.charles7c.cnadmin.common.base.BaseMapper; +import top.charles7c.cnadmin.common.model.vo.LabelValueVO; import top.charles7c.cnadmin.system.model.entity.DictItemDO; /** @@ -25,4 +30,14 @@ import top.charles7c.cnadmin.system.model.entity.DictItemDO; * @author Charles7c * @since 2023/9/11 21:29 */ -public interface DictItemMapper extends BaseMapper {} \ No newline at end of file +public interface DictItemMapper extends BaseMapper { + + /** + * 根据字典编码查询 + * + * @param dictCode + * 字典编码 + * @return 字典项列表 + */ + List listByDictCode(@Param("dictCode") String dictCode); +} \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/AnnouncementDO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/AnnouncementDO.java index 0820b9d6..24b61611 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/AnnouncementDO.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/AnnouncementDO.java @@ -23,7 +23,6 @@ import lombok.Data; import com.baomidou.mybatisplus.annotation.TableName; import top.charles7c.cnadmin.common.base.BaseDO; -import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; /** * 公告实体 @@ -50,7 +49,7 @@ public class AnnouncementDO extends BaseDO { /** * 类型 */ - private AnnouncementTypeEnum type; + private String type; /** * 生效时间 diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/AnnouncementRequest.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/AnnouncementRequest.java index 9b8c734e..5834f329 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/AnnouncementRequest.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/AnnouncementRequest.java @@ -27,7 +27,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import org.hibernate.validator.constraints.Length; import top.charles7c.cnadmin.common.base.BaseRequest; -import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; /** * 创建或修改公告信息 @@ -57,11 +56,11 @@ public class AnnouncementRequest extends BaseRequest { private String content; /** - * 类型 + * 类型(取值于字典 announcement_type) */ - @Schema(description = "类型", type = "Integer", allowableValues = {"1", "2", "3"}, example = "1") - @NotNull(message = "类型非法") - private AnnouncementTypeEnum type; + @Schema(description = "类型(取值于字典 announcement_type)", example = "1") + @NotBlank(message = "类型不能为空") + private String type; /** * 生效时间 diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDetailVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDetailVO.java index e1a8c188..5962c70d 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDetailVO.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDetailVO.java @@ -26,8 +26,6 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import top.charles7c.cnadmin.common.base.BaseDetailVO; -import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter; -import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; /** * 公告详情信息 @@ -57,11 +55,11 @@ public class AnnouncementDetailVO extends BaseDetailVO { private String content; /** - * 类型 + * 类型(取值于字典 announcement_type) */ - @Schema(description = "类型", type = "Integer", allowableValues = {"1", "2", "3"}, example = "1") - @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class) - private AnnouncementTypeEnum type; + @Schema(description = "类型(取值于字典 announcement_type)", example = "1") + @ExcelProperty(value = "类型") + private String type; /** * 生效时间 diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementVO.java index 6c465b33..560ddcfd 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementVO.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementVO.java @@ -23,7 +23,6 @@ import lombok.Data; import io.swagger.v3.oas.annotations.media.Schema; import top.charles7c.cnadmin.common.base.BaseVO; -import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; /** * 公告信息 @@ -44,10 +43,10 @@ public class AnnouncementVO extends BaseVO { private String title; /** - * 类型 + * 类型(取值于字典 announcement_type) */ - @Schema(description = "类型", type = "Integer", allowableValues = {"1", "2", "3"}, example = "1") - private AnnouncementTypeEnum type; + @Schema(description = "类型(取值于字典 announcement_type)", example = "1") + private String type; /** * 生效时间 diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DictItemService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DictItemService.java index 61019378..4204d6af 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DictItemService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DictItemService.java @@ -19,6 +19,7 @@ package top.charles7c.cnadmin.system.service; import java.util.List; import top.charles7c.cnadmin.common.base.BaseService; +import top.charles7c.cnadmin.common.model.vo.LabelValueVO; import top.charles7c.cnadmin.system.model.query.DictItemQuery; import top.charles7c.cnadmin.system.model.request.DictItemRequest; import top.charles7c.cnadmin.system.model.vo.DictItemDetailVO; @@ -41,6 +42,15 @@ public interface DictItemService extends BaseService listByDictId(Long dictId); + /** + * 根据字典编码查询 + * + * @param dictCode + * 字典编码 + * @return 字典项列表 + */ + List listByDictCode(String dictCode); + /** * 根据字典 ID 列表删除 * diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictItemServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictItemServiceImpl.java index 89bec1c2..93117f1c 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictItemServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictItemServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import top.charles7c.cnadmin.common.base.BaseServiceImpl; import top.charles7c.cnadmin.common.model.query.SortQuery; +import top.charles7c.cnadmin.common.model.vo.LabelValueVO; import top.charles7c.cnadmin.common.util.validate.CheckUtils; import top.charles7c.cnadmin.system.mapper.DictItemMapper; import top.charles7c.cnadmin.system.model.entity.DictItemDO; @@ -73,6 +74,11 @@ public class DictItemServiceImpl return detailList; } + @Override + public List listByDictCode(String dictCode) { + return baseMapper.listByDictCode(dictCode); + } + @Override public void deleteByDictIds(List dictIds) { baseMapper.lambdaUpdate().in(DictItemDO::getDictId, dictIds).remove(); diff --git a/continew-admin-system/src/main/resources/mapper/DictItemMapper.xml b/continew-admin-system/src/main/resources/mapper/DictItemMapper.xml new file mode 100644 index 00000000..821d9681 --- /dev/null +++ b/continew-admin-system/src/main/resources/mapper/DictItemMapper.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/continew-admin-ui/.eslintrc.js b/continew-admin-ui/.eslintrc.js index ef2005e0..739d8186 100644 --- a/continew-admin-ui/.eslintrc.js +++ b/continew-admin-ui/.eslintrc.js @@ -66,5 +66,6 @@ module.exports = { 'no-param-reassign': 0, 'prefer-regex-literals': 0, 'import/no-extraneous-dependencies': 0, + 'camelcase': 'off', }, }; diff --git a/continew-admin-ui/src/api/common/index.ts b/continew-admin-ui/src/api/common/index.ts index 015634ae..30a8ab1d 100644 --- a/continew-admin-ui/src/api/common/index.ts +++ b/continew-admin-ui/src/api/common/index.ts @@ -6,8 +6,10 @@ import { ListParam as RoleParam } from '@/api/system/role'; import { TreeNodeData } from '@arco-design/web-vue'; import { LabelValueState } from '@/store/modules/dict/types'; +const BASE_URL = '/common'; + export function listDeptTree(params: DeptParam) { - return axios.get('/common/tree/dept', { + return axios.get(`${BASE_URL}/tree/dept`, { params, paramsSerializer: (obj) => { return qs.stringify(obj); @@ -16,7 +18,7 @@ export function listDeptTree(params: DeptParam) { } export function listMenuTree(params: MenuParam) { - return axios.get('/common/tree/menu', { + return axios.get(`${BASE_URL}/tree/menu`, { params, paramsSerializer: (obj) => { return qs.stringify(obj); @@ -25,7 +27,7 @@ export function listMenuTree(params: MenuParam) { } export function listRoleDict(params: RoleParam) { - return axios.get('/common/dict/role', { + return axios.get(`${BASE_URL}/dict/role`, { params, paramsSerializer: (obj) => { return qs.stringify(obj); @@ -34,5 +36,9 @@ export function listRoleDict(params: RoleParam) { } export function listEnumDict(enumTypeName: string) { - return axios.get(`/common/dict/enum/${enumTypeName}`); + return axios.get(`${BASE_URL}/dict/enum/${enumTypeName}`); +} + +export function listDict(code: string) { + return axios.get(`${BASE_URL}/dict/${code}`); } diff --git a/continew-admin-ui/src/api/system/announcement.ts b/continew-admin-ui/src/api/system/announcement.ts index bfda5b70..b52e7a15 100644 --- a/continew-admin-ui/src/api/system/announcement.ts +++ b/continew-admin-ui/src/api/system/announcement.ts @@ -7,7 +7,7 @@ export interface DataRecord { id?: string; title?: string; content?: string; - status?: string; + status?: number; type?: string; effectiveTime?: string; terminateTime?: string; @@ -21,7 +21,7 @@ export interface DataRecord { export interface ListParam { title?: string; - status?: string; + status?: number; type?: string; page?: number; size?: number; diff --git a/continew-admin-ui/src/components/dict-tag/index.vue b/continew-admin-ui/src/components/dict-tag/index.vue new file mode 100644 index 00000000..feb9ffd2 --- /dev/null +++ b/continew-admin-ui/src/components/dict-tag/index.vue @@ -0,0 +1,50 @@ + + + + + + + diff --git a/continew-admin-ui/src/components/index.ts b/continew-admin-ui/src/components/index.ts index 3be3a864..09d54c0a 100644 --- a/continew-admin-ui/src/components/index.ts +++ b/continew-admin-ui/src/components/index.ts @@ -12,6 +12,7 @@ import { import Chart from './chart/index.vue'; import Breadcrumb from './breadcrumb/index.vue'; import DateRangePicker from './date-range-picker/index.vue'; +import DictTag from './dict-tag/index.vue'; import RightToolbar from './right-toolbar/index.vue'; import SvgIcon from './svg-icon/index.vue'; import IconSelect from './icon-select/index.vue'; @@ -41,6 +42,7 @@ export default { Vue.component('Chart', Chart); Vue.component('Breadcrumb', Breadcrumb); Vue.component('DateRangePicker', DateRangePicker); + Vue.component('DictTag', DictTag); Vue.component('RightToolbar', RightToolbar); Vue.component('SvgIcon', SvgIcon); Vue.component('IconSelect', IconSelect); diff --git a/continew-admin-ui/src/store/modules/dict/types.ts b/continew-admin-ui/src/store/modules/dict/types.ts index 7ff02120..d2cf5c44 100644 --- a/continew-admin-ui/src/store/modules/dict/types.ts +++ b/continew-admin-ui/src/store/modules/dict/types.ts @@ -1,6 +1,7 @@ export interface LabelValueState { label: string; value: any; + color?: string; } export interface DictState { diff --git a/continew-admin-ui/src/utils/dict.ts b/continew-admin-ui/src/utils/dict.ts index 17573da9..cbd1754e 100644 --- a/continew-admin-ui/src/utils/dict.ts +++ b/continew-admin-ui/src/utils/dict.ts @@ -1,25 +1,33 @@ import { ref, toRefs } from 'vue'; -import { listEnumDict } from '@/api/common'; +import { listEnumDict, listDict } from '@/api/common'; import { useDictStore } from '@/store'; /** * 获取字典数据 * - * @param names 字典名列表 + * @param dicts 字典列表 */ -export default function useDict(...names: Array) { +export default function useDict( + ...dicts: Array<{ name: string; isEnum: boolean }> +) { const res = ref({}); return (() => { - names.forEach((name: string) => { + dicts.forEach((d) => { + const { name } = d; res.value[name] = []; const dict = useDictStore().getDict(name); if (dict) { res.value[name] = dict; - } else { + } else if (d.isEnum) { listEnumDict(name).then((resp) => { res.value[name] = resp.data; useDictStore().setDict(name, res.value[name]); }); + } else { + listDict(name).then((resp) => { + res.value[name] = resp.data; + useDictStore().setDict(name, res.value[name]); + }); } }); return toRefs(res.value); diff --git a/continew-admin-ui/src/views/dashboard/workplace/components/announcement.vue b/continew-admin-ui/src/views/dashboard/workplace/components/announcement.vue index 0d295b77..c750f264 100644 --- a/continew-admin-ui/src/views/dashboard/workplace/components/announcement.vue +++ b/continew-admin-ui/src/views/dashboard/workplace/components/announcement.vue @@ -13,9 +13,7 @@
暂无公告
- 活动 - 消息 - 通知 + {{ item.title }} @@ -82,13 +80,19 @@