vue3+element-plus+js 对列表查询/重置条件 组件简单封装

在写后台管理的时候会有很多列表,列表上面一般会有查询条件,对列表进行搜索查询,所以就想封装成为组件,就不需要每个页面写一堆的代码,直接循环出来进行遍历即可。

1.封装子组件searchForm组件 

 

<template>
  <el-form :model="searchInfo">
    <el-row :gutter="10" style="margin: 10px 0;">
      <el-col :span="item.span || 6" v-for="item, i in searchData" :key="i">
        <el-form-item :label="item.label" :label-width="item.width || '80px'">
          <el-input v-if="item.type === 'input'" v-model="searchInfo[item.prop]"
            :placeholder="item.placeholder || '请输入'" />
          <el-select v-if="item.type === 'select'" v-model="searchInfo[item.prop]"
            :placeholder="item.placeholder || '请选择'">
            <el-option v-for="item2, i2 in item.options" :key="i2" :label="item2.label" :value="item2.value" />

          </el-select>
          <el-date-picker v-if="item.type === 'date'" type="date" :value-format="item.format || 'YYYY-MM-DD'"
            :placeholder="item.placeholder || '请选择日期'" v-model="searchInfo[item.prop]"
            style="width: 100%;"></el-date-picker>
        </el-form-item>
      </el-col>

      <el-col :span="btnInfo.span || 6">
        <el-row justify="end">
          <el-button :type="btnInfo.query || 'primary'" @click="onSubmit">查询</el-button>
          <el-button :type="btnInfo.reset || 'default'" @click="onSubmit('reset')">重置</el-button>
        </el-row>
      </el-col>
    </el-row>
  </el-form>
</template>

<script setup>
const props = defineProps({
  //搜索信息
  searchInfo: {
    type: Object,
    default: {}
  },
  //表单数组
  searchData: {
    type: Array,
    default: []
  },
  //按钮信息
  btnInfo: {
    type: Object,
    default: {}
  }
})

const emit = defineEmits(['submitEmits']);
const onSubmit = (data) => {
  if (data == 'reset') {
    emit('submitEmits', {});
  } else {
    emit('submitEmits', props.searchInfo);
  }

}
</script>

<style lang="scss" scoped></style>

一般搜索条件都是输入框、选择器、日期选择,如有其他筛选条件,往里面添加即可!搜索时发射一个自定义事件,把数据传给父组件调用即可

2.父组件进行使用

<template>
  <searchForm :searchData="searchData" :searchInfo="productionlineForm" @submitEmits="submitEmitsFn"></searchForm>
</template>

<script setup>

import searchForm from '@/components/searchForm/index.vue'

let productionlineForm = ref({
  lineName: '',
  lineCode: '',
  status: ''
})

const searchData = ref([
  {
    label: '产线名称',
    type: 'input',
    prop: 'lineName'
  },
  {
    label: '产线编号',
    type: 'input',
    prop: 'lineCode'
  },
  {
    label: '状态',
    type: 'select',
    prop: 'status',
    options: [
      {
        label: '正常',
        value: 0
      },
      {
        label: '停用',
        value: 1
      }
    ]
  }
])


const submitEmitsFn = (val) => {
  productionlineForm.value = val
  //调接口渲染数据
  //getLinePageFn()
}


</script>

<style lang="scss" scoped></style>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Vue 3.0+Element-Plus开发后台管理系统的步骤: 1.首先,确保你已经安装了Node.js和npm包管理器。 2.使用以下命令安装Vue CLI 4: ```shell npm install -g @vue/cli ``` 3.使用Vue CLI创建一个新项目: ```shell vue create my-project ``` 4.在创建项目时,选择使用Vue 3.0版本,并启用class-style component语法: ```shell ? Please pick a preset: Manually select features ? Check the features needed for your project: Choose Vue version, Babel, Router, Vuex, CSS Pre-processors, Linter, Unit ? Choose a version of Vue.js that you want to start the project with 3.x (Preview) ? Use class-style component syntax? Yes ? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? No ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass) ? Pick a linter / formatter config: ESLint with error prevention only ? Pick additional lint features: Lint on save ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files ``` 5.安装Element-Plus和Echarts 5.0: ```shell npm install element-plus echarts@5.0 ``` 6.在main.js中引入Element-Plus和Echarts: ```javascript import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import echarts from 'echarts' const app = createApp(App) app.use(store) app.use(router) app.use(ElementPlus) app.config.globalProperties.$echarts = echarts app.mount('#app') ``` 7.现在你可以开始使用Element-Plus和Echarts来开发你的后台管理系统了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值