You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
11 KiB
1 lines
11 KiB
{"ast":null,"code":"import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, resolveDirective as _resolveDirective, openBlock as _openBlock, createBlock as _createBlock, withDirectives as _withDirectives, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"user-management\"\n};\nconst _hoisted_2 = {\n class: \"pagination\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_table_column = _resolveComponent(\"el-table-column\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_table = _resolveComponent(\"el-table\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, null, {\n header: _withCtx(() => _cache[2] || (_cache[2] = [_createElementVNode(\"div\", {\n class: \"card-header\"\n }, [_createElementVNode(\"span\", null, \"用户管理\")], -1 /* HOISTED */)])),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createBlock(_component_el_table, {\n data: $setup.userList,\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_table_column, {\n prop: \"id\",\n label: \"用户ID\",\n width: \"80\"\n }), _createVNode(_component_el_table_column, {\n prop: \"username\",\n label: \"用户名\",\n width: \"120\"\n }), _createVNode(_component_el_table_column, {\n prop: \"realName\",\n label: \"真实姓名\",\n width: \"120\"\n }), _createVNode(_component_el_table_column, {\n prop: \"email\",\n label: \"邮箱\",\n width: \"180\"\n }), _createVNode(_component_el_table_column, {\n prop: \"status\",\n label: \"状态\",\n width: \"100\"\n }, {\n default: _withCtx(({\n row\n }) => [_createVNode(_component_el_tag, {\n type: row.status === 1 ? 'success' : 'danger'\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(row.status === 1 ? '正常' : '禁用'), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_table_column, {\n prop: \"createTime\",\n label: \"创建时间\",\n width: \"160\"\n }), _createVNode(_component_el_table_column, {\n prop: \"updateTime\",\n label: \"更新时间\",\n width: \"160\"\n }), _createVNode(_component_el_table_column, {\n label: \"操作\",\n width: \"200\",\n fixed: \"right\"\n }, {\n default: _withCtx(({\n row\n }) => [_createVNode(_component_el_button, {\n type: \"primary\",\n link: \"\",\n onClick: $event => $setup.handleUpdateRole(row)\n }, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [_createTextVNode(\"修改角色\")])),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"data\"])), [[_directive_loading, $setup.loading]]), _createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_pagination, {\n \"current-page\": $setup.currentPage,\n \"onUpdate:currentPage\": _cache[0] || (_cache[0] = $event => $setup.currentPage = $event),\n \"page-size\": $setup.pageSize,\n \"onUpdate:pageSize\": _cache[1] || (_cache[1] = $event => $setup.pageSize = $event),\n total: $setup.total,\n \"page-sizes\": [10, 20, 50, 100],\n layout: \"total, sizes, prev, pager, next\",\n onSizeChange: $setup.handleSizeChange,\n onCurrentChange: $setup.handleCurrentChange\n }, null, 8 /* PROPS */, [\"current-page\", \"page-size\", \"total\"])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_cache","_createElementVNode","default","_createBlock","_component_el_table","data","$setup","userList","style","_component_el_table_column","prop","label","width","row","_component_el_tag","type","status","_createTextVNode","_toDisplayString","_","fixed","_component_el_button","link","onClick","$event","handleUpdateRole","loading","_hoisted_2","_component_el_pagination","currentPage","pageSize","total","layout","onSizeChange","handleSizeChange","onCurrentChange","handleCurrentChange"],"sources":["D:\\language\\VScode\\Front-end logistics\\src\\views\\admin\\UserManagement.vue"],"sourcesContent":["<template>\r\n <div class=\"user-management\">\r\n <el-card>\r\n <template #header>\r\n <div class=\"card-header\">\r\n <span>用户管理</span>\r\n </div>\r\n </template>\r\n \r\n <el-table\r\n v-loading=\"loading\"\r\n :data=\"userList\"\r\n style=\"width: 100%\"\r\n >\r\n <el-table-column prop=\"id\" label=\"用户ID\" width=\"80\" />\r\n <el-table-column prop=\"username\" label=\"用户名\" width=\"120\" />\r\n <el-table-column prop=\"realName\" label=\"真实姓名\" width=\"120\" />\r\n <el-table-column prop=\"email\" label=\"邮箱\" width=\"180\" />\r\n <el-table-column prop=\"status\" label=\"状态\" width=\"100\">\r\n <template #default=\"{ row }\">\r\n <el-tag :type=\"row.status === 1 ? 'success' : 'danger'\">\r\n {{ row.status === 1 ? '正常' : '禁用' }}\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"createTime\" label=\"创建时间\" width=\"160\" />\r\n <el-table-column prop=\"updateTime\" label=\"更新时间\" width=\"160\" />\r\n <el-table-column label=\"操作\" width=\"200\" fixed=\"right\">\r\n <template #default=\"{ row }\">\r\n <el-button \r\n type=\"primary\" \r\n link\r\n @click=\"handleUpdateRole(row)\"\r\n >修改角色</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n \r\n <div class=\"pagination\">\r\n <el-pagination\r\n v-model:current-page=\"currentPage\"\r\n v-model:page-size=\"pageSize\"\r\n :total=\"total\"\r\n :page-sizes=\"[10, 20, 50, 100]\"\r\n layout=\"total, sizes, prev, pager, next\"\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n />\r\n </div>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, onMounted } from 'vue'\r\nimport { useRouter } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport { getAllUsers, updateUserRole } from '@/api/auth'\r\n\r\nconst router = useRouter()\r\nconst loading = ref(false)\r\nconst userList = ref([])\r\nconst currentPage = ref(1)\r\nconst pageSize = ref(10)\r\nconst total = ref(0)\r\n\r\nconst loadUsers = async () => {\r\n loading.value = true\r\n try {\r\n const res = await getAllUsers({\r\n pageNum: currentPage.value,\r\n pageSize: pageSize.value\r\n })\r\n \r\n if (res.code === 200 && res.data) {\r\n userList.value = res.data.records\r\n total.value = res.data.total\r\n pageSize.value = res.data.size\r\n currentPage.value = res.data.current\r\n } else {\r\n throw new Error(res.message || '获取用户列表失败')\r\n }\r\n } catch (error) {\r\n console.error('加载用户失败:', error)\r\n if (error.response?.status === 401) {\r\n ElMessage.error('登录已过期,请重新登录')\r\n router.push('/login')\r\n } else if (error.response?.status === 403) {\r\n ElMessage.error('没有权限访问')\r\n } else {\r\n ElMessage.error(error.message || '加载用户失败,请重试')\r\n }\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nconst handleSizeChange = (val) => {\r\n pageSize.value = val\r\n loadUsers()\r\n}\r\n\r\nconst handleCurrentChange = (val) => {\r\n currentPage.value = val\r\n loadUsers()\r\n}\r\n\r\nconst handleUpdateRole = async (user) => {\r\n // 这里可以打开一个对话框让管理员选择新的角色\r\n // 然后调用 updateUserRole 接口更新用户角色\r\n}\r\n\r\nonMounted(() => {\r\n loadUsers()\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.user-management {\r\n padding: 20px;\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.pagination {\r\n margin-top: 20px;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n</style> "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|