|
|
|
@ -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> |