Files
education/frontend/node_modules/.cache/vue-loader/fae6d8fd12322ea69f4fb18ad5e555c8.json
T

1 line
25 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\\index.vue?vue&type=style&index=0&id=1930a3c4&scoped=true&lang=css","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\system\\user\\index.vue","mtime":1787567871668},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\css-loader\\dist\\cjs.js","mtime":1787309792478},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1787309794547},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\postcss-loader\\src\\index.js","mtime":1787309793084},{"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:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg0KLnN5c3RlbS11c2VyIDo6di1kZWVwIC5lbC10YWJsZSA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsNCiAgZGlzcGxheTogbm9uZTsNCn0NCi5zeXN0ZW0tdXNlciA6OnYtZGVlcCAuZWwtdGFibGUgew0KICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7DQogIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsNCn0NCi5zeXN0ZW0tdXNlciA6OnYtZGVlcCAuZWwtdGFibGVfX2JvZHktd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXIgew0KICBkaXNwbGF5OiBub25lOw0KfQ0KLnN5c3RlbS11c2VyIDo6di1kZWVwIC5lbC10YWJsZV9fYm9keS13cmFwcGVyIHsNCiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOw0KICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/system/user","sourcesContent":["<template>\r\n <div class=\"app-container tree-sidebar-manage-wrap system-user\">\r\n <tree-panel title=\"组织机构\" :tree-data=\"deptOptions\" search-placeholder=\"请输入部门名称\" storage-key=\"dept-sidebar-width\" :defaultExpandAll=\"true\" @node-click=\"handleNodeClick\" @refresh=\"getDeptTree\" ref=\"deptTreeRef\" />\r\n <div class=\"tree-sidebar-content\">\r\n <div class=\"content-inner\">\r\n <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" v-show=\"showSearch\" label-width=\"68px\">\r\n <el-form-item label=\"用户名称\" prop=\"userName\">\r\n <el-input v-model=\"queryParams.userName\" placeholder=\"请输入用户名称\" clearable style=\"width: 240px\" @keyup.enter.native=\"handleQuery\" />\r\n </el-form-item>\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input v-model=\"queryParams.phonenumber\" placeholder=\"请输入手机号码\" clearable style=\"width: 240px\" @keyup.enter.native=\"handleQuery\" />\r\n </el-form-item>\r\n <el-form-item label=\"状态\" prop=\"status\">\r\n <el-select v-model=\"queryParams.status\" placeholder=\"用户状态\" clearable style=\"width: 240px\">\r\n <el-option v-for=\"dict in dict.type.sys_normal_disable\" :key=\"dict.value\" :label=\"dict.label\" :value=\"dict.value\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"创建时间\">\r\n <el-date-picker v-model=\"dateRange\" style=\"width: 240px\" value-format=\"yyyy-MM-dd\" type=\"daterange\" range-separator=\"-\" start-placeholder=\"开始日期\" end-placeholder=\"结束日期\"></el-date-picker>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">搜索</el-button>\r\n <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <el-row :gutter=\"10\" class=\"mb8\">\r\n <el-col :span=\"1.5\">\r\n <el-button type=\"primary\" plain icon=\"el-icon-plus\" size=\"mini\" @click=\"handleAdd\" v-hasPermi=\"['system:user:add']\">新增</el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button type=\"success\" plain icon=\"el-icon-edit\" size=\"mini\" :disabled=\"single\" @click=\"handleUpdate\" v-hasPermi=\"['system:user:edit']\">修改</el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button type=\"danger\" plain icon=\"el-icon-delete\" size=\"mini\" :disabled=\"multiple\" @click=\"handleDelete\" v-hasPermi=\"['system:user:remove']\">删除</el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button type=\"info\" plain icon=\"el-icon-upload2\" size=\"mini\" @click=\"handleImport\" v-hasPermi=\"['system:user:import']\">导入</el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button type=\"warning\" plain icon=\"el-icon-download\" size=\"mini\" @click=\"handleExport\" v-hasPermi=\"['system:user:export']\">导出</el-button>\r\n </el-col>\r\n <right-toolbar :showSearch.sync=\"showSearch\" @queryTable=\"getList\" :columns=\"columns\"></right-toolbar>\r\n </el-row>\r\n\r\n <el-table v-loading=\"loading\" :data=\"userList\" @selection-change=\"handleSelectionChange\" :height=\"tableHeight\">\r\n <el-table-column type=\"selection\" width=\"50\" align=\"center\" />\r\n <el-table-column label=\"用户编号\" align=\"center\" key=\"userId\" prop=\"userId\" v-if=\"columns.userId.visible\" />\r\n <el-table-column label=\"用户名称\" align=\"center\" key=\"userName\" v-if=\"columns.userName.visible\" :show-overflow-tooltip=\"true\">\r\n <template slot-scope=\"scope\">\r\n <a class=\"link-type\" style=\"cursor:pointer\" @click=\"handleViewData(scope.row)\">{{ scope.row.userName }}</a>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"用户昵称\" align=\"center\" key=\"nickName\" prop=\"nickName\" v-if=\"columns.nickName.visible\" :show-overflow-tooltip=\"true\" />\r\n <el-table-column label=\"部门\" align=\"center\" key=\"deptName\" prop=\"dept.deptName\" v-if=\"columns.deptName.visible\" :show-overflow-tooltip=\"true\" />\r\n <el-table-column label=\"手机号码\" align=\"center\" key=\"phonenumber\" prop=\"phonenumber\" v-if=\"columns.phonenumber.visible\" width=\"120\" />\r\n <el-table-column label=\"状态\" align=\"center\" key=\"status\" v-if=\"columns.status.visible\">\r\n <template slot-scope=\"scope\">\r\n <el-switch v-model=\"scope.row.status\" active-value=\"0\" inactive-value=\"1\" @change=\"handleStatusChange(scope.row)\"></el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" v-if=\"columns.createTime.visible\" width=\"160\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ parseTime(scope.row.createTime) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" align=\"center\" width=\"160\" class-name=\"small-padding fixed-width\">\r\n <template slot-scope=\"scope\" v-if=\"scope.row.userId !== 1\">\r\n <el-button size=\"mini\" type=\"text\" icon=\"el-icon-edit\" @click=\"handleUpdate(scope.row)\" v-hasPermi=\"['system:user:edit']\">修改</el-button>\r\n <el-button size=\"mini\" type=\"text\" icon=\"el-icon-delete\" @click=\"handleDelete(scope.row)\" v-hasPermi=\"['system:user:remove']\">删除</el-button>\r\n <el-dropdown size=\"mini\" @command=\"(command) => handleCommand(command, scope.row)\" v-hasPermi=\"['system:user:resetPwd', 'system:user:edit']\">\r\n <el-button size=\"mini\" type=\"text\" icon=\"el-icon-d-arrow-right\">更多</el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"handleResetPwd\" icon=\"el-icon-key\" v-hasPermi=\"['system:user:resetPwd']\">重置密码</el-dropdown-item>\r\n <el-dropdown-item command=\"handleAuthRole\" icon=\"el-icon-circle-check\" v-hasPermi=\"['system:user:edit']\">分配角色</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <pagination v-show=\"total > 0\" :total=\"total\" :page.sync=\"queryParams.pageNum\" :limit.sync=\"queryParams.pageSize\" @pagination=\"getList\" />\r\n </div>\r\n </div>\r\n\r\n <!-- 添加或修改用户配置对话框 -->\r\n <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"600px\" append-to-body>\r\n <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" label-width=\"80px\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户昵称\" prop=\"nickName\">\r\n <el-input v-model=\"form.nickName\" placeholder=\"请输入用户昵称\" maxlength=\"30\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"归属部门\" prop=\"deptId\">\r\n <treeselect v-model=\"form.deptId\" :options=\"enabledDeptOptions\" :show-count=\"true\" placeholder=\"请选择归属部门\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input v-model=\"form.phonenumber\" placeholder=\"请输入手机号码\" maxlength=\"11\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"邮箱\" prop=\"email\">\r\n <el-input v-model=\"form.email\" placeholder=\"请输入邮箱\" maxlength=\"50\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item v-if=\"form.userId == undefined\" label=\"用户名称\" prop=\"userName\">\r\n <el-input v-model=\"form.userName\" placeholder=\"请输入用户名称\" maxlength=\"30\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item v-if=\"form.userId == undefined\" label=\"用户密码\" prop=\"password\" :rules=\"pwdValidator\">\r\n <el-input v-model=\"form.password\" placeholder=\"请输入用户密码\" type=\"password\" maxlength=\"20\" show-password />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户性别\">\r\n <el-select v-model=\"form.sex\" placeholder=\"请选择性别\">\r\n <el-option v-for=\"dict in dict.type.sys_user_sex\" :key=\"dict.value\" :label=\"dict.label\" :value=\"dict.value\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"状态\">\r\n <el-radio-group v-model=\"form.status\">\r\n <el-radio v-for=\"dict in dict.type.sys_normal_disable\" :key=\"dict.value\" :label=\"dict.value\">{{ dict.label }}</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"岗位\">\r\n <el-select v-model=\"form.postIds\" multiple placeholder=\"请选择岗位\">\r\n <el-option v-for=\"item in postOptions\" :key=\"item.postId\" :label=\"item.postName\" :value=\"item.postId\" :disabled=\"item.status == 1\" ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"角色\">\r\n <el-select v-model=\"form.roleIds\" multiple placeholder=\"请选择角色\">\r\n <el-option v-for=\"item in roleOptions\" :key=\"item.roleId\" :label=\"item.roleName\" :value=\"item.roleId\" :disabled=\"item.status == 1\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"备注\">\r\n <el-input v-model=\"form.remark\" type=\"textarea\" placeholder=\"请输入内容\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"submitForm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 用户详情抽屉 -->\r\n <user-view-drawer ref=\"userViewRef\" />\r\n <!-- 用户导入对话框 -->\r\n <excel-import-dialog ref=\"importUserRef\" title=\"用户导入\" action=\"/system/user/importData\" template-action=\"/system/user/importTemplate\" template-file-name=\"user_template\" update-support-label=\"是否更新已经存在的用户数据\" @success=\"getList\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from \"@/api/system/user\"\r\nimport Treeselect from \"@riophae/vue-treeselect\"\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\"\r\nimport TreePanel from \"@/components/TreePanel\"\r\nimport ExcelImportDialog from \"@/components/ExcelImportDialog\"\r\nimport UserViewDrawer from \"./view\"\r\nimport passwordRule from \"@/utils/passwordRule\"\r\n\r\nexport default {\r\n name: \"User\",\r\n mixins: [passwordRule],\r\n dicts: ['sys_normal_disable', 'sys_user_sex'],\r\n components: { Treeselect, TreePanel, ExcelImportDialog, UserViewDrawer },\r\n data() {\r\n return {\r\n // 遮罩层\r\n loading: true,\r\n // 表格高度\r\n tableHeight: window.innerHeight - 240,\r\n // 选中数组\r\n ids: [],\r\n // 非单个禁用\r\n single: true,\r\n // 非多个禁用\r\n multiple: true,\r\n // 显示搜索条件\r\n showSearch: true,\r\n // 总条数\r\n total: 0,\r\n // 用户表格数据\r\n userList: null,\r\n // 弹出层标题\r\n title: \"\",\r\n // 所有部门树选项\r\n deptOptions: undefined,\r\n // 过滤掉已禁用部门树选项\r\n enabledDeptOptions: undefined,\r\n // 是否显示弹出层\r\n open: false,\r\n // 默认密码\r\n initPassword: undefined,\r\n // 日期范围\r\n dateRange: [],\r\n // 岗位选项\r\n postOptions: [],\r\n // 角色选项\r\n roleOptions: [],\r\n // 表单参数\r\n form: {},\r\n // 查询参数\r\n queryParams: {\r\n pageNum: 1,\r\n pageSize: 10,\r\n userName: undefined,\r\n phonenumber: undefined,\r\n status: undefined,\r\n deptId: undefined\r\n },\r\n // 列信息\r\n columns: {\r\n userId: { label: '用户编号', visible: true },\r\n userName: { label: '用户名称', visible: true },\r\n nickName: { label: '用户昵称', visible: true },\r\n deptName: { label: '部门', visible: true },\r\n phonenumber: { label: '手机号码', visible: true },\r\n status: { label: '状态', visible: true },\r\n createTime: { label: '创建时间', visible: true }\r\n },\r\n // 表单校验\r\n rules: {\r\n userName: [\r\n { required: true, message: \"用户名称不能为空\", trigger: \"blur\" },\r\n { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }\r\n ],\r\n nickName: [\r\n { required: true, message: \"用户昵称不能为空\", trigger: \"blur\" }\r\n ],\r\n email: [\r\n {\r\n type: \"email\",\r\n message: \"请输入正确的邮箱地址\",\r\n trigger: [\"blur\", \"change\"]\r\n }\r\n ],\r\n phonenumber: [\r\n {\r\n pattern: /^1[3|4|5|6|7|8|9][0-9]\\d{8}$/,\r\n message: \"请输入正确的手机号码\",\r\n trigger: \"blur\"\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n created() {\r\n this.getList()\r\n this.getDeptTree()\r\n this.getConfigKey(\"sys.user.initPassword\").then(response => {\r\n this.initPassword = response.msg\r\n })\r\n },\r\n mounted() {\r\n this.getTableHeight()\r\n window.addEventListener('resize', this.getTableHeight)\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.getTableHeight)\r\n },\r\n watch: {\r\n showSearch() {\r\n this.$nextTick(() => {\r\n this.getTableHeight()\r\n })\r\n }\r\n },\r\n methods: {\r\n /** 获取表格高度 */\r\n getTableHeight() {\r\n const offset = this.showSearch ? 240 : 190\r\n this.tableHeight = window.innerHeight - offset\r\n },\r\n /** 查询用户列表 */\r\n getList() {\r\n this.loading = true\r\n listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {\r\n this.userList = response.rows\r\n this.total = response.total\r\n this.loading = false\r\n }).catch(() => {\r\n this.loading = false\r\n })\r\n },\r\n /** 查询部门下拉树结构 */\r\n getDeptTree() {\r\n deptTreeSelect().then(response => {\r\n this.deptOptions = response.data\r\n this.enabledDeptOptions = this.filterDisabledDept(JSON.parse(JSON.stringify(response.data)))\r\n }).catch(() => {\r\n this.deptOptions = []\r\n this.enabledDeptOptions = []\r\n })\r\n },\r\n // 过滤禁用的部门\r\n filterDisabledDept(deptList) {\r\n return deptList.filter(dept => {\r\n if (dept.disabled) {\r\n return false\r\n }\r\n if (dept.children && dept.children.length) {\r\n dept.children = this.filterDisabledDept(dept.children)\r\n }\r\n return true\r\n })\r\n },\r\n // 节点单击事件\r\n handleNodeClick(data) {\r\n this.queryParams.deptId = data.id\r\n this.handleQuery()\r\n },\r\n // 用户状态修改\r\n handleStatusChange(row) {\r\n let text = row.status === \"0\" ? \"启用\" : \"停用\"\r\n this.$modal.confirm('确认要\"' + text + '\"\"' + row.userName + '\"用户吗?').then(function() {\r\n return changeUserStatus(row.userId, row.status)\r\n }).then(() => {\r\n this.$modal.msgSuccess(text + \"成功\")\r\n }).catch(function() {\r\n row.status = row.status === \"0\" ? \"1\" : \"0\"\r\n })\r\n },\r\n // 取消按钮\r\n cancel() {\r\n this.open = false\r\n this.reset()\r\n },\r\n // 表单重置\r\n reset() {\r\n this.form = {\r\n userId: undefined,\r\n deptId: undefined,\r\n userName: undefined,\r\n nickName: undefined,\r\n password: undefined,\r\n phonenumber: undefined,\r\n email: undefined,\r\n sex: undefined,\r\n status: \"0\",\r\n remark: undefined,\r\n postIds: [],\r\n roleIds: []\r\n }\r\n this.resetForm(\"form\")\r\n },\r\n /** 搜索按钮操作 */\r\n handleQuery() {\r\n this.queryParams.pageNum = 1\r\n this.getList()\r\n },\r\n /** 重置按钮操作 */\r\n resetQuery() {\r\n this.dateRange = []\r\n this.resetForm(\"queryForm\")\r\n this.queryParams.deptId = undefined\r\n this.$refs.deptTreeRef.setCurrentKey(null)\r\n this.handleQuery()\r\n },\r\n // 多选框选中数据\r\n handleSelectionChange(selection) {\r\n this.ids = selection.map(item => item.userId)\r\n this.single = selection.length != 1\r\n this.multiple = !selection.length\r\n },\r\n // 更多操作触发\r\n handleCommand(command, row) {\r\n switch (command) {\r\n case \"handleResetPwd\":\r\n this.handleResetPwd(row)\r\n break\r\n case \"handleAuthRole\":\r\n this.handleAuthRole(row)\r\n break\r\n default:\r\n break\r\n }\r\n },\r\n /** 新增按钮操作 */\r\n handleAdd() {\r\n this.reset()\r\n getUser().then(response => {\r\n this.postOptions = response.posts\r\n this.roleOptions = response.roles\r\n this.open = true\r\n this.title = \"添加用户\"\r\n this.form.password = this.initPassword\r\n })\r\n },\r\n /** 修改按钮操作 */\r\n handleUpdate(row) {\r\n this.reset()\r\n const userId = row.userId || this.ids\r\n getUser(userId).then(response => {\r\n this.form = response.data\r\n this.postOptions = response.posts\r\n this.roleOptions = response.roles\r\n this.$set(this.form, \"postIds\", response.postIds)\r\n this.$set(this.form, \"roleIds\", response.roleIds)\r\n this.open = true\r\n this.title = \"修改用户\"\r\n this.form.password = \"\"\r\n })\r\n },\r\n /** 重置密码按钮操作 */\r\n handleResetPwd(row) {\r\n this.$prompt(`请输入「${row.userName}」的新密码`, \"重置密码\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n closeOnClickModal: false,\r\n inputValidator: this.pwdPromptValidator\r\n }).then(({ value }) => {\r\n resetUserPwd(row.userId, value).then(() => {\r\n this.$modal.msgSuccess(\"修改成功,新密码是:\" + value)\r\n })\r\n }).catch(() => {})\r\n },\r\n /** 分配角色操作 */\r\n handleAuthRole(row) {\r\n const userId = row.userId\r\n this.$router.push(\"/system/user-auth/role/\" + userId)\r\n },\r\n /** 提交按钮 */\r\n submitForm() {\r\n this.$refs[\"form\"].validate(valid => {\r\n if (valid) {\r\n if (this.form.userId != undefined) {\r\n updateUser(this.form).then(() => {\r\n this.$modal.msgSuccess(\"修改成功\")\r\n this.open = false\r\n this.getList()\r\n })\r\n } else {\r\n addUser(this.form).then(() => {\r\n this.$modal.msgSuccess(\"新增成功\")\r\n this.open = false\r\n this.getList()\r\n })\r\n }\r\n }\r\n })\r\n },\r\n /** 删除按钮操作 */\r\n handleDelete(row) {\r\n const userIds = row.userId || this.ids\r\n this.$modal.confirm('是否确认删除用户编号为\"' + userIds + '\"的数据项?').then(function() {\r\n return delUser(userIds)\r\n }).then(() => {\r\n this.getList()\r\n this.$modal.msgSuccess(\"删除成功\")\r\n }).catch(() => {})\r\n },\r\n /** 导出按钮操作 */\r\n handleExport() {\r\n this.download('system/user/export', {\r\n ...this.queryParams\r\n }, `user_${new Date().getTime()}.xlsx`)\r\n },\r\n /** 详情按钮操作 */\r\n handleViewData(row) {\r\n this.$refs.userViewRef.open(row.userId)\r\n },\r\n /** 导入按钮操作 */\r\n handleImport() {\r\n this.$refs.importUserRef.open()\r\n }\r\n }\r\n}\r\n</script>\r\n<style scoped>\r\n.system-user ::v-deep .el-table ::-webkit-scrollbar {\r\n display: none;\r\n}\r\n.system-user ::v-deep .el-table {\r\n scrollbar-width: none;\r\n -ms-overflow-style: none;\r\n}\r\n.system-user ::v-deep .el-table__body-wrapper::-webkit-scrollbar {\r\n display: none;\r\n}\r\n.system-user ::v-deep .el-table__body-wrapper {\r\n scrollbar-width: none;\r\n -ms-overflow-style: none;\r\n}\r\n</style>\r\n"]}]}