Files
workspace/code/link56/link56-frontend-new/src/components/QueryCompany.vue
T
2025-12-16 17:21:56 +08:00

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>