Ver Fonte

feat(lead): 根据线索状态动态控制详情页按钮权限

yz há 1 mês atrás
pai
commit
00a997781b
2 ficheiros alterados com 41 adições e 10 exclusões
  1. 1 0
      src/views/lead/index.vue
  2. 40 10
      src/views/lead/mixins/leadIndex.js

+ 1 - 0
src/views/lead/index.vue

@@ -102,6 +102,7 @@
                 @on-load="detailOnLoad">
                 <template slot="menuLeft">
                     <el-button type="danger" size="small" plain icon="el-icon-delete"
+                        v-if="detailPermissionList.delBtn"
                         @click="handleDetailDelete" :disabled="detailSelectionList.length === 0">
                         删除
                     </el-button>

+ 40 - 10
src/views/lead/mixins/leadIndex.js

@@ -99,6 +99,36 @@ export default {
          */
         detailIds() {
             return this.detailSelectionList.map(ele => ele.id)
+        },
+
+        /**
+         * 详细信息权限列表(动态基于线索状态)
+         * @returns {Object} 权限配置
+         */
+        detailPermissionList() {
+            const basePermissions = {
+                viewBtn: true,
+                editBtn: true,
+            }
+
+            // 如果当前有选中的线索,根据线索状态控制按钮显示
+            if (this.currentLead && this.currentLead.status !== undefined) {
+                // 使用 LEAD_STATUS.CLOSED (值为 3) 判断是否已关闭
+                const isClosed = this.currentLead.status === LEAD_STATUS.CLOSED;
+
+                return {
+                    ...basePermissions,
+                    addBtn: !isClosed, // 已关闭时隐藏新增按钮
+                    delBtn: !isClosed, // 已关闭时隐藏删除按钮
+                }
+            }
+
+            // 默认权限(向后兼容)
+            return {
+                ...basePermissions,
+                addBtn: true,
+                delBtn: false,
+            }
         }
     },
     
@@ -163,16 +193,7 @@ export default {
                 ]
             },
             
-            /**
-             * 详细信息权限列表
-             */
-            detailPermissionList: {
-                addBtn: true,
-                viewBtn: true,
-                delBtn: false,
-                editBtn: true,
-            },
-
+            
             /**
              * 详细信息分页信息
              * @type {{total: number, currentPage: number, pageSize: number}}
@@ -718,6 +739,15 @@ export default {
         },
 
         /**
+         * 判断线索是否已关闭
+         * @param {number} status - 状态值
+         * @returns {boolean} 是否已关闭
+         */
+        isLeadClosed(status) {
+            return status === LEAD_STATUS.CLOSED
+        },
+
+        /**
          * 判断是否逾期
          * @param {string} endTime - 截止时间
          * @param {number} status - 状态