diff --git a/admin_2/src/assets/icon.js b/admin_2/src/assets/icon.json similarity index 99% rename from admin_2/src/assets/icon.js rename to admin_2/src/assets/icon.json index fccde774496fbbea271fb40cf428c1db5e834d71..e3809beec165ffc7d60a0d2dd8775142b54906bb 100644 --- a/admin_2/src/assets/icon.js +++ b/admin_2/src/assets/icon.json @@ -1,4 +1,4 @@ -export let iconList = [ +[ "el-icon-platform-eleme", "el-icon-eleme", "el-icon-delete-solid", @@ -278,5 +278,5 @@ export let iconList = [ "el-icon-potato-strips", "el-icon-lollipop", "el-icon-ice-cream-square", - "el-icon-ice-cream-round", -]; + "el-icon-ice-cream-round" +] diff --git a/admin_2/src/components/autoRegister/YSwitch.vue b/admin_2/src/components/autoRegister/YSwitch.vue new file mode 100644 index 0000000000000000000000000000000000000000..2973de4c0f3e9afe4b9097c7f8f38e386b7a155f --- /dev/null +++ b/admin_2/src/components/autoRegister/YSwitch.vue @@ -0,0 +1,65 @@ +<template> + <div> + <el-switch + :value="value" + class="y-switch" + :active-value="activeValue" + :inactive-value="inactiveValue" + v-bind="$attrs" + v-on="$listeners" + @change="handlechange" + > + </el-switch> + </div> +</template> + +<script> +export default { + name: "YSwitch", + model: { + prop: "value", + event: "change", + }, + props: { + value: { + default: 0, + }, + activeValue: { + default: 1, + }, + inactiveValue: { + default: 0, + }, + }, + methods: { + handlechange(val) { + this.$emit("change", val); + }, + }, +}; +</script> + +<style lang="less" scoped> +:deep(.el-switch) { + .el-switch__label { + position: absolute; + display: none; + color: #fff; + } + .el-switch__label--right { + z-index: 1; + left: 0px; /*涓嶅悓鍦烘櫙涓嬪彲鑳戒笉鍚岋紝鑷璋冩暣*/ + } + .el-switch__label--left { + z-index: 1; + right: 0px; /*涓嶅悓鍦烘櫙涓嬪彲鑳戒笉鍚岋紝鑷璋冩暣*/ + } + .el-switch__label.is-active { + display: block; + } + .el-switch__core, + .el-switch .el-switch__label { + width: 60px !important; /*寮€鍏虫寜閽殑瀹藉害澶у皬*/ + } +} +</style> diff --git a/admin_2/src/pages/system/access/Access.vue b/admin_2/src/pages/system/access/Access.vue index 571a888d0a2808ea0204f0f6b2846877ff0e4591..a018cf0168d4e174ec62e716f4044ffa7c5fc4db 100644 --- a/admin_2/src/pages/system/access/Access.vue +++ b/admin_2/src/pages/system/access/Access.vue @@ -59,17 +59,25 @@ :title="title" @addSuccess="getAccessList" ></AddAccess> + <AccessSystem + ref="AccessSystem" + :show.sync="accessShow" + :systemList="systemList" + @success="getAccessList" + ></AccessSystem> </div> </template> <script> import TableHeader from "@/components/TableHeader.vue"; import AddAccess from "./components/AddAccess.vue"; -import { getAccessList, delAccess } from "@/api/system"; +import AccessSystem from "./components/AccessSystem.vue"; +import { getAccessList, delAccess, getSystemList } from "@/api/system"; export default { components: { TableHeader, AddAccess, + AccessSystem, }, data() { return { @@ -116,7 +124,22 @@ export default { }, }, { - label: "鍖哄煙鎺ュ叆绯荤粺", + label: "鎺ュ叆绯荤粺", + align: "center", + formatter: (row) => { + if (row.accessSystemList && row.accessSystemList.length) { + return row.accessSystemList.map((v) => { + return ( + <el-tag type="info" size="small" class="mr-2"> + {v.systemName} + </el-tag> + ); + }); + } + }, + }, + { + label: "绯荤粺鏍囩", align: "center", formatter: (row) => { if (row.tag) { @@ -161,10 +184,16 @@ export default { { label: "鎿嶄綔", align: "center", - width: "120", + width: "180", formatter: (row) => { return ( <div class="flex justify-center gap-4"> + <span + class="primary cursor-pointer" + onClick={() => this.accessSystem(row)} + > + 鎺ュ叆绯荤粺 + </span> <span class="primary cursor-pointer" onClick={() => this.handleEdit(row)} @@ -194,13 +223,28 @@ export default { show: false, title: "鏂板", dict: {}, // 瀛楀吀 + systemList: [], + accessShow: false, + areaInfo: {}, }; }, created() { + this.getSystemList(); this.getAccessList(); }, computed: {}, methods: { + // 鑾峰彇鍖哄煙绯荤粺鍒楄〃 + async getSystemList() { + let res = await getSystemList({ + page: 1, + size: -1, + }); + if (res.data.code == 1) { + let { data } = res.data.data; + this.systemList = data; + } + }, // 鑾峰彇鎺ュ叆鍖哄煙鍒楄〃 async getAccessList() { this.loading = true; @@ -282,6 +326,10 @@ export default { console.log("鍙栨秷鎴愬姛锛�"); }); }, + accessSystem(row) { + this.$refs.AccessSystem.onAdd(row); + this.accessShow = true; + }, }, }; </script> diff --git a/admin_2/src/pages/system/access/components/AccessSystem.vue b/admin_2/src/pages/system/access/components/AccessSystem.vue new file mode 100644 index 0000000000000000000000000000000000000000..f90e79eca7b6b1972a3f4cf7954b8a2f6142fb01 --- /dev/null +++ b/admin_2/src/pages/system/access/components/AccessSystem.vue @@ -0,0 +1,189 @@ +<template> + <el-drawer + :title="`鍖哄幙鎺ュ叆绯荤粺-${areaInfo.areaName}`" + :visible.sync="drawer" + size="40%" + @close="handleClose" + > + <div class="main w-full"> + <el-button size="small" type="primary" @click="addSystem">娣诲姞</el-button> + <el-table :data="accessSystemList" style="width: 100%"> + <el-table-column type="index" :index="1" label="搴忓彿" align="center"> + </el-table-column> + <el-table-column prop="systemName" align="center" label="绯荤粺鍚嶇О"> + <template slot-scope="scope"> + <el-input + size="small" + placeholder="璇疯緭鍏�" + v-model="scope.row.systemName" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="systemCode" align="center" label="绯荤粺缂栫爜"> + <template slot-scope="scope"> + <el-input + size="small" + placeholder="璇疯緭鍏�" + v-model="scope.row.systemCode" + ></el-input> + </template> + </el-table-column> + <el-table-column + prop="accessTime" + align="center" + label="鎺ュ叆鏃ユ湡" + width="220" + > + <template slot-scope="scope"> + <el-date-picker + style="width: 150px" + size="small" + v-model="scope.row.accessTime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + value-format="timestamp" + > + </el-date-picker> + </template> + </el-table-column> + <el-table-column + width="80" + align="center" + prop="enabled" + label="鍚痋鍋滅敤" + > + <template slot-scope="scope"> + <YSwitch + active-text="鍚敤" + inactive-text="鍋滅敤" + v-model="scope.row.enabled" + ></YSwitch> + </template> + </el-table-column> + <el-table-column align="center" width="60" prop="enabled" label="鍒犻櫎"> + <template slot-scope="scope"> + <i + class="el-icon-remove delete cursor-pointer text-[24px]" + @click="delSystem(scope)" + ></i> + </template> + </el-table-column> + </el-table> + </div> + <div class="footer"> + <el-button size="small" @click="handleClose">鍙� 娑�</el-button> + <el-button size="small" @click="handleReset">閲� 缃�</el-button> + <el-button + size="small" + type="primary" + :loading="loading" + @click="handleOk" + >纭� 瀹�</el-button + > + </div> + </el-drawer> +</template> + +<script> +import { saveAccess, deleteSystem } from "@/api/system"; +export default { + props: { + show: { + type: Boolean, + default: false, + }, + systemList: { + required: true, + type: Array, + default: () => [], + }, + }, + data() { + return { + loading: false, + form: { + systemName: "", + systemCode: "", + accessTime: "", + enabled: 1, + }, + accessSystemList: [], + areaInfo: {}, + }; + }, + computed: { + drawer: { + get() { + return this.show; + }, + set(val) { + this.$emit("update:show", val); + }, + }, + }, + + methods: { + addSystem() { + let row = this.$cloneDeep(this.form); + this.accessSystemList.push(row); + }, + handleClose() { + this.$resetForm("form"); + this.drawer = false; + }, + handleReset() { + this.$resetForm("form"); + this.drawer = false; + }, + + onAdd(row) { + this.areaInfo = row; + this.accessSystemList = this.areaInfo.accessSystemList || []; + }, + async handleOk() { + this.loading = true; + // this.accessSystemList.forEach((v) => { + // v.accessId = this.areaInfo.id; + // }); + this.areaInfo.accessSystemList = this.accessSystemList; + let res = await saveAccess(this.areaInfo); + this.loading = false; + let { code, msg } = res.data; + if (code === 1) { + this.$message.success(msg); + this.$emit("success"); + this.handleClose(); + } + }, + async delSystem({ row, $index }) { + if (row.id) { + let res = await deleteSystem({ id: row.id }); + if (res.data.code == 1) { + this.$message.success(res.data.msg); + } + } + this.accessSystemList.splice($index, 1); + }, + }, +}; +</script> + +<style lang="less" scoped> +:deep(.el-drawer__body) { + padding: 0px !important; + display: flex; + flex-direction: column; +} +.main { + padding: 20px; + flex: 1; + overflow-y: auto; +} +.footer { + width: 100%; + padding: 20px; + border-top: 1px solid #ececec; + background-color: #fff; + text-align: right; +} +</style> diff --git a/admin_2/src/pages/system/menu/Menu.vue b/admin_2/src/pages/system/menu/Menu.vue index 6f3784f1952803ca06aa438c6de47131ef5c61c0..ca69c1289c0bce4f95f062d1006abb2119c0de5d 100644 --- a/admin_2/src/pages/system/menu/Menu.vue +++ b/admin_2/src/pages/system/menu/Menu.vue @@ -90,20 +90,20 @@ export default { // align: "center", // reserveSelection: true, // }, - { - label: "搴忓彿", - type: "index", - width: "55", - align: "center", - index: (index) => { - return (this.current - 1) * this.size + index + 1; - }, - }, // { - // label: "鏍戝舰灞曞紑", - // width: "80", + // label: "搴忓彿", + // type: "index", + // width: "55", // align: "center", + // index: (index) => { + // return (this.current - 1) * this.size + index + 1; + // }, // }, + { + label: "鏍戝舰灞曞紑", + width: "80", + align: "center", + }, { label: "鑿滃崟鍚嶇О", prop: "name", diff --git a/admin_2/src/pages/system/menu/components/AddMenu.vue b/admin_2/src/pages/system/menu/components/AddMenu.vue index 886a1d7f1855896c34f727bc87f5f854a82391fb..14a6347e0e4fbeacc8725059212c97ceca07071e 100644 --- a/admin_2/src/pages/system/menu/components/AddMenu.vue +++ b/admin_2/src/pages/system/menu/components/AddMenu.vue @@ -94,7 +94,7 @@ 'cursor-pointer', { active: form.imgPath == v }, ]" - v-for="(v, i) in iconList" + v-for="(v, i) in iconJson" :key="i" @click="form.imgPath = v" > @@ -116,7 +116,7 @@ <script> import { saveMenu } from "@/api/system"; -import { iconList } from "@/assets/icon"; +import iconJson from "@/assets/icon.json"; export default { components: {}, props: { @@ -143,7 +143,7 @@ export default { }, data() { return { - iconList, + iconJson, form: { name: "", parentId: 0, diff --git a/admin_2/src/router/index.js b/admin_2/src/router/index.js index 41c8376dc54cce849014ee86217767c7caa36f49..0e0a26b66b102589bb2960d730a9e8dc5746100b 100644 --- a/admin_2/src/router/index.js +++ b/admin_2/src/router/index.js @@ -149,15 +149,15 @@ const routes = [ icon: "el-icon-set-up", }, }, - { - path: "/system/areasystem", - component: () => import("@/pages/system/areaSystem/AreaSystem.vue"), - meta: { - activeMenu: "/system", - title: "鍖哄幙绯荤粺", - icon: "el-icon-monitor", - }, - }, + // { + // path: "/system/areasystem", + // component: () => import("@/pages/system/areaSystem/AreaSystem.vue"), + // meta: { + // activeMenu: "/system", + // title: "鍖哄幙绯荤粺", + // icon: "el-icon-monitor", + // }, + // }, { path: "/system/user", component: () => import("@/pages/system/user/User.vue"), @@ -192,7 +192,7 @@ const routes = [ // meta: { // activeMenu: "/system", // title: "鑿滃崟绠$悊", - // icon: "el-icon-box", + // icon: "el-icon-guide", // }, // }, {