From 10298137c4d5e646a6e297c4fa1c250c70432ca0 Mon Sep 17 00:00:00 2001 From: pengwei <2071057782@qq.com> Date: 星期二, 08 四月 2025 17:31:37 +0800 Subject: [PATCH] 最新代码 --- 项目代码/client/src/views/tts/UserManagement/Usermanagement.vue | 338 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 207 insertions(+), 131 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" index 239ce0f..33f9791 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" @@ -107,6 +107,7 @@ >鏂板缓</el-button > <el-button + v-if="isactive != 3" size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem" @click="printExcel" @@ -140,7 +141,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="UserSelectionChange" + @selection-change="UserSelectionChange" > <el-table-column type="selection" align="center" min-width="1%" /> <el-table-column @@ -182,13 +183,21 @@ <template #default="scope"> <el-image style="width: 70px; height: 70px" - :src="'http://115.159.85.185:9098' + scope.row.headImageUrl" + :src=" + 'http://115.159.85.185:9098' + scope.row.headImageUrl + " show-progress :initial-index="4" fit="cover" /> </template> </el-table-column> + <el-table-column + prop="groupID" + label="鐧惧害浜戝垎缁�" + align="center" + min-width="3%" + /> <el-table-column label="鏄惁鍚敤" align="center" min-width="2%"> <template #default="scope"> <el-switch @@ -228,6 +237,15 @@ @click="Editpassword(scope.row)" >淇敼瀵嗙爜</el-button > + <el-button + size="small" + type="text" + @click="deletUser(scope.row)" + :disabled=" + scope.row.userName == 'admin' || scope.row.user_Id == '1' + " + >鍒犻櫎</el-button + > </template> </el-table-column> </el-table> @@ -251,7 +269,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="RoleSelectionChange" + @selection-change="RoleSelectionChange" > <el-table-column type="selection" align="center" /> <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" align="center" /> @@ -316,6 +334,17 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange" /> + <el-pagination + v-if="isactive == 2" + size="small" + background + layout="prev, pager, next" + :current-page="pageQuery.page" + :page-size="pageQuery.rows" + :total="pageTotal1" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> </div> </div> @@ -353,7 +382,7 @@ > <el-row :gutter="20"> <el-col :span="8"> - <el-form-item prop="userName"> + <el-form-item prop="username"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -365,13 +394,13 @@ </template> <el-input size="small" - v-model="formUser.userName" + v-model="formUser.username" placeholder="璇疯緭鍏�" /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="userTrueName"> + <el-form-item prop="usertruename"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -383,13 +412,13 @@ </template> <el-input size="small" - v-model="formUser.userTrueName" + v-model="formUser.usertruename" placeholder="璇疯緭鍏�" /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="phoneNo"> + <el-form-item prop="phoneno"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -401,7 +430,7 @@ </template> <el-input size="small" - v-model="formUser.phoneNo" + v-model="formUser.phoneno" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -409,7 +438,7 @@ </el-row> <el-row :gutter="20"> <el-col :span="8"> - <el-form-item prop="role_Id"> + <el-form-item prop="roleid"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -420,12 +449,12 @@ </div> </template> <el-select - v-model="formUser.role_Id" + v-model="formUser.roleid" placeholder="璇烽�夋嫨" size="small" > <el-option - :disabled="item.roleId == 1" + :disabled="item.roleId == 20" v-for="item in groupOptions" :key="item.roleId" :label="item.roleName" @@ -435,7 +464,7 @@ </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="roleName"> + <el-form-item prop="rolename"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -446,7 +475,7 @@ </div> </template> <el-select - v-model="formUser.roleName" + v-model="formUser.rolename" placeholder="璇烽�夋嫨" size="small" > @@ -516,6 +545,7 @@ @before-upload="beforeAvatarUpload" :on-success="handleAvatarSuccess" :file-list="fileList != [] ? fileList : []" + :class="{ hide: showUpload }" > <el-icon> <Plus /> @@ -605,7 +635,7 @@ </div> </template> <el-form - :model="formUser" + :model="newobj" label-width="auto" label-position="top" ref="formpasswordRef" @@ -636,7 +666,7 @@ <el-input style="margin-top: 1rem" size="large" - v-model="formUser.newPwd" + v-model="newobj.newPwd" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -748,7 +778,6 @@ </el-dialog> <!-- 鏉冮檺绠$悊寮瑰嚭妗� --> - <el-dialog v-model="imgdialogVisible"> <div style=" @@ -768,16 +797,17 @@ import { ref, reactive, onMounted, toRef } from "vue"; import { ElMessage, ElMessageBox } from "element-plus"; import { - GetUserList, AddUser, UpdateUser, DelApi, ExportApi, ExportApi1, - UpdatePassword, UpdatePwd, - AddUserApi, - EditUserApi, + NewGetUserList, + AdduserData, + NewUpdateUser, + DeleteUserData, + FaceGetPageData, } from "@/api/user"; import { useRouter } from "vue-router"; import { formatTime } from "@/utils/index.js"; @@ -799,6 +829,7 @@ const tableData = ref([]); const grideData = ref([]); +const faceData = ref([]); //鏂板缓鐢ㄦ埛ref const formUserRef = ref(); const options = ref([]); @@ -810,31 +841,27 @@ }, { value: 1, label: "鏄�" }, ]); +const showUpload = ref(false); //鍒嗙粍 const groupOptions = ref([]); +const groupIDOptions = ref([]); const formUser = ref({ - user_Id: undefined, - userName: "", - role_Id: 2, - roleName: "", - phoneNo: "", - remark: "", - userPwd: "123456", - userTrueName: "", - dept_Id: 0, + id: undefined, + username: "", + phoneno: "", + roleid: 21, + rolename: "", enable: 1, - headImageUrl: "", - createDate: formatTime(new Date()), //鍒涘缓鏃堕棿 - creater: JSON.parse(localStorage.getItem("user")).userName, //鍒涘缓浜� - newPwd: "", + path: "", + usertruename: "", }); const rules = reactive({ - userName: { + username: { required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur", }, - role_Id: { + roleid: { required: true, message: "璇烽�夋嫨瑙掕壊", trigger: "change", @@ -851,12 +878,12 @@ message: "璇疯緭鍏ュ鍚�", trigger: "blur", }, - phoneNo: { + phoneno: { required: true, message: "璇疯緭鍏ユ墜鏈哄彿", trigger: "blur", }, - userTrueName: { + usertruename: { required: true, message: "璇疯緭鍏ョ湡瀹炲鍚�", trigger: "blur", @@ -875,11 +902,11 @@ //绛涢�夋潯浠� const userOptions = [ { - value: "userName", + value: "username", label: "鐧诲綍璐﹀彿", }, { - value: "userTrueName", + value: "usertruename", label: "鐪熷疄濮撳悕", }, { @@ -929,39 +956,11 @@ }); const uploadRef = ref(); -// //鐢ㄦ埛淇敼瀵嗙爜 -// const handleUpdatePassword = (row) => { -// dialogVisible1.value = true; -// formUser.value = Object.assign({}, row); -// }; -// const UpdatePassword = () => { -// formpasswordRef.value.validate((valid) => { -// if (valid) { -// UpdatePassword({ -// user_Id: formUser.value.user_Id, -// oldPwd: formpassword.value.oldPwd, -// newPwd: formpassword.value.newPwd, -// }).then((res) => { -// if (res.code == 200) { -// ElMessage({ -// message: "淇敼鎴愬姛", -// type: "success", -// }); -// dialogVisible1.value = false; -// initData(); -// } else { -// ElMessage({ -// message: res.msg, -// type: "error", -// }); -// } -// }); -// } -// }); -// }; const pageTotal = ref(0); -//鐧诲綍璁板綍 +const pageTotal1 = ref(0); +const pageTotal2 = ref(0); +//鐢ㄦ埛鍒楄〃 const initData = () => { // 鏌ヨ鏉′欢 const startTime = formatTime(queryForm.value.selectTime[0]); @@ -975,14 +974,16 @@ { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, { name: "createDate", value: endTime, displayType: "LessOrEqual" }, ]; - GetUserList({ - ...pageQuery.value, - filter, + NewGetUserList({ + pageIndex: pageQuery.value.page, + pageSize: pageQuery.value.rows, + searchKeyword: queryForm.value.selectInput, + startDate: startTime, + endDate: endTime, }).then((res) => { - tableData.value = res.rows; - pageTotal.value = res.total; + tableData.value = res.data.items; + pageTotal.value = res.data.totalCount; }); - getRole(); }; //鍒嗛〉璇锋眰鍙傛暟 const pageQuery = ref({ @@ -993,23 +994,48 @@ wheres: "", //鏉′欢鏌ヨ }); +//鍒嗛〉璇锋眰鍙傛暟 +const pageQuery1 = ref({ + page: 1, //褰撳墠椤甸潰 + rows: 10, //姣忛〉鏄剧ず鏉℃暟 + order: "desc", //鎺掑簭鏂瑰紡 + sort: "", //鎺掑簭瀛楁 + wheres: "", //鏉′欢鏌ヨ +}); + +//鍒嗛〉璇锋眰鍙傛暟 +const pageQuery2 = ref({ + page: 1, //褰撳墠椤甸潰 + rows: 10, //姣忛〉鏄剧ず鏉℃暟 + order: "desc", //鎺掑簭鏂瑰紡 + sort: "", //鎺掑簭瀛楁 + wheres: "", //鏉′欢鏌ヨ +}); //鏁版嵁妫�绱簨浠� const handleQuery = () => { - pageQuery.value.page = 1; if (isactive.value == 1) { + pageQuery.value.page = 1; initData(); - } else { + } else if (isactive.value == 2) { + pageQuery1.value.page = 1; getRole(); + } else { + pageQuery2.value.page = 1; + GetFacePageData(); } }; //閲嶇疆鏌ヨ鏉′欢 const resetQuery = () => { queryForm.value = Object.assign({}, obj); - pageQuery.value.page = 1; if (isactive.value == 1) { + pageQuery.value.page = 1; initData(); - } else { + } else if (isactive.value == 2) { + pageQuery1.value.page = 1; getRole(); + } else { + pageQuery2.value.page = 1; + GetFacePageData(); } }; //鍒嗛〉椤甸潰澶у皬鏀瑰彉 @@ -1017,8 +1043,10 @@ pageQuery.value.rows = val; if (isactive.value == 1) { initData(); - } else { + } else if (isactive.value == 2) { getRole(); + } else { + GetFacePageData(); } }; @@ -1027,34 +1055,42 @@ pageQuery.value.page = val; if (isactive.value == 1) { initData(); - } else { + } else if (isactive.value == 2) { getRole(); + } else { + GetFacePageData(); } }; -const handleAvatarSuccess = (val) => { - formUser.value.headImageUrl = "/image/" + val.data; +const handleAvatarSuccess = (response, file, fileList) => { + formUser.value.path = response.data; + if (fileList.length >= 1) { + showUpload.value = true; + } }; //閲嶇疆琛ㄥ崟 const resetForm = (formEl) => { if (!formEl) return; formEl.resetFields(); formUser.value = { - user_Id: undefined, - userName: "", - role_Id: 21, - roleName: "", - phoneNo: "", - remark: "", - userPwd: "123456", - userTrueName: "", - dept_Id: 0, + username: "", + phoneno: "", + roleid: 21, + rolename: "", enable: 1, - headImageUrl: "", - newPwd: "", + path: "", + user_Id: undefined, }; fileList.value = []; }; const resetForm1 = (formEl) => { + if (!formEl) return; + formEl.resetFields(); + formRole.value = { + roleName: "", + description: "", + }; +}; +const resetForm2 = (formEl) => { if (!formEl) return; formEl.resetFields(); formRole.value = { @@ -1067,23 +1103,18 @@ dialogImageUrl.value = uploadFile.url; imgdialogVisible.value = true; }; -const handleRemove = (val) => { +const handleRemove = (file, fileList1) => { fileList.value = []; //绉婚櫎宸蹭笂浼犵殑鍥剧墖 - formUser.value.headImageUrl = ""; + formUser.value.path = ""; + if (fileList.value.length < 1) { + showUpload.value = false; + } }; + const beforeAvatarUpload = (val) => { console.log(val); }; -// const submitUpload = () => { -// let promise = new Promise((resolve, reject) => { -// setTimeout(async () => { -// await uploadRef.value.submit(); -// resolve("涓婁紶鎴愬姛"); -// }); -// }); -// return promise; -// }; //鏂板缓鐢ㄦ埛璐﹀彿 const saveObj = async (formEl) => { @@ -1091,14 +1122,14 @@ if (!formEl) return; await formEl.validate((valid, fields) => { if (valid) { - if (formUser.value.user_Id != undefined) { - UpdateUser(formUser.value).then((res) => { + if (formUser.value.id != undefined) { + NewUpdateUser(formUser.value).then((res) => { ElMessage({ message: "淇敼鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); }); } else { - AddUser(formUser.value).then((res) => { + AdduserData(formUser.value).then((res) => { ElMessage({ message: "鎻愪氦鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); @@ -1111,9 +1142,17 @@ }; //鏄惁鍚敤 const changeSwitch = (val) => { - let data = Object.assign({}, val); - console.log(data); - UpdateUser(data).then((res) => { + let data = { + id: val.user_Id, + username: val.userName, + phoneno: val.phoneNo, + roleid: val.role_Id, + rolename: val.roleName, + enable: val.enable, + path: val.headImageUrl, + usertruename: val.userTrueName, + }; + NewUpdateUser(data).then((res) => { ElMessage({ message: "淇敼鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); @@ -1131,15 +1170,24 @@ }; //缂栬緫鐢ㄦ埛璐﹀彿 const Edit = (val) => { - let obj = Object.assign({}, val); + let obj = { + id: val.user_Id, + username: val.userName, + phoneno: val.phoneNo, + roleid: val.role_Id, + rolename: val.roleName, + enable: val.enable, + path: val.headImageUrl, + usertruename: val.userTrueName, + }; formUser.value = { ...obj, }; - if (obj.headImageUrl != "") { + if (obj.path != "") { fileList.value = [ { name: "1", - url: "http://115.159.85.185:9098" + obj.headImageUrl, + url: "http://115.159.85.185:9098" + obj.path, }, ]; } @@ -1153,20 +1201,15 @@ formUser.value = obj; formpassword.value = val; newobj.value = Object.assign({}, val); - console.log(newobj.value); - dialogVisible1.value = true; }; //淇濆瓨淇敼瀵嗙爜 const savePassword = async (formEl) => { - let obj = Object.assign({}, newobj); - // obj.password = formpassword.value.password; - console.log(formUser.value); - + let obj = Object.assign({}, newobj.value); let formdata = { - id: formUser.value.user_Id, - oldPwd: formUser.value.userPwd, - newPwd: formUser.value.newPwd, + id: obj.user_Id, + oldPwd: obj.userPwd, + newPwd: obj.newPwd, }; if (!formEl) return; await formEl.validate((valid, fields) => { @@ -1250,12 +1293,39 @@ { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, { name: "createDate", value: endTime, displayType: "LessOrEqual" }, ]; - GetPageDataApi({ ...pageQuery.value, filter }).then((res) => { + GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => { grideData.value = res.rows; - pageTotal.value = res.total; + pageTotal1.value = res.total; groupOptions.value = res.rows; }); }; + +//鍒犻櫎鐢ㄦ埛 +const deletUser = (val) => { + ElMessageBox.confirm("纭鍒犻櫎璇ョ敤鎴峰悧锛�", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + DeleteUserData({ + userAccount: val.userName, + }).then((res) => { + ElMessage({ + type: "success", + message: "鍒犻櫎鎴愬姛", + }); + initData(); + }); + }) + .catch(() => { + ElMessage({ + type: "info", + message: "鍙栨秷鍒犻櫎", + }); + }); +}; + //鎵撳嵃鏁版嵁 const printExcel = () => { // 鏌ヨ鏉′欢 @@ -1294,9 +1364,11 @@ if (isactive.value == 1) { selectoptions.value = userOptions; initData(); - } else { + } else if (isactive.value == 2) { selectoptions.value = roleOptions; getRole(); + } else { + GetFacePageData(); } }; @@ -1331,6 +1403,7 @@ }); } }; + //绠$悊 //璺敱璺宠浆 const toDetail = (row) => { @@ -1339,6 +1412,7 @@ onMounted(() => { initData(); + getRole(); }); </script> <style lang="scss" scoped> @@ -1484,14 +1558,16 @@ text-align: center; } } +:deep(.hide .el-upload--picture-card) { + display: none; +} </style> <style> -.confirmButtonClass { +/* .confirmButtonClass { margin-right: 10px; } - .el-message-box .el-message-box__btns { flex-direction: row-reverse !important; justify-content: normal !important; -} +} */ </style> -- Gitblit v1.9.3