From 05beaea41133a9e1bfd544a2a5d5f727bb930468 Mon Sep 17 00:00:00 2001 From: ZengTao <2773468879@qq.com> Date: 星期二, 28 五月 2024 10:18:04 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- UI-Project/src/views/User/permissions.vue | 601 ++++++++++++++++++++++-------------------------------- 1 files changed, 248 insertions(+), 353 deletions(-) diff --git a/UI-Project/src/views/User/permissions.vue b/UI-Project/src/views/User/permissions.vue index 15a996d..b5e4ae6 100644 --- a/UI-Project/src/views/User/permissions.vue +++ b/UI-Project/src/views/User/permissions.vue @@ -1,273 +1,259 @@ -<script lang="ts" setup> +<script setup> import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" -import { ref } from 'vue' - const router = useRouter() -const value1 = ref(true) const add = ref(false) const adda = ref(false) -const changer = ref(false) +import request from "@/utils/request" +import { ref, onMounted } from "vue"; +// import { ref } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' +// import LanguageMixin from './lang/LanguageMixin' +const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� +// const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃 + const menuName = ref(''); + const parentId = ref(''); + const url = ref(''); +const tableData = ref([]) +const slot = ref('') + request.get("/loadGlass/sys/menu/nav").then((res) => { + if (res.code == 200) { + console.log(res.data); + tableData.value = res.data.tree + } else { + ElMessage.warning(res.msg) -const tableData = [ - { - id: '1', - long: '1005', - wide: '183.6', - thick: '1991', - time: '2024/4/1', - type: '寰呰瘑鍒�', - typea: '1', - }, - { - id: '2', - long: '105', - wide: '183', - time: '2024/4/1', - thick: '191', - typea: '1', - type: '寰呰瘑鍒�' - }, - { - id: '2', - long: '105', - wide: '183', - time: '2024/4/1', - thick: '191', - typea: '1', - type: '寰呰瘑鍒�' - }, -] -const open = () => { - ElMessageBox.confirm( - '鏄惁鍒犻櫎璇ユ潯淇℃伅?', - '鎻愮ず', - { - confirmButtonText: '鏄�', - cancelButtonText: '鍙栨秷', - type: 'warning', - } - ) - .then(() => { - ElMessage({ - type: 'success', - message: '鍒犻櫎鎴愬姛锛�', - }) - }) - .catch(() => { - ElMessage({ - type: 'info', - message: '鍒犻櫎澶辫触', - }) - }) -} -const getTableRow = (row,type) =>{ - switch (type) { - case 'edit' :{ - //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅') - router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }}) - break - } - case 'delete':{ - alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅') - break - } - } -} -const dialogForm = () => { - ElMessageBox.confirm( - '鏄惁閲嶇疆瀵嗙爜?', - '鎻愮ず', - { - confirmButtonText: '鏄�', - cancelButtonText: '鍙栨秷', - type: 'warning', - } - ) - .then(() => { - // this.boxa = true - // this.box = false - - }) -} -const dialogForma = () => { - ElMessageBox.confirm( - '鏄惁鍒犻櫎璇ユ潯淇℃伅?', - '鎻愮ず', - { - confirmButtonText: '鏄�', - cancelButtonText: '鍙栨秷', - type: 'warning', - } - ) -} - -const options = [ - { - value: 'Option1', - label: 'admin', - }, - { - value: 'Option2', - label: 'ueser2', - }, - { - value: 'Option3', - label: 'ueser3', - }, -] -const optionsa = [ - { - valuea: 'Option1', - labela: '姝e父', - }, - { - valuea: 'Option2', - labela: '绂佺敤', - }, -] - -const data= reactive({ - tableList:[]//table鏁版嵁 -}) - -const beforeChange = () => { - return new Promise((resolve) => { - setTimeout(() => { - ElMessage.success("淇敼鎴愬姛锛�"); - return resolve(true); - }, 1000); - }); -}; - -// //js灞傦紝瀹炴垬鐗堟湰,涓庡悗鍙版帴鍙d氦浜� -// const gettableList = (id) = >{ -// xxx鎺ュ彛.({ -// id:id -// }).then((res)=>{ -// //灏嗘暟鎹紶缁檈l-table缁戝畾鐨�:data=>data.tableList -// data.tableList = res.data - -// }) -// } + } + }); +const titleSelectJsona = ref({ + processType: [], -// //鏈�鍚庡皢璇锋眰鍑芥暟鎸傝浇鍒皏ue瑙嗗浘涓� -// onMounted(() => { -// gettableList () - -// }) -// const delete = () => { -// ElMessageBox.confirm( -// '鏄惁鍒犻櫎璇ユ潯淇℃伅?', -// '鎻愮ず', -// { -// confirmButtonText: '鏄�', -// cancelButtonText: '鍙栨秷', -// type: 'warning', -// } -// ) -// .then(() => { - -// }) -// } -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', - 'time': '2024/4/1', - } - ] }) +// 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) { + titleSelectJsona.value.processTypea = response.data; + console.log(response.data); + + } else { + ElMessage.warning(response.data); + } + } catch (error) { + console.error('Error fetching options:', error); + } +}; +// 娣诲姞 +const getTableRow = async () => { + try { + const response = await request.post('/loadGlass/sys/menu/save', { + menuName: menuName.value, + parentId: parentId.value, + url: url.value, + }); + + if (response.code == 200) { + // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 + ElMessage.success(response.message); + add.value = false; + // tableData.value = response.data; + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.msg); + } + } catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +}; +// 缂栬緫 +const getTableRowa = async () => { + try { + const response = await request.post('/loadGlass/sys/menu/updateMenu', { + menuName: menuName.value, + parentId: parentId.value, + url: url.value, + }); + + if (response.code == 200) { + // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 + ElMessage.success(response.message); + add.value = false; + tableData.value = response.data; + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.msg); + } + } catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +}; +// 鍒犻櫎 + const opena = async(row) => { + try { + const confirmResult = await ElMessageBox.confirm( + '鏄惁鍒犻櫎璇ョ敤鎴�?', + '鎻愮ず', + { + confirmButtonText: '鏄�', + cancelButtonText: '鍙栨秷', + type: 'warning', + } + ); + if (confirmResult === 'confirm') { + // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛 + const response = await request.post("/loadGlass/sys/menu/deleteMenu", { + menuId: row.id, + }) + if (response.code === 200) { + ElMessage.success(response.message); + } else { + // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛 + ElMessage.error(response.msg); + // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); + } + } + } catch (error) { + // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 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', +// } +// ] + +// }) </script> <template> - <div> - <el-button type="primary" style="margin-top: 10px;margin-left: 10px;" size="mini" id="searchButton" @click="add = true">娣诲姞鐢ㄦ埛</el-button> - <el-input - clearable - placeholder="璇疯緭鍏ョ敤鎴峰悕" - size="mini" - style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;" - /> - <el-input - clearable - placeholder="璇疯緭鍏ラ偖绠�" - size="mini" - style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;" - /> - <el-button type="primary" size="mini" @click="searchSubmit" style="margin-top: 10px;">鏌ヨ</el-button > - <el-button type="primary" size="mini" @click="empty" style="margin-top: 10px;">娓呯┖</el-button> - <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading"> - <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;"> - <el-table height="100%" ref="table" - @selection-change="handleSelectionChange" - :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> - <el-table-column prop="id" align="center" label="鐢ㄦ埛鍚�" min-width="80" /> - <el-table-column prop="long" align="center" label="閭" min-width="120" /> - <el-table-column prop="time" align="center" label="鍒涘缓鏃堕棿" min-width="120" /> - <el-table-column align="center" prop="changer" label="鏄惁绂佺敤" min-width="140" > - <template #default="scope"> - <el-switch v-model="scope.row.changer" :before-change="beforeChange" /> - </template> - </el-table-column> - - <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200"> - <template #default> - <el-button size="mini" type="text" plain @click="dialogForm">閲嶇疆瀵嗙爜</el-button> - <el-button size="mini" type="text" plain @click="adda = true">缂栬緫</el-button> - <el-button size="mini" type="text" plain @click="dialogForma">鍒犻櫎</el-button> + <div style="height: 700px;"> + <el-button type="primary" style="margin-top: 10px;margin-left: 10px;" size="mini" id="searchButton" @click="add = true">娣诲姞鑿滃崟</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;max-height: 650px;"> + <el-table + :data="tableData" + height="650" + @expand-change="handleExpandChange" + row-key="id" + :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" + > + <el-table-column type="expand"> + <template #default="props"> + <div v-if="props.row.children && props.row.children.length"> + <el-table + :data="props.row.children" + border + style="width: 100%;margin-left: 20px;" + row-key="id" + :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" + > + <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/> + <el-table-column prop="url" label="閾炬帴" align="center" min-width="160"/> + <el-table-column prop="id" align="center" label="鎺掑簭" min-width="140"/> + <el-table-column fixed="right" label="鎿嶄綔" align="center"> + <template #default="scope"> + <el-button size="mini" type="text" plain @click="adda = true">缂栬緫</el-button> + <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button> </template> </el-table-column> - </el-table> + </el-table> + </div> + </template> + </el-table-column> + <el-table-column prop="menuName" label="涓�绾ц彍鍗曟爮" align="center" min-width="120" /> + <el-table-column prop="url" label="閾炬帴" align="center" min-width="200"/> + <el-table-column prop="id" align="center" label="鎺掑簭" min-width="180" /> + <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200"> + <template #default="scope"> + <el-button size="mini" type="text" plain @click="adda = true">缂栬緫</el-button> + <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <!-- <el-table height="240" ref="table" + @selection-change="handleSelectionChange" + :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> + <el-table-column prop="menuName" align="center" label="鑿滃崟鏍�" min-width="180" /> + <el-table-column align="center" label="閾炬帴" min-width="180"> + <template #default="scope"> + <el-tag v-for="role in scope.row.children"> + {{role.url}} + </el-tag> + </template> + </el-table-column> + <el-table-column prop="id" align="center" label="鎺掑簭" min-width="180" /> + <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200"> + <template #default="scope"> + <el-button size="mini" type="text" plain @click="adda = true">缂栬緫</el-button> + <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</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="娣诲姞鑿滃崟" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> <el-form 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 autocomplete="off" /> + <div> + <el-form-item label="鑿滃崟鏍忥細" :required="true" style="width: 25vw"> + <el-input v-model="menuName" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -275,20 +261,8 @@ <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw;"> - <el-select - v-model="value" - clearable - placeholder="璇烽�夋嫨瑙掕壊" - style="width: 330px" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> + <el-form-item label="閾炬帴锛�" :required="true" style="width: 25vw"> + <el-input v-model="url" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -296,38 +270,8 @@ <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="閭锛�" :required="true" style="width: 25vw;"> - <el-input 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="鏄惁绂佺敤" :required="true" style="width: 25vw;"> - <el-select - v-model="value" - clearable - placeholder="璇烽�夋嫨鏄惁绂佺敤" - style="width: 330px" - > - <el-option - v-for="item in optionsa" - :key="item.valuea" - :label="item.labela" - :value="item.valuea" - /> - </el-select> - </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="瀵嗙爜锛�" :required="true" style="width: 25vw;"> - <el-input autocomplete="off" /> + <el-form-item label="鎺掑簭锛�" :required="true" style="width: 25vw"> + <el-input v-model="parentId" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -336,23 +280,23 @@ </div> <template #footer> <div id="dialog-footer"> - <el-button type="primary" @click="getTableRow('edit')"> + <el-button type="primary" @click="getTableRow"> 纭 </el-button> <el-button @click="add = false">鍙栨秷</el-button> </div> </template> - </el-dialog> - <el-dialog v-model="adda" top="23vh" width="37%" title="淇敼鐢ㄦ埛" > + </el-dialog> + <el-dialog v-model="adda" top="23vh" width="37%" title="淇敼鑿滃崟" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> <el-form 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 autocomplete="off" /> + <div> + <el-form-item label="鑿滃崟鏍忥細" :required="true" style="width: 25vw"> + <el-input v-model="menuName" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -360,20 +304,8 @@ <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw;"> - <el-select - v-model="value" - clearable - placeholder="璇烽�夋嫨瑙掕壊" - style="width: 330px" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> + <el-form-item label="閾炬帴锛�" :required="true" style="width: 25vw"> + <el-input v-model="url" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -381,38 +313,8 @@ <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> - <el-form-item label="閭锛�" :required="true" style="width: 25vw;"> - <el-input 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="鏄惁绂佺敤" :required="true" style="width: 25vw;"> - <el-select - v-model="value" - clearable - placeholder="璇烽�夋嫨鏄惁绂佺敤" - style="width: 330px" - > - <el-option - v-for="item in optionsa" - :key="item.valuea" - :label="item.labela" - :value="item.valuea" - /> - </el-select> - </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="瀵嗙爜锛�" :required="true" style="width: 25vw;"> - <el-input autocomplete="off" /> + <el-form-item label="鎺掑簭锛�" :required="true" style="width: 25vw"> + <el-input v-model="parentId" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> @@ -421,13 +323,13 @@ </div> <template #footer> <div id="dialog-footer"> - <el-button type="primary" @click="getTableRow('edit')"> + <el-button type="primary" @click="getTableRowa"> 纭 </el-button> <el-button @click="adda = false">鍙栨秷</el-button> </div> </template> - </el-dialog> + </el-dialog> </template> <style scoped> @@ -448,14 +350,7 @@ margin-left: 28%; } #awatch{ - height: 450px; -} -#main-body{ - margin-top: -20px; - margin-left: 300px; -} -#main-bodya{ - margin-top: -10px; - margin-left: 100px; + height: 460px; + /* margin-top: -60px; */ } </style> \ No newline at end of file -- Gitblit v1.8.0