Преглед изворни кода

refactor(公告模块): 优化角色和状态枚举定义及处理逻辑

yz пре 3 недеља
родитељ
комит
902f7fc15a
1 измењених фајлова са 60 додато и 19 уклоњено
  1. 60 19
      src/views/announcement/index.js

+ 60 - 19
src/views/announcement/index.js

@@ -2,6 +2,26 @@ import { getList, update, add, getAnnouncement, getCategoryList } from "@/api/an
 import { mapGetters } from "vuex";
 
 /**
+ * 可见角色枚举类型 (位运算掩码)
+ * @typedef {'1'|'2'|'3'|'4'|'5'|'6'|'7'} VisibleRolesMask
+ * - '1': 工厂
+ * - '2': 经销商
+ * - '3': 工厂+经销商
+ * - '4': 零售商
+ * - '5': 工厂+零售商
+ * - '6': 经销商+零售商
+ * - '7': 工厂+经销商+零售商
+ */
+
+/**
+ * 公告状态枚举类型
+ * @typedef {0|1|2} AnnouncementStatus
+ * - 0: 草稿
+ * - 1: 已发布
+ * - 2: 已下架
+ */
+
+/**
  * 公告数据类型定义
  * @typedef {Object} NoticeItem
  * @property {string} id - 公告ID
@@ -12,13 +32,13 @@ import { mapGetters } from "vuex";
  * @property {number} orgId - 组织ID
  * @property {string} orgCode - 组织编码
  * @property {string} orgName - 组织名称
- * @property {string} visibleRoles - 可见角色
+ * @property {VisibleRolesMask} visibleRoles - 可见角色掩码(位运算:1工厂 2经销商 4零售商)
  * @property {Object|null} brandScope - 品牌范围
  * @property {Object|null} customerBlacklist - 客户黑名单
  * @property {string} remark - 备注
  * @property {string} createTime - 创建时间
  * @property {string} updateTime - 更新时间
- * @property {number} status - 状态
+ * @property {AnnouncementStatus} status - 状态 0草稿 1已发布 2已下架
  * @property {number} isDeleted - 是否删除
  */
 
@@ -160,10 +180,13 @@ export default {
                         prop: "visibleRoles",
                         type: "select",
                         dicData: [
-                            { label: "管理员", value: "1" },
-                            { label: "普通用户", value: "2" },
-                            { label: "访客", value: "3" },
-                            { label: "VIP用户", value: "4" }
+                            { label: "工厂", value: "1" },
+                            { label: "经销商", value: "2" },
+                            { label: "工厂+经销商", value: "3" },
+                            { label: "零售商", value: "4" },
+                            { label: "工厂+零售商", value: "5" },
+                            { label: "经销商+零售商", value: "6" },
+                            { label: "工厂+经销商+零售商", value: "7" }
                         ],
                         slot: true,
                         span: 12,
@@ -178,8 +201,9 @@ export default {
                         prop: "status",
                         type: "select",
                         dicData: [
-                            { label: "正常", value: 1 },
-                            { label: "禁用", value: 0 }
+                            { label: "草稿", value: 0 },
+                            { label: "已发布", value: 1 },
+                            { label: "已下架", value: 2 }
                         ],
                         slot: true,
                         addDisplay: false,
@@ -328,18 +352,33 @@ export default {
             }
         },
         /**
-         * 获取可见角色文本
-         * @param {string} visibleRoles - 可见角色值
+         * 获取状态文本
+         * @param {AnnouncementStatus} status - 状态值
+         * @returns {string} 状态文本
+         */
+        getStatusText(status) {
+            const statusMap = {
+                0: '草稿',
+                1: '已发布',
+                2: '已下架'
+            };
+            return statusMap[status] ? statusMap[status] : '未知状态';
+        },
+        /**
+         * 获取可见角色文本 (支持位运算掩码)
+         * @param {VisibleRolesMask} visibleRoles - 可见角色掩码值
          * @returns {string} 角色文本
          */
         getVisibleRolesText(visibleRoles) {
-            const roleMap = {
-                '1': '管理员',
-                '2': '普通用户',
-                '3': '访客',
-                '4': 'VIP用户'
-            };
-            return roleMap[visibleRoles] || '未知角色';
+            const roleValue = parseInt(visibleRoles, 10);
+            const roles = [];
+
+            // 位运算检查各角色
+            if (roleValue & 1) roles.push('工厂');      // 1: 工厂
+            if (roleValue & 2) roles.push('经销商');    // 2: 经销商
+            if (roleValue & 4) roles.push('零售商');    // 4: 零售商
+
+            return roles.length > 0 ? roles.join('+') : '未知角色';
         },
         /**
          * 查看详情
@@ -378,7 +417,9 @@ export default {
                     orgName: this.userInfo.orgName || '默认组织',
                     brandScope: row.brandScope || {},
                     customerBlacklist: row.customerBlacklist || {},
-                    remark: row.remark || ''
+                    remark: row.remark || '',
+                    visibleRoles: row.visibleRoles || '7', // 默认所有角色可见
+                    status: row.status !== undefined ? row.status : 0, // 默认草稿状态
                 };
 
                 // 设置分类名称
@@ -388,7 +429,7 @@ export default {
                 }
 
                 await add(formData);
-                this.onLoad(this.page);
+                await this.onLoad(this.page);
                 this.$message({
                     type: "success",
                     message: "操作成功!"