@owocow/saber-ui 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +206 -11
- package/dist/BadgeStatus.types.d.ts +1 -1
- package/dist/BadgeStatus.vue.d.ts +1 -1
- package/dist/SaberConfirmModal.vue_vue_type_script_setup_true_lang-Cqp9krYl.js +86 -0
- package/dist/SaberConfirmProvider.vue_vue_type_script_setup_true_lang-DUJ6ftNJ.js +30 -0
- package/dist/SaberDictCheckbox.vue_vue_type_script_setup_true_lang-DUbzy_C6.js +34 -0
- package/dist/SaberDictRadio.vue_vue_type_script_setup_true_lang-DR6-jSID.js +50 -0
- package/dist/SaberDictSelect.vue_vue_type_script_setup_true_lang-B8PTKNKX.js +35 -0
- package/dist/SaberDistrictSelect.vue_vue_type_script_setup_true_lang-BX8nLC35.js +257 -0
- package/dist/SaberInfo.vue_vue_type_script_setup_true_lang-B3W5VsGR.js +58 -0
- package/dist/SaberInfoProvider.vue_vue_type_script_setup_true_lang-3rF6bSCn.js +28 -0
- package/dist/SaberModal.vue_vue_type_script_setup_true_lang-DJno3jA3.js +71 -0
- package/dist/SaberModalWithMobile.vue_vue_type_script_setup_true_lang-aQlToncY.js +87 -0
- package/dist/SaberNoData.types.d.ts +11 -0
- package/dist/SaberNoData.vue.d.ts +24 -0
- package/dist/SaberPopSelect.vue_vue_type_script_setup_true_lang-BcS27NXI.js +125 -0
- package/dist/SaberStatus.vue_vue_type_script_setup_true_lang-D9aRVCow.js +38 -0
- package/dist/SaberSwitchBar.vue_vue_type_script_setup_true_lang-CDx3Dcas.js +47 -0
- package/dist/SaberUploadImage.vue_vue_type_script_setup_true_lang-CAwci2Vr.js +224 -0
- package/dist/colors.d.ts +1 -1
- package/dist/components/SaberConfirmModal.mjs +4 -0
- package/dist/components/SaberConfirmModal.vue.d.ts +28 -0
- package/dist/components/SaberConfirmProvider.mjs +4 -0
- package/dist/components/SaberConfirmProvider.vue.d.ts +2 -0
- package/dist/components/SaberInfo.mjs +4 -0
- package/dist/components/SaberInfo.types.d.ts +14 -0
- package/dist/components/SaberInfo.vue.d.ts +21 -0
- package/dist/components/SaberInfoProvider.mjs +4 -0
- package/dist/components/SaberInfoProvider.vue.d.ts +20 -0
- package/dist/components/SaberModalWithMobile.mjs +4 -0
- package/dist/components/SaberModalWithMobile.vue.d.ts +36 -0
- package/dist/components/SaberStatus.mjs +4 -0
- package/dist/components/SaberStatus.types.d.ts +1 -0
- package/dist/components/SaberStatus.vue.d.ts +8 -0
- package/dist/components/SaberSwitchBar.mjs +4 -0
- package/dist/components/SaberSwitchBar.types.d.ts +13 -0
- package/dist/components/SaberSwitchBar.vue.d.ts +18 -0
- package/dist/components/info-context.d.ts +3 -0
- package/dist/composables/index.d.ts +12 -0
- package/dist/composables/use-address-parse.d.ts +15 -0
- package/dist/composables/use-address-parse.mjs +20 -0
- package/dist/composables/use-boolean.d.ts +8 -0
- package/dist/composables/use-boolean.mjs +20 -0
- package/dist/composables/use-confirm.d.ts +34 -0
- package/dist/composables/use-confirm.mjs +28 -0
- package/dist/composables/use-delay-unmount.d.ts +7 -0
- package/dist/composables/use-delay-unmount.mjs +26 -0
- package/dist/composables/use-delete.d.ts +13 -0
- package/dist/composables/use-delete.mjs +19 -0
- package/dist/composables/use-loading.d.ts +6 -0
- package/dist/composables/use-loading.mjs +8 -0
- package/dist/composables/use-skeleton.d.ts +5 -0
- package/dist/composables/use-skeleton.mjs +23 -0
- package/dist/composables/use-table.d.ts +57 -0
- package/dist/composables/use-table.mjs +87 -0
- package/dist/composables.mjs +21 -0
- package/dist/district-service-cOu1tbQG.js +147 -0
- package/dist/district.d.ts +3 -0
- package/dist/district.mjs +8 -0
- package/dist/forms/components/SaberFilterBar.vue.d.ts +41 -0
- package/dist/forms/components/SaberFormModal.vue.d.ts +31 -0
- package/dist/forms/components/SaberModal.vue.d.ts +34 -0
- package/dist/forms/components/fields/SaberDictCheckbox.vue.d.ts +24 -0
- package/dist/forms/components/fields/SaberDictRadio.vue.d.ts +24 -0
- package/dist/forms/components/fields/SaberDictSelect.vue.d.ts +28 -0
- package/dist/forms/components/fields/SaberDistrictSelect.vue.d.ts +31 -0
- package/dist/forms/components/fields/SaberInput.vue.d.ts +16 -0
- package/dist/forms/components/fields/SaberInputNumber.vue.d.ts +11 -0
- package/dist/forms/components/fields/SaberPopSelect.vue.d.ts +25 -0
- package/dist/forms/components/fields/SaberRadioGroup.vue.d.ts +11 -0
- package/dist/forms/components/fields/SaberSelect.vue.d.ts +11 -0
- package/dist/forms/components/fields/SaberTextarea.vue.d.ts +11 -0
- package/dist/forms/components/fields/SaberUploadImage.vue.d.ts +113 -0
- package/dist/forms/dict-checkbox.mjs +4 -0
- package/dist/forms/dict-radio.mjs +4 -0
- package/dist/forms/dict-select.mjs +4 -0
- package/dist/forms/dict-source.d.ts +3 -0
- package/dist/forms/district-select.mjs +4 -0
- package/dist/forms/district-service.d.ts +46 -0
- package/dist/forms/filter-state.d.ts +4 -0
- package/dist/forms/index.d.ts +24 -0
- package/dist/forms/plugin.d.ts +20 -0
- package/dist/forms/pop-select.mjs +4 -0
- package/dist/forms/presets/basic.d.ts +5 -0
- package/dist/forms/registry.d.ts +15 -0
- package/dist/forms/types.d.ts +102 -0
- package/dist/forms/upload-image-source.d.ts +3 -0
- package/dist/forms/upload-image.mjs +4 -0
- package/dist/forms/use-dict-options.d.ts +8 -0
- package/dist/forms.mjs +45 -0
- package/dist/index-BealGwXp.js +5020 -0
- package/dist/index.d.ts +62 -1
- package/dist/index.mjs +122 -33
- package/dist/info-context-MfOfJNDT.js +4 -0
- package/dist/plugin-Dr3z0YFg.js +396 -0
- package/dist/types/api.d.ts +30 -0
- package/dist/types/auth.d.ts +54 -0
- package/dist/types/common.d.ts +14 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.mjs +1 -0
- package/dist/upload-image-source-On8NHgmx.js +4 -0
- package/dist/use-dict-options-DjtbYYIa.js +38 -0
- package/dist/utils/addressParse.d.ts +37 -0
- package/dist/utils/addressParse.mjs +623 -0
- package/dist/utils/crypto.d.ts +11 -0
- package/dist/utils/crypto.mjs +36 -0
- package/dist/utils/filter.d.ts +20 -0
- package/dist/utils/filter.mjs +11 -0
- package/dist/utils/format.d.ts +9 -0
- package/dist/utils/format.mjs +7 -0
- package/dist/utils/http.d.ts +45 -0
- package/dist/utils/http.mjs +147 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.mjs +41 -0
- package/dist/utils/klona.d.ts +2 -0
- package/dist/utils/klona.mjs +4 -0
- package/dist/utils/nanoid.d.ts +2 -0
- package/dist/utils/nanoid.mjs +4 -0
- package/dist/utils/permission.d.ts +45 -0
- package/dist/utils/permission.mjs +38 -0
- package/dist/utils/rsa.d.ts +26 -0
- package/dist/utils/rsa.mjs +2073 -0
- package/dist/utils/storage.d.ts +29 -0
- package/dist/utils/storage.mjs +39 -0
- package/dist/utils/toast.d.ts +26 -0
- package/dist/utils/toast.mjs +17 -0
- package/dist/utils/tree.d.ts +20 -0
- package/dist/utils/tree.mjs +30 -0
- package/package.json +179 -9
- package/dist/index.cjs +0 -1
- package/dist/vite.cjs +0 -1
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
function N(b) {
|
|
2
|
+
const _ = {}, v = {}, C = {};
|
|
3
|
+
for (const O of b) {
|
|
4
|
+
_[String(O.adcode)] = O.name;
|
|
5
|
+
for (const A of O.districts ?? []) {
|
|
6
|
+
v[String(A.adcode)] = A.name;
|
|
7
|
+
for (const S of A.districts ?? [])
|
|
8
|
+
C[String(S.adcode)] = S.name;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return { province_list: _, city_list: v, area_list: C };
|
|
12
|
+
}
|
|
13
|
+
function R(b) {
|
|
14
|
+
const _ = N(b);
|
|
15
|
+
function v(t) {
|
|
16
|
+
const s = `${t.slice(0, 2)}0000`, i = `${t.slice(0, 4)}00`;
|
|
17
|
+
return {
|
|
18
|
+
code: t,
|
|
19
|
+
province: _.province_list[s] || "",
|
|
20
|
+
city: _.city_list[i] || "",
|
|
21
|
+
area: _.area_list[t] || ""
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function C(t, s) {
|
|
25
|
+
const i = [];
|
|
26
|
+
return i.unshift({
|
|
27
|
+
code: s,
|
|
28
|
+
name: _.area_list[s] || ""
|
|
29
|
+
}), ["city", "province"].includes(t) && (s = s.slice(0, 4) + "00", i.unshift({
|
|
30
|
+
code: s,
|
|
31
|
+
name: _.city_list[s] || ""
|
|
32
|
+
})), t === "province" && (s = s.slice(0, 2) + "0000", i.unshift({
|
|
33
|
+
code: s,
|
|
34
|
+
name: _.province_list[s] || ""
|
|
35
|
+
})), i;
|
|
36
|
+
}
|
|
37
|
+
function O(t, s, i) {
|
|
38
|
+
if (i) return C(t, s);
|
|
39
|
+
const e = [], r = _[{
|
|
40
|
+
city: "city_list",
|
|
41
|
+
area: "area_list"
|
|
42
|
+
}[t]];
|
|
43
|
+
if (s && r) {
|
|
44
|
+
s = s.toString();
|
|
45
|
+
const a = s.slice(0, 2), n = s.slice(2, 4);
|
|
46
|
+
if (t === "area" && n !== "00") {
|
|
47
|
+
s = `${a}${n}`;
|
|
48
|
+
for (let c = 0; c < 100; c++) {
|
|
49
|
+
const o = `${s}${c < 10 ? "0" : ""}${c}`;
|
|
50
|
+
r[o] && e.push({
|
|
51
|
+
code: o,
|
|
52
|
+
name: r[o]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
} else
|
|
56
|
+
for (let c = 0; c < 91; c++)
|
|
57
|
+
if (s = `${a}${c < 10 ? "0" : ""}${c}${t === "city" ? "00" : ""}`, t === "city")
|
|
58
|
+
r[s] && e.push({
|
|
59
|
+
code: s,
|
|
60
|
+
name: r[s]
|
|
61
|
+
});
|
|
62
|
+
else
|
|
63
|
+
for (let o = 0; o < 100; o++) {
|
|
64
|
+
const p = `${s}${o < 10 ? "0" : ""}${o}`;
|
|
65
|
+
r[p] && e.push({
|
|
66
|
+
code: p,
|
|
67
|
+
name: r[p]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
} else
|
|
71
|
+
for (const a in r)
|
|
72
|
+
e.push({
|
|
73
|
+
code: a,
|
|
74
|
+
name: r[a]
|
|
75
|
+
});
|
|
76
|
+
return e;
|
|
77
|
+
}
|
|
78
|
+
function A({ province: t, city: s, area: i }) {
|
|
79
|
+
const { province_list: e, city_list: r, area_list: a } = _, n = {
|
|
80
|
+
code: "",
|
|
81
|
+
province: "",
|
|
82
|
+
city: "",
|
|
83
|
+
area: ""
|
|
84
|
+
};
|
|
85
|
+
for (let c in e) {
|
|
86
|
+
const o = e[c];
|
|
87
|
+
if (o.indexOf(t) === 0) {
|
|
88
|
+
n.code = c, n.province = o, c = c.substr(0, 2);
|
|
89
|
+
for (let p in r)
|
|
90
|
+
if (p.indexOf(c) === 0) {
|
|
91
|
+
const y = r[p];
|
|
92
|
+
if (y.indexOf(s) === 0) {
|
|
93
|
+
if (n.code = p, n.city = y, i) {
|
|
94
|
+
p = p.substr(0, 4);
|
|
95
|
+
for (const u in a)
|
|
96
|
+
if (u.indexOf(p) === 0) {
|
|
97
|
+
const f = a[u];
|
|
98
|
+
if (f.indexOf(i) === 0) {
|
|
99
|
+
n.code = u, n.area = f;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return n;
|
|
111
|
+
}
|
|
112
|
+
function S(t) {
|
|
113
|
+
let s = t.length, i = 0;
|
|
114
|
+
for (let e = 0; e < s; e++)
|
|
115
|
+
i += (t.charCodeAt(e) & 65280) !== 0 ? 2 : 1;
|
|
116
|
+
return i;
|
|
117
|
+
}
|
|
118
|
+
const B = {
|
|
119
|
+
mobile: /(86-[1][3-9][0-9]{9})|(86[1][3-9][0-9]{9})|([1][3-9][0-9]{9})/g,
|
|
120
|
+
phone: /(([0-9]{3,4}-)[0-9]{7,8})|([0-9]{12})|([0-9]{11})|([0-9]{10})|([0-9]{9})|([0-9]{8})|([0-9]{7})/g,
|
|
121
|
+
zipCode: /([0-9]{6})/g,
|
|
122
|
+
idNumber: /[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]/g
|
|
123
|
+
};
|
|
124
|
+
function k(t, s, i) {
|
|
125
|
+
let e = t.indexOf(s), r = s;
|
|
126
|
+
if (e > -1)
|
|
127
|
+
for (let a = s.length; a <= i.length; a++) {
|
|
128
|
+
const n = i.substr(0, a), c = t.indexOf(n);
|
|
129
|
+
if (c > -1)
|
|
130
|
+
e = c, r = n;
|
|
131
|
+
else
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
return { index: e, matchName: r };
|
|
135
|
+
}
|
|
136
|
+
const h = {
|
|
137
|
+
shortIndexOf: k,
|
|
138
|
+
strLen: S,
|
|
139
|
+
getAreaByCode: v,
|
|
140
|
+
getAreaByAddress: A,
|
|
141
|
+
getTargetAreaListByCode: O,
|
|
142
|
+
Reg: B
|
|
143
|
+
}, $ = ["特别行政区", "古自治区", "维吾尔自治区", "壮族自治区", "回族自治区", "自治区", "省省直辖", "省", "市"], L = [
|
|
144
|
+
"布依族苗族自治州",
|
|
145
|
+
"苗族侗族自治州",
|
|
146
|
+
"藏族羌族自治州",
|
|
147
|
+
"哈尼族彝族自治州",
|
|
148
|
+
"壮族苗族自治州",
|
|
149
|
+
"傣族景颇族自治州",
|
|
150
|
+
"蒙古族藏族自治州",
|
|
151
|
+
"傣族自治州",
|
|
152
|
+
"白族自治州",
|
|
153
|
+
"藏族自治州",
|
|
154
|
+
"彝族自治州",
|
|
155
|
+
"回族自治州",
|
|
156
|
+
"蒙古自治州",
|
|
157
|
+
"朝鲜族自治州",
|
|
158
|
+
"地区",
|
|
159
|
+
"哈萨克自治州",
|
|
160
|
+
"盟",
|
|
161
|
+
"市"
|
|
162
|
+
], P = [
|
|
163
|
+
"满族自治县",
|
|
164
|
+
"满族蒙古族自治县",
|
|
165
|
+
"蒙古族自治县",
|
|
166
|
+
"朝鲜族自治县",
|
|
167
|
+
"回族彝族自治县",
|
|
168
|
+
"彝族回族苗族自治县",
|
|
169
|
+
"彝族苗族自治县",
|
|
170
|
+
"土家族苗族自治县",
|
|
171
|
+
"布依族苗族自治县",
|
|
172
|
+
"苗族布依族自治县",
|
|
173
|
+
"苗族土家族自治县",
|
|
174
|
+
"彝族傣族自治县",
|
|
175
|
+
"傣族彝族自治县",
|
|
176
|
+
"仡佬族苗族自治县",
|
|
177
|
+
"黎族苗族自治县",
|
|
178
|
+
"苗族侗族自治县",
|
|
179
|
+
"哈尼族彝族傣族自治县",
|
|
180
|
+
"哈尼族彝族自治县",
|
|
181
|
+
"彝族哈尼族拉祜族自治县",
|
|
182
|
+
"傣族拉祜族佤族自治县",
|
|
183
|
+
"傣族佤族自治县",
|
|
184
|
+
"拉祜族佤族布朗族傣族自治县",
|
|
185
|
+
"苗族瑶族傣族自治县",
|
|
186
|
+
"彝族回族自治县",
|
|
187
|
+
"独龙族怒族自治县",
|
|
188
|
+
"保安族东乡族撒拉族自治县",
|
|
189
|
+
"回族土族自治县",
|
|
190
|
+
"撒拉族自治县",
|
|
191
|
+
"哈萨克自治县",
|
|
192
|
+
"塔吉克自治县",
|
|
193
|
+
"回族自治县",
|
|
194
|
+
"畲族自治县",
|
|
195
|
+
"土家族自治县",
|
|
196
|
+
"布依族自治县",
|
|
197
|
+
"苗族自治县",
|
|
198
|
+
"瑶族自治县",
|
|
199
|
+
"侗族自治县",
|
|
200
|
+
"水族自治县",
|
|
201
|
+
"傈僳族自治县",
|
|
202
|
+
"仫佬族自治县",
|
|
203
|
+
"毛南族自治县",
|
|
204
|
+
"黎族自治县",
|
|
205
|
+
"羌族自治县",
|
|
206
|
+
"彝族自治县",
|
|
207
|
+
"藏族自治县",
|
|
208
|
+
"纳西族自治县",
|
|
209
|
+
"裕固族自治县",
|
|
210
|
+
"哈萨克族自治县",
|
|
211
|
+
"哈尼族自治县",
|
|
212
|
+
"拉祜族自治县",
|
|
213
|
+
"佤族自治县",
|
|
214
|
+
"达斡尔族区",
|
|
215
|
+
"达斡尔族自治旗",
|
|
216
|
+
"左旗",
|
|
217
|
+
"右旗",
|
|
218
|
+
"中旗",
|
|
219
|
+
"后旗",
|
|
220
|
+
"联合旗",
|
|
221
|
+
"自治旗",
|
|
222
|
+
"旗",
|
|
223
|
+
"自治县",
|
|
224
|
+
"街道办事处",
|
|
225
|
+
"新区",
|
|
226
|
+
"区",
|
|
227
|
+
"县",
|
|
228
|
+
"市"
|
|
229
|
+
], l = {
|
|
230
|
+
isInit: !1,
|
|
231
|
+
ProvinceShortList: [],
|
|
232
|
+
ProvinceShort: {},
|
|
233
|
+
CityShort: {},
|
|
234
|
+
AreaShort: {},
|
|
235
|
+
init() {
|
|
236
|
+
for (const t in _.province_list) {
|
|
237
|
+
const s = _.province_list[t];
|
|
238
|
+
l.ProvinceShort[t] = $.reduce((i, e) => i.replace(e, ""), s), l.ProvinceShortList.push(l.ProvinceShort[t]);
|
|
239
|
+
}
|
|
240
|
+
for (const t in _.city_list) {
|
|
241
|
+
const s = _.city_list[t];
|
|
242
|
+
s.length > 2 && (l.CityShort[t] = L.reduce((i, e) => i.replace(e, ""), s));
|
|
243
|
+
}
|
|
244
|
+
for (const t in _.area_list) {
|
|
245
|
+
let s = _.area_list[t];
|
|
246
|
+
s === "雨花台区" && (s = "雨花区"), s === "神农架林区" && (s = "神农架"), s.length > 2 && s !== "高新区" && (l.AreaShort[t] = P.reduce((i, e) => (i.indexOf(e) > 1 && (i = i.replace(e, "")), i), s));
|
|
247
|
+
}
|
|
248
|
+
l.isInit = !0;
|
|
249
|
+
},
|
|
250
|
+
/**
|
|
251
|
+
* 开始解析
|
|
252
|
+
* @param address string
|
|
253
|
+
* @param parseAll 是否执行全部解析 默认识别到city终止
|
|
254
|
+
* @returns {Array}
|
|
255
|
+
*/
|
|
256
|
+
parse(t, s) {
|
|
257
|
+
if (this.results = [], this.results.unshift(...l.parseByProvince(t)), (s || !this.results[0] || !this.results[0].__parse) && (this.results.unshift(...l.parseByCity(t)), (s || !this.results[0] || !this.results[0].__parse) && this.results.unshift(...l.parseByArea(t))), this.results.length > 1)
|
|
258
|
+
for (const i of this.results) {
|
|
259
|
+
let e = t;
|
|
260
|
+
i.__parse = +i.__parse, i.__parse && i.province && e.includes(i.province) && (e = e.replace(i.province, ""), i.__parse += 1, i.city && (e.includes(i.city) ? ((i.city !== "县" || !e.indexOf(i.city)) && (e = e.replace(i.city, "")), i.__parse += 1, i.area && e.includes(i.area) && (i.__parse += 1)) : t.includes(i.city) && (i.__parse += 0.5, i.area && e.includes(i.area) && (i.__parse += 1)), i.area && e.includes(i.area) ? i.__parse += 1 : i.area && e.includes(i.area.substr(0, 2)) && (i.__parse += 0.5)));
|
|
261
|
+
}
|
|
262
|
+
return this.results.sort(
|
|
263
|
+
(i, e) => !i.__parse && !e.__parse && i.city && !e.city ? -1 : !i.__parse && !e.__parse && !i.city && e.city ? 1 : i.__parse && !e.__parse ? -1 : !i.__parse && e.__parse ? 1 : i.__parse && e.__parse && i.__parse > e.__parse ? -1 : i.__parse && e.__parse && i.__parse < e.__parse ? 1 : i.__parse && i.__type === "parseByProvince" ? -1 : e.__parse && e.__type === "parseByProvince" || i.name.length > e.name.length ? 1 : i.name.length < e.name.length ? -1 : 0
|
|
264
|
+
), this.results;
|
|
265
|
+
},
|
|
266
|
+
/**
|
|
267
|
+
* 1.1 提取省份
|
|
268
|
+
*/
|
|
269
|
+
parseByProvince(t) {
|
|
270
|
+
const s = _.province_list, i = [], e = {
|
|
271
|
+
province: "",
|
|
272
|
+
city: "",
|
|
273
|
+
area: "",
|
|
274
|
+
details: "",
|
|
275
|
+
name: "",
|
|
276
|
+
code: "",
|
|
277
|
+
__type: "parseByProvince",
|
|
278
|
+
__parse: !1
|
|
279
|
+
};
|
|
280
|
+
let r = t;
|
|
281
|
+
for (const a in s) {
|
|
282
|
+
const n = s[a];
|
|
283
|
+
let c = r.indexOf(n);
|
|
284
|
+
const o = c > -1 ? "" : l.ProvinceShort[a], p = o ? o.length : n.length;
|
|
285
|
+
if (o && (c = r.indexOf(o)), c > -1) {
|
|
286
|
+
c > 0 && (e.name = r.substr(0, c).trim(), r = r.substr(c).trim()), e.province = n, e.code = a;
|
|
287
|
+
const y = r.substr(p);
|
|
288
|
+
if ((y.charAt(0) !== "市" || y.indexOf(n) > -1) && (r = y), o)
|
|
289
|
+
for (const f of $)
|
|
290
|
+
r.indexOf(f) === 0 && (r = r.substr(f.length));
|
|
291
|
+
let u = l.parse_city_by_province(r, e);
|
|
292
|
+
if (e.city || (u = l.parse_area_by_province(r, e)), e.city) {
|
|
293
|
+
if (e.__parse = !0, r = u, c > 4 && l.ProvinceShortList.some((f) => e.name.includes(f))) {
|
|
294
|
+
const [f] = l.parseByProvince(e.name);
|
|
295
|
+
f.__parse && (Object.assign(e, f), r = t.substr(c).trim(), e.area || (r = l.parse_area_by_city(r, e)), e.__parse = 3);
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
298
|
+
} else
|
|
299
|
+
i.unshift({ ...e, details: r.trim() }), e.province = "", e.code = "", e.name = "", r = t;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return e.code && i.unshift({ ...e, details: r.trim() }), i;
|
|
303
|
+
},
|
|
304
|
+
/**
|
|
305
|
+
* 1.2.提取城市
|
|
306
|
+
* @returns {boolean}
|
|
307
|
+
*/
|
|
308
|
+
parse_city_by_province(t, s) {
|
|
309
|
+
const i = h.getTargetAreaListByCode("city", s.code), e = {
|
|
310
|
+
city: "",
|
|
311
|
+
code: "",
|
|
312
|
+
index: -1,
|
|
313
|
+
address: "",
|
|
314
|
+
isShort: !1
|
|
315
|
+
};
|
|
316
|
+
for (const r of i) {
|
|
317
|
+
let a = t.indexOf(r.name);
|
|
318
|
+
const n = a > -1 ? "" : l.CityShort[r.code], c = n ? n.length : r.name.length;
|
|
319
|
+
if (n && (a = t.indexOf(n)), a > -1 && (e.index === -1 || e.index > a || !n && e.isShort) && (e.city = r.name, e.code = r.code, e.index = a, e.address = t.substr(a + c), e.isShort = !!n, n))
|
|
320
|
+
for (const o of L)
|
|
321
|
+
t.indexOf(o) === 0 && o !== "市" && !["市北区", "市南区", "市中区", "市辖区"].some((p) => t.indexOf(p) === 0) && (t = t.substr(o.length));
|
|
322
|
+
if (a > -1 && a < 3 && (s.city = r.name, s.code = r.code, e.address = t.substr(a + c), n))
|
|
323
|
+
for (const o of L)
|
|
324
|
+
e.address.indexOf(o) === 0 && o !== "市" && !["市北区", "市南区", "市中区", "市辖区"].some((p) => e.address.indexOf(p) === 0) && (e.address = e.address.substr(o.length));
|
|
325
|
+
}
|
|
326
|
+
return e.index > -1 && (s.city = e.city, s.code = e.code, t = l.parse_area_by_city(e.address, s)), t;
|
|
327
|
+
},
|
|
328
|
+
/**
|
|
329
|
+
* 1.3.,2.2 已匹配城市的地址 提取地区
|
|
330
|
+
* @param address string
|
|
331
|
+
* @param result object
|
|
332
|
+
* @returns {string}
|
|
333
|
+
*/
|
|
334
|
+
parse_area_by_city(t, s) {
|
|
335
|
+
const i = h.getTargetAreaListByCode("area", s.code), e = {
|
|
336
|
+
area: "",
|
|
337
|
+
code: "",
|
|
338
|
+
index: -1,
|
|
339
|
+
address: "",
|
|
340
|
+
isShort: !1
|
|
341
|
+
};
|
|
342
|
+
for (const r of i) {
|
|
343
|
+
let a = t.indexOf(r.name), n = a > -1 ? "" : l.AreaShort[r.code];
|
|
344
|
+
if (n) {
|
|
345
|
+
const { index: o, matchName: p } = h.shortIndexOf(t, n, r.name);
|
|
346
|
+
a = o, n = p;
|
|
347
|
+
}
|
|
348
|
+
const c = n ? n.length : r.name.length;
|
|
349
|
+
if (a > -1 && (e.index === -1 || e.index > a || !n && e.isShort) && (e.area = r.name, e.code = r.code, e.index = a, e.address = t.substr(a + c), e.isShort = !!n, n))
|
|
350
|
+
for (const o of P)
|
|
351
|
+
e.address.indexOf(o) === 0 && (e.address = e.address.substr(o.length));
|
|
352
|
+
}
|
|
353
|
+
return e.index > -1 && (s.area = e.area, s.code = e.code, t = e.address), t;
|
|
354
|
+
},
|
|
355
|
+
/**
|
|
356
|
+
* 1.4.提取省份但没有提取到城市的地址尝试通过省份下地区匹配
|
|
357
|
+
*/
|
|
358
|
+
parse_area_by_province(t, s) {
|
|
359
|
+
const i = h.getTargetAreaListByCode("area", s.code);
|
|
360
|
+
for (const e of i) {
|
|
361
|
+
let r = t.indexOf(e.name), a = r > -1 ? "" : l.AreaShort[e.code];
|
|
362
|
+
if (a) {
|
|
363
|
+
const { index: c, matchName: o } = h.shortIndexOf(t, a, e.name);
|
|
364
|
+
r = c, a = o;
|
|
365
|
+
}
|
|
366
|
+
const n = a ? a.length : e.name.length;
|
|
367
|
+
if (r > -1 && r < 6) {
|
|
368
|
+
const [c] = h.getTargetAreaListByCode("city", e.code, !0);
|
|
369
|
+
if (s.city = c.name, s.area = e.name, s.code = e.code, t = t.substr(r + n), a)
|
|
370
|
+
for (const o of P)
|
|
371
|
+
t.indexOf(o) === 0 && (t = t.substr(o.length));
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return t;
|
|
376
|
+
},
|
|
377
|
+
/**
|
|
378
|
+
* 2.1 通过城市识别地址
|
|
379
|
+
* @param addressBase string
|
|
380
|
+
* @returns {Array}
|
|
381
|
+
*/
|
|
382
|
+
parseByCity(t) {
|
|
383
|
+
const s = _.city_list, i = [], e = {
|
|
384
|
+
province: "",
|
|
385
|
+
city: "",
|
|
386
|
+
area: "",
|
|
387
|
+
details: "",
|
|
388
|
+
name: "",
|
|
389
|
+
code: "",
|
|
390
|
+
__type: "parseByCity",
|
|
391
|
+
__parse: !1
|
|
392
|
+
};
|
|
393
|
+
let r = t;
|
|
394
|
+
for (const a in s) {
|
|
395
|
+
const n = s[a];
|
|
396
|
+
if (n.length < 2) continue;
|
|
397
|
+
let c = r.indexOf(n);
|
|
398
|
+
const o = c > -1 ? "" : l.CityShort[a], p = o ? o.length : n.length;
|
|
399
|
+
if (o && (c = r.indexOf(o)), c > -1) {
|
|
400
|
+
const [y] = h.getTargetAreaListByCode("province", a, !0);
|
|
401
|
+
e.province = y.name, e.city = n, e.code = a;
|
|
402
|
+
let u = r.substr(0, c), f = "";
|
|
403
|
+
if (u) {
|
|
404
|
+
f = y.name;
|
|
405
|
+
let m = u.indexOf(f);
|
|
406
|
+
m === -1 && (f = l.ProvinceShort[y.code], m = u.indexOf(f), m === -1 && (f = "")), f && (u = u.replace(new RegExp(f, "g"), "")), u && (e.name = u);
|
|
407
|
+
}
|
|
408
|
+
if (r = r.substr(c + p), r = l.parse_area_by_city(r, e), f || e.area) {
|
|
409
|
+
e.__parse = !0;
|
|
410
|
+
break;
|
|
411
|
+
} else
|
|
412
|
+
i.unshift({ ...e, details: r.trim() }), e.name = "", e.city = "", e.province = "", e.code = "", r = t;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return e.code && i.unshift({ ...e, details: r.trim() }), i;
|
|
416
|
+
},
|
|
417
|
+
/**
|
|
418
|
+
* 3 通过地区识别地址
|
|
419
|
+
* @returns {Array}
|
|
420
|
+
*/
|
|
421
|
+
parseByArea(t) {
|
|
422
|
+
const s = _.area_list, i = [], e = {
|
|
423
|
+
province: "",
|
|
424
|
+
city: "",
|
|
425
|
+
area: "",
|
|
426
|
+
details: "",
|
|
427
|
+
name: "",
|
|
428
|
+
code: "",
|
|
429
|
+
__type: "parseByArea",
|
|
430
|
+
__parse: !1
|
|
431
|
+
};
|
|
432
|
+
let r = t;
|
|
433
|
+
for (const a in s) {
|
|
434
|
+
const n = s[a];
|
|
435
|
+
if (n.length < 2) continue;
|
|
436
|
+
let c = r.indexOf(n), o = c > -1 ? "" : l.AreaShort[a];
|
|
437
|
+
if (o) {
|
|
438
|
+
const { index: y, matchName: u } = h.shortIndexOf(r, o, n);
|
|
439
|
+
c = y, o = u;
|
|
440
|
+
}
|
|
441
|
+
const p = o ? o.length : n.length;
|
|
442
|
+
if (c > -1) {
|
|
443
|
+
const [y, u] = h.getTargetAreaListByCode("province", a, !0);
|
|
444
|
+
e.province = y.name, e.city = u.name, e.area = n, e.code = a;
|
|
445
|
+
let f = r.substr(0, c), m = "", x = "";
|
|
446
|
+
if (f) {
|
|
447
|
+
m = y.name;
|
|
448
|
+
let g = f.indexOf(m);
|
|
449
|
+
g === -1 && (m = l.ProvinceShort[y.code], g = f.indexOf(m), g === -1 && (m = "")), m && (f = f.replace(new RegExp(m, "g"), "")), x = u.name, g = f.indexOf(x), g === -1 && (x = l.CityShort[u.code], g = f.indexOf(x), g === -1 && (x = "")), x && (f = f.replace(new RegExp(x, "g"), "")), f && (e.name = f);
|
|
450
|
+
}
|
|
451
|
+
if (m && !x) {
|
|
452
|
+
const [g] = l.parseByArea(r.substr(0, c));
|
|
453
|
+
if (g && g.__parse) {
|
|
454
|
+
Object.assign(e, g), r = r.substr(c).trim(), e.area || (r = l.parse_area_by_city(r, e)), e.__parse = 2;
|
|
455
|
+
break;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
if (o && r.charAt(c + p) === "县" && (c += 1), r = r.substr(c + p), m || x) {
|
|
459
|
+
e.__parse = !0;
|
|
460
|
+
break;
|
|
461
|
+
} else
|
|
462
|
+
i.unshift({ ...e, details: r.trim() }), e.name = "", e.city = "", e.area = "", e.province = "", e.code = "", r = t;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return e.code && i.unshift({ ...e, details: r.trim() }), i;
|
|
466
|
+
}
|
|
467
|
+
}, d = {
|
|
468
|
+
ExcludeKeys: [
|
|
469
|
+
"发件人",
|
|
470
|
+
"收货地址",
|
|
471
|
+
"收货人",
|
|
472
|
+
"收件人",
|
|
473
|
+
"收货",
|
|
474
|
+
"手机号码",
|
|
475
|
+
"邮编",
|
|
476
|
+
"电话",
|
|
477
|
+
"所在地区",
|
|
478
|
+
"详细地址",
|
|
479
|
+
"地址",
|
|
480
|
+
":",
|
|
481
|
+
":",
|
|
482
|
+
";",
|
|
483
|
+
";",
|
|
484
|
+
",",
|
|
485
|
+
",",
|
|
486
|
+
"。",
|
|
487
|
+
"、"
|
|
488
|
+
],
|
|
489
|
+
address: "",
|
|
490
|
+
result: {
|
|
491
|
+
mobile: "",
|
|
492
|
+
zip_code: "",
|
|
493
|
+
phone: "",
|
|
494
|
+
idNumber: ""
|
|
495
|
+
},
|
|
496
|
+
Reg: {
|
|
497
|
+
...h.Reg
|
|
498
|
+
},
|
|
499
|
+
/**
|
|
500
|
+
* 开始解析
|
|
501
|
+
* @param address string 地址
|
|
502
|
+
* @param parseAll boolean 是否完全解析
|
|
503
|
+
* @returns {Array}
|
|
504
|
+
*/
|
|
505
|
+
parse: (t, s) => {
|
|
506
|
+
let i = [];
|
|
507
|
+
if (t) {
|
|
508
|
+
d.result = {
|
|
509
|
+
mobile: "",
|
|
510
|
+
zip_code: "",
|
|
511
|
+
phone: "",
|
|
512
|
+
idNumber: ""
|
|
513
|
+
}, d.address = t, d.replace(), d.parseIdNumber(), d.parseMobile(), d.parsePhone(), d.parseZipCode(), d.address = d.address.replace(/ {2,}/, " ");
|
|
514
|
+
const e = d.parseName({ details: d.address });
|
|
515
|
+
i = l.parse(d.address, s);
|
|
516
|
+
for (const r of i)
|
|
517
|
+
Object.assign(r, d.result), r.name = r.name.trim(), d.parseName(r, { firstName: e }), d.handlerDetail(r);
|
|
518
|
+
if (!i.length) {
|
|
519
|
+
const r = Object.assign(d.result, {
|
|
520
|
+
province: "",
|
|
521
|
+
city: "",
|
|
522
|
+
area: "",
|
|
523
|
+
details: d.address,
|
|
524
|
+
name: "",
|
|
525
|
+
code: "",
|
|
526
|
+
__type: ""
|
|
527
|
+
});
|
|
528
|
+
d.parseName(r), i.push(r);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
return i;
|
|
532
|
+
},
|
|
533
|
+
/**
|
|
534
|
+
* 替换无效字符
|
|
535
|
+
*/
|
|
536
|
+
replace: () => {
|
|
537
|
+
let t = d.address;
|
|
538
|
+
for (const s of d.ExcludeKeys)
|
|
539
|
+
t = t.replace(new RegExp(s, "g"), " ");
|
|
540
|
+
d.address = t.replace(/\r\n/g, " ").replace(/\n/g, " ").replace(/\t/g, " ").replace(/ {2,}/g, " ").replace(/(\d{3})-(\d{4})-(\d{4})/g, "$1$2$3").replace(/(\d{3}) (\d{4}) (\d{4})/g, "$1$2$3");
|
|
541
|
+
},
|
|
542
|
+
/**
|
|
543
|
+
* 提取手机号码
|
|
544
|
+
*/
|
|
545
|
+
parseMobile: () => {
|
|
546
|
+
d.Reg.mobile.lastIndex = 0;
|
|
547
|
+
const t = d.Reg.mobile.exec(d.address);
|
|
548
|
+
t && (d.result.mobile = t[0], d.address = d.address.replace(t[0], " "));
|
|
549
|
+
},
|
|
550
|
+
/**
|
|
551
|
+
* 提取电话号码
|
|
552
|
+
*/
|
|
553
|
+
parsePhone: () => {
|
|
554
|
+
d.Reg.phone.lastIndex = 0;
|
|
555
|
+
const t = d.Reg.phone.exec(d.address);
|
|
556
|
+
t && (d.result.phone = t[0], d.address = d.address.replace(t[0], " "));
|
|
557
|
+
},
|
|
558
|
+
/**
|
|
559
|
+
* 提取邮编
|
|
560
|
+
*/
|
|
561
|
+
parseZipCode: () => {
|
|
562
|
+
d.Reg.zipCode.lastIndex = 0;
|
|
563
|
+
const t = d.Reg.zipCode.exec(d.address);
|
|
564
|
+
t && (d.result.zip_code = t[0], d.address = d.address.replace(t[0], ""));
|
|
565
|
+
},
|
|
566
|
+
/**
|
|
567
|
+
* 提取身份证号
|
|
568
|
+
*/
|
|
569
|
+
parseIdNumber: () => {
|
|
570
|
+
d.Reg.idNumber.lastIndex = 0;
|
|
571
|
+
const t = d.Reg.idNumber.exec(d.address);
|
|
572
|
+
t && (d.result.idNumber = t[0], d.address = d.address.replace(t[0], ""));
|
|
573
|
+
},
|
|
574
|
+
/**
|
|
575
|
+
* 提取姓名
|
|
576
|
+
* @param result
|
|
577
|
+
* @param maxLen 字符串占位 比这个数值短才识别为姓名 汉字2位英文1位
|
|
578
|
+
* @param firstName 最初切分地址识别到的name
|
|
579
|
+
*/
|
|
580
|
+
parseName: (t, { maxLen: s = 11, firstName: i } = {}) => {
|
|
581
|
+
if (!t.name || h.strLen(t.name) > 15) {
|
|
582
|
+
const e = t.details.split(" "), r = {
|
|
583
|
+
value: "",
|
|
584
|
+
index: -1
|
|
585
|
+
};
|
|
586
|
+
if (e.length > 1) {
|
|
587
|
+
let a = 0;
|
|
588
|
+
for (const n of e) {
|
|
589
|
+
if ((n && !r.value || n && h.strLen(r.value) > h.strLen(n) || i && n === i) && (r.value = n, r.index = a, i && n === i))
|
|
590
|
+
break;
|
|
591
|
+
a += 1;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
r.value && (t.name = r.value, e.splice(r.index, 1), t.details = e.join(" ").trim());
|
|
595
|
+
}
|
|
596
|
+
return t.name;
|
|
597
|
+
},
|
|
598
|
+
/**
|
|
599
|
+
* 清洗地址详情内的省市区
|
|
600
|
+
* @param result
|
|
601
|
+
*/
|
|
602
|
+
handlerDetail: (t) => {
|
|
603
|
+
if (t.details.length > 5) {
|
|
604
|
+
const s = ["province", "city", "area"];
|
|
605
|
+
for (const i of s)
|
|
606
|
+
t.details.indexOf(t[i]) === 0 && (t.details = t.details.substr(t[i].length));
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
};
|
|
610
|
+
return l.init(), {
|
|
611
|
+
parse(t, s = !1) {
|
|
612
|
+
return d.parse(t, s);
|
|
613
|
+
}
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
function I(b, _, v = !1) {
|
|
617
|
+
return R(_).parse(b, v);
|
|
618
|
+
}
|
|
619
|
+
export {
|
|
620
|
+
I as addressParse,
|
|
621
|
+
R as createAddressParser,
|
|
622
|
+
I as default
|
|
623
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as CryptoJS } from 'crypto-js';
|
|
2
|
+
/** 随机生成 AES 密钥 */
|
|
3
|
+
export declare function generateAesKey(): CryptoJS.lib.WordArray;
|
|
4
|
+
/** 将 WordArray 转为 Base64 字符串 */
|
|
5
|
+
export declare function encryptBase64(str: CryptoJS.lib.WordArray): string;
|
|
6
|
+
/** Base64 字符串转 WordArray */
|
|
7
|
+
export declare function decryptBase64(str: string): CryptoJS.lib.WordArray;
|
|
8
|
+
/** 使用 AES 密钥加密 */
|
|
9
|
+
export declare function encryptWithAes(message: string, aesKey: CryptoJS.lib.WordArray): string;
|
|
10
|
+
/** 使用 AES 密钥解密 */
|
|
11
|
+
export declare function decryptWithAes(message: string, aesKey: CryptoJS.lib.WordArray): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { C as t } from "../index-BealGwXp.js";
|
|
2
|
+
function o() {
|
|
3
|
+
const e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
4
|
+
let n = "";
|
|
5
|
+
for (let r = 0; r < 32; r++)
|
|
6
|
+
n += e.charAt(Math.floor(Math.random() * e.length));
|
|
7
|
+
return n;
|
|
8
|
+
}
|
|
9
|
+
function a() {
|
|
10
|
+
return t.enc.Utf8.parse(o());
|
|
11
|
+
}
|
|
12
|
+
function i(e) {
|
|
13
|
+
return t.enc.Base64.stringify(e);
|
|
14
|
+
}
|
|
15
|
+
function s(e) {
|
|
16
|
+
return t.enc.Base64.parse(e);
|
|
17
|
+
}
|
|
18
|
+
function d(e, n) {
|
|
19
|
+
return t.AES.encrypt(e, n, {
|
|
20
|
+
mode: t.mode.ECB,
|
|
21
|
+
padding: t.pad.Pkcs7
|
|
22
|
+
}).toString();
|
|
23
|
+
}
|
|
24
|
+
function p(e, n) {
|
|
25
|
+
return t.AES.decrypt(e, n, {
|
|
26
|
+
mode: t.mode.ECB,
|
|
27
|
+
padding: t.pad.Pkcs7
|
|
28
|
+
}).toString(t.enc.Utf8);
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
s as decryptBase64,
|
|
32
|
+
p as decryptWithAes,
|
|
33
|
+
i as encryptBase64,
|
|
34
|
+
d as encryptWithAes,
|
|
35
|
+
a as generateAesKey
|
|
36
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface StatusFilterOption {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string | number | boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface FilterOptions {
|
|
6
|
+
/** 筛选选项列表,用于 SaberSelect / USelect 的 items */
|
|
7
|
+
options: StatusFilterOption[];
|
|
8
|
+
/** value → label 映射,用于列表展示时反查文本 */
|
|
9
|
+
optionsMap: Record<string, string>;
|
|
10
|
+
/** value → SaberStatusType 映射,用于 SaberStatus 组件 */
|
|
11
|
+
statusTypeMap: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 从 'label:value[:statusType]' 格式的字符串数组生成筛选选项、反查 Map 与状态类型 Map
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* createFilterOptions(['启用:1:success', '禁用:0:danger'])
|
|
18
|
+
* // { options: [{ label: '启用', value: '1' }, ...], optionsMap: { '1': '启用', ... }, statusTypeMap: { '1': 'success', ... } }
|
|
19
|
+
*/
|
|
20
|
+
export declare function createFilterOptions(map: string[]): FilterOptions;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function r(a) {
|
|
2
|
+
const o = [], n = {}, p = {};
|
|
3
|
+
for (const i of a) {
|
|
4
|
+
const t = i.split(":"), c = t[0], s = t[1], e = t[2];
|
|
5
|
+
o.push({ label: c, value: s }), n[s] = c, e && (p[s] = e);
|
|
6
|
+
}
|
|
7
|
+
return { options: o, optionsMap: n, statusTypeMap: p };
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
r as createFilterOptions
|
|
11
|
+
};
|