| | |
| | | <!--用户数据-->
|
| | | <el-col :span="20" :xs="24">
|
| | | <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
| | | <el-form-item label="用户名称" prop="userName">
|
| | | <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter="handleQuery" />
|
| | | <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="phonenumber">
|
| | | <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter="handleQuery" />
|
| | |
| | | <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
| | | <el-table-column type="selection" width="50" align="center" />
|
| | | <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
|
| | | <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
|
| | | <!-- <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> -->
|
| | | <el-table-column label="姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
|
| | | <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
|
| | |
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width">
|
| | | <el-table-column label="操作" align="center" width="380" class-name="small-padding fixed-width">
|
| | | <template #default="scope">
|
| | | <!-- <el-tooltip content="修改" placement="top" v-if="scope.row.userId !== 1"> -->
|
| | | <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
|
| | |
| | | <!-- <el-tooltip content="重置支付密码" placement="top" v-if="scope.row.userId !== 1">
|
| | | <el-button link type="danger" icon="Key" @click="handlePayPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button>
|
| | | </el-tooltip> -->
|
| | | <el-button link type="success" icon="Key" @click="handlerDept(scope.row)" v-hasPermi="['system:user:resetPwd']">分管机构</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table>
|
| | |
| | | <el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" />
|
| | | </el-form-item>
|
| | | </el-col> -->
|
| | | <el-col :span="12">
|
| | | <!-- <el-col :span="12">
|
| | | <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
|
| | | <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password />
|
| | | </el-form-item>
|
| | | </el-col>
|
| | | </el-col> -->
|
| | | </el-row>
|
| | | <el-row>
|
| | | <el-col :span="12">
|
| | |
| | | </div>
|
| | | </template>
|
| | | </el-dialog>
|
| | | <!-- 多机构绑定 -->
|
| | | <el-dialog title="分管机构" v-model="openDialog" width="400px" append-to-body>
|
| | | <el-tree :data="treeData" ref="depttree" :default-expanded-keys="defaultKeys" :props="{label: 'deptName', value: 'deptId', children: 'child' }" node-key="deptId" :default-checked-keys="defaultKeys" show-checkbox>
|
| | |
|
| | | </el-tree>
|
| | | <template #footer>
|
| | | <div class="dialog-footer">
|
| | | <el-button type="primary" @click="submitFileFormSave">确 定</el-button>
|
| | | <el-button @click="openDialog = false">取 消</el-button>
|
| | | </div>
|
| | | </template>
|
| | | </el-dialog>
|
| | | </div>
|
| | | </template>
|
| | |
|
| | | <script setup name="User">
|
| | | import { getToken } from "@/utils/auth";
|
| | | import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, deptTreeSelect, resetPayPwd,updateUserProfile } from "@/api/system/user";
|
| | |
|
| | | import { batchUserDeptView,batchUserDeptTree,batchUserDeptSave } from '@/api/system/company/company'
|
| | | import { ElMessage } from "element-plus";
|
| | | const router = useRouter();
|
| | | const { proxy } = getCurrentInstance();
|
| | | const { sys_normal_disable, sys_user_sex } = proxy.useDict("sys_normal_disable", "sys_user_sex");
|
| | |
| | | { required: true, message: "用户名称不能为空", trigger: "blur" },
|
| | | { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" },
|
| | | ],
|
| | | deptId: [{ required: true, message: "部门不能为空", trigger: "blur" }],
|
| | | nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
|
| | | password: [
|
| | | { required: true, message: "用户密码不能为空", trigger: "blur" },
|
| | | { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" },
|
| | | ],
|
| | | // password: [
|
| | | // { required: true, message: "用户密码不能为空", trigger: "blur" },
|
| | | // { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" },
|
| | | // ],
|
| | | email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
|
| | | phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
|
| | | phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" },{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
|
| | | },
|
| | | });
|
| | |
|
| | |
| | | /** 节点单击事件 */
|
| | | function handleNodeClick(data) {
|
| | | queryParams.value.deptId = data.id;
|
| | | |
| | | handleQuery();
|
| | | }
|
| | | /** 搜索按钮操作 */
|
| | |
| | | function resetQuery() {
|
| | | dateRange.value = [];
|
| | | proxy.resetForm("queryRef");
|
| | | queryParams.value.deptId = undefined;
|
| | | queryParams.value.nickName = undefined;
|
| | | queryParams.value.deptId = deptOptions.value[0].id;
|
| | | proxy.$refs.deptTreeRef.setCurrentKey(null);
|
| | | handleQuery();
|
| | | }
|
| | |
| | | getUser().then((response) => {
|
| | | postOptions.value = response.posts;
|
| | | roleOptions.value = response.roles;
|
| | | form.value.deptId = queryParams.value.deptId |
| | | open.value = true;
|
| | | title.value = "添加用户";
|
| | | form.value.password = initPassword.value;
|
| | |
| | |
|
| | | getDeptTree();
|
| | | // getList();
|
| | | const openDialog = ref(false)
|
| | | const userInfo = reactive({
|
| | | userId: "",
|
| | |
|
| | | })
|
| | | const treeData = ref([])
|
| | | const defaultKeys = ref([])
|
| | | const depttree = ref()
|
| | | function handlerDept(item) {
|
| | | userInfo.userId = item.userId
|
| | | openDialog.value = true
|
| | | batchUserDeptTreeHttp(item.deptId)
|
| | | batchUserDeptViewHttp(userInfo.userId)
|
| | | }
|
| | | function batchUserDeptViewHttp(userId) {
|
| | | batchUserDeptView({userId}).then(val => {
|
| | | defaultKeys.value = val.data.deptIds
|
| | | })
|
| | | }
|
| | | function batchUserDeptTreeHttp(deptId) {
|
| | | batchUserDeptTree({deptId}).then(val => {
|
| | | if(val.data.deptId == deptId) {
|
| | | val.data.disabled = true
|
| | | val.data.child.forEach(item => {
|
| | | item.disabled = true
|
| | | |
| | | })
|
| | | }
|
| | | val.data.child.forEach(item => {
|
| | | // item.disabled = true
|
| | | if(item.deptId == deptId) {
|
| | | item.disabled = true
|
| | | }
|
| | | })
|
| | | treeData.value = [val.data]
|
| | | })
|
| | | }
|
| | | function submitFileFormSave() {
|
| | | userInfo.deptIds = depttree.value.getCheckedKeys()
|
| | | batchUserDeptSave(userInfo).then(val => {
|
| | | if(val.code == 200){
|
| | | ElMessage.success('操作成功')
|
| | | openDialog.value = false
|
| | | }
|
| | | })
|
| | | }
|
| | | </script>
|