Commit f994bdcc authored by lwy's avatar lwy

机构管理,用户管理

parent 58203947
...@@ -6,16 +6,16 @@ ...@@ -6,16 +6,16 @@
:model="queryParams" :model="queryParams"
:inline="true" :inline="true"
> >
<el-form-item label="部门名称" prop="deptName"> <el-form-item label="" prop="deptName">
<el-input <el-input
v-model="queryParams.deptName" v-model="queryParams.deptName"
placeholder="请输入部门名称" placeholder="请输入搜索关键词"
clearable clearable
style="width: 200px" style="width: 200px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <!-- <el-form-item label="状态" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
placeholder="部门状态" placeholder="部门状态"
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" <el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button >搜索</el-button
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
v-hasPermi="['system:dept:add']" v-hasPermi="['system:dept:add']"
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
v-model:show-search="showSearch" v-model:show-search="showSearch"
@query-table="getList" @query-table="getList"
></right-toolbar> ></right-toolbar>
</el-row> </el-row>-->
<el-table <el-table
v-if="refreshTable" v-if="refreshTable"
...@@ -70,20 +70,35 @@ ...@@ -70,20 +70,35 @@
> >
<el-table-column <el-table-column
prop="deptName" prop="deptName"
label="部门名称" label="机构名称"
width="260" width="570"
></el-table-column> ></el-table-column>
<el-table-column <!-- <el-table-column
prop="orderNum" prop="orderNum"
label="排序" label="排序"
width="200" width="200"
></el-table-column> ></el-table-column>-->
<el-table-column prop="status" label="状态" width="100"> <!-- <el-table-column prop="status" label="状态" width="100">
<template #default="scope"> <template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" /> <dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column <el-table-column
prop="type"
label="机构类型"
width="500"
></el-table-column>
<el-table-column
label="同步时间"
align="center"
prop="updateTime"
width="500"
>
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<!-- <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
prop="createTime" prop="createTime"
...@@ -92,8 +107,8 @@ ...@@ -92,8 +107,8 @@
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column <!-- <el-table-column
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
...@@ -125,9 +140,16 @@ ...@@ -125,9 +140,16 @@
>删除</el-button >删除</el-button
> >
</template> </template>
</el-table-column> </el-table-column>-->
</el-table> </el-table>
<!-- 分页 -->
<pagination
v-show="total > 0"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getList"
/>
<!-- 添加或修改部门对话框 --> <!-- 添加或修改部门对话框 -->
<el-dialog v-model="open" :title="title" width="600px" append-to-body> <el-dialog v-model="open" :title="title" width="600px" append-to-body>
<el-form ref="deptRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="deptRef" :model="form" :rules="rules" label-width="80px">
...@@ -231,6 +253,7 @@ const open = ref(false) ...@@ -231,6 +253,7 @@ const open = ref(false)
const loading = ref(true) const loading = ref(true)
const showSearch = ref(true) const showSearch = ref(true)
const title = ref('') const title = ref('')
const total = ref(0)
const deptOptions = ref([]) const deptOptions = ref([])
const isExpandAll = ref(true) const isExpandAll = ref(true)
const refreshTable = ref(true) const refreshTable = ref(true)
...@@ -238,6 +261,8 @@ const refreshTable = ref(true) ...@@ -238,6 +261,8 @@ const refreshTable = ref(true)
const data = reactive({ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
pageNum: 1,
pageSize: 10,
deptName: undefined, deptName: undefined,
status: undefined, status: undefined,
}, },
...@@ -275,6 +300,7 @@ function getList() { ...@@ -275,6 +300,7 @@ function getList() {
loading.value = true loading.value = true
listDept(queryParams.value).then((response) => { listDept(queryParams.value).then((response) => {
deptList.value = proxy.handleTree(response.data, 'deptId') deptList.value = proxy.handleTree(response.data, 'deptId')
total.value = response.total
loading.value = false loading.value = false
}) })
} }
...@@ -383,3 +409,14 @@ function handleDelete(row) { ...@@ -383,3 +409,14 @@ function handleDelete(row) {
getList() getList()
</script> </script>
<style scoped>
/* 自定义样式优化布局 */
.el-table {
width: 100%; /* 确保表格宽度占满容器 */
}
.el-table-column {
box-sizing: border-box; /* 避免因边框影响实际宽度 */
}
</style>
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="20">
<splitpanes
:horizontal="appStore.device === 'mobile'"
class="default-theme"
>
<!--部门数据-->
<pane size="16">
<el-col>
<div class="head-container">
<el-input
v-model="deptName"
placeholder="请输入部门名称"
clearable
prefix-icon="Search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
ref="deptTreeRef"
:data="deptOptions"
:props="{ label: 'label', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
node-key="id"
highlight-current
default-expand-all
@node-click="handleNodeClick"
/>
</div>
</el-col>
</pane>
<!--用户数据-->
<pane size="84">
<el-col> <el-col>
<el-form <el-form
v-show="showSearch" v-show="showSearch"
...@@ -42,25 +8,68 @@ ...@@ -42,25 +8,68 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="用户名称" prop="userName"> <el-form-item label="" prop="userType">
<el-select
v-model="queryParams.userType"
placeholder="用户类型"
clearable
style="width: 240px"
>
<el-option
v-for="dict in sys_user_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="deptName">
<el-input <el-input
v-model="queryParams.userName" v-model="queryParams.deptName"
placeholder="请输入用户名称" placeholder="所在机构"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="姓名"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<!-- 事业部出来再改 -->
<el-form-item label="" prop="divsion">
<el-input
v-model="queryParams.divsion"
placeholder="事业部"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="" prop="factoryName">
<el-input
v-model="queryParams.factoryName"
placeholder="制造工厂"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" placeholder="联系电话"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
placeholder="用户状态" placeholder="用户状态"
...@@ -68,22 +77,21 @@ ...@@ -68,22 +77,21 @@
style="width: 240px" style="width: 240px"
> >
<el-option <el-option
v-for="dict in sys_normal_disable" v-for="dict in sys_user_status"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间" style="width: 308px"> <el-form-item label="" prop="roleNames">
<el-date-picker <el-input
v-model="dateRange" v-model="queryParams.roleNames"
value-format="YYYY-MM-DD" placeholder="系统角色"
type="daterange" clearable
range-separator="-" style="width: 240px"
start-placeholder="开始日期" @keyup.enter="handleQuery"
end-placeholder="结束日期" />
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" <el-button type="primary" icon="Search" @click="handleQuery"
...@@ -93,83 +101,49 @@ ...@@ -93,83 +101,49 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button <el-button
v-hasPermi="['system:user:add']" v-hasPermi="['system:user:add']"
style="float: right;margin: 12px 0"
type="primary" type="primary"
plain plain
icon="Plus" icon="Plus"
@click="handleAdd" @click="handleAdd"
>新增</el-button >新建管理员</el-button
> >
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:edit']"
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:remove']"
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:import']"
type="info"
plain
icon="Upload"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:export']"
type="warning"
plain
icon="Download"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar
v-model:show-search="showSearch"
:columns="columns"
@query-table="getList"
></right-toolbar>
</el-row>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="userList" :data="userList"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="50" align="center" /> <!-- <el-table-column type="selection" width="50" align="center" />-->
<el-table-column <el-table-column
v-if="columns[0].visible" v-if="columns[0].visible"
key="userId" key="userId"
label="用户编号" label="序号"
align="center" align="center"
prop="userId" prop="userId"
/> />
<el-table-column label="用户类型" align="center" prop="userType">
<template #default="scope">
<dict-tag :options="sys_user_type" :value="scope.row.userType" />
</template>
</el-table-column>
<el-table-column
v-if="columns[3].visible"
key="deptName"
label="所在机构"
align="center"
prop="dept.deptName"
:show-overflow-tooltip="true"
/>
<el-table-column <el-table-column
v-if="columns[1].visible" v-if="columns[1].visible"
key="userName" key="userName"
label="用户名称" label="用户名"
align="center" align="center"
prop="userName" prop="userName"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
...@@ -177,51 +151,62 @@ ...@@ -177,51 +151,62 @@
<el-table-column <el-table-column
v-if="columns[2].visible" v-if="columns[2].visible"
key="nickName" key="nickName"
label="用户昵称" label="姓名"
align="center" align="center"
prop="nickName" prop="nickName"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column label="性别" align="center" prop="sex">
<template #default="scope">
<dict-tag :options="sys_user_sex" :value="scope.row.sex" />
</template>
</el-table-column>
<el-table-column
v-if="columns[2].visible"
key="divsion"
label="事业部权限"
align="center"
prop="divsion"
:show-overflow-tooltip="true"
/>
<el-table-column <el-table-column
v-if="columns[3].visible" v-if="columns[2].visible"
key="deptName" key="factoryName"
label="部门" label="制造工厂权限"
align="center" align="center"
prop="dept.deptName" prop="factoryName"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
v-if="columns[4].visible" v-if="columns[4].visible"
key="phonenumber" key="phonenumber"
label="手机号码" label="手机号"
align="center" align="center"
prop="phonenumber" prop="phonenumber"
width="120" width="120"
/> />
<el-table-column <el-table-column label="用户状态" align="center" prop="status">
v-if="columns[5].visible"
key="status"
label="状态"
align="center"
>
<template #default="scope"> <template #default="scope">
<el-switch <dict-tag :options="sys_user_status" :value="scope.row.status" />
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="columns[6].visible" v-if="columns[6].visible"
label="创建时间" key="roleNames"
label="系统角色"
align="center"
prop="roleNames"
width="120"
/>
<el-table-column
v-if="columns[7].visible"
label="同步时间"
align="center" align="center"
prop="createTime" prop="updateTime"
width="160" width="160"
> >
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -231,58 +216,33 @@ ...@@ -231,58 +216,33 @@
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="scope"> <template #default="scope">
<el-tooltip
v-if="scope.row.userId !== 1"
content="修改"
placement="top"
>
<el-button <el-button
v-hasPermi="['system:user:edit']" v-hasPermi="['system:user:edit']"
link link
v-if="scope.row.userId === 1"
type="primary" type="primary"
icon="Edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
></el-button> >修改</el-button>
</el-tooltip>
<el-tooltip
v-if="scope.row.userId !== 1"
content="删除"
placement="top"
>
<el-button <el-button
v-hasPermi="['system:user:remove']" v-hasPermi="['system:user:edit']"
link link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
></el-button>
</el-tooltip>
<el-tooltip
v-if="scope.row.userId !== 1" v-if="scope.row.userId !== 1"
content="重置密码" type="primary"
placement="top" @click="handleAuthRole(scope.row)"
> >分配角色</el-button>
<el-button <el-button
v-hasPermi="['system:user:resetPwd']"
link link
type="primary"
icon="Key"
@click="handleResetPwd(scope.row)"
></el-button>
</el-tooltip>
<el-tooltip
v-if="scope.row.userId !== 1" v-if="scope.row.userId !== 1"
content="分配角色" type="primary"
placement="top" @click="divsionDialog = true"
> >配置事业部</el-button> <!--v-hasPermi="['system:user:edit']"-->
<el-button <el-button
v-hasPermi="['system:user:edit']" v-hasPermi="['system:user:edit']"
link link
v-if="scope.row.userId !== 1"
type="primary" type="primary"
icon="CircleCheck" @click="dialogFactory = true"
@click="handleAuthRole(scope.row)" >配置制造工厂</el-button>
></el-button>
</el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -294,58 +254,89 @@ ...@@ -294,58 +254,89 @@
@pagination="getList" @pagination="getList"
/> />
</el-col> </el-col>
</pane> <!--事业部 出来再改-->
</splitpanes> <el-dialog v-model="divsionDialog" title="配置事业部" width="600px" append-to-body>
</el-row> <el-form ref="userRef" :model="form" label-width="80px">
<el-form-item>
<el-checkbox-group v-model="selecteDivsions">
<div style="display: flex; flex-wrap: wrap;">
<div v-for="(divsion, index) in allDivsions" :key="index" style="width: 33%; margin-bottom: 10px;">
<el-checkbox :label="divsion">{{ divsion }}</el-checkbox>
</div>
</div>
</el-checkbox-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">保 存</el-button>
</span>
</template>
</el-dialog>
<!-- 配置制造工厂 -->
<el-dialog v-model="dialogFactory" title="配置制造工厂" width="600px" append-to-body>
<el-form ref="userRef" :model="form" label-width="80px">
<el-form-item label="制造工厂" prop="factoryName">
<el-checkbox-group v-model="selectedFactories">
<div style="display: flex; flex-wrap: wrap;">
<div v-for="(factory, index) in allFactories" :key="index" style="width: 33%; margin-bottom: 10px;">
<el-checkbox :label="factory">{{ factory }}</el-checkbox>
</div>
</div>
</el-checkbox-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">保 存</el-button>
</span>
</template>
</el-dialog>
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog v-model="open" :title="title" width="600px" append-to-body> <el-dialog v-model="open" :title="title" width="600px" append-to-body>
<el-form ref="userRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="userRef" :model="form" :rules="rules" label-width="80px">
<el-row> <el-form-item label="用户类型">
<el-col :span="12"> <el-select v-model="form.userType" placeholder="请选择" disabled>
<el-form-item label="用户昵称" prop="nickName"> <el-option
v-for="dict in sys_user_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="用户名" prop="userName">
<el-input <el-input
v-model="form.nickName" v-model="form.userName"
placeholder="请输入用户昵称" placeholder="请输入用户名"
maxlength="30" maxlength="30"
/> />
</el-form-item> </el-form-item>
</el-col> <el-form-item label="用户姓名" prop="nickName">
<el-col :span="12"> <el-input
<el-form-item label="归属部门" prop="deptId"> v-model="form.nickName"
<el-tree-select placeholder="请输入用户姓名"
v-model="form.deptId" maxlength="30"
:data="enabledDeptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择归属部门"
check-strictly
/> />
</el-form-item> </el-form-item>
</el-col> <!--事业部数据出来后修改-->
</el-row> <el-form-item label="所属事业部" prop="divsion">
<el-row>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input <el-input
v-model="form.phonenumber" v-model="form.divsion"
placeholder="请输入手机号码" placeholder="请输入事业部"
maxlength="11" maxlength="30"/>
/>
</el-form-item> </el-form-item>
</el-col> <el-form-item label="联系电话" prop="phonenumber">
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input <el-input
v-model="form.email" v-model="form.phonenumber"
placeholder="请输入邮箱" placeholder="请输入联系电话"
maxlength="50" maxlength="11"
/> />
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item <el-form-item
v-if="form.userId == undefined" v-if="form.userId == undefined"
label="用户名称" label="用户名称"
...@@ -357,10 +348,7 @@ ...@@ -357,10 +348,7 @@
maxlength="30" maxlength="30"
/> />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item <el-form-item
v-if="form.userId == undefined"
label="用户密码" label="用户密码"
prop="password" prop="password"
> >
...@@ -372,64 +360,24 @@ ...@@ -372,64 +360,24 @@
show-password show-password
/> />
</el-form-item> </el-form-item>
</el-col> <el-form-item label="系统角色" prop="roleNames">
</el-row> <el-input
<el-row> disabled
<el-col :span="12"> v-model="form.roleNames"
<el-form-item label="用户性别"> placeholder="请输入系统角色"
<el-select v-model="form.sex" placeholder="请选择"> maxlength="30"
<el-option />
v-for="dict in sys_user_sex"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态"> <el-form-item label="状态">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio <el-radio
v-for="dict in sys_normal_disable" v-for="dict in sys_user_status"
:key="dict.value" :key="dict.value"
:value="dict.value" :value="dict.value"
>{{ dict.label }}</el-radio >{{ dict.label }}</el-radio
> >
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择">
<el-option
v-for="item in postOptions"
:key="item.postId"
:label="item.postName"
:value="item.postId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择">
<el-option
v-for="item in roleOptions"
:key="item.roleId"
:label="item.roleName"
:value="item.roleId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
<el-input <el-input
v-model="form.remark" v-model="form.remark"
...@@ -437,8 +385,6 @@ ...@@ -437,8 +385,6 @@
placeholder="请输入内容" placeholder="请输入内容"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
...@@ -516,11 +462,18 @@ import 'splitpanes/dist/splitpanes.css' ...@@ -516,11 +462,18 @@ import 'splitpanes/dist/splitpanes.css'
const router = useRouter() const router = useRouter()
const appStore = useAppStore() const appStore = useAppStore()
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { sys_normal_disable, sys_user_sex } = proxy.useDict( const { sys_normal_disable, sys_user_sex, sys_user_status, sys_user_type } = proxy.useDict(
'sys_normal_disable', 'sys_normal_disable',
'sys_user_sex', 'sys_user_sex',
'sys_user_status',
'sys_user_type'
) )
const dialogFactory = ref(false)
const divsionDialog = ref(false)
// 选中的工厂列表
const selectedFactories = ref([]);
// 选中的事业部
const selecteDivsions = ref([]);
const userList = ref([]) const userList = ref([])
const open = ref(false) const open = ref(false)
const loading = ref(true) const loading = ref(true)
...@@ -537,6 +490,7 @@ const enabledDeptOptions = ref(undefined) ...@@ -537,6 +490,7 @@ const enabledDeptOptions = ref(undefined)
const initPassword = ref(undefined) const initPassword = ref(undefined)
const postOptions = ref([]) const postOptions = ref([])
const roleOptions = ref([]) const roleOptions = ref([])
/*** 用户导入参数 */ /*** 用户导入参数 */
const upload = reactive({ const upload = reactive({
// 是否显示弹出层(用户导入) // 是否显示弹出层(用户导入)
...@@ -560,7 +514,8 @@ const columns = ref([ ...@@ -560,7 +514,8 @@ const columns = ref([
{ key: 3, label: `部门`, visible: true }, { key: 3, label: `部门`, visible: true },
{ key: 4, label: `手机号码`, visible: true }, { key: 4, label: `手机号码`, visible: true },
{ key: 5, label: `状态`, visible: true }, { key: 5, label: `状态`, visible: true },
{ key: 6, label: `创建时间`, visible: true }, { key: 6, label: `系统角色`, visible: true },
{ key: 7, label: `创建时间`, visible: true },
]) ])
const data = reactive({ const data = reactive({
...@@ -619,6 +574,10 @@ const data = reactive({ ...@@ -619,6 +574,10 @@ const data = reactive({
const { queryParams, form, rules } = toRefs(data) const { queryParams, form, rules } = toRefs(data)
const isEditMode = computed(() => {
return title.value === "编辑";
});
/** 通过条件过滤节点 */ /** 通过条件过滤节点 */
const filterNode = (value, data) => { const filterNode = (value, data) => {
if (!value) return true if (!value) return true
...@@ -630,6 +589,54 @@ watch(deptName, (val) => { ...@@ -630,6 +589,54 @@ watch(deptName, (val) => {
proxy.$refs['deptTreeRef'].filter(val) proxy.$refs['deptTreeRef'].filter(val)
}) })
// 所有可选的事业部
const allDivsions = ref([
'奇瑞', '星途', '智界', '捷途', 'iCAR'
]);
watch(() => form.value.divsion, (newVal) => {
try {
const divsionObj = JSON.parse(newVal || '{}');
selecteDivsions.value = Object.values(factoryObj);
} catch (e) {
selecteDivsions.value = [];
}
}, { immediate: true });
// 监听选中的工厂变化,更新表单数据
watch(selecteDivsions, (newVal) => {
const divsionObj = {};
newVal.forEach((item, index) => {
divsionObj[index] = item;
});
form.value.divsion = JSON.stringify(divsionObj);
}, { deep: true });
// 所有可选的工厂列表
const allFactories = ref([
'整车二工厂', '整车三工厂', '整车四工厂',
'智造一工厂', '智造二工厂', '大连工厂',
'青岛工厂', '鄂尔多斯工厂', '开封工厂',
'城南工厂', '城北工厂', '齐河工厂',
'石家庄工厂'
]);
watch(() => form.value.factoryName, (newVal) => {
try {
const factoryObj = JSON.parse(newVal || '{}');
selectedFactories.value = Object.values(factoryObj);
} catch (e) {
selectedFactories.value = [];
}
}, { immediate: true });
// 监听选中的工厂变化,更新表单数据
watch(selectedFactories, (newVal) => {
const factoryObj = {};
newVal.forEach((item, index) => {
factoryObj[index] = item;
});
form.value.factoryName = JSON.stringify(factoryObj);
}, { deep: true });
/** 查询用户列表 */ /** 查询用户列表 */
function getList() { function getList() {
loading.value = true loading.value = true
...@@ -681,8 +688,9 @@ function handleQuery() { ...@@ -681,8 +688,9 @@ function handleQuery() {
function resetQuery() { function resetQuery() {
dateRange.value = [] dateRange.value = []
proxy.resetForm('queryRef') proxy.resetForm('queryRef')
queryParams.value.status = undefined; // 显式清除状态字段
queryParams.value.deptId = undefined queryParams.value.deptId = undefined
proxy.$refs.deptTreeRef.setCurrentKey(null) // proxy.$refs.deptTreeRef.setCurrentKey(null)
handleQuery() handleQuery()
} }
...@@ -829,7 +837,9 @@ function reset() { ...@@ -829,7 +837,9 @@ function reset() {
phonenumber: undefined, phonenumber: undefined,
email: undefined, email: undefined,
sex: undefined, sex: undefined,
roleNames: '超级管理员',
status: '0', status: '0',
userType: '00',
remark: undefined, remark: undefined,
postIds: [], postIds: [],
roleIds: [], roleIds: [],
...@@ -839,6 +849,8 @@ function reset() { ...@@ -839,6 +849,8 @@ function reset() {
/** 取消按钮 */ /** 取消按钮 */
function cancel() { function cancel() {
dialogFactory.value = false
divsionDialog.value = false
open.value = false open.value = false
reset() reset()
} }
...@@ -865,6 +877,12 @@ function handleUpdate(row) { ...@@ -865,6 +877,12 @@ function handleUpdate(row) {
roleOptions.value = response.roles roleOptions.value = response.roles
form.value.postIds = response.postIds form.value.postIds = response.postIds
form.value.roleIds = response.roleIds form.value.roleIds = response.roleIds
// 根据 roleIds 生成 roleNames
const roleNames = roleOptions.value
.filter(role => form.value.roleIds.includes(role.roleId))
.map(role => role.roleName)
.join(', ');
form.value.roleNames = roleNames; // 赋值到表单
open.value = true open.value = true
title.value = '修改用户' title.value = '修改用户'
form.password = '' form.password = ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment