WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2021-04-08 f969b32736ab60b141d076f7aeaafdbd9dc1c546
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
 * ChinaLocations
 * @author Tevin
 */
 
import ChinaLocationData from './ChinaLocationData.json';
 
const locationTree = [];
 
Object.keys(ChinaLocationData).forEach((code1) => {
    const province = {
        label: ChinaLocationData[code1].name,
        value: code1,
        children: [],
    };
    const children1 = ChinaLocationData[code1].children;
    Object.keys(children1).forEach((code2) => {
        const city = {
            label: children1[code2].name,
            value: code2,
            children: [],
        };
        if (typeof children1[code2].children !== 'undefined') {
            const children2 = children1[code2].children;
            Object.keys(children2).forEach((code3) => {
                city.children.push({
                    label: children2[code3],
                    value: code3,
                });
            });
        }
        province.children.push(city);
    });
    locationTree.push(province);
});
 
export default {
    onReady(callback) {
        callback();
    },
    getLocationTree() {
        return locationTree;
    },
    // 获取省市区拼合文本
    getRegionText(regions) {
        if (regions.length === 0) {
            return '';
        }
        let address = '';
        let tempLocationData = ChinaLocationData;
        regions.forEach((code) => {
            if (typeof tempLocationData[code].name === 'string') {
                address += tempLocationData[code].name;
            } else {
                address += tempLocationData[code];
            }
            tempLocationData = tempLocationData[code].children;
        });
        return address;
    },
    // 省市区名称
    getRegionNames(regions) {
        if (typeof regions === 'string') {
            regions = regions.split(',');
        }
        if (!regions || regions.length === 0 || !regions[0]) {
            return [];
        }
        let address = [];
        let tempLocationData = ChinaLocationData;
        regions.forEach((code) => {
            if (!tempLocationData[code]) {
                return;
            }
            if (typeof tempLocationData[code].name === 'string') {
                address.push(tempLocationData[code].name);
            } else {
                address.push(tempLocationData[code]);
            }
            tempLocationData = tempLocationData[code].children;
        });
        return address;
    },
    // 省市区文本转code
    getRegionCodes(regions) {
        if (typeof regions === 'string') {
            regions = regions.split(',');
        }
        if (!regions || regions.length === 0 || !regions[0]) {
            return '';
        }
        const codes = [];
        // 省
        for (let provinceCode in ChinaLocationData) {
            if (ChinaLocationData.hasOwnProperty(provinceCode)) {
                if (ChinaLocationData[provinceCode].name === regions[0]) {
                    codes[0] = provinceCode;
                    // 市
                    const provinceChildren = ChinaLocationData[provinceCode].children;
                    for (let cityCode in provinceChildren) {
                        if (provinceChildren.hasOwnProperty(cityCode)) {
                            if (provinceChildren[cityCode].name === regions[1]) {
                                codes[1] = cityCode;
                                // 区
                                const areaChildren = provinceChildren[cityCode].children;
                                for (let areaCode in areaChildren) {
                                    if (areaChildren.hasOwnProperty(areaCode)) {
                                        if (areaChildren[areaCode] === regions[2]) {
                                            codes[2] = areaCode;
                                            break;
                                        }
                                    }
                                }
                                break;
                            }
                        }
                    }
                    break;
                }
            }
        }
        return codes;
    },
};