elementUI搜索条件样式以及vue+element纯前端实现搜索功能【数据量少】

效果图:

HTML 

  <!-- 搜索框 -->
    <div class="seach-container">
      <div class="flex flex-wrap justify-between">
        <!-- 项目 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span class="letterspance2">项&nbsp;&nbsp;&nbsp;目</span>
            </div>
            <div class="form-box-item">
              <el-cascader
                filterable
                :show-all-levels="false"
                :options="listChildOrgInfoList"
                v-model="projectId"
                :props="defaultProps1"
                @change="projectchange"
                size="small"
                placeholder="请选择项目"
                clearable
              ></el-cascader>
            </div>
          </div>
        </div>
        <!-- 计划开始时间 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span>计划开始时间</span>
            </div>
            <div class="form-box-item">
              <el-date-picker
                size="small"
                clearable
                v-model="searchParam.startTimeArr"
                :picker-options="pickerOptions1"
                type="daterange"
                :default-time="['00:00:00', '23:59:59']"
                value-format="yyyy-MM-dd"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              ></el-date-picker>
            </div>
          </div>
        </div>
        <!-- 计划结束时间 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span>计划结束时间</span>
            </div>
            <div class="form-box-item">
              <el-date-picker
                size="small"
                clearable
                v-model="searchParam.endTimeArr"
                :picker-options="pickerOptions2"
                type="daterange"
                :default-time="['00:00:00', '23:59:59']"
                value-format="yyyy-MM-dd"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              ></el-date-picker>
            </div>
          </div>
        </div>
        <!-- 计划状态 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span class="letterspance2">计划状态</span>
            </div>
            <div class="form-box-item">
              <el-select size="small" v-model="searchParam.state" placeholder="请选择计划状态">
                <el-option label="全部" value></el-option>
                <el-option label="进行中" value="0"></el-option>
                <el-option label="已完成" value="1"></el-option>
                <el-option label="逾期" value="2"></el-option>
                <el-option label="未开始" value="3"></el-option>
                <el-option label="准备中" value="4"></el-option>
                <el-option label="未按时开工" value="5"></el-option>
              </el-select>
            </div>
          </div>
        </div>
        <!-- 里程碑 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span class="letterspance2">里程碑</span>
            </div>
            <div class="form-box-item">
              <el-select size="small" v-model="searchParam.Isms" placeholder="请选择里程碑">
                <el-option label="全部" value></el-option>
                <el-option label="是" value="1"></el-option>
                <el-option label="否" value="0"></el-option>
              </el-select>
            </div>
          </div>
        </div>
        <!-- 责任人 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span class="letterspance2">责任人</span>
            </div>
            <div class="form-box-item">
               <el-select v-model="searchParam.respUser" clearable placeholder="请选择负责人" size="small">
                  <el-option
                    v-for="item in respUserList"
                    :key="item.id"
                    :label="item.trueName"
                    :value="item.id">
                  </el-option>
                </el-select>
            </div>
          </div>
        </div>
        <!-- 项目计划名称 -->
        <div class="form-container">
          <div class="form-box">
            <div class="form-box-label">
              <span class="letterspance2">项目计划名称</span>
            </div>
            <div class="form-box-item">
              <el-input v-model="searchParam.planName" size="small" placeholder="请输入项目计划名称"></el-input>
            </div>
          </div>
        </div>
        <div class="form-container">
          <div class="form-box" style="width:400px">
            <el-button size="small" type="primary" @click="refreshList">搜索</el-button>
          </div>
        </div>
      </div>
    </div>

scss 

$itemWdth:300px;
.form-container{
  width:$itemWdth;
  margin:15px;
}
.form-box{
  width: 100%;
  margin-bottom:10px;
}
.form-box-label{
  float: left;
  width: 99px;
  height:30px;
  line-height: 30px;
  text-align: center;
  font-size: 14px;
  color: #908888;
  white-space: nowrap;
  border:1px solid #DCDFE6;
  border-right: 0;
  border-radius: 4px 0px 0px 4px;
  text-overflow:ellipsis;
  overflow:hidden;
  background: #f6f7f9;
}
.form-box-item{
  margin-left:100px;
  width:$itemWdth;
  .el-input__inner{
    border-radius: 0 4px 4px 0!important;
  }
  .el-select,.el-input,.el-cascader{
    display: block;
    width: $itemWdth;
  }
  .el-date-editor--daterange.el-input, .el-date-editor--daterange.el-input__inner, .el-date-editor--timerange.el-input, .el-date-editor--timerange.el-input__inner {
    width: $itemWdth;
  }
}

 vue+element纯前端实现搜索功能【数据量少】

