完善供应商、客户、会员查询接口,支持模糊查询,支持1万数量级的快速查询

This commit is contained in:
jishenghua
2025-09-26 17:19:46 +08:00
parent d9a9a1b118
commit 62415c51e4
22 changed files with 203 additions and 33 deletions

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initSupplier(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in supList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -203,7 +208,11 @@
BillExcelIframe,
BatchWaitBillList,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="客户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initCustomer(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in cusList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -203,7 +208,11 @@
BillExcelIframe,
BatchWaitBillList,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initSupplier(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in supList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -215,7 +220,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initSupplier(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in supList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -238,7 +243,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择供应商" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initSupplier(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in supList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -212,7 +217,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="会员卡号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择会员卡号" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择会员卡号" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchRetail">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initRetail(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in retailList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -208,7 +213,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -44,7 +44,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="会员卡号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择会员卡号" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择会员卡号" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchRetail">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initRetail(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in retailList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -207,7 +212,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -45,7 +45,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="客户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initCustomer(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in cusList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -224,7 +229,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -45,7 +45,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="客户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initCustomer(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in cusList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -219,7 +224,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -45,7 +45,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="客户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId">
<a-select placeholder="请选择客户" showSearch allow-clear optionFilterProp="children" v-model="queryParam.organId" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />
<div class="dropdown-btn" @mousedown="e => e.preventDefault()" @click="initCustomer(0)"><a-icon type="reload" /> 刷新列表</div>
</div>
<a-select-option v-for="(item,index) in cusList" :key="index" :value="item.id">
{{ item.supplier }}
</a-select-option>
@@ -247,7 +252,11 @@
BillDetail,
BillExcelIframe,
JEllipsis,
JDate
JDate,
VNodes: {
functional: true,
render: (h, ctx) => ctx.props.vnodes,
}
},
data () {
return {

View File

@@ -16,6 +16,7 @@ export const BillListMixin = {
isShowExcel: false,
//以销定购的场景开关
purchaseBySaleFlag: false,
setTimeFlag: null,
waitTotal: 0,
dateFormat: 'YYYY-MM-DD',
billExcelUrl: '',
@@ -718,6 +719,45 @@ export const BillListMixin = {
}
}
},
handleSearchSupplier(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectSup({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchCustomer(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectCus({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchRetail(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectRetail({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
getDepotByCurrentUser() {
getAction('/depot/findDepotByCurrentUser').then((res) => {
if (res.code === 200) {

View File

@@ -45,6 +45,7 @@ export const BillModalMixin = {
checkFlag: true,
//零收付款的场景开关
zeroChangeAmountFlag: false,
setTimeFlag: null,
validatorRules:{
price:{
rules: [
@@ -203,7 +204,7 @@ export const BillModalMixin = {
},
initSupplier(isChecked) {
let that = this;
findBySelectSup({}).then((res)=>{
findBySelectSup({organId: this.model.organId}).then((res)=>{
if(res) {
that.supList = res
if(isChecked && res.length>0) {
@@ -214,7 +215,7 @@ export const BillModalMixin = {
},
initCustomer(isChecked) {
let that = this;
findBySelectCus({}).then((res)=>{
findBySelectCus({organId: this.model.organId}).then((res)=>{
if(res) {
that.cusList = res
if(isChecked && res.length>0) {
@@ -225,7 +226,7 @@ export const BillModalMixin = {
},
initRetail(isChecked) {
let that = this;
findBySelectRetail({}).then((res)=>{
findBySelectRetail({organId: this.model.organId}).then((res)=>{
if(res) {
that.retailList = res
if(isChecked && res.length>0) {
@@ -283,6 +284,45 @@ export const BillModalMixin = {
}
})
},
handleSearchSupplier(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectSup({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchCustomer(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectCus({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleSearchRetail(value) {
let that = this
if(this.setTimeFlag != null){
clearTimeout(this.setTimeFlag);
}
this.setTimeFlag = setTimeout(()=>{
findBySelectRetail({key: value}).then((res) => {
if(res) {
that.supList = res;
}
})
},500)
},
handleManyAccount(){
this.selectAccount(0)
},

View File

@@ -27,7 +27,7 @@
<a-col :lg="6" :md="12" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商">
<a-select placeholder="请选择供应商" v-decorator="[ 'organId' ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -27,7 +27,7 @@
<a-col :lg="6" :md="12" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="客户">
<a-select placeholder="请选择客户" v-decorator="[ 'organId' ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -27,7 +27,7 @@
<a-col :lg="6" :md="12" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商">
<a-select placeholder="请选择供应商" v-decorator="[ 'organId', validatorRules.organId ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -29,7 +29,7 @@
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商" data-step="1" data-title="供应商"
data-intro="供应商必须选择如果发现需要选择的供应商尚未录入可以在下拉框中点击新增供应商进行录入">
<a-select placeholder="请选择供应商" v-decorator="[ 'organId', validatorRules.organId ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -29,7 +29,7 @@
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商" data-step="1" data-title="供应商"
data-intro="供应商必须选择如果发现需要选择的供应商尚未录入可以在下拉框中点击新增供应商进行录入">
<a-select placeholder="请选择供应商" v-decorator="[ 'organId', validatorRules.organId ]"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @search="handleSearchSupplier">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -27,7 +27,7 @@
<a-col :lg="6" :md="12" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会员卡号">
<a-select placeholder="请选择会员卡号" v-decorator="[ 'organId' ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @search="handleSearchRetail">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -29,7 +29,7 @@
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会员卡号" data-step="1" data-title="会员卡号"
data-intro="如果发现需要选择的会员卡号尚未录入可以在下拉框中点击新增会员信息进行录入">
<a-select placeholder="请选择会员卡号" v-decorator="[ 'organId' ]"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="onChangeOrgan">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="onChangeOrgan" @search="handleSearchRetail">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -27,7 +27,7 @@
<a-col :lg="6" :md="12" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="客户">
<a-select placeholder="请选择客户" v-decorator="[ 'organId', validatorRules.organId ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -30,7 +30,7 @@
data-intro="客户必须选择如果发现需要选择的客户尚未录入可以在下拉框中点击新增客户进行录入
特别注意客户如果录入之后在下拉框中不显示请检查是否给当前用户分配对应的客户权限">
<a-select placeholder="请选择客户" v-decorator="[ 'organId', validatorRules.organId ]"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />

View File

@@ -30,7 +30,7 @@
data-intro="客户必须选择如果发现需要选择的客户尚未录入可以在下拉框中点击新增客户进行录入
特别注意客户如果录入之后在下拉框中不显示请检查是否给当前用户分配对应的客户权限">
<a-select placeholder="请选择客户" v-decorator="[ 'organId', validatorRules.organId ]" :disabled="!rowCanEdit"
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange">
:dropdownMatchSelectWidth="false" showSearch optionFilterProp="children" @change="handleOrganChange" @search="handleSearchCustomer">
<div slot="dropdownRender" slot-scope="menu">
<v-nodes :vnodes="menu" />
<a-divider style="margin: 4px 0;" />