AIoT前端公共UI

Search.vue 2.3KB

    <template> <div class="__common-search-params"> <slot></slot> <common-form :form-values="searchValue" :forms="searchParams" :form-type="'search'" @change-event="changeEvent" @blur-event="blurEvent" > <template #btns> <div class="__common-search-btns"> <el-button type="primary" @click.stop="doSearch">查询</el-button> <el-button @click.stop="clearSearch">重置</el-button> </div> </template> </common-form> </div> </template> <script lang="ts" setup> import { ref } from 'vue'; const emits = defineEmits([ 'doSearch', 'clearSearch', 'changeEvent', 'blurEvent' ]); // 接收参数 const props = defineProps({ searchParams: { type: Array, default: () => [] }, formValues: { type: Object, default: () => {} } }); const searchValue = ref<any>(props.formValues); // 清除搜索 const clearSearch = () => { const newValues = <any>{}; Object.keys(searchValue.value).forEach((key: any) => { let val = <any>undefined; const dataType = Object.prototype.toString.call(searchValue.value[key]); switch (dataType) { case '[object String]': val = ''; break; case '[object Array]': val = []; break; case '[object Number]': val = 0; break; case '[object Object]': val = {}; break; default: val = ''; break; } newValues[key] = val; }); searchValue.value = newValues; emits('clearSearch', newValues); }; // 搜索 const doSearch = () => { emits('doSearch', props.formValues); }; // 触发change事件 const changeEvent = (form: any) => { emits('changeEvent', form); }; // 触发blur事件 const blurEvent = (form: any) => { emits('blurEvent', form); }; doSearch(); </script> <script lang="ts"> export default { name: 'CommonSearch' }; </script> <style lang="scss"> .__common-search-params { background: #fff; // padding: 20px 0px 0 26px; border-radius: 5px; position: relative; overflow: hidden; padding-bottom: 18px; padding: 0 16px 18px; .el-form-item { width: calc(100% - 24px); margin-bottom: 0 !important; margin-top: 18px !important; } .__common-search-btns { width: 100%; text-align: right; // margin-top: 18px; padding-right: 20px; box-sizing: border-box; } } </style>