<div class="m-box">
  <div class="m-title">
    <el-input class="config" clearable placeholder="输入关键字搜索" v-model="search" />
  </div>
  <div class="m-content">
    <el-table
      :data="teacherPag.filter(data => !search || (data.realname+data.mobile).includes(search))" border row-key="id">
      <el-table-column  label="用户">
        <template v-slot="scope">
          <el-col :span="12">{{ scope.row.realname }}</el-col>
        </template>
      </el-table-column>
      <el-table-column label="电话号码" prop="mobile"></el-table-column>
    </el-table>
  </div>
</div>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现一个无限级动态菜单树,可以使用 Element UI 的 Tree 组件。以下是一个简单的实现示例: 首先,需要在 Vue 中引入 Element UI 的 Tree 组件: ```javascript import { Tree } from 'element-ui'; ``` 然后,可以在 Vue 的模板中使用 `el-tree` 标签来渲染 Tree 组件: ```html <el-tree :data="menuData" :props="treeProps" @node-click="handleNodeClick"></el-tree> ``` 其中,`menuData` 是菜单数据,`treeProps` 是 Tree 组件的属性配置对象,`handleNodeClick` 是 Tree 组件的点击事件处理函数。 接下来,我们来看一下如何实现动态加载菜单数据。首先,需要在 Vue 的 `mounted` 生命周期中调用一个方法来获取菜单数据: ```javascript mounted() { this.getMenuData(); }, methods: { getMenuData() { // 通过接口获取菜单数据 } } ``` 接着,在菜单数据获取成功后,需要将数据转换成符合 Tree 组件要求的格式,并将数据保存在 Vue 实例的 `menuData` 属性中: ```javascript getMenuData() { // 通过接口获取菜单数据 // 将数据转换成符合 Tree 组件要求的格式 const menuData = convertMenuData(data); // 将数据保存在 Vue 实例的 menuData 属性中 this.menuData = menuData; } ``` 最后,我们来看一下如何处理 Tree 组件的点击事件。在 `handleNodeClick` 方法中,可以根据节点的 `level` 属性来判断当前节点是否为叶子节点。如果是叶子节点,则可以执行相应的操作,比如打开对应的页面;否则,需要递归获取子节点的数据并更新 Tree 组件的数据源: ```javascript handleNodeClick(node) { if (node.level === 2) { // 点击了叶子节点,执行相应操作 // 比如打开对应的页面 window.location.href = node.url; } else { // 点击了非叶子节点,递归获取子节点数据并更新 Tree 组件的数据源 const childNodes = await this.getChildNodes(node); node.children = childNodes; this.menuData = [...this.menuData]; } }, async getChildNodes(node) { // 通过接口获取子节点数据 const childNodesData = await getChildrenData(node.id); // 将数据转换成符合 Tree 组件要求的格式 const childNodes = convertMenuData(childNodesData); return childNodes; } ``` 至此,一个简单的无限级动态菜单树就实现了。完整的代码可以参考下面的示例: ```html <template> <el-tree :data="menuData" :props="treeProps" @node-click="handleNodeClick"></el-tree> </template> <script> import { Tree } from 'element-ui'; export default { components: { [Tree.name]: Tree }, data() { return { menuData: [], treeProps: { label: 'name', children: 'children' } }; }, mounted() { this.getMenuData(); }, methods: { async getMenuData() { // 通过接口获取菜单数据 const data = await getMenuData(); // 将数据转换成符合 Tree 组件要求的格式 const menuData = convertMenuData(data); // 将数据保存在 Vue 实例的 menuData 属性中 this.menuData = menuData; }, async handleNodeClick(node) { if (node.level === 2) { // 点击了叶子节点,执行相应操作 // 比如打开对应的页面 window.location.href = node.url; } else { // 点击了非叶子节点,递归获取子节点数据并更新 Tree 组件的数据源 const childNodes = await this.getChildNodes(node); node.children = childNodes; this.menuData = [...this.menuData]; } }, async getChildNodes(node) { // 通过接口获取子节点数据 const childNodesData = await getChildrenData(node.id); // 将数据转换成符合 Tree 组件要求的格式 const childNodes = convertMenuData(childNodesData); return childNodes; } } }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值