From b921e333300a26393291ffac44e9d9a2ed2d92ed Mon Sep 17 00:00:00 2001
From: wang1 <844966816@qq.com>
Date: 星期四, 13 七月 2023 18:18:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
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.10.0