index.vue 1.85 KB
Newer Older
zhoutong's avatar
zhoutong committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
<template>
    <el-select
        v-model="valueSync"
        multiple
        filterable
        clearable
        remote
        reserve-keyword
        :disabled="disabled"
        placeholder="请输入关键词"
        @focus="remoteMethod('')"
        :remote-method="remoteMethod"
        :loading="loading">
        <el-option
        v-for="(item) in list"
        :key="item.id"
        :label="$l(item, 'company') + '('+item.companyCode+')'"
        :value="item.id">
        </el-option>
    </el-select>
</template>
<script>
import {getSupplierList, getSupplierPage} from '@/api/ecw/supplier'

export default {
    props:{
        companyType: [String, Number],
        value: [Array],
        disabled: {
            type: Boolean,
            default: false
        }
    },
    data(){
        return {
            valueSync: [],
            list:[],
            loading: false
        }
    },
    computed:{
    },
    watch:{
        valueSync(val){
            this.$emit('input', val)
        },
        value(val){
            this.valueSync = this.value
            this.init(val)
        }
    },
    created(){
        this.valueSync = this.value
        this.init(this.value)
    },
    methods:{
        init(val){
            if(val === null || val == undefined || val == '') return
            let params = {
                ids: val.toString()
            }
            getSupplierList(params).then(res => {
                this.list = res.data
            })
        },
        remoteMethod(keyword){
            let params = {
                pageSize: 500,
                companyType: this.companyType
            }
            params.keyword = keyword
            this.loading = true
            getSupplierPage(params)
                .then(res => this.list = res.data.list)
                .finally(() => this.loading = false)
        }
    }
}
</script>