diff --git a/admin_2/src/api/home.js b/admin_2/src/api/home.js
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e0e8a6ae6803079554ceaf64c0c17c829cc7f27 100644
--- a/admin_2/src/api/home.js
+++ b/admin_2/src/api/home.js
@@ -0,0 +1,9 @@
+import request from "@/utils/request";
+// 鑾峰彇棣栭〉鏁版嵁
+export const getHomeData = (data) => {
+  return request({
+    url: `/bill/login/index`,
+    method: "post",
+    data,
+  });
+};
diff --git a/admin_2/src/components/autoRegister/AreaTree.vue b/admin_2/src/components/autoRegister/AreaTree.vue
index 10bc0d9bc0519130b0d4b9541a8e26ff9ccb5777..8604f697ac25be079760a4b01f3ea772facf250e 100644
--- a/admin_2/src/components/autoRegister/AreaTree.vue
+++ b/admin_2/src/components/autoRegister/AreaTree.vue
@@ -31,7 +31,9 @@ export default {
         children: "children",
         label: "label",
       },
-      siteId: storage.get(2, "siteId"),
+      siteId: this.$route.params.siteId
+        ? this.$route.params.siteId
+        : storage.get(2, "siteId"),
     };
   },
   computed: {
diff --git a/admin_2/src/filters/index.js b/admin_2/src/filters/index.js
index 251ebf7dc819977797e5044ef3f03fbec7fe2a7a..fe48c93dcdf256e3b9c806ddf79a2157c7f62aa6 100644
--- a/admin_2/src/filters/index.js
+++ b/admin_2/src/filters/index.js
@@ -4,6 +4,11 @@ export function dateFormat(val) {
   return moment(val).format("YYYY-MM-DD HH:mm:ss");
 }
 
+// 鏃堕棿鏍煎紡 骞存湀鏃�
+export function dateDayFormat(val) {
+  return moment(val).format("YYYY-MM-DD");
+}
+
 // 鏃跺垎绉�
 export function times(val) {
   return moment(val).format("HH:mm:ss");
diff --git a/admin_2/src/pages/engine/QueueUpSystem.vue b/admin_2/src/pages/engine/QueueUpSystem.vue
index c27ec0ec5be2fb323f49ff90a660a614b882ee00..efe6c0328d6e7815abc304254c1673d5c95689af 100644
--- a/admin_2/src/pages/engine/QueueUpSystem.vue
+++ b/admin_2/src/pages/engine/QueueUpSystem.vue
@@ -221,7 +221,8 @@ export default {
         siteId: this.siteId,
         ...this.hallSearch,
         ...this.dateForm,
-        hallNameList: ["涓嶅姩浜х櫥璁颁腑蹇�"],
+        sectionNameNotList: [""],
+        groupList: ["year", "month", "day"],
       });
       console.log(res.data);
       // this.hallSearch.total = res.data.total
diff --git a/admin_2/src/pages/engineSearch/components/Search.vue b/admin_2/src/pages/engineSearch/components/Search.vue
index 5e4de6e5cb248d5f20cfa10fcd4b1aad7152d8ea..3d70a03e776904aa2188eb95d1837761ff7bd837 100644
--- a/admin_2/src/pages/engineSearch/components/Search.vue
+++ b/admin_2/src/pages/engineSearch/components/Search.vue
@@ -7,28 +7,7 @@
         {{ v.meta.title }}
       </router-link>
     </div>
-    <div>
-      <el-form :model="form" inline ref="form">
-        <el-form-item>
-          <el-input></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-input></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-input></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-input></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button>妫€绱�</el-button>
-        </el-form-item>
-        <el-form-item>
-          <el-button @click="$router.push('/engine')">杩斿洖</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
+    <div class="search-box"></div>
   </div>
 </template>
 
@@ -79,4 +58,10 @@ export default {
     font-weight: 600;
   }
 }
+.search-box {
+  height: 68px;
+  width: 60%;
+  background: #fff;
+  border-radius: 34px;
+}
 </style>
diff --git a/admin_2/src/pages/home/Home.vue b/admin_2/src/pages/home/Home.vue
index 4e74d455fc78729c4802db015c38de53965d8ce6..00b2a13026603718ac82c595d048834a3a3acb15 100644
--- a/admin_2/src/pages/home/Home.vue
+++ b/admin_2/src/pages/home/Home.vue
@@ -4,12 +4,18 @@
       <div class="flex h-full flex-col">
         <div class="mb-[53px] flex flex-col items-center">
           <div class="title mb-[28px]">鎮ㄥソ锛屾杩庝娇鐢ㄦ暟鎹粨搴撳伐浣滃彴</div>
