|
@@ -1,106 +0,0 @@
|
|
|
-<template>
|
|
|
- <a-select
|
|
|
- show-search
|
|
|
- label-in-value
|
|
|
- :size="size"
|
|
|
- :value="dealerName"
|
|
|
- mode="combobox"
|
|
|
- :placeholder="placeholder"
|
|
|
- style="width: 100%"
|
|
|
- :filter-option="false"
|
|
|
- :not-found-content="fetching ? undefined : null"
|
|
|
- :dropdownMatchSelectWidth="false"
|
|
|
- :defaultActiveFirstOption="false"
|
|
|
- @search="fetchUser"
|
|
|
- @change="handleChange"
|
|
|
- allowClear
|
|
|
- :disabled="disabled"
|
|
|
- >
|
|
|
- <a-spin v-if="fetching" slot="notFoundContent" size="small" />
|
|
|
- <a-select-option v-for="item in data" :key="item.dealerSn" :value="item.dealerName">
|
|
|
- {{ item.dealerName }}
|
|
|
- </a-select-option>
|
|
|
- </a-select>
|
|
|
-</template>
|
|
|
-<script>
|
|
|
-import debounce from 'lodash/debounce'
|
|
|
-import { dealerSubareaScopeList, dealerDetailBySn } from '@/api/dealer'
|
|
|
-export default {
|
|
|
- props: {
|
|
|
- size: {
|
|
|
- type: String,
|
|
|
- default: 'default'
|
|
|
- },
|
|
|
- placeholder: {
|
|
|
- type: String,
|
|
|
- default: '请输入名称搜索'
|
|
|
- },
|
|
|
- disabled: {
|
|
|
- type: Boolean,
|
|
|
- default: false
|
|
|
- }
|
|
|
- },
|
|
|
- data () {
|
|
|
- this.lastFetchId = 0
|
|
|
- this.fetchUser = debounce(this.fetchUser, 800)
|
|
|
- return {
|
|
|
- data: [],
|
|
|
- dealerName: [],
|
|
|
- fetching: false
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- fetchUser (dealerName) {
|
|
|
- console.log('fetching user', dealerName)
|
|
|
- if (dealerName == '') return
|
|
|
- this.lastFetchId += 1
|
|
|
- const fetchId = this.lastFetchId
|
|
|
- this.data = []
|
|
|
- this.fetching = true
|
|
|
- dealerSubareaScopeList({ nameLike: dealerName.replace(/\s+/g, ''), pageNo: 1, pageSize: 20 }).then(res => {
|
|
|
- if (fetchId !== this.lastFetchId) {
|
|
|
- return
|
|
|
- }
|
|
|
- this.data = res.data && res.data.list ? res.data.list : []
|
|
|
- this.fetching = false
|
|
|
- })
|
|
|
- },
|
|
|
- handleChange (value) {
|
|
|
- if (value && value.key) {
|
|
|
- const obj = this.data.find(item => item.dealerName.replace(/\s+/g, '') == value.key)
|
|
|
- value.name = obj ? obj.dealerName : ''
|
|
|
- value.row = obj
|
|
|
- }
|
|
|
- Object.assign(this, {
|
|
|
- dealerName: value,
|
|
|
- data: [],
|
|
|
- fetching: false
|
|
|
- })
|
|
|
- this.$emit('change', value || { key: undefined })
|
|
|
- },
|
|
|
- resetForm () {
|
|
|
- this.dealerName = []
|
|
|
- Object.assign(this, {
|
|
|
- dealerName: undefined,
|
|
|
- data: [],
|
|
|
- fetching: false
|
|
|
- })
|
|
|
- },
|
|
|
- // 查询详细
|
|
|
- getDetail (sn) {
|
|
|
- dealerDetailBySn({ sn: sn }).then(res => {
|
|
|
- const val = { key: sn }
|
|
|
- val.label = res.data.dealerName
|
|
|
- val.row = res.data
|
|
|
- Object.assign(this, {
|
|
|
- dealerName: val,
|
|
|
- data: [res.data],
|
|
|
- fetching: false
|
|
|
- })
|
|
|
- this.$emit('change', val)
|
|
|
- this.$emit('dealerDetail', res.data || null)
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|