From c7093edbf1fb3c91107c457ea13935305e1a9458 Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期五, 05 七月 2024 14:58:50 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- UI-Project/src/views/User/rolelist.vue | 241 ++++++++++++++++++++++++++++------------------- 1 files changed, 144 insertions(+), 97 deletions(-) diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue index 81ec996..5dcbb0b 100644 --- a/UI-Project/src/views/User/rolelist.vue +++ b/UI-Project/src/views/User/rolelist.vue @@ -2,10 +2,12 @@ import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" + import { useI18n } from 'vue-i18n' + const { t } = useI18n() + let language = ref(localStorage.getItem('lang') || 'zh') const router = useRouter() const add = ref(false) const adda = ref(false) -const editingUser = ref({}); // 鐢ㄤ簬瀛樺偍褰撳墠缂栬緫鐨勭敤鎴锋暟鎹� import request from "@/utils/request" import { ref, onMounted } from "vue"; // import { ref } from 'vue' @@ -14,35 +16,34 @@ const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃 const name = ref(''); - const tableData = ref([]) +const options = ref([]) +const selectedOptions = ref([]) +// 瀹氫箟绾ц仈閫夋嫨鍣ㄧ殑灞炴�� +const cascaderProps = { + value: 'id', + label: 'menuName', + multiple: true +}; const slot = ref('') const titleSelectJsona = ref({ processType: [], }) -// const handleInputChangea = async (value: string) => { -// if (value) { -// await fetchOptionsa(value); -// } else { -// options.value = []; // 娓呯┖閫夐」鍒楄〃 -// } -// }; onMounted(() => { - // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級 fetchOptionsa(''); }); // 瑙掕壊涓嬫媺閫� const fetchOptionsa = async () => { try { - // 鍙戦�佽姹傚埌鍚庣鎺ュ彛 const response = await request.post('/loadGlass/sys/role/queryRole',{ key: '' }); if (response.code == 200) { tableData.value = response.data // titleSelectJsona.value.processTypea = response.data.menuList; + // options.value = response.data.menuList console.log(response.data); } else { @@ -54,47 +55,94 @@ }; // 娣诲姞 const getTableRow = async () => { - try { - const response = await request.post('/loadGlass/sys/role/saveRole', { + try { + let menuList = []; + selectedOptions.value.forEach(array => { + if (array.length >= 2) { + let id = array[0]; + let parentId = array[1]; + menuList.push({ + id: id, + parentId: 0, + children: [ + { + id: parentId, + parentId: id, + } + ], + }); + } + }); + const dataToSend = { name: name.value, - }); - + menuList: menuList + }; + const response = await request.post('/loadGlass/sys/role/saveRole', dataToSend); if (response.code == 200) { - // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 ElMessage.success(response.message); add.value = false; - // tableData.value = response.data; + name.value = ''; + selectedOptions.value = ''; + fetchOptionsa(); } else { - // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� - ElMessage.error(response.msg); + ElMessage.error(response.message); } } catch (error) { - // 澶勭悊閿欒 console.error(error); } }; // 澶勭悊缂栬緫鎸夐挳鐐瑰嚮 function handleEdit(row) { - editingUser.value = { ...row }; // 浣跨敤灞曞紑杩愮畻绗﹀鍒跺綋鍓嶈鏁版嵁 - adda.value = true; // 鏄剧ず瀵硅瘽妗� + name.value = row.name; + selectedOptions.value = row.selectedOptions +// options.value = res.data.tree + adda.value = true; // 鏄剧ず瀵硅瘽妗� + window.localStorage.setItem('id', row.id) } // 缂栬緫 const getTableRowa = async () => { - try { - const response = await request.post('/loadGlass/sys/role/updateRole', { + let id = window.localStorage.getItem('id') + try { + let menuList = []; + selectedOptions.value.forEach(array => { + if (array.length >= 2) { + let id = array[0]; + let parentId = array[1]; + menuList.push({ + id: id, + parentId: 0, + children: [ + { + id: parentId, + parentId: id, + } + ], + }); + } + }); + const dataToSend = { + id:id, name: name.value, - - }); + menuList: menuList + }; + const response = await request.post('/loadGlass/sys/role/updateRole', dataToSend); + // try { + // const response = await request.post('/loadGlass/sys/role/updateRole', { + // id: id, + // name: name.value, + // }); if (response.code == 200) { // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 ElMessage.success(response.message); - editingUser.value = {}; adda.value = false; - tableData.value = response.data; + name.value = ''; + selectedOptions.value = ''; + fetchOptionsa() + tableData.value = response.data; } else { // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� - ElMessage.error(response.msg); + ElMessage.error(response.message); } } catch (error) { // 澶勭悊閿欒 @@ -103,26 +151,25 @@ }; // 鍒犻櫎 const opena = async(row) => { - try { + try { const confirmResult = await ElMessageBox.confirm( - '鏄惁鍒犻櫎璇ョ敤鎴�?', - '鎻愮ず', + t('delivery.derole'), + t('delivery.prompt'), { - confirmButtonText: '鏄�', - cancelButtonText: '鍙栨秷', + confirmButtonText: t('delivery.yes'), + cancelButtonText: t('delivery.cancel'), type: 'warning', - } - ); + } + ); if (confirmResult === 'confirm') { // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛 - const response = await request.post("/loadGlass/sys/role/delete", { - ids: row.id, - }) + const response = await request.post("/loadGlass/sys/role/delete",[row.id]) if (response.code === 200) { ElMessage.success(response.message); + fetchOptionsa() } else { // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛 - ElMessage.error(response.msg); + ElMessage.error(response.message); // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); } } @@ -130,77 +177,62 @@ // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑 console.error('鍙戠敓閿欒:', error); } -}; - -const gridOptions = reactive({ - border: "full",//琛ㄦ牸鍔犺竟妗� - keepSource: true,//淇濇寔婧愭暟鎹� - align: 'center',//鏂囧瓧灞呬腑 - stripe:true,//鏂戦┈绾� - rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒 - id: 'OrderList', - showFooter: true,//鏄剧ず鑴� - printConfig: {}, - importConfig: {}, - exportConfig: {}, - scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔� - showOverflow:true, - columnConfig: { - resizable: true, - useKey: true - }, - filterConfig: { //绛涢�夐厤缃」 - remote: true - }, - customConfig: { - storage: true - }, - editConfig: { - trigger: 'click', - mode: 'row', - showStatus: true - }, - data: [ - { - 'id': '1', - 'long': '5', - 'wide': '1005', - 'thick': '183.6', - } - ] - -}) +}; +request.get("/loadGlass/sys/menu/nav").then((res) => { + if (res.code == 200) { + console.log(res.data); + options.value = res.data.tree + console.log( options.value); + } else { + ElMessage.warning(res.msg) + } + }); </script> <template> <div> - <el-button type="primary" style="margin-top: 10px;margin-left: 10px;" size="mini" id="searchButton" @click="add = true">娣诲姞瑙掕壊</el-button> + <el-button type="primary" style="margin-top: 10px;margin-left: 10px;" size="mini" id="searchButton" @click="add = true">{{ $t('delivery.addrole') }}</el-button> <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> <el-table height="240" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> - <el-table-column prop="name" align="center" label="瑙掕壊" min-width="180" /> - <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200"> + <el-table-column prop="name" align="center" :label="$t('delivery.role')" min-width="180" /> + <el-table-column fixed="right" :label="$t('delivery.operate')" align="center" width="200"> <template #default="scope"> - <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">缂栬緫</el-button> - <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button> + <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('delivery.edit') }}</el-button> + <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('delivery.delete') }}</el-button> </template> </el-table-column> </el-table> </div> </el-card> </div> - <el-dialog v-model="add" top="23vh" width="37%" title="娣诲姞瑙掕壊" > + <el-dialog v-model="add" top="23vh" width="37%" :title="$t('productStock.addusername')" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> - <el-form size="mini" label-width="150px"> + <el-form ref="formRef" size="mini" label-width="150px"> <el-form label-width="100px" label-position="right"> <el-row style="margin-top: -15px;margin-bottom: -2px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw"> - <el-input v-model="name" autocomplete="off" /> + <el-form-item :label="$t('delivery.rolea')" :required="true" style="width: 25vw"> + <el-input :placeholder="$t('delivery.inrole')" v-model="name" autocomplete="off" /> + </el-form-item></div></div> + </el-col> + </el-row> + <el-row style="margin-top: 10px;"> + <el-col :span="6"> + <div id="dt" style="font-size: 15px;"> + <div> + <el-form-item :label="$t('delivery.choice')" :required="true" style="width: 25vw;"> + <el-cascader + v-model="selectedOptions" + :placeholder="$t('delivery.inchoice')" + :props="cascaderProps" + :options="options" + style="width: 330px" + clearable /> </el-form-item></div></div> </el-col> </el-row> @@ -210,22 +242,37 @@ <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="getTableRow"> - 纭 + {{ $t('delivery.sure') }} </el-button> - <el-button @click="add = false">鍙栨秷</el-button> + <el-button @click="add = false"> {{ $t('delivery.cancel') }}</el-button> </div> </template> </el-dialog> - <el-dialog v-model="adda" top="23vh" width="37%" title="淇敼瑙掕壊" > + <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('delivery.editrole')"> <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> - <el-form :model="editingUser" ref="formRef" size="mini" label-width="150px"> + <el-form ref="formRef" size="mini" label-width="150px"> <el-form label-width="100px" label-position="right"> <el-row style="margin-top: -15px;margin-bottom: -2px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw"> - <el-input v-model="editingUser.name" autocomplete="off" /> + <el-form-item :label="$t('delivery.rolea')" :required="true" style="width: 25vw"> + <el-input :placeholder="$t('delivery.inrole')" v-model="name" autocomplete="off" /> + </el-form-item></div></div> + </el-col> + </el-row> + <el-row style="margin-top: 10px;"> + <el-col :span="6"> + <div id="dt" style="font-size: 15px;"> + <div> + <el-form-item :label="$t('delivery.choice')" :required="true" style="width: 25vw;"> + <el-cascader + v-model="selectedOptions" + :placeholder="$t('delivery.inchoice')" + :props="cascaderProps" + :options="options" + style="width: 330px" + clearable /> </el-form-item></div></div> </el-col> </el-row> @@ -235,9 +282,9 @@ <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="getTableRowa"> - 纭 + {{ $t('delivery.sure') }} </el-button> - <el-button @click="adda = false">鍙栨秷</el-button> + <el-button @click="adda = false">{{ $t('delivery.cancel') }}</el-button> </div> </template> </el-dialog> -- Gitblit v1.8.0