-          <div class="area-total">绱鎺ュ叆绔欑偣: 64涓� (鍚尯/鍘裤€侀晣/琛楅亾)</div>
+          <div class="area-total">
+            绱鎺ュ叆绔欑偣: {{ homeData.totalAccessSite ?? 0 }}涓�
+            (鍚尯/鍘裤€侀晣/琛楅亾)
+          </div>
         </div>
         <div class="data-total flex justify-center">
           <div class="name">绱姹囪仛鏁版嵁:锛堟潯锛�</div>
           <div class="flex flex-col justify-center gap-4">
-            <el-statistic group-separator="," :value="8888867"></el-statistic>
+            <el-statistic
+              group-separator=","
+              :value="homeData.totalCount"
+            ></el-statistic>
             <div class="text-[14px] text-[#424E65]">
               鏁颁粨鏈€杩戞眹鑱氭椂闂达細2024-06-26 23:59:59
             </div>
@@ -56,7 +62,11 @@
       <div class="flex w-full flex-col items-center">
         <div class="main-title">瀵规帴绔欑偣鐭╅樀</div>
         <div class="area-list grid w-full grid-cols-7 gap-5">
-          <AreaCard v-for="(v, i) in areaList" :key="i" :data="v"></AreaCard>
+          <AreaCard
+            v-for="v in homeData.accessList"
+            :key="v.id"
+            :data="v"
+          ></AreaCard>
         </div>
       </div>
     </div>
@@ -66,6 +76,7 @@
 <script>
 import LineEchart from "./components/LineEchart.vue";
 import AreaCard from "./components/AreaCard.vue";
+import { getHomeData } from "@/api/home";
 export default {
   components: {
     LineEchart,
@@ -174,8 +185,20 @@ export default {
           img: require("@/assets/img/sanjiangxinqu.png"),
         },
       ],
+      homeData: {},
     };
   },
+  created() {
+    this.getHomeData();
+  },
+  methods: {
+    async getHomeData() {
+      let res = await getHomeData();
+      if (res.data.code == 1) {
+        this.homeData = res.data.data;
+      }
+    },
+  },
 };
 </script>
 
diff --git a/admin_2/src/pages/home/components/AreaCard.vue b/admin_2/src/pages/home/components/AreaCard.vue
index 838ba4e4563f8ff252b6cc7bbd303c5dc7b45c48..deb63468d7e77c01972d91a419fe5b18a021b8d4 100644
--- a/admin_2/src/pages/home/components/AreaCard.vue
+++ b/admin_2/src/pages/home/components/AreaCard.vue
@@ -2,27 +2,25 @@
   <div
     :class="[
       'area-card',
-      data.systemList.length ? 'cursor-pointer' : 'cursor-not-allowed',
-      { 'is-hover': data.systemList.length },
+      'is-hover',
+      tag.length ? 'cursor-pointer' : 'cursor-not-allowed',
     ]"
     @click="handleClick"
   >
     <div class="banner">
-      <img class="banner-img" :src="data.img" />
+      <img class="banner-img" :src="data.bigPath" />
     </div>
     <div class="content">
       <!-- 瀵规帴鏃堕棿 -->
       <div class="w-full">
-        <span class="time" v-if="data.systemList.length">
-          瀵规帴鏃堕棿锛歿{ data.date }}
+        <span class="time" v-if="tag.length">
+          瀵规帴鏃堕棿锛歿{ data.createTime | dateDayFormat }}
         </span>
       </div>
       <!-- name -->
-      <span class="name">{{ data.name }}</span>
-      <div class="flex gap-2" v-if="data.systemList.length">
-        <span class="item" v-for="(v, i) in data.systemList" :key="i">{{
-          v
-        }}</span>
+      <span class="name">{{ data.areaName }}</span>
+      <div class="flex gap-2" v-if="tag.length">
+        <span class="item" v-for="(v, i) in tag" :key="i">{{ v }}</span>
       </div>
       <span class="item-2" v-else>绛夊緟瀵规帴</span>
     </div>
