chenyong
2026-03-17 a0adb6373dbe1d37858998c12e206219dc45ac5c
修复用户编辑页面下拉框无最近角色选项问题
已修改1个文件
162 ■■■■ 文件已修改
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js 162 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js
@@ -1,4 +1,6 @@
import {  defineAsyncComponent } from "vue";
import { defineAsyncComponent } from "vue";
import axios from 'axios';
let extension = {
    components: { //动态扩充组件或组件路径
        //表单header、content、footer对应位置扩充的组件
@@ -12,10 +14,82 @@
        modelFooter: ''
    },
    text: "只能看到当前角色下的所有帐号",
    buttons: [], //扩展的按钮
    buttons: [],//扩展的按钮
    methods: { //事件扩展
        // åŠ è½½è§’è‰²æ•°æ® - æ·»åŠ forceRefresh参数
        async loadRoles(forceRefresh = true) {
            try {
                const http = this.$http || window.axios || axios;
                if (!http) {
                    console.error("HTTP请求对象不存在");
                    return;
                }
                console.log("开始加载角色数据...", forceRefresh ? "强制刷新" : "普通加载");
                const url = "/api/Sys_Role/getUserChildRoles" + (forceRefresh ? "?t=" + Date.now() : "");
                const res = await http.post(url);
                console.log("API返回原始数据:", res.data);
                if (res.data && res.data.status) {
                    const selectOptions = res.data.data.map(role => ({
                        // å…¼å®¹å¤§å†™å’Œå°å†™å±žæ€§å
                        value: role.id || role.Id,
                        label: role.roleName || role.RoleName,
                        // åŒæ—¶ä¿å­˜åŽŸå§‹å±žæ€§ï¼Œä¾›è¡¨æ ¼æ˜¾ç¤ºä½¿ç”¨
                        id: role.id || role.Id,
                        roleName: role.roleName || role.RoleName
                    }));
                    console.log("转换后的下拉选项:", selectOptions);
                    if (this.editFormOptions && Array.isArray(this.editFormOptions)) {
                        let found = false;
                        for(let i = 0; i < this.editFormOptions.length; i++) {
                            const group = this.editFormOptions[i];
                            if (group && Array.isArray(group)) {
                                for(let j = 0; j < group.length; j++) {
                                    const field = group[j];
                                    if (field && field.field === "role_Id") {
                                        console.log("设置role_Id字段数据");
                                        field.data = selectOptions;
                                        found = true;
                                        break;
                                    }
                                }
                            }
                            if (found) break;
                        }
                        this.$forceUpdate();
                    }
                    // åŒæ—¶æ›´æ–°è¡¨æ ¼ä¸­çš„角色数据源
                    if (this.columns && Array.isArray(this.columns)) {
                        for(let i = 0; i < this.columns.length; i++) {
                            const column = this.columns[i];
                            if (column && column.field === "role_Id" && column.bind) {
                                // å°†è§’色数据转换为key-value格式,供表格显示使用
                                const bindData = res.data.data.map(role => ({
                                    key: role.id || role.Id,
                                    value: role.roleName || role.RoleName
                                }));
                                column.bind.data = bindData;
                                break;
                            }
                        }
                    }
                }
            } catch (error) {
                console.error("加载角色数据失败:", error);
            }
        },
        onInit() {
            this.boxOptions.height = 530;
            this.columns.push({
                title: '操作',
                hidden: false,
@@ -30,7 +104,9 @@
                            style: { 'margin-right': '15px' },
                            onClick: (e) => {
                                e.stopPropagation()
                                this.$refs.gridHeader.open(row);
                                if (this.$refs.gridHeader) {
                                    this.$refs.gridHeader.open(row);
                                }
                            }
                        }, "修改密码"
                        ),
@@ -46,41 +122,75 @@
                        ),
                    ])
                }
            })
            });
            // åˆå§‹åŒ–时加载
            setTimeout(() => {
                this.loadRoles(false);
            }, 100);
        },
        onInited() { },
        addAfter(result) { //用户新建后,显示随机生成的密码
        modelOpenAfter() {
            let isEDIT = this.currentAction == this.const.EDIT;
            // è®¾ç½®UserName禁用状态
            if (this.editFormOptions && Array.isArray(this.editFormOptions)) {
                for(let i = 0; i < this.editFormOptions.length; i++) {
                    const group = this.editFormOptions[i];
                    if (group && Array.isArray(group)) {
                        for(let j = 0; j < group.length; j++) {
                            const field = group[j];
                            if (field && field.field === "UserName") {
                                field.disabled = isEDIT;
                            }
                        }
                    }
                }
            }
            if (this.currentAction == this.const.ADD) {
                this.editFormFields.Gender = "0";
            }
            // æ¯æ¬¡æ‰“开编辑框时强制重新加载角色数据(带时间戳)
            setTimeout(() => {
                this.loadRoles(true);
            }, 100);
        },
        refreshRoles() {
            this.loadRoles(true);
        },
        addAfter(result) {
            if (!result.status) {
                return true;
            }
            //显示新建用户的密码
            //2020.08.28优化新建成后提示方式
            this.$confirm(result.message, '新建用户成功', {
            this.$confirm(result.message, '新建用户成功', {
                confirmButtonText: '确定',
                type: 'success',
                center: true
            }).then(() => { })
            }).then(() => {
                this.refreshRoles();
            })
            this.boxModel = false;
            this.refresh();
            return false;
        },
        modelOpenAfter() {
            //点击弹出框后,如果是编辑状态,禁止编辑用户名,如果新建状态,将用户名字段设置为可编辑
            let isEDIT = this.currentAction == this.const.EDIT;
            this.editFormOptions.forEach(item => {
                item.forEach(x => {
                    if (x.field == "UserName") {
                        x.disabled=isEDIT;
                    }
                })
                //不是新建,性别默认值设置为男
                if (!isEDIT) {
                    this.editFormFields.Gender = "0";
                }
            })
        // åˆ·æ–°åŽé‡æ–°åŠ è½½è§’è‰²æ•°æ®ï¼Œç¡®ä¿åˆ·æ–°åŽè§’è‰²åç§°ä»ç„¶æ˜¾ç¤ºæ­£ç¡®
        refreshAfter() {
            setTimeout(() => {
                this.loadRoles(true);
            }, 100);
        },
        // è¡¨æ ¼æ•°æ®åŠ è½½å®ŒæˆåŽé‡æ–°åŠ è½½è§’è‰²æ•°æ®ï¼Œç¡®ä¿åˆ·æ–°åŽè§’è‰²åç§°ä»ç„¶æ˜¾ç¤ºæ­£ç¡®
        searchAfter() {
            setTimeout(() => {
                this.loadRoles(true);
            }, 100);
            return true;
        }
    }
};
export default extension;