forked from liweijie/education
1 line
10 KiB
JSON
1 line
10 KiB
JSON
{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\system\\user\\view.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\system\\user\\view.vue","mtime":1787567871674},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBnZXRVc2VyIH0gZnJvbSAnQC9hcGkvc3lzdGVtL3VzZXInDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ1VzZXJWaWV3RHJhd2VyJywNCiAgZGljdHM6IFsnc3lzX3VzZXJfc2V4J10sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIHZpc2libGU6IGZhbHNlLA0KICAgICAgbG9hZGluZzogZmFsc2UsDQogICAgICBpbmZvOiB7fSwNCiAgICAgIHBvc3RPcHRpb25zOiBbXSwNCiAgICAgIHJvbGVPcHRpb25zOiBbXQ0KICAgIH0NCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICBzZXhMYWJlbCgpIHsNCiAgICAgIHJldHVybiB0aGlzLnNlbGVjdERpY3RMYWJlbCh0aGlzLmRpY3QudHlwZS5zeXNfdXNlcl9zZXgsIHRoaXMuaW5mby5zZXgpIHx8ICctJw0KICAgIH0sDQogICAgcG9zdE5hbWVzKCkgew0KICAgICAgaWYgKCF0aGlzLnBvc3RPcHRpb25zLmxlbmd0aCkgcmV0dXJuICcnDQogICAgICBjb25zdCBpZHMgPSB0aGlzLmluZm8ucG9zdElkcyB8fCBbXQ0KICAgICAgcmV0dXJuIHRoaXMucG9zdE9wdGlvbnMuZmlsdGVyKHAgPT4gaWRzLmluY2x1ZGVzKHAucG9zdElkKSkubWFwKHAgPT4gcC5wb3N0TmFtZSkuam9pbign44CBJykgfHwgJycNCiAgICB9LA0KICAgIHJvbGVOYW1lcygpIHsNCiAgICAgIGlmICghdGhpcy5yb2xlT3B0aW9ucy5sZW5ndGgpIHJldHVybiAnJw0KICAgICAgY29uc3QgaWRzID0gdGhpcy5pbmZvLnJvbGVJZHMgfHwgW10NCiAgICAgIHJldHVybiB0aGlzLnJvbGVPcHRpb25zLmZpbHRlcihyID0+IGlkcy5pbmNsdWRlcyhyLnJvbGVJZCkpLm1hcChyID0+IHIucm9sZU5hbWUpLmpvaW4oJ+OAgScpIHx8ICcnDQogICAgfQ0KICB9LA0KICBtZXRob2RzOiB7DQogICAgb3Blbih1c2VySWQpIHsNCiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWUNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWUNCiAgICAgIGdldFVzZXIodXNlcklkKS50aGVuKHJlcyA9PiB7DQogICAgICAgIHRoaXMuaW5mbyA9IHJlcy5kYXRhIHx8IHt9DQogICAgICAgIHRoaXMucG9zdE9wdGlvbnMgPSByZXMucG9zdHMgfHwgW10NCiAgICAgICAgdGhpcy5yb2xlT3B0aW9ucyA9IHJlcy5yb2xlcyB8fCBbXQ0KICAgICAgICB0aGlzLmluZm8ucG9zdElkcyA9IHJlcy5wb3N0SWRzIHx8IFtdDQogICAgICAgIHRoaXMuaW5mby5yb2xlSWRzID0gcmVzLnJvbGVJZHMgfHwgW10NCiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gew0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfSkNCiAgICB9LA0KICAgIGhhbmRsZUNsb3NlKCkgew0KICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2UNCiAgICB9DQogIH0NCn0NCg=="},{"version":3,"sources":["view.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"view.vue","sourceRoot":"src/views/system/user","sourcesContent":["<template>\r\n <el-drawer title=\"用户信息详情\" :visible.sync=\"visible\" direction=\"rtl\" size=\"68%\" append-to-body :before-close=\"handleClose\" custom-class=\"detail-drawer\">\r\n <div v-loading=\"loading\" class=\"drawer-content\">\r\n <!-- 基本信息 -->\r\n <h4 class=\"section-header\">基本信息</h4>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">用户名称:</label>\r\n <span class=\"info-value plaintext\">{{ info.nickName }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">归属部门:</label>\r\n <span class=\"info-value plaintext\">{{ (info.dept && info.dept.deptName) }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">手机号码:</label>\r\n <span class=\"info-value plaintext\">{{ info.phonenumber }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">邮箱:</label>\r\n <span class=\"info-value plaintext\">{{ info.email }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">登录账号:</label>\r\n <span class=\"info-value plaintext\">{{ info.userName }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">用户状态:</label>\r\n <span class=\"info-value plaintext\">\r\n <el-tag size=\"small\" :type=\"info.status === '0' ? 'success' : 'danger'\">{{ info.status === '0' ? '正常' : '停用' }}</el-tag>\r\n </span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">岗位:</label>\r\n <span class=\"info-value plaintext\">{{ postNames || '无岗位' }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">用户性别:</label>\r\n <span class=\"info-value plaintext\">{{ sexLabel }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"24\">\r\n <div class=\"info-item full-width\">\r\n <label class=\"info-label\">角色:</label>\r\n <span class=\"info-value plaintext\">{{ roleNames || '无角色' }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <!-- 其他信息 -->\r\n <h4 class=\"section-header\">其他信息</h4>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">创建者:</label>\r\n <span class=\"info-value plaintext\">{{ info.createBy }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">创建时间:</label>\r\n <span class=\"info-value plaintext\">{{ info.createTime }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">更新者:</label>\r\n <span class=\"info-value plaintext\">{{ info.updateBy }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">更新时间:</label>\r\n <span class=\"info-value plaintext\">{{ info.updateTime }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">最后登录IP:</label>\r\n <span class=\"info-value plaintext\">{{ info.loginIp }}</span>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"info-item\">\r\n <label class=\"info-label\">最后登录时间:</label>\r\n <span class=\"info-value plaintext\">{{ info.loginDate }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"20\" class=\"mb8\">\r\n <el-col :span=\"24\">\r\n <div class=\"info-item full-width\">\r\n <label class=\"info-label\">备注:</label>\r\n <span class=\"info-value plaintext\">{{ info.remark }}</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n </el-drawer>\r\n</template>\r\n\r\n<script>\r\nimport { getUser } from '@/api/system/user'\r\n\r\nexport default {\r\n name: 'UserViewDrawer',\r\n dicts: ['sys_user_sex'],\r\n data() {\r\n return {\r\n visible: false,\r\n loading: false,\r\n info: {},\r\n postOptions: [],\r\n roleOptions: []\r\n }\r\n },\r\n computed: {\r\n sexLabel() {\r\n return this.selectDictLabel(this.dict.type.sys_user_sex, this.info.sex) || '-'\r\n },\r\n postNames() {\r\n if (!this.postOptions.length) return ''\r\n const ids = this.info.postIds || []\r\n return this.postOptions.filter(p => ids.includes(p.postId)).map(p => p.postName).join('、') || ''\r\n },\r\n roleNames() {\r\n if (!this.roleOptions.length) return ''\r\n const ids = this.info.roleIds || []\r\n return this.roleOptions.filter(r => ids.includes(r.roleId)).map(r => r.roleName).join('、') || ''\r\n }\r\n },\r\n methods: {\r\n open(userId) {\r\n this.visible = true\r\n this.loading = true\r\n getUser(userId).then(res => {\r\n this.info = res.data || {}\r\n this.postOptions = res.posts || []\r\n this.roleOptions = res.roles || []\r\n this.info.postIds = res.postIds || []\r\n this.info.roleIds = res.roleIds || []\r\n }).finally(() => {\r\n this.loading = false\r\n })\r\n },\r\n handleClose() {\r\n this.visible = false\r\n }\r\n }\r\n}\r\n</script>\r\n"]}]} |