135 lines
2.6 KiB
Vue
135 lines
2.6 KiB
Vue
<script lang="ts" setup>
|
|
import type { PropType } from 'vue'
|
|
import type { Area, CompanyQuery, Industry } from '@/types/base'
|
|
import { computed } from 'vue'
|
|
import AreaSelect from './AreaSelect.vue'
|
|
import IndustrySelect from './IndustrySelect.vue'
|
|
|
|
const props = defineProps({
|
|
modelValue: {
|
|
type: Object as PropType<CompanyQuery>,
|
|
required: true,
|
|
},
|
|
industries: {
|
|
type: Object as PropType<Industry[]>,
|
|
required: false,
|
|
},
|
|
areas: {
|
|
type: Object as PropType<Area[]>,
|
|
required: false,
|
|
},
|
|
})
|
|
|
|
const emit = defineEmits(['update:modelValue'])
|
|
|
|
const query = computed({
|
|
get: () => props.modelValue,
|
|
set: (val: CompanyQuery) => {
|
|
emit('update:modelValue', val)
|
|
},
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<div class="query">
|
|
<div class="query-item">
|
|
<IndustrySelect v-model="query.industries" />
|
|
</div>
|
|
<div class="query-item">
|
|
<AreaSelect
|
|
v-model="query.areas"
|
|
multiple
|
|
check-strictly
|
|
collapse-tags
|
|
collapse-tags-tooltip
|
|
:max-collapse-tags="2"
|
|
/>
|
|
</div>
|
|
<div class="query-item">
|
|
<el-input
|
|
v-model="query.name"
|
|
placeholder="请输入公司名称"
|
|
/>
|
|
</div>
|
|
|
|
<div class="search">
|
|
<i-tdesign:search />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
.query {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
height: 60px;
|
|
border-radius: 4px;
|
|
border: 0;
|
|
color: #000;
|
|
.query-item {
|
|
flex: 1;
|
|
|
|
:deep(.el-select__wrapper) {
|
|
height: 60px;
|
|
border-radius: 0px;
|
|
box-shadow: none;
|
|
padding-top: 0px;
|
|
padding-bottom: 0px;
|
|
}
|
|
:deep(.el-select__placeholder) {
|
|
font-size: 18px;
|
|
}
|
|
:deep(.el-select__input) {
|
|
font-size: 18px;
|
|
}
|
|
:deep(.el-input__wrapper) {
|
|
border-radius: 0px;
|
|
box-shadow: none;
|
|
padding: 0px;
|
|
}
|
|
:deep(.el-input__inner) {
|
|
height: 60px !important;
|
|
font-size: 18px;
|
|
}
|
|
|
|
:deep(.el-cascader__tags) {
|
|
padding: 0;
|
|
}
|
|
:deep(.el-cascader__search-input) {
|
|
margin-left: 0px;
|
|
font-size: 18px;
|
|
}
|
|
:deep(.el-input__suffix){
|
|
padding-right: 12px;
|
|
}
|
|
&:first-child {
|
|
border-top-left-radius: 4px;
|
|
border-bottom-left-radius: 4px;
|
|
}
|
|
}
|
|
|
|
.search {
|
|
height: 60px;
|
|
width: 60px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 24px;
|
|
background-color: #333;
|
|
border-top-right-radius: 4px;
|
|
border-bottom-right-radius: 4px;
|
|
color: #fff;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s ease;
|
|
|
|
&:hover {
|
|
background-color: #555;
|
|
}
|
|
&:active {
|
|
background-color: #111;
|
|
}
|
|
}
|
|
}
|
|
</style>
|