|
@@ -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: "操作成功!"
|