Browse Source

2026-10-26

报价筛选条件优化
master
fengyuan_yang 3 weeks ago
parent
commit
5fc49760fb
  1. 357
      src/views/modules/quote/primary/quoteSearch.vue

357
src/views/modules/quote/primary/quoteSearch.vue

@ -19,15 +19,7 @@ export default {
default: () => []
}
},
data () {
return {
searchExpanded: true
}
},
methods: {
toggleSearchExpand () {
this.searchExpanded = !this.searchExpanded
},
resetHandle () {
this.$emit('reset')
}
@ -36,276 +28,83 @@ export default {
</script>
<template>
<div v-show="show" class="quote-search">
<el-card :class="['search-card', { collapsed: !searchExpanded }]" shadow="hover">
<div slot="header" class="search-header">
<div class="header-left">
<i class="el-icon-s-order"></i>
<span class="header-title">销售报价</span>
</div>
<div class="header-right">
<el-button
type="text"
size="small"
class="collapse-btn"
@click="toggleSearchExpand">
<span>{{ searchExpanded ? '收起' : '展开' }}</span>
<i :class="searchExpanded ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
</el-button>
</div>
</div>
<el-form :model="quote" label-position="top" class="search-form" @keyup.enter.native="$emit('search')">
<template v-if="searchExpanded">
<el-row :gutter="16" class="search-condition-row">
<el-col :span="3">
<el-form-item label="客户编码">
<el-input v-model="quote.customerNo" clearable placeholder="客户编码"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="客户名称">
<el-input v-model="quote.customerDesc" clearable placeholder="客户名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="报价单号">
<el-input v-model="quote.quoteVersionNo" clearable placeholder="报价单号"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="内部询价单号">
<el-input v-model="quote.insideInquiryNo" clearable placeholder="内部询价单号"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="料号">
<el-input v-model="quote.searchPartNo" clearable placeholder="料号"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="节点审批人">
<el-input v-model="quote.approvalUsername" clearable placeholder="节点审批人"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="当前节点">
<el-select v-model="quote.nodeId" placeholder="请选择节点" clearable>
<el-option
v-for="option in nodeOptions"
:key="option.id"
:label="option.name"
:value="option.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="销售">
<el-input v-model="quote.inquiryCreateBy" clearable placeholder="销售"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16" class="search-condition-row">
<el-col :span="3">
<el-form-item label="项目号">
<el-input v-model="quote.projectNo" clearable placeholder="项目号"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="项目名称">
<el-input v-model="quote.projectDesc" clearable placeholder="项目名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="报价专员">
<el-input v-model="quote.quoter" clearable placeholder="报价专员"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="状态">
<el-select v-model="quote.status" clearable placeholder="全部">
<el-option label="全部" value=""></el-option>
<el-option label="草稿" value="草稿"></el-option>
<el-option label="审批中" value="审批中"></el-option>
<el-option label="已完成" value="已完成"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="报价日期">
<el-date-picker style="width: 100%" placeholder="开始日期" v-model="quote.startDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label=" ">
<el-date-picker style="width: 100%" placeholder="结束日期" v-model="quote.endDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</template>
<div class="search-actions">
<div class="action-left">
<el-button type="primary" icon="el-icon-search" @click="$emit('search')">查询</el-button>
<el-button icon="el-icon-refresh" @click="resetHandle">重置</el-button>
<el-button type="primary" @click="$emit('save')" v-if="isAuth('5011:save')">新增</el-button>
<el-button @click="$emit('filterSearch')">搜索</el-button>
<el-button type="warning" @click="$emit('closeProcess')">流程关闭</el-button>
</div>
</div>
</el-form>
</el-card>
<div v-show="show">
<el-form :inline="true" label-position="top" :model="quote" @keyup.enter.native="$emit('search')">
<el-form-item label="客户编码">
<el-input v-model="quote.customerNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="quote.customerDesc" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="报价单号">
<el-input v-model="quote.quoteVersionNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="内部询价单号">
<el-input v-model="quote.insideInquiryNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="料号">
<el-input v-model="quote.searchPartNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="节点审批人">
<el-input v-model="quote.approvalUsername" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="当前节点">
<el-select v-model="quote.nodeId" placeholder="请选择节点" clearable style="width: 120px">
<el-option
v-for="option in nodeOptions"
:key="option.id"
:label="option.name"
:value="option.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="销售">
<el-input v-model="quote.inquiryCreateBy" clearable style="width: 120px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="quote" @keyup.enter.native="$emit('search')">
<el-form-item label="项目号">
<el-input v-model="quote.projectNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="quote.projectDesc" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="报价专员">
<el-input v-model="quote.quoter" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="quote.status" clearable placeholder="全部" style="width: 120px">
<el-option label="全部" value=""></el-option>
<el-option label="草稿" value="草稿"></el-option>
<el-option label="审批中" value="审批中"></el-option>
<el-option label="已完成" value="已完成"></el-option>
</el-select>
</el-form-item>
<el-form-item label="报价日期">
<el-date-picker
style="width: 120px"
v-model="quote.startDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="开始日期">
</el-date-picker>
</el-form-item>
<el-form-item label=" ">
<el-date-picker
style="width: 120px"
v-model="quote.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label=" ">
<el-button @click="$emit('search')">查询</el-button>
<el-button @click="resetHandle">重置</el-button>
<el-button type="primary" @click="$emit('save')" v-if="isAuth('5011:save')">新增</el-button>
<el-button @click="$emit('filterSearch')">搜索</el-button>
<el-button type="warning" @click="$emit('closeProcess')">流程关闭</el-button>
</el-form-item>
</el-form>
</div>
</template>
<style scoped>
.quote-search {
width: 100%;
}
.search-card {
margin-bottom: 12px;
border-radius: 8px;
overflow: hidden;
transition: all 0.3s ease;
}
.search-card:hover {
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.09);
}
.search-card /deep/ .el-card__header {
padding: 5px 20px;
background: linear-gradient(135deg, #9ac3d0 20%, #b6c7dd 80%);
border-bottom: none;
}
.search-card /deep/ .el-card__body {
padding: 10px 12px 8px 12px;
}
.search-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.header-left {
display: flex;
align-items: center;
color: #fff;
}
.header-left i {
font-size: 16px;
margin-right: 8px;
}
.header-title {
font-size: 14px;
font-weight: 600;
letter-spacing: 0.5px;
}
.header-right {
color: #fff;
}
.collapse-btn {
color: #fff;
font-weight: 500;
transition: all 0.3s ease;
}
.collapse-btn:hover {
color: #f0f0f0;
transform: translateY(-1px);
}
.collapse-btn i {
margin-left: 4px;
transition: transform 0.3s ease;
}
.search-card.collapsed /deep/ .el-card__body {
padding: 10px 12px;
}
.search-form /deep/ .el-form-item {
width: 100%;
margin-bottom: 12px;
}
.search-form /deep/ .el-form-item__label {
font-weight: 500;
color: #606266;
padding-bottom: 4px;
}
.search-condition-row {
margin-bottom: 0;
}
.search-form /deep/ .el-select,
.search-form /deep/ .el-input,
.search-form /deep/ .el-date-editor {
width: 100%;
}
.search-form /deep/ .el-input__inner {
border-radius: 6px;
border: 1px solid #dcdfe6;
transition: all 0.2s ease;
}
.search-form /deep/ .el-input__inner:focus {
border-color: #9ac3d0;
box-shadow: 0 0 0 2px rgba(154, 195, 208, 0.1);
}
.search-actions {
display: flex;
width: 100%;
justify-content: space-between;
align-items: stretch;
}
.search-card:not(.collapsed) .search-actions {
border-top: 1px solid #f0f0f0;
margin-top: 4px;
padding-top: 10px;
}
.search-card.collapsed .search-actions {
border-top: none;
margin-top: 0;
padding-top: 0;
}
.action-left {
display: flex;
gap: 8px;
align-items: center;
flex-wrap: wrap;
}
.search-actions .el-button {
border-radius: 4px;
height: 32px;
line-height: 32px;
padding: 0 12px;
font-size: 12px;
font-weight: 500;
}
.search-actions .el-button--primary {
background: #60aeff;
border-color: #60aeff;
}
.search-actions .el-button--primary:hover {
background: #7dbdff;
border-color: #7dbdff;
}
</style>
Loading…
Cancel
Save