当前位置: 首页 > article >正文

页面小组件-搜索栏(一)

样例展示
  • 效果示例-折叠状态
    在这里插入图片描述
  • 效果示例-展开状态
    在这里插入图片描述
  • 代码示例
<custom-search-wrapper>
	<!--showFoldBtn 需要展示折叠按钮时传值-->
  <template slot='left'>
    <el-form
      :model="searchFormData"
      inline
      size="small"
      >
      <el-form-item>
        <el-input
          clearable
          v-model="searchFormData.employeePhone"
          placeholder="请输入职工电话"
          />
      </el-form-item>
      <el-form-item>
        <el-select
          v-model="searchFormData.employeeSource"
          placeholder="请选择职工来源"
          >
          <el-option
            v-for="item in employeeSourceList"
            :key="item.value"
            :label="item.label"
            :value="item.value"
            >
          </el-option>
        </el-select>
      </el-form-item>
    </el-form>
  </template>
  <template slot="right">
    <div>
      <el-button
        type="primary"
        @click="handleSearchList"
        icon="el-icon-search"
        >查询
      </el-button>
      <el-button
        icon="el-icon-refresh-right"
        @click="handleResetSearchForm"
        >重置
      </el-button>
    </div>
  </template>
</custom-search-wrapper>
组件源码
<template>
  <div class="search-wrapper">
    <!-- 左侧插槽:搜索表单 -->
    <div :class="['search-left', toggleFoldSearchWrapper ? 'fold-height' : '']">
      <slot name="left" />
    </div>
    <!-- 右侧扩展:查询、重置以及展开/收起 -->
    <div class="search-right">
      <slot name="right" />
      <!-- 展开/收起 -->
      <div
        v-if="showFoldBtn"
        class="fold-btn"
        @click="handleToggleSearch"
      >
        <span class="fold-text">{{ toggleFoldSearchWrapper ? '展开' : '收起' }}</span>
        <span class="fold-icon">
          <i :class="toggleFoldSearchWrapper ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"></i>
        </span>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: 'searchWrapper',
  props: {
    // 是否展示折叠按钮
    showFoldBtn: { type: Boolean, default: false }
  },
  data () {
    return {
      toggleFoldSearchWrapper: true
    }
  },
  methods: {
    // 展开/收起
    handleToggleSearch () {
      this.toggleFoldSearchWrapper = !this.toggleFoldSearchWrapper
    }
  }
}
</script>
<style lang="scss" scoped>
.search-wrapper {
  width: 100%;
  display: flex;
  justify-content: space-between;

  .search-left {
    flex: 1;

    &.fold-height {
      height: 50px; // 项目中使用的表单单行高度
      overflow: hidden;
    }
  }

  .search-right {
    display: flex;

    .fold-btn {
      display: flex;
      line-height: 30px;
      margin-left: 10px;
      cursor: pointer;

      .fold-text {
        width: 70px;
        font-size: 16px;
        font-weight: 400;
        color: #2796d4;
      }
    }
  }
}
</style>
组件说明

此为初版搜索栏组件,与表单并无太大关系,所以我起的组件名字是 searchWrapper——搜索栏容器。起因是有一天UI突然要统一项目样式风格,要求搜索栏区域内容较多时可以折叠/展开。正常来说是没有毛病的,但是对于当时的项目就很有毛病。(火气要上来…)
项目主体是由我主要参与魔改的Vue-Admin(Vue + ElementUI),项目里通过iframe+auth2.0认证嵌入了几个项目模块:一部分是Vue+View Design,一部分是React+Antd。但是,UI指着一个Antd的示例项目给我看:你就照着这个样子改!!!
大哥,抛开样式风格不一样不说,真要是改了的话,那得动多少页面!!!奈何身为基层打工人,屋里抗拒,只能微笑答应,转身自己心里爆炸。
当然,最终也没有完全按照他的意思改。由于其他项目的紧急插队,暂时就这样子先处理。
后续的项目经历中,根据需求的不断变化,搜索栏组件有了其他的封装类型,甚至与本文完全不同,以后慢慢更新


http://www.kler.cn/a/291291.html

相关文章:

  • 完美解决phpstudy安装后mysql无法启动
  • 50个常用的DeepSeek提示词
  • Spring 框架及其主要模块
  • IM 即时通讯系统-01-概览
  • Safari常用快捷键
  • Beans模块之工厂模块注解模块CustomAutowireConfigurer
  • django models字段类型和参数的选择
  • 假期学习-- iOS runtime的简单了解
  • vs2022 如何去掉 错误|警告的波形曲线 绿色波浪线
  • 【Python】简单的数据类型——int、float、bool、str
  • 【Linux】易忘操作集合
  • uniapp个人健康预警管理系统 微信小程序的设计与实现 38vk1
  • 2024年【陕西省安全员B证】考试题及陕西省安全员B证最新解析
  • Rust模块std::thread
  • 双指针--优选算法
  • 后端怎么处理前端传入的参数应该做哪些处理?
  • Linux 系统入门:基础知识和命令集合,用户与权限
  • 【Grafana】Nginx代理Grafana实现不开启匿名自动登录
  • WPF-快速构建统计表、图表并认识相关框架
  • MaPLe(论文解读): Multi-modal Prompt Learning
  • 滑动窗口学习笔记(基础部分)
  • 科技信贷业务怎么寻找客户?
  • Java类和对象——快速自动生成带参数的结构
  • C++: std::once_flag 和 std::call_once
  • Web前端 lucky-canvas【大转盘 九宫格 老虎机】抽奖插件(适用JS/TS、Vue、React、微信小程序、Uniapp和Taro)
  • 数据结构单向 循环 双向 链表的插入 删除 查询