From e9060cf8f241536a896d69d0044769bd3b0e8d49 Mon Sep 17 00:00:00 2001 From: yangyin <1850366751@qq.com> Date: 星期五, 25 十月 2024 09:25:49 +0800 Subject: [PATCH] Merge branch 'test' of http://47.103.154.90:83/r/WI/Web.Admin.V1.0 into test --- src/views/project/yw/systemManage/roleMgr/RoleMgr.vue | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 207 insertions(+), 2 deletions(-) diff --git a/src/views/project/yw/systemManage/roleMgr/RoleMgr.vue b/src/views/project/yw/systemManage/roleMgr/RoleMgr.vue index 7fdef45..7d97d16 100644 --- a/src/views/project/yw/systemManage/roleMgr/RoleMgr.vue +++ b/src/views/project/yw/systemManage/roleMgr/RoleMgr.vue @@ -1,6 +1,211 @@ <template> - <div>RoleMgr</div> + <HMContainer type="card"> + <template #header> + <el-form ref="queryFormRef" :inline="true" :model="queryParams"> + <el-form-item label="鍚嶇О" prop="title"> + <el-input v-model="queryParams.title" style="width: 226.4px" placeholder="鍚嶇О" clearable @input="debounceQueryTable" /> + </el-form-item> + + <!-- <el-form-item> + <el-button icon="ele-Plus" @click="openOptDlg()" type="primary"> 娣诲姞 </el-button> + </el-form-item> --> + </el-form> + </template> + <template #main> + <div class="h-full" ref="chatDragContainerRef"> + <el-table + v-loading="tableLoading" + ref="draggableTableRef" + class="h100" + border + :row-class-name="isDragStatus ? 'cursor-move' : 'cursor-pointer'" + :data="displayTableData" + highlight-current-row + > + <el-table-column prop="title" label="鍚嶇О" fixed="left" show-overflow-tooltip> </el-table-column> + <!-- <el-table-column label="瑙掕壊缂栫爜" prop="value" width="90" show-overflow-tooltip> </el-table-column> --> + + + <!-- <el-table-column label="鎿嶄綔" width="180" fixed="right" show-overflow-tooltip> + <template #default="scope"> + <div class="space-x-3 items-center flex"> + <el-tooltip effect="dark" content="缂栬緫" placement="top"> + <i class="ywifont ywicon-bianji !text-[15px] text-blue-400 cursor-pointer" @click="openOptDlg(scope.row)"></i> + </el-tooltip> + <el-tooltip effect="dark" content="淇敼瀵嗙爜" placement="top"> + <i + class="ywifont ywicon-mima !text-[15px] text-blue-400 cursor-pointer font-bold" + @click="openOptPasswordDlg(scope.row)" + ></i> + </el-tooltip> + <el-tooltip effect="dark" content="淇敼瑙掕壊" placement="top"> + <i + class="ywifont ywicon-jiaose !text-[15px] text-blue-400 cursor-pointer font-bold" + @click="openOptRoleDlg(scope.row)" + ></i> + </el-tooltip> + <el-tooltip effect="dark" content="鍒犻櫎" placement="top"> + <i class="ywifont ywicon-shanchu !text-[17px] text-red-400 cursor-pointer" @click="deleteCurrentRow(scope.row)"></i> + </el-tooltip> + </div> + </template> + </el-table-column> --> + </el-table> + </div> + </template> + + <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :roleList="roleList"></OptDlg> + <OptPasswordDlg + v-model="optPasswordDlgIsShow" + :item="optPasswordDlgMapRow" + @update="updatePasswordOpt" + :roleList="roleList" + ></OptPasswordDlg> + <OptRoleDlg v-model="optRoleDlgIsShow" :item="optRoleDlgMapRow" @update="updateRoleOpt" :roleList="roleList"></OptRoleDlg> --> + + <!-- <MetricPrompt v-model="infoDlgIsShow" :metricItem="infoDlgMapRow"></MetricPrompt> + <MetricName v-model="metricNameIsShow" :metricItem="metricNameMapRow"></MetricName> --> + </HMContainer> </template> -<script setup lang="ts"></script> +<script setup lang="ts"> +import { debounce, getItemMap } from '/@/utils/util'; + +import { onMounted, ref } from 'vue'; +import { usePageDisplay } from '/@/hooks/usePageDisplay'; +import { useQueryTable } from '/@/hooks/useQueryTable'; +// import { useTableSort } from '/@/hooks/useTableSort'; +// import { useValidateUniqueness } from '/@/hooks/useValidateUniqueness'; +import OptDlg from './optDlg/OptDlg.vue'; +import OptPasswordDlg from './optDlg/OptPasswordDlg.vue'; +import OptRoleDlg from './optDlg/OptRoleDlg.vue'; + +import * as userApi from '/@/api/auth/user'; + +import { getRoleInfoListByPost } from '/@/api/auth/role'; +import HMContainer from '/@/components/layout/HMContainer.vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import { computed } from 'vue'; + +//#region ====================== 琛ㄦ牸鏁版嵁锛宼able init ====================== +const tableLoading = ref(false); +const tableData = ref([]); +const isDragStatus = ref(false); +const getTableData = async () => { + const res = await getRoleInfoListByPost(); + + tableData.value = res?.values ?? []; +}; +//#endregion + +//#region ====================== 琛ㄦ牸鏌ヨ銆佹帓搴忥紝search form init ====================== + +const queryParams = ref({ + title: '', +}); +const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(tableData, queryParams, () => { + displayTableData.value = tableData.value; +}); +const debounceQueryTable = debounce(handleQueryTable, 400); + +//#endregion + +//#region ====================== 鏌ヨ蹇嵎閿� ====================== +const queryFormRef = ref(null); +const pressEnterSearch = (ev: KeyboardEvent) => { + if (ev.key === 'Enter') { + handleQueryTable(); + } +}; +usePageDisplay( + () => { + queryFormRef.value?.$el?.addEventListener('keypress', pressEnterSearch); + }, + () => { + queryFormRef.value?.$el?.removeEventListener('keypress', pressEnterSearch); + } +); +//#endregion + +//#region ====================== 娣诲姞淇敼鎿嶄綔 ====================== +const optDlgIsShow = ref(false); +const optDlgMapRow = ref(null); +const openOptDlg = (row?: any) => { + optDlgMapRow.value = row; + optDlgIsShow.value = true; +}; + +const updateOpt = (formValue) => { + const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); + if (foundIndex > -1) { + tableData.value[foundIndex] = { + ...tableData.value[foundIndex], + ...formValue, + }; + } +}; + +const insertOpt = (newData) => { + tableData.value.push({ ...newData }); +}; +//#endregion + +const deleteCurrentRow = (row: any) => { + ElMessageBox.confirm(`纭畾鍒犻櫎鐢ㄦ埛锛氥��${row.user_name}銆�?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }).then(async () => { + const res = await userApi.deleteUserInfoByPost({ + user_id: row.user_id, + }); + const foundIndex = tableData.value.findIndex((item) => item === row); + foundIndex > -1 && tableData.value.splice(foundIndex, 1); + ElMessage.success('鍒犻櫎鐢ㄦ埛鎴愬姛'); + }); +}; +//#region ====================== 淇敼瀵嗙爜鎿嶄綔 ====================== +const optPasswordDlgIsShow = ref(false); +const optPasswordDlgMapRow = ref(null); +const openOptPasswordDlg = (row?: any) => { + optPasswordDlgMapRow.value = row; + optPasswordDlgIsShow.value = true; +}; + +const updatePasswordOpt = (formValue) => { + const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); + if (foundIndex > -1) { + tableData.value[foundIndex] = { + ...tableData.value[foundIndex], + ...formValue, + }; + } +}; + +//#endregion + +//#region ====================== 淇敼瑙掕壊鎿嶄綔 ====================== +const optRoleDlgIsShow = ref(false); +const optRoleDlgMapRow = ref(null); +const openOptRoleDlg = (row?: any) => { + optRoleDlgMapRow.value = row; + optRoleDlgIsShow.value = true; +}; + +const updateRoleOpt = (formValue) => { + const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); + if (foundIndex > -1) { + tableData.value[foundIndex] = { + ...tableData.value[foundIndex], + ...formValue, + }; + } +}; + +//#endregion + +onMounted(async () => { + getTableData(); +}); +</script> <style scoped lang="scss"></style> -- Gitblit v1.9.3