<template>
    <div>
        <el-select v-model="formData.country" :disabled="readonly">
            <el-option v-for="(item) in treeList" :value="item.id" :label="$l(item, 'title')" :key="item.id" />
        </el-select>
        <el-select v-model="formData.province" class="ml-10" :disabled="readonly">
            <el-option v-for="(item) in provinceList" :value="item.id" :label="$l(item, 'title')" :key="item.id" />
        </el-select>
        <el-select v-model="formData.city" class="ml-10" :disabled="readonly">
            <el-option v-for="(item) in cityList" :value="item.id" :label="$l(item, 'title')" :key="item.id" />
        </el-select>
    </div>
</template>
<script>
import { getListTree } from "@/api/ecw/region";

export default {
    props:{
        country: Number,
        city: Number,
        province: Number,
        readonly: Boolean
    },
    data(){
        return {
            formData:{
                country: undefined,
                province: undefined,
                city: undefined
            },
            treeList: [],
            // provinceList: [],
            // cityList:[]
        }
    },
    watch:{
        city(val){
            this.$set(this.formData, 'city', val)
        },
        province(val){
            this.$set(this.formData, 'province', val)
        },
        country(val){
            this.$set(this.formData, 'country', val)
        },
        'formData.city'(city){
            this.$emit('cityChange', city)
        },
        'formData.country'(country){
            this.$emit('countryChange', country)
            this.$set(this.formData, 'province', undefined)
        },
        'formData.province'(province){
            this.$emit('provinceChange', province)
            this.$set(this.formData, 'city', '')
        }
    },
    computed:{
        provinceList(){
            if(!this.formData.country) return []
            let country = this.treeList.find(item => item.id == this.formData.country)
            return country && country.children || []
        },
        cityList(){
            if(!this.provinceList.length) return []
            let province = this.provinceList.find(item => item.id == this.formData.province)
            return province && province.children || []
        }
    },
    created(){
        getListTree({treeType: 1}).then(response => {
            this.treeList = response.data
        })
        this.formData = {
            country: this.country,
            province: this.province,
            city: this.city
        }
    }
}
</script>