@@ -42,10 +40,25 @@ export default {
   data() {
     return {};
   },
+  computed: {
+    tag() {
+      if (this.data.tag) {
+        return this.data.tag.split(",");
+      } else {
+        return [];
+      }
+    },
+  },
   methods: {
     handleClick() {
-      if (this.info.systemList.length) {
-        this.$emit("click", this.info);
+      if (this.tag.length) {
+        this.$emit("click", this.data);
+        this.$router.push({
+          name: "queueupreport",
+          params: {
+            siteId: this.data.siteId + "",
+          },
+        });
       }
     },
   },
diff --git a/admin_2/src/pages/market/QueueUpReport.vue b/admin_2/src/pages/market/QueueUpReport.vue
index 06838f67091c19d6ccdd6d5c3150e31270a32c95..4f7def374e40080b3ef09e297265a6da1abcda28 100644
--- a/admin_2/src/pages/market/QueueUpReport.vue
+++ b/admin_2/src/pages/market/QueueUpReport.vue
@@ -179,7 +179,9 @@ export default {
           this.$moment().format("YYYY-MM-DD"),
           this.$moment().format("YYYY-MM-DD"),
         ],
-        siteId: storage.get(2, "siteId"),
+        siteId: this.$route.params.siteId
+          ? this.$route.params.siteId
+          : storage.get(2, "siteId"),
       },
       searchForm2: {
         wySignin: "", // 鍙栧彿鏂瑰紡锛堢幇鍦哄彇鍙�,寰俊鍙栧彿锛�
@@ -387,8 +389,8 @@ export default {
       let obj = {
         page: this.current,
         size: this.size,
-        // taketimeStart: this.searchForm.time[0],
-        // taketimeEnd: this.searchForm.time[1],
+        taketimeStart: this.searchForm.time[0],
+        taketimeEnd: this.searchForm.time[1],
         siteId: this.searchForm.siteId,
       };
       let val = `%${this.searchForm.keyword}%`;
diff --git a/admin_2/src/pages/system/access/Access.vue b/admin_2/src/pages/system/access/Access.vue
index acc9de2e25a1113de3a7bca70c842187bb9d8109..731d7d4f5485462f3bb0e63d0b83221336510338 100644
--- a/admin_2/src/pages/system/access/Access.vue
+++ b/admin_2/src/pages/system/access/Access.vue
@@ -11,23 +11,13 @@
       </div>
       <div slot="right">
         <el-form ref="searchForm" :model="searchForm" inline>
-          <el-form-item prop="type">
-            <el-select
-              size="small"
-              style="width: 150px"
-              v-model="searchForm.type"
-            >
-              <el-option label="鎸夊弬鏁板悕绉�" value="name"></el-option>
-              <el-option label="鎸変簩绾х粍缁�" value="secondOrganize"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item prop="keyword">
+          <el-form-item prop="areaName">
             <el-input
               size="small"
-              v-model="searchForm.keyword"
+              v-model="searchForm.areaName"
               style="width: 200px"
               class="ml10 mr10"
-              placeholder="璇疯緭鍏ュ叧閿瓧鎼滅储"
+              placeholder="璇疯緭鍏ュ尯鍩熷悕绉版悳绱�"
               @keyup.native.enter="handleSearch"
             ></el-input>
           </el-form-item>
@@ -67,6 +57,7 @@
       ref="AddAccess"
       :addVisible.sync="show"
       :title="title"
+      @addSuccess="getAccessList"
     ></AddAccess>
   </div>
 </template>
@@ -107,30 +98,38 @@ export default {
         },
         {
           label: "鍖哄煙缂栫爜",
-          prop: "firstOrganize",
-          align: "areaCode",
+          prop: "areaCode",
+          align: "center",
         },
         {
           label: "鑳屾櫙鍥剧墖",
           prop: "bigPath",
           align: "center",
+          formatter: (row) => {
+            return (
+              <el-image
+                src={row.bigPath}
+                previewSrcList={[row.bigPath]}
+                class="w-[50px]"
+              />
+            );
+          },
         },
         {
           label: "鍖哄煙鎺ュ叆绯荤粺",
           align: "center",
           formatter: (row) => {
-            if (row.accessSystemList.length) {
-              return row.accessSystemList.map((item) => {
-                return <el-tag type="info">{item.systemName}</el-tag>;
+            if (row.tag) {
+              return row.tag.split(",").map((v) => {
+                return (
+                  <el-tag type="info" class="mr-2">
+                    {v}
+                  </el-tag>
+                );
               });
             }
           },
         },
-        {
-          label: "鏍囩",
-          prop: "tag",
-          align: "center",
-        },
         {
           label: "鎺掑簭",
           prop: "sort",
@@ -167,8 +166,7 @@ export default {
         },
       ],
       searchForm: {
-        type: "name",
-        keyword: "",
+        areaName: "",
       },
       tableData: [],
       current: 1,
diff --git a/admin_2/src/pages/system/access/components/AddAccess.vue b/admin_2/src/pages/system/access/components/AddAccess.vue
index 38cebbd31562edc968c3c9466df78ee6d9c11fe2..9ad556efd55f1ca25b0d0f114f31058c0c791652 100644
--- a/admin_2/src/pages/system/access/components/AddAccess.vue
+++ b/admin_2/src/pages/system/access/components/AddAccess.vue
@@ -1,4 +1,3 @@
-el-dialog
 <template>
   <div>
     <el-dialog
@@ -24,6 +23,29 @@ el-dialog
             @change="changeArea"
           ></InputTree>
         </el-form-item>
+        <el-form-item label="绯荤粺鏍囩" prop="tag">
+          <div class="flex gap-2">
+            <el-tag
+              v-for="(v, i) in form.tag"
+              :key="i"
+              closable
+              :disable-transitions="false"
+              @close="handleCloseTag(v)"
+            >
+              {{ v }}
+            </el-tag>
+            <el-input
+              v-if="inputVisible"
+              v-model="inputValue"
+              ref="saveTagInput"
+              size="small"
+              @keyup.enter.native="handleInputConfirm"
+              @blur="handleInputConfirm"
+            >
+            </el-input>
+            <el-button v-else size="small" @click="showInput">+</el-button>
+          </div>
+        </el-form-item>
         <el-form-item label="鑳屾櫙鍥剧墖" prop="bigPath">
           <el-upload
             name="file"
@@ -99,6 +121,8 @@ export default {
       fileList: [],
       preview: false,
       filepaths: [],
+      inputVisible: false,
+      inputValue: "",
       form: {
         areaName: "",
         areaCode: "",
@@ -110,7 +134,7 @@ export default {
         longitude: "",
         type: "",
         bigPath: "",
-        tag: "",
+        tag: [],
         sort: 99,
         remark: "",
         icon: "",
@@ -143,7 +167,10 @@ export default {
     handleOk() {
       this.$refs.form.validate(async (valid) => {
         if (valid) {
-          let res = await saveAccess(this.form);
+          let res = await saveAccess({
+            ...this.form,
+            tag: this.form.tag.join(","),
+          });
           let { code, msg } = res.data;
           if (code === 1) {
             this.$message.success(msg);
@@ -161,15 +188,28 @@ export default {
     // 缂栬緫
     onEdit(row) {
       setTimeout(() => {
+        if (row.tag) {
+          row.tag = row.tag.split(",");
+        }
+        if (row.bigPath) {
+          this.fileList = [
+            {
+              name: row.bigPath,
+              url: row.bigPath,
+            },
+          ];
+        }
         this.form = row;
       }, 10);
     },
     // 閲嶇疆
     handleRest() {
+      this.fileList = [];
       this.$resetForm("form");
     },
     // 鍏抽棴
     handleClose() {
+      this.fileList = [];
       this.$resetForm("form");
       this.Visible = false;
     },
@@ -237,6 +277,33 @@ export default {
       this.filepaths = [file.url];
       this.preview = true;
     },
+    handleCloseTag(tag) {
+      this.form.tag.splice(this.form.tag.indexOf(tag), 1);
+    },
+
+    showInput() {
+      if (this.form.tag.length >= 2) {
+        this.$message.warning("鏆傛椂鍙兘娣诲姞涓や釜绯荤粺鏍囩");
+        return;
+      }
+      this.inputVisible = true;
+      this.$nextTick(() => {
+        this.$refs.saveTagInput.$refs.input.focus();
+      });
+    },
+
+    handleInputConfirm() {
+      let inputValue = this.inputValue;
+      if (inputValue) {
+        if (this.form.tag.includes(inputValue)) {
+          this.$message.warning("宸插瓨鍦ㄧ浉鍚屾爣绛�");
+          return;
+        }
+        this.form.tag.push(inputValue);
+      }
+      this.inputVisible = false;
+      this.inputValue = "";
+    },
   },
 };
 </script>
diff --git a/admin_2/src/router/index.js b/admin_2/src/router/index.js
index 03f286d0eef9177881c3ee013c496742ed1111ab..1365bd372c4d60fa21ac96346f74350825e9b69f 100644
--- a/admin_2/src/router/index.js
+++ b/admin_2/src/router/index.js
@@ -99,6 +99,7 @@ const routes = [
 
       {
         path: "/market",
+        name: "market",
         hideChildrenInMenu: true,
         component: () => import("@/pages/market/Market"),
         meta: {
@@ -108,6 +109,7 @@ const routes = [
         children: [
           {
             path: "/market/queueupreport",
+            name: "queueupreport",
             hideChildrenInMenu: true,
             component: () => import("@/pages/market/QueueUpReport"),
             meta: {