2023-12-26 16:17:30 +08:00
|
|
|
<template>
|
|
|
|
|
<!-- 通用搜索 -->
|
2023-12-27 10:39:40 +08:00
|
|
|
<transition name='el-zoom-in-bottom' mode='out-in' v-if='$slots.select'>
|
|
|
|
|
<div class='table-com-search' v-if='showSelect'>
|
|
|
|
|
<el-form @submit.prevent='' @keyup.enter='onComSearch' label-position='left' :inline='true'>
|
|
|
|
|
<slot name='select'></slot>
|
2023-12-27 16:36:10 +08:00
|
|
|
<el-form-item label='日期' v-if='datePicker'>
|
|
|
|
|
<DatePicker v-model='date' @change='dateChange'></DatePicker>
|
|
|
|
|
</el-form-item>
|
2023-12-26 16:17:30 +08:00
|
|
|
<el-form-item>
|
2023-12-27 10:39:40 +08:00
|
|
|
<el-button @click='onComSearch' type='primary'>查询</el-button>
|
|
|
|
|
<el-button @click='onResetForm'>重置</el-button>
|
2023-12-26 16:17:30 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
</transition>
|
|
|
|
|
|
2023-12-29 14:46:20 +08:00
|
|
|
<div class='table-header ba-scroll-style' v-if='showOperation'>
|
2023-12-27 10:39:40 +08:00
|
|
|
<slot name='operation'></slot>
|
2023-12-26 16:17:30 +08:00
|
|
|
<!-- 右侧搜索框和工具按钮 -->
|
2024-01-03 13:20:19 +08:00
|
|
|
<div class='table-search' >
|
|
|
|
|
<slot name='right'></slot>
|
|
|
|
|
<div class='table-search-button-group' v-if='$slots.select'>
|
2023-12-27 10:39:40 +08:00
|
|
|
<el-button class='table-search-button-item' color='#dcdfe6' plain @click='showSelectChange'>
|
|
|
|
|
<Icon size='14' name='el-icon-Search' />
|
|
|
|
|
</el-button>
|
2023-12-26 16:17:30 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2023-12-27 10:39:40 +08:00
|
|
|
<script setup lang='ts'>
|
|
|
|
|
import { inject, ref } from 'vue'
|
2023-12-26 16:17:30 +08:00
|
|
|
import type TableStore from '@/utils/tableStore'
|
2023-12-29 10:05:09 +08:00
|
|
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
2023-12-26 16:17:30 +08:00
|
|
|
|
|
|
|
|
const tableStore = inject('tableStore') as TableStore
|
2023-12-27 16:36:10 +08:00
|
|
|
const date = ref([window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd'), window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd')])
|
2023-12-27 10:39:40 +08:00
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
|
// 默认展开
|
|
|
|
|
showSelect?: boolean
|
2023-12-29 14:46:20 +08:00
|
|
|
showOperation?: boolean // 是否显示operation
|
2023-12-27 16:36:10 +08:00
|
|
|
datePicker?: boolean
|
2023-12-29 14:46:20 +08:00
|
|
|
|
2023-12-27 10:39:40 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const props = withDefaults(defineProps<Props>(), {
|
2023-12-27 16:36:10 +08:00
|
|
|
showSelect: true,
|
2023-12-29 14:46:20 +08:00
|
|
|
showOperation: true,
|
2023-12-27 16:36:10 +08:00
|
|
|
datePicker: false
|
2023-12-27 10:39:40 +08:00
|
|
|
})
|
2023-12-27 16:36:10 +08:00
|
|
|
if (props.datePicker) {
|
|
|
|
|
tableStore.table.params.searchBeginTime = date.value[0]
|
|
|
|
|
tableStore.table.params.searchEndTime = date.value[1]
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
const showSelect = ref(props.showSelect)
|
|
|
|
|
const showSelectChange = () => {
|
|
|
|
|
showSelect.value = !showSelect.value
|
|
|
|
|
}
|
|
|
|
|
const onComSearch = () => {
|
|
|
|
|
tableStore.onTableAction('search', {})
|
|
|
|
|
}
|
|
|
|
|
const onResetForm = () => {
|
|
|
|
|
tableStore.onTableAction('reset', {})
|
2023-12-26 16:17:30 +08:00
|
|
|
}
|
2023-12-27 16:36:10 +08:00
|
|
|
const dateChange = () => {
|
|
|
|
|
tableStore.table.params.searchBeginTime = date.value[0]
|
|
|
|
|
tableStore.table.params.searchEndTime = date.value[1]
|
|
|
|
|
}
|
2023-12-26 16:17:30 +08:00
|
|
|
</script>
|
|
|
|
|
|
2023-12-27 10:39:40 +08:00
|
|
|
<style scoped lang='scss'>
|
2023-12-26 16:17:30 +08:00
|
|
|
.table-header {
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow-x: auto;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
width: 100%;
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
background-color: var(--ba-bg-color-overlay);
|
|
|
|
|
border: 1px solid var(--ba-border-color);
|
|
|
|
|
border-bottom: none;
|
|
|
|
|
padding: 13px 15px;
|
|
|
|
|
font-size: 14px;
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.table-header-operate-text {
|
|
|
|
|
margin-left: 6px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.table-com-search {
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
width: 100%;
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
background-color: var(--ba-bg-color-overlay);
|
|
|
|
|
border: 1px solid var(--ba-border-color);
|
|
|
|
|
border-bottom: none;
|
|
|
|
|
padding: 13px 15px 0 15px;
|
|
|
|
|
font-size: 14px;
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.com-search-col {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding-top: 8px;
|
|
|
|
|
color: var(--el-text-color-regular);
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.com-search-col-label {
|
|
|
|
|
width: 33.33%;
|
|
|
|
|
padding: 0 15px;
|
|
|
|
|
text-align: right;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.com-search-col-input {
|
|
|
|
|
padding: 0 15px;
|
|
|
|
|
width: 66.66%;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.com-search-col-input-range {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 0 15px;
|
|
|
|
|
width: 66.66%;
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.range-separator {
|
|
|
|
|
padding: 0 5px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.mlr-12 {
|
|
|
|
|
margin-left: 12px;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.mlr-12 + .el-button {
|
|
|
|
|
margin-left: 12px;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.table-search {
|
|
|
|
|
display: flex;
|
|
|
|
|
margin-left: auto;
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.quick-search {
|
|
|
|
|
width: auto;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.table-search-button-group {
|
|
|
|
|
display: flex;
|
|
|
|
|
margin-left: 12px;
|
|
|
|
|
border: 1px solid var(--el-border-color);
|
|
|
|
|
border-radius: var(--el-border-radius-base);
|
|
|
|
|
overflow: hidden;
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
button:focus,
|
|
|
|
|
button:active {
|
|
|
|
|
background-color: var(--ba-bg-color-overlay);
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
button:hover {
|
|
|
|
|
background-color: var(--el-color-info-light-7);
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.table-search-button-item {
|
|
|
|
|
height: 30px;
|
|
|
|
|
border: none;
|
|
|
|
|
border-radius: 0;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.el-button + .el-button {
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
.right-border {
|
|
|
|
|
border-right: 1px solid var(--el-border-color);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
html.dark {
|
|
|
|
|
.table-search-button-group {
|
|
|
|
|
button:focus,
|
|
|
|
|
button:active {
|
|
|
|
|
background-color: var(--el-color-info-dark-2);
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
button:hover {
|
|
|
|
|
background-color: var(--el-color-info-light-7);
|
|
|
|
|
}
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
button {
|
|
|
|
|
background-color: var(--ba-bg-color-overlay);
|
2023-12-27 10:39:40 +08:00
|
|
|
|
2023-12-26 16:17:30 +08:00
|
|
|
el-icon {
|
|
|
|
|
color: white !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|