From 18fcb8ad28f583e3e1b99b23e4f7d9e1833dcd83 Mon Sep 17 00:00:00 2001 From: pengwei <2071057782@qq.com> Date: 星期三, 12 三月 2025 14:16:30 +0800 Subject: [PATCH] 最新提交 --- 项目代码/client/src/views/tts/UserManagement/Usermanagement.vue | 744 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 607 insertions(+), 137 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 3d7032e..2892d82 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" @@ -17,7 +17,7 @@ </div> <div class="serch"> <div class="time_box"> - <div class="time">娲惧伐鏃ユ湡</div> + <div class="time">鍒涘缓鏃ユ湡</div> <el-date-picker v-model="queryForm.selectTime" prefix-icon="none" @@ -39,21 +39,38 @@ size="small" /> </div> - <div class="serch_box"> - <div class="serchb">鍏ㄥ眬鎼滅储</div> + <!-- <div class="serch_box"> + <div class="serchb"> + <el-select + v-model="queryForm.selectType" + placeholder="璇烽�夋嫨" + size="small" + style="width: 100%; height: 100%; font-size: 0.15rem" + > + <el-option + v-for="item in selectoptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> <input v-model="queryForm.selectName" placeholder="璇疯緭鍏ュ叧閿瘝鎼滅储" style="border-left: 0.06rem solid #e2e2e2" /> - </div> + </div> --> <el-button + @click="handleQuery" type="primary" size="small" style="margin-left: 0.98rem; height: 2rem" >鏌ヨ</el-button > - <el-button size="small" style="height: 2rem">閲嶇疆</el-button> + <el-button size="small" style="height: 2rem" @click="resetQuery" + >閲嶇疆</el-button + > </div> <div class="btns"> <div style="display: flex; align-items: center"> @@ -78,7 +95,7 @@ v-if="isactive == 2" type="primary" size="small" - @click="dialogVisible2 = true" + @click="AddRole" style=" width: 5.5rem; height: 2rem; @@ -92,9 +109,11 @@ <el-button size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem" + @click="printExcel" >鎵归噺瀵煎嚭</el-button > <el-button + @click="deleteAll" size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem" >鎵归噺鍒犻櫎</el-button @@ -104,6 +123,7 @@ <div style="margin-top: 1rem; height: 100%"> <!-- 鐢ㄦ埛鍒楄〃 --> <el-table + height="450" v-if="isactive == 1" :data="tableData" style="width: 100%" @@ -119,20 +139,80 @@ fontSize: '0.88rem', height: '3rem', }" + @select="UserSelectionChange" > - <el-table-column type="selection" align="center" /> - <el-table-column prop="address" label="鐧诲綍璐﹀彿" align="center" /> - <el-table-column prop="name" label="鐪熷疄濮撳悕" align="center" /> - <el-table-column prop="address" label="鑱旂郴鏂瑰紡" align="center" /> - <el-table-column prop="address" label="鐢ㄦ埛鍒嗙粍" align="center" /> - <el-table-column prop="address" label="鐢ㄦ埛瑙掕壊" align="center" /> - <el-table-column prop="address" label="浜鸿劯鐓х墖" align="center" /> - <el-table-column prop="address" label="鏄惁鍚敤" align="center" /> - <el-table-column prop="address" label="鍒涘缓鏃ユ湡" align="center" /> - <el-table-column prop="address" label="鎿嶄綔" align="center"> - <template #default=""> - <el-button size="small" type="text" @click="Edit">缂栬緫</el-button> - <el-button size="small" type="text" @click="Editpassword" + <el-table-column type="selection" align="center" min-width="1%" /> + <el-table-column + prop="userName" + label="鐧诲綍璐﹀彿" + align="center" + min-width="2%" + /> + <el-table-column + prop="userTrueName" + label="鐪熷疄濮撳悕" + align="center" + min-width="3%" + /> + <el-table-column + prop="phoneNo" + label="鑱旂郴鏂瑰紡" + align="center" + min-width="3%" + /> + <el-table-column + prop="role_Id" + label="鐢ㄦ埛鍒嗙粍" + align="center" + min-width="2%" + /> + <el-table-column + prop="roleName" + label="鐢ㄦ埛瑙掕壊" + align="center" + min-width="3%" + /> + <el-table-column + prop="address" + label="浜鸿劯鐓х墖" + align="center" + min-width="3%" + > + <template #default="scope"> + <el-image + style="width: 70px; height: 70px" + :src="scope.row.headImageUrl" + show-progress + :initial-index="4" + fit="cover" + /> + </template> + </el-table-column> + <el-table-column label="鏄惁鍚敤" align="center" min-width="2%"> + <template #default="scope"> + <el-switch + v-model="scope.row.enable" + :active-value="1" + :inactive-value="0" + @change="changeSwitch(scope.row)" + /> + </template> + </el-table-column> + <el-table-column + prop="createDate" + label="鍒涘缓鏃ユ湡" + align="center" + min-width="3%" + /> + <el-table-column label="鎿嶄綔" align="center" min-width="3%"> + <template #default="scope"> + <el-button size="small" type="text" @click="Edit(scope.row)" + >缂栬緫</el-button + > + <el-button + size="small" + type="text" + @click="Editpassword(scope.row)" >淇敼瀵嗙爜</el-button > </template> @@ -141,8 +221,9 @@ <!-- 鐢ㄦ埛瑙掕壊 --> <el-table + height="450" v-if="isactive == 2" - :data="tableData" + :data="grideData" style="width: 100%" :header-cell-style="{ background: 'rgba(250,250,250,1)', @@ -156,18 +237,41 @@ fontSize: '0.88rem', height: '3rem', }" + @select="RoleSelectionChange" > <el-table-column type="selection" align="center" /> - <el-table-column prop="address" label="瑙掕壊鍚嶇О" align="center" /> - <el-table-column prop="name" label="瑙掕壊鏉冮檺" align="center" /> - <el-table-column prop="address" label="澶囨敞" align="center" /> - <el-table-column prop="address" label="鏄惁鍚敤" align="center" /> - <el-table-column prop="address" label="鍒涘缓鏃ユ湡" align="center" /> - <el-table-column prop="address" label="鎿嶄綔" align="center"> - <template #default=""> + <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" align="center" /> + <el-table-column prop="name" label="瑙掕壊鏉冮檺" align="center"> + <template #default="scope"> + <span + @click=" + router.replace({ + path: `/permission`, + state: { info: JSON.stringify(scope.row) }, + }) + " + style="color: #4386ff; cursor: pointer" + >绠$悊</span + > + </template> + </el-table-column> + <el-table-column prop="deptName" label="澶囨敞" align="center" /> + <el-table-column label="鏄惁鍚敤" align="center"> + <template #default="scope"> + <el-switch + v-model="scope.row.enable" + :active-value="1" + :inactive-value="0" + @change="changeRoleSwitch(scope.row)" + /> + </template> + </el-table-column> + <el-table-column prop="createDate" label="鍒涘缓鏃ユ湡" align="center" /> + <el-table-column label="鎿嶄綔" align="center"> + <template #default="scope"> <span style="color: blue; font-size: 0.88rem; cursor: pointer" - @click="Findtorque" + @click="EditRole(scope.row)" >缂栬緫</span > </template></el-table-column @@ -184,10 +288,26 @@ " > <el-pagination + v-if="isactive == 1" size="small" background layout="prev, pager, next" - :total="1" + :current-page="pageQuery.page" + :page-size="pageQuery.rows" + :total="pageTotal" + @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="pageTotal" + @size-change="RoleSizeChange" + @current-change="RoleCurrentChange" /> </div> </div> @@ -215,10 +335,15 @@ > </div> </template> - <el-form :model="form" label-width="auto" label-position="top"> + <el-form + :model="formUser" + label-width="auto" + label-position="top" + ref="formRef" + > <el-row :gutter="20"> <el-col :span="8"> - <el-form-item> + <el-form-item prop="userName"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -228,11 +353,15 @@ > </div> </template> - <el-input size="small" v-model="form.name" placeholder="璇疯緭鍏�" /> + <el-input + size="small" + v-model="formUser.userName" + placeholder="璇疯緭鍏�" + /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item> + <el-form-item prop="userTrueName"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -242,11 +371,15 @@ > </div> </template> - <el-input size="small" v-model="form.name" placeholder="璇疯緭鍏�" /> + <el-input + size="small" + v-model="formUser.userTrueName" + placeholder="璇疯緭鍏�" + /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item> + <el-form-item prop="phoneNo"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -256,7 +389,11 @@ > </div> </template> - <el-input size="small" v-model="form.name" placeholder="璇疯緭鍏�" /> + <el-input + size="small" + v-model="formUser.phoneNo" + placeholder="璇疯緭鍏�" + /> </el-form-item> </el-col> </el-row> @@ -268,34 +405,17 @@ <span style="color: red; margin-right: 0.2rem">*</span> <span style="font-size: 0.88rem; color: black; font-weight: bold" - >鐢ㄦ埛鍒嗙粍</span - > - </div> - </template> - <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item> - <template #label> - <div style="display: flex; align-items: flex-end"> - <span style="color: red; margin-right: 0.2rem">*</span> - <span - style="font-size: 0.88rem; color: black; font-weight: bold" >鐢ㄦ埛瑙掕壊</span > </div> </template> - <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> + <el-select + v-model="formUser.role_Id" + placeholder="璇烽�夋嫨" + size="small" + > <el-option - v-for="item in options" + v-for="item in groupOptions" :key="item.value" :label="item.label" :value="item.value" @@ -314,9 +434,13 @@ > </div> </template> - <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> + <el-select + v-model="formUser.enable" + placeholder="璇烽�夋嫨" + size="small" + > <el-option - v-for="item in options" + v-for="item in isoptins" :key="item.value" :label="item.label" :value="item.value" @@ -349,9 +473,10 @@ action="#" list-type="picture-card" :auto-upload="false" + @before-upload="beforeAvatarUpload" + :on-change="handleAvatarSuccess" > <el-icon><Plus /></el-icon> - <template #file="{ file }"> <div> <img @@ -400,7 +525,7 @@ <el-button size="small" type="primary" - @click="dialogVisible = false" + @click="saveObj" style="height: 2rem; font-size: 0.88rem" > 淇濆瓨 @@ -432,7 +557,13 @@ > </div> </template> - <el-form :model="form" label-width="auto" label-position="top"> + <el-form + :model="formpassword" + label-width="auto" + label-position="top" + ref="formpasswordRef" + :rules="passwordrules" + > <el-row> <el-col> <div @@ -446,18 +577,19 @@ border-radius: 0.25rem; " > - <span style="color: #51b820; font-size: 1rem">璐﹀彿锛歛dimin</span + <span style="color: #51b820; font-size: 1rem" + >璐﹀彿锛歿{ formpassword.userName }}</span ><span style="color: #51b820; font-size: 1rem; margin-left: 2rem" - >鐢ㄦ埛锛氳秴绾х鐞嗗憳</span + >鐢ㄦ埛锛歿{ formpassword.roleName }}</span > </div> </el-col> </el-row> - <el-form-item> + <el-form-item prop="password"> <el-input style="margin-top: 1rem" size="large" - v-model="form.name" + v-model="formpassword.password" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -474,7 +606,7 @@ <el-button size="small" type="primary" - @click="dialogVisible1 = false" + @click="savePassword(formpasswordRef)" style="height: 2rem; font-size: 0.88rem" > 淇濆瓨 @@ -506,8 +638,15 @@ > </div> </template> - <el-form :model="form" label-width="auto" label-position="top"> - <el-form-item> + <el-form + :model="formRole" + label-width="auto" + label-position="top" + ref="formRoleRef" + :rules="roleRules" + :hide-required-asterisk="true" + > + <el-form-item prop="roleName"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -519,7 +658,7 @@ <el-input style="height: 2rem" size="small" - v-model="userform.userName" + v-model="formRole.roleName" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -534,7 +673,7 @@ <el-input style="height: 2rem" size="small" - v-model="userform.description" + v-model="formRole.description" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -551,7 +690,7 @@ <el-button size="small" type="primary" - @click="dialogVisible2 = false" + @click="saveRole(formRoleRef)" style="height: 2rem; font-size: 0.88rem" > 淇濆瓨 @@ -561,99 +700,432 @@ </el-dialog> <!-- 鏉冮檺绠$悊寮瑰嚭妗� --> + + <el-dialog v-model="imgdialogVisible"> + <div + style=" + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + " + > + <img w-full :src="dialogImageUrl" alt="Preview Image" /> + </div> + </el-dialog> </div> </template> <script setup> -import { ref, reactive } from "vue"; +import { ref, reactive, onMounted } from "vue"; import { ElMessage, ElMessageBox } from "element-plus"; +import { + GetUserList, + AddUser, + UpdateUser, + DelApi, + ExportApi, + ExportApi1, +} from "@/api/user"; +import { useRouter } from "vue-router"; +import { formatTime } from "@/utils/index.js"; +import { + GetPageDataApi, + StatusChangeApiApi, + AddRoleApi, + UpdateRoleApi, + DeleteRoleApi, +} from "@/api/role"; const queryForm = reactive({ selectName: "", selectTime: [], // 鏃堕棿鑼冨洿 + selectType: "", + selectInput: "", }); +const router = useRouter(); const tableData = ref([]); - +const grideData = ref([{ id: 1 }]); +const formRef = ref(); const options = ref([]); const props = { multiple: true }; - +const isoptins = ref([ + { + value: 0, + label: "鍚�", + }, + { value: 1, label: "鏄�" }, +]); +//鍒嗙粍 +const groupOptions = ref([ + { value: 1, label: "瓒呯骇绠$悊鍛�" }, + { value: 2, label: "璐ㄦ缁�" }, + { value: 3, label: "鐢垫皵缁�" }, + { value: 4, label: "鏈烘缁�" }, + { value: 5, label: "鍦版矡缁�" }, +]); const table = ref(false); -const form = reactive({}); +const formUser = ref({ + user_Id: undefined, + userName: "", + role_Id: 2, + roleName: "", + phoneNo: "", + remark: "", + userPwd: "123456", + userTrueName: "", + dept_Id: 0, + enable: 1, + headImageUrl: "", +}); const userform = reactive({ userName: "", description: "", }); +const formpasswordRef = ref(); const isactive = ref(1); const claimdialogVisible = ref(false); const dialogVisible = ref(false); +const imgdialogVisible = ref(false); +const dialogImageUrl = ref(""); //鐢ㄦ埛淇℃伅淇敼瀵嗙爜寮瑰嚭妗� const dialogVisible1 = ref(false); //鐢ㄦ埛瑙掕壊鏂板缓 const dialogVisible2 = ref(false); const TorquedialogVisible = ref(false); -const activities = [ - { - content: "1.1宸ュ墠鍑嗗", - timestamp: "2018-04-15", - }, - { - content: "2.1鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-13", - }, - { - content: "2.2鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.3鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, - { - content: "2.4鐗靛紩鐢垫満鐢电紗瀹夎锛堜粎鍔ㄨ溅杞悜鏋讹級", - timestamp: "2018-04-11", - }, -]; +//鍒嗛〉璇锋眰鍙傛暟 +const pageQuery = ref({ + page: 1, //褰撳墠椤甸潰 + rows: 10, //姣忛〉鏄剧ず鏉℃暟 + order: "desc", //鎺掑簭鏂瑰紡 + sort: "createDate", //鎺掑簭瀛楁 + wheres: "", //鏉′欢鏌ヨ +}); const changeactive = (index) => { isactive.value = index; + if (isactive.value == 1) { + selectoptions.value = userOptions; + initData(); + } else { + selectoptions.value = roleOptions; + getRole(); + } }; -function cancelClick() { - table.value = false; -} -function confirmClick() { - table.value = false; -} -// 鏌ョ湅璇︽儏 -const Findmore = () => { + +const userOptions = [ + { + value: "userName", + label: "鐧诲綍璐﹀彿", + }, + { + value: "userTrueName", + label: "鐪熷疄濮撳悕", + }, + { + value: "phoneNo", + label: "鑱旂郴鏂瑰紡", + }, +]; + +const roleOptions = [ + { + value: "roleName", + label: "瑙掕壊鍚嶇О", + }, +]; +const selectoptions = ref([]); +selectoptions.value = userOptions; +const formpassword = ref({ + password: "", +}); +const passwordrules = reactive({ + password: { + required: true, + message: "璇疯緭鍏ュ瘑鐮�", + trigger: "blur", + }, +}); +const pageTotal = ref(0); +//鐧诲綍璁板綍 +const initData = () => { + // 鏌ヨ鏉′欢 + const startTime = formatTime(queryForm.selectTime[0]); + const endTime = formatTime(queryForm.selectTime[1]); + const filter = [ + { + name: "", + value: queryForm.selectType, + displayType: "int", + }, + { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, + { name: "createDate", value: endTime, displayType: "LessOrEqual" }, + ]; + GetUserList({ + ...pageQuery.value, + filter, + }).then((res) => { + tableData.value = res.rows; + pageTotal.value = res.total; + }); +}; + +//鏁版嵁妫�绱簨浠� +const handleQuery = () => { + pageQuery.value.page = 1; + initData(); +}; + +const resetQuery = () => { + queryForm.selectName = ""; + queryForm.selectInput = ""; + queryForm.selectTime = []; + queryForm.selectType = ""; + pageQuery.value.page = 1; + initData(); +}; +//鍒嗛〉椤甸潰澶у皬鏀瑰彉 +const handleSizeChange = (val) => { + pageQuery.value.rows = val; + initData(); +}; + +//鍒嗛〉椤甸潰鏀瑰彉 +const handleCurrentChange = (val) => { + pageQuery.value.page = val; + initData(); +}; +//鍒嗛〉椤甸潰澶у皬鏀瑰彉 +const RoleSizeChange = (val) => { + pageQuery.value.rows = val; + getRole(); +}; + +//鍒嗛〉椤甸潰鏀瑰彉 +const RoleCurrentChange = (val) => { + pageQuery.value.page = val; + getRole(); +}; +const handlePictureCardPreview = (uploadFile) => { + dialogImageUrl.value = uploadFile.url; + imgdialogVisible.value = true; +}; +const handleAvatarSuccess = (val) => { + console.log(val); +}; +const beforeAvatarUpload = (val) => { + console.log(val); +}; +//鏂板缓鐢ㄦ埛璐﹀彿 +const saveObj = () => { + formRef.value.validate((valid) => { + if (valid) { + if (formUser.value.user_Id != undefined) { + UpdateUser(formUser.value).then((res) => { + ElMessage({ message: "淇敼鎴愬姛", type: "success" }); + dialogVisible.value = false; + initData(); + }); + } else { + AddUser(formUser.value).then((res) => { + ElMessage({ message: "鎻愪氦鎴愬姛", type: "success" }); + dialogVisible.value = false; + initData(); + }); + } + } + }); +}; +//鏄惁鍚敤 +const changeSwitch = (val) => { + let data = Object.assign({}, val); + console.log(data); + UpdateUser(data).then((res) => { + ElMessage({ message: "淇敼鎴愬姛", type: "success" }); + dialogVisible.value = false; + initData(); + }); + console.log(val); +}; +// 鐢ㄦ埛瑙掕壊鏄惁鍚敤 +const changeRoleSwitch = (val) => { + let data = Object.assign({}, val); + StatusChangeApiApi(data).then((res) => { + ElMessage({ message: "淇敼鎴愬姛", type: "success" }); + dialogVisible.value = false; + initData(); + }); +}; +//缂栬緫鐢ㄦ埛璐﹀彿 +const Edit = (val) => { + console.log(val); + let obj = Object.assign({}, val); dialogVisible.value = true; + formUser.value = obj; }; -// 鏌ョ湅鍔涚煩 -const Findtorque = () => { - TorquedialogVisible.value = true; +const newobj = ref({}); +//淇敼瀵嗙爜 +const Editpassword = (val) => { + formpassword.value = val; + newobj.value = val; + dialogVisible1.value = true; }; +//淇濆瓨淇敼瀵嗙爜 +const savePassword = async (formEl) => { + let obj = Object.assign({}, newobj); + obj.password = formpassword.value.password; + if (!formEl) return; + await formEl.validate((valid, fields) => { + if (valid) { + UpdateUser(obj).then((res) => { + ElMessage({ message: "淇敼瀵嗙爜鎴愬姛", type: "success" }); + dialogVisible1.value = false; + initData(); + }); + } else { + console.log("error submit!", fields); + } + }); +}; +const formRoleRef = ref(); +const roleRules = reactive({ + roleName: { + required: true, + message: "璇疯緭鍏ヨ鑹插悕绉�", + trigger: "blur", + }, + description: { + required: true, + message: "璇疯緭鍏ヨ鑹叉弿杩�", + trigger: "blur", + }, +}); +const formRole = ref({ + roleName: "", + description: "", +}); +//鏂板缓瑙掕壊 +const AddRole = () => { + Roletype.value = "鏂板缓"; + dialogVisible2.value = true; +}; +const Roletype = ref("鏂板缓"); +//淇濆瓨瑙掕壊 +const saveRole = async (formEl) => { + if (!formEl) return; + await formEl.validate((valid, fields) => { + if (valid) { + if (Roletype.value == "淇敼") { + UpdateRoleApi(formRole.value).then((res) => { + ElMessage({ message: "淇敼鎴愬姛", type: "success" }); + dialogVisible2.value = false; + getRole(); + }); + } else { + AddRoleApi(formRole.value).then((res) => { + ElMessage({ message: "娣诲姞鎴愬姛", type: "success" }); + dialogVisible2.value = false; + getRole(); + }); + } + } else { + console.log("error submit!", fields); + } + }); +}; +//缂栬緫瑙掕壊 +const EditRole = (val) => { + Roletype.value = "淇敼"; + let obj = Object.assign({}, val); + formRole.value = obj; + dialogVisible2.value = true; +}; +const getRole = () => { + GetPageDataApi({ + page: 1, + rows: 10, + total: 100, + tableName: "", + sort: "", + order: "", + wheres: "", + export: true, + value: "", + filter: [ + { + name: "string", + value: "string", + displayType: "string", + }, + ], + }).then((res) => { + grideData.value = res.rows; + pageTotal.value = res.total; + }); +}; +const printExcel = () => { + // 鏌ヨ鏉′欢 + const startTime = formatTime(queryForm.selectTime[0]); + const endTime = formatTime(queryForm.selectTime[1]); + const filter = [ + { + name: queryForm.selectType, + value: queryForm.selectInput, + displayType: "String", + }, + { + name: "pustatus", + value: queryForm.selectName, + displayType: "String", + }, + { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, + { name: "createDate", value: endTime, displayType: "LessOrEqual" }, + ]; + if (isactive.value == 1) { + ExportApi({ + ...pageQuery.value, + filter, + }); + } + if (isactive.value == 2) { + ExportApi1({ + ...pageQuery.value, + filter, + }); + } +}; + +//鎵归噺鍒犻櫎 +const ids = ref([]); +const UserSelectionChange = (val) => { + ids.value = []; + ids.value = val.map((item) => item.user_Id); +}; +const RoleSelectionChange = (val) => { + ids.value = []; + ids.value = val.map((item) => item.roleId); +}; +const deleteAll = () => { + if (ids.value.length == 0) { + ElMessage({ message: "璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁", type: "error" }); + return; + } + if (isactive.value == 1) { + DelApi(ids.value).then((res) => { + ElMessage({ message: "鍒犻櫎鎴愬姛", type: "success" }); + initData(); + }); + } else { + DeleteRoleApi(ids.value).then((res) => { + ElMessage({ message: "鍒犻櫎鎴愬姛", type: "success" }); + getRole(); + }); + } +}; + +onMounted(() => { + initData(); +}); </script> <style lang="scss" scoped> .Usermanagement { @@ -718,8 +1190,6 @@ width: 6.88rem; height: 2rem; text-align: center; - border: 0.06rem solid rgba(222, 222, 222, 1); - border-radius: 0.25rem 0 0 0.25rem; font-size: 0.75rem; display: flex; align-items: center; -- Gitblit v1.9.3