From ffd0af47ee31a9592cfab56a907e9841a9113c52 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 20 七月 2023 10:37:17 +0800
Subject: [PATCH] 代码提交,前端代码打包

---
 Source/UBCS-WEB/dist/src/page/index/search.vue |  191 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 191 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS-WEB/dist/src/page/index/search.vue b/Source/UBCS-WEB/dist/src/page/index/search.vue
new file mode 100644
index 0000000..32fd9b9
--- /dev/null
+++ b/Source/UBCS-WEB/dist/src/page/index/search.vue
@@ -0,0 +1,191 @@
+<template>
+  <div class="avue-searchs"
+       @click.self="handleEsc">
+    <div class="avue-searchs__title">鑿滃崟鎼滅储</div>
+    <div class="avue-searchs__content">
+      <div class="avue-searchs__form">
+        <el-input :placeholder="$t('search')"
+                  v-model="value"
+                  @keydown.esc.native="handleEsc">
+          <el-button slot="append"
+                     icon="el-icon-search"></el-button>
+        </el-input>
+        <p>
+          <el-tag>浣犲彲浠ヤ娇鐢ㄥ揩鎹烽敭esc 鍏抽棴</el-tag>
+        </p>
+      </div>
+      <div class="avue-searchs__list">
+        <el-scrollbar class="avue-searchs__scrollbar">
+          <div class="avue-searchs__item"
+               v-for="(item,index) in menus"
+               :key="index"
+               @click="handleSelect(item)">
+            <i :class="[item[iconKey],'avue-searchs__item-icon']"></i>
+            <span class="avue-searchs__item-title">{{item[labelKey]}}</span>
+            <div class="avue-searchs__item-path">
+              {{item[pathKey]}}
+            </div>
+          </div>
+        </el-scrollbar>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import config from './sidebar/config.js'
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        config: config,
+        value: "",
+        menus: [],
+        menuList: []
+      }
+    },
+    created() {
+      this.getMenuList();
+    },
+    watch: {
+      value() {
+        this.querySearch();
+      },
+      menu() {
+        this.getMenuList();
+      }
+    },
+    computed: {
+      labelKey() {
+        return this.website.menu.props.label || this.config.propsDefault.label;
+      },
+      pathKey() {
+        return this.website.menu.props.path || this.config.propsDefault.path;
+      },
+      iconKey() {
+        return this.website.menu.props.icon || this.config.propsDefault.icon;
+      },
+      childrenKey() {
+        return (
+          this.website.menu.props.children || this.config.propsDefault.children
+        );
+      },
+      ...mapGetters(["menu", "website"])
+    },
+    methods: {
+      handleEsc() {
+        this.$parent.isSearch = false;
+      },
+      getMenuList() {
+        const findMenu = list => {
+          for (let i = 0; i < list.length; i++) {
+            const ele = Object.assign({}, list[i]);
+            if (this.validatenull(ele[this.childrenKey])) {
+              this.menuList.push(ele);
+            } else {
+              findMenu(ele[this.childrenKey]);
+            }
+          }
+        };
+        this.menuList = [];
+        findMenu(this.menu);
+        this.menus = this.menuList;
+      },
+      querySearch() {
+        var restaurants = this.menuList;
+        var queryString = this.value
+        this.menus = queryString
+          ? this.menuList.filter(this.createFilter(queryString))
+          : restaurants;
+      },
+      createFilter(queryString) {
+        return restaurant => {
+          return (
+            restaurant.name.toLowerCase().indexOf(queryString.toLowerCase()) ===
+            0
+          );
+        };
+      },
+      handleSelect(item) {
+        this.handleEsc();
+        this.value = "";
+        this.$router.push({
+          path: this.$router.$avueRouter.getPath({
+            name: item[this.labelKey],
+            src: item[this.pathKey]
+          }, item.meta),
+          query: item.query
+        });
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .avue-searchs {
+    padding-top: 50px;
+    width: 100%;
+    height: 100%;
+    background-color: #fff;
+    z-index: 1024;
+
+    &__title {
+      margin-bottom: 60px;
+      text-align: center;
+      font-size: 42px;
+      font-weight: bold;
+      letter-spacing: 2px;
+      text-indent: 2px;
+    }
+
+    &__form {
+      margin: 0 auto 50px auto;
+      width: 50%;
+      text-align: center;
+
+      p {
+        margin-top: 20px;
+      }
+    }
+
+    &__scrollbar {
+      height: 400px;
+    }
+
+    &__list {
+      box-sizing: border-box;
+      padding: 20px 30px;
+      margin: 0 auto;
+      width: 70%;
+      border-radius: 4px;
+      border: 1px solid #ebeef5;
+      background-color: #fff;
+      overflow: hidden;
+      color: #303133;
+      transition: 0.3s;
+      box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    }
+
+    &__item {
+      padding: 5px 0;
+      border-bottom: 1px dashed #eee;
+
+      &-icon {
+        margin-right: 5px;
+        font-size: 18px;
+      }
+
+      &-title {
+        font-size: 20px;
+        font-weight: 500;
+        color: #333;
+      }
+
+      &-path {
+        line-height: 30px;
+        color: #666;
+      }
+    }
+  }
+</style>

--
Gitblit v1.9.3