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",
           //   },
           // },
           {