jobsys-newbie
Version:
Enhanced component based on ant-design-vue
9,188 lines • 422 kB
JavaScript
import { defineComponent as Ce, reactive as Ue, watch as q, createVNode as m, mergeProps as H, ref as j, shallowRef as ht, onMounted as Xe, toRaw as Bc, createElementBlock as gt, openBlock as vt, watchEffect as oo, provide as Dn, inject as tn, onBeforeUnmount as zc, nextTick as cn, withModifiers as to, isVNode as Fe, computed as X, createTextVNode as he, getCurrentInstance as yt, unref as bt, getCurrentScope as wt, onScopeDispose as kt, toRef as co, readonly as Ct, customRef as ro, isRef as Uc, toRefs as Vc, resolveComponent as lo, TransitionGroup as xt, h as Q, Transition as Fc } from "vue";
import { Cascader as io, Button as te, Form as ga, message as fe, DatePicker as St, RangePicker as Et, TimePicker as Ot, TimeRangePicker as Pt, Input as Nn, Tag as ke, Select as Fn, TreeSelect as Hc, Spin as _t, InputNumber as Ha, Switch as va, RadioGroup as ya, CheckboxGroup as Dt, Upload as Kc, ImagePreviewGroup as Wc, Image as It, Modal as dn, Drawer as Yc, Space as Cn, Textarea as na, CheckableTag as Xc, Transfer as Qc, Tooltip as fn, TypographyText as Gc, Dropdown as so, Menu as uo, MenuItem as Mn, Card as mo, Row as wn, Col as nn, Checkbox as fo, Divider as xn, Table as Xn, Flex as Zc, TableSummaryRow as Jc, TableSummaryCell as qc, FormItemRest as _n, Popconfirm as ed, Rate as nd, Radio as Tt, FormItem as Ka, Affix as ad, Skeleton as od, List as td, InputPassword as cd, Empty as dd, Alert as No } from "ant-design-vue";
import { u as pn, a as Hn, b as rd, c as po, d as ho, S as ld, e as Oa, f as Mo, g as qe, h as ra, i as id, j as sd, k as ud, _ as md } from "./utils-B_EQDdSO.js";
import re from "dayjs";
import { isNull as Wa, isUndefined as oe, isString as se, isFunction as $, isNumber as de, debounce as fd, isArray as be, isEqual as Kn, map as jo, random as pd, pick as Ya, every as hn, isObject as Le, find as ie, findIndex as $t, concat as hd, isBoolean as la, cloneDeep as ve, orderBy as Pa, remove as gd, sum as vd, uniq as Lo } from "lodash-es";
import { PlusOutlined as At, PictureOutlined as Nt, CloudUploadOutlined as Ro, CloseOutlined as Bo, CompressOutlined as yd, ExpandOutlined as bd, MenuOutlined as wd, RiseOutlined as Mt, FallOutlined as jt, DeleteOutlined as Lt, DownOutlined as go, ShrinkOutlined as kd, ArrowsAltOutlined as Cd, ClearOutlined as xd, OrderedListOutlined as Sd, SearchOutlined as Ed, SyncOutlined as Od, FilePdfOutlined as Rt, RightOutlined as Pd, CheckCircleOutlined as _a, CheckSquareOutlined as Da, DownSquareOutlined as _d, SwitcherOutlined as Dd, FileImageOutlined as Id, EditOutlined as Td, FormOutlined as $d, CalendarOutlined as zo, ClockCircleOutlined as Uo, FieldBinaryOutlined as Ad, StarOutlined as Nd, NumberOutlined as Md, UserOutlined as jd, SmileFilled as Ld, MobileOutlined as Rd, MailOutlined as Bd, EnvironmentOutlined as zd, SmileTwoTone as Ud, DragOutlined as Vd } from "@ant-design/icons-vue";
import "axios";
const Fd = /* @__PURE__ */ JSON.parse('[{"code":"440000","name":"广东省","children":[{"code":"440100","name":"广州市","children":[{"code":"440103","name":"荔湾区"},{"code":"440104","name":"越秀区"},{"code":"440105","name":"海珠区"},{"code":"440106","name":"天河区"},{"code":"440111","name":"白云区"},{"code":"440112","name":"黄埔区"},{"code":"440113","name":"番禺区"},{"code":"440114","name":"花都区"},{"code":"440115","name":"南沙区"},{"code":"440117","name":"从化区"},{"code":"440118","name":"增城区"}]},{"code":"440200","name":"韶关市","children":[{"code":"440203","name":"武江区"},{"code":"440204","name":"浈江区"},{"code":"440205","name":"曲江区"},{"code":"440222","name":"始兴县"},{"code":"440224","name":"仁化县"},{"code":"440229","name":"翁源县"},{"code":"440232","name":"乳源瑶族自治县"},{"code":"440233","name":"新丰县"},{"code":"440281","name":"乐昌市"},{"code":"440282","name":"南雄市"}]},{"code":"440300","name":"深圳市","children":[{"code":"440303","name":"罗湖区"},{"code":"440304","name":"福田区"},{"code":"440305","name":"南山区"},{"code":"440306","name":"宝安区"},{"code":"440307","name":"龙岗区"},{"code":"440308","name":"盐田区"},{"code":"440309","name":"龙华区"},{"code":"440310","name":"坪山区"},{"code":"440311","name":"光明区"}]},{"code":"440400","name":"珠海市","children":[{"code":"440402","name":"香洲区"},{"code":"440403","name":"斗门区"},{"code":"440404","name":"金湾区"}]},{"code":"440500","name":"汕头市","children":[{"code":"440507","name":"龙湖区"},{"code":"440511","name":"金平区"},{"code":"440512","name":"濠江区"},{"code":"440513","name":"潮阳区"},{"code":"440514","name":"潮南区"},{"code":"440515","name":"澄海区"},{"code":"440523","name":"南澳县"}]},{"code":"440600","name":"佛山市","children":[{"code":"440604","name":"禅城区"},{"code":"440605","name":"南海区"},{"code":"440606","name":"顺德区"},{"code":"440607","name":"三水区"},{"code":"440608","name":"高明区"}]},{"code":"440700","name":"江门市","children":[{"code":"440703","name":"蓬江区"},{"code":"440704","name":"江海区"},{"code":"440705","name":"新会区"},{"code":"440781","name":"台山市"},{"code":"440783","name":"开平市"},{"code":"440784","name":"鹤山市"},{"code":"440785","name":"恩平市"}]},{"code":"440800","name":"湛江市","children":[{"code":"440802","name":"赤坎区"},{"code":"440803","name":"霞山区"},{"code":"440804","name":"坡头区"},{"code":"440811","name":"麻章区"},{"code":"440823","name":"遂溪县"},{"code":"440825","name":"徐闻县"},{"code":"440881","name":"廉江市"},{"code":"440882","name":"雷州市"},{"code":"440883","name":"吴川市"}]},{"code":"440900","name":"茂名市","children":[{"code":"440902","name":"茂南区"},{"code":"440904","name":"电白区"},{"code":"440981","name":"高州市"},{"code":"440982","name":"化州市"},{"code":"440983","name":"信宜市"}]},{"code":"441200","name":"肇庆市","children":[{"code":"441202","name":"端州区"},{"code":"441203","name":"鼎湖区"},{"code":"441204","name":"高要区"},{"code":"441223","name":"广宁县"},{"code":"441224","name":"怀集县"},{"code":"441225","name":"封开县"},{"code":"441226","name":"德庆县"},{"code":"441284","name":"四会市"}]},{"code":"441300","name":"惠州市","children":[{"code":"441302","name":"惠城区"},{"code":"441303","name":"惠阳区"},{"code":"441322","name":"博罗县"},{"code":"441323","name":"惠东县"},{"code":"441324","name":"龙门县"}]},{"code":"441400","name":"梅州市","children":[{"code":"441402","name":"梅江区"},{"code":"441403","name":"梅县区"},{"code":"441422","name":"大埔县"},{"code":"441423","name":"丰顺县"},{"code":"441424","name":"五华县"},{"code":"441426","name":"平远县"},{"code":"441427","name":"蕉岭县"},{"code":"441481","name":"兴宁市"}]},{"code":"441500","name":"汕尾市","children":[{"code":"441502","name":"城区"},{"code":"441521","name":"海丰县"},{"code":"441523","name":"陆河县"},{"code":"441581","name":"陆丰市"}]},{"code":"441600","name":"河源市","children":[{"code":"441602","name":"源城区"},{"code":"441621","name":"紫金县"},{"code":"441622","name":"龙川县"},{"code":"441623","name":"连平县"},{"code":"441624","name":"和平县"},{"code":"441625","name":"东源县"}]},{"code":"441700","name":"阳江市","children":[{"code":"441702","name":"江城区"},{"code":"441704","name":"阳东区"},{"code":"441721","name":"阳西县"},{"code":"441781","name":"阳春市"}]},{"code":"441800","name":"清远市","children":[{"code":"441802","name":"清城区"},{"code":"441803","name":"清新区"},{"code":"441821","name":"佛冈县"},{"code":"441823","name":"阳山县"},{"code":"441825","name":"连山壮族瑶族自治县"},{"code":"441826","name":"连南瑶族自治县"},{"code":"441881","name":"英德市"},{"code":"441882","name":"连州市"}]},{"code":"441900","name":"东莞市","children":[{"code":"441900003","name":"东城街道"},{"code":"441900004","name":"南城街道"},{"code":"441900005","name":"万江街道"},{"code":"441900006","name":"莞城街道"},{"code":"441900101","name":"石碣镇"},{"code":"441900102","name":"石龙镇"},{"code":"441900103","name":"茶山镇"},{"code":"441900104","name":"石排镇"},{"code":"441900105","name":"企石镇"},{"code":"441900106","name":"横沥镇"},{"code":"441900107","name":"桥头镇"},{"code":"441900108","name":"谢岗镇"},{"code":"441900109","name":"东坑镇"},{"code":"441900110","name":"常平镇"},{"code":"441900111","name":"寮步镇"},{"code":"441900112","name":"樟木头镇"},{"code":"441900113","name":"大朗镇"},{"code":"441900114","name":"黄江镇"},{"code":"441900115","name":"清溪镇"},{"code":"441900116","name":"塘厦镇"},{"code":"441900117","name":"凤岗镇"},{"code":"441900118","name":"大岭山镇"},{"code":"441900119","name":"长安镇"},{"code":"441900121","name":"虎门镇"},{"code":"441900122","name":"厚街镇"},{"code":"441900123","name":"沙田镇"},{"code":"441900124","name":"道滘镇"},{"code":"441900125","name":"洪梅镇"},{"code":"441900126","name":"麻涌镇"},{"code":"441900127","name":"望牛墩镇"},{"code":"441900128","name":"中堂镇"},{"code":"441900129","name":"高埗镇"},{"code":"441900401","name":"松山湖"},{"code":"441900402","name":"东莞港"},{"code":"441900403","name":"东莞生态园"},{"code":"441900404","name":"东莞滨海湾新区"}]},{"code":"442000","name":"中山市","children":[{"code":"442000001","name":"石岐街道"},{"code":"442000002","name":"东区街道"},{"code":"442000003","name":"中山港街道"},{"code":"442000004","name":"西区街道"},{"code":"442000005","name":"南区街道"},{"code":"442000006","name":"五桂山街道"},{"code":"442000007","name":"民众街道"},{"code":"442000008","name":"南朗街道"},{"code":"442000101","name":"黄圃镇"},{"code":"442000103","name":"东凤镇"},{"code":"442000105","name":"古镇镇"},{"code":"442000106","name":"沙溪镇"},{"code":"442000107","name":"坦洲镇"},{"code":"442000108","name":"港口镇"},{"code":"442000109","name":"三角镇"},{"code":"442000110","name":"横栏镇"},{"code":"442000111","name":"南头镇"},{"code":"442000112","name":"阜沙镇"},{"code":"442000114","name":"三乡镇"},{"code":"442000115","name":"板芙镇"},{"code":"442000116","name":"大涌镇"},{"code":"442000117","name":"神湾镇"},{"code":"442000118","name":"小榄镇"}]},{"code":"445100","name":"潮州市","children":[{"code":"445102","name":"湘桥区"},{"code":"445103","name":"潮安区"},{"code":"445122","name":"饶平县"}]},{"code":"445200","name":"揭阳市","children":[{"code":"445202","name":"榕城区"},{"code":"445203","name":"揭东区"},{"code":"445222","name":"揭西县"},{"code":"445224","name":"惠来县"},{"code":"445281","name":"普宁市"}]},{"code":"445300","name":"云浮市","children":[{"code":"445302","name":"云城区"},{"code":"445303","name":"云安区"},{"code":"445321","name":"新兴县"},{"code":"445322","name":"郁南县"},{"code":"445381","name":"罗定市"}]}]},{"code":"110000","name":"北京市","children":[{"code":"110100","name":"市辖区","children":[{"code":"110101","name":"东城区"},{"code":"110102","name":"西城区"},{"code":"110105","name":"朝阳区"},{"code":"110106","name":"丰台区"},{"code":"110107","name":"石景山区"},{"code":"110108","name":"海淀区"},{"code":"110109","name":"门头沟区"},{"code":"110111","name":"房山区"},{"code":"110112","name":"通州区"},{"code":"110113","name":"顺义区"},{"code":"110114","name":"昌平区"},{"code":"110115","name":"大兴区"},{"code":"110116","name":"怀柔区"},{"code":"110117","name":"平谷区"},{"code":"110118","name":"密云区"},{"code":"110119","name":"延庆区"}]}]},{"code":"120000","name":"天津市","children":[{"code":"120100","name":"市辖区","children":[{"code":"120101","name":"和平区"},{"code":"120102","name":"河东区"},{"code":"120103","name":"河西区"},{"code":"120104","name":"南开区"},{"code":"120105","name":"河北区"},{"code":"120106","name":"红桥区"},{"code":"120110","name":"东丽区"},{"code":"120111","name":"西青区"},{"code":"120112","name":"津南区"},{"code":"120113","name":"北辰区"},{"code":"120114","name":"武清区"},{"code":"120115","name":"宝坻区"},{"code":"120116","name":"滨海新区"},{"code":"120117","name":"宁河区"},{"code":"120118","name":"静海区"},{"code":"120119","name":"蓟州区"}]}]},{"code":"130000","name":"河北省","children":[{"code":"130100","name":"石家庄市","children":[{"code":"130102","name":"长安区"},{"code":"130104","name":"桥西区"},{"code":"130105","name":"新华区"},{"code":"130107","name":"井陉矿区"},{"code":"130108","name":"裕华区"},{"code":"130109","name":"藁城区"},{"code":"130110","name":"鹿泉区"},{"code":"130111","name":"栾城区"},{"code":"130121","name":"井陉县"},{"code":"130123","name":"正定县"},{"code":"130125","name":"行唐县"},{"code":"130126","name":"灵寿县"},{"code":"130127","name":"高邑县"},{"code":"130128","name":"深泽县"},{"code":"130129","name":"赞皇县"},{"code":"130130","name":"无极县"},{"code":"130131","name":"平山县"},{"code":"130132","name":"元氏县"},{"code":"130133","name":"赵县"},{"code":"130171","name":"石家庄高新技术产业开发区"},{"code":"130172","name":"石家庄循环化工园区"},{"code":"130181","name":"辛集市"},{"code":"130183","name":"晋州市"},{"code":"130184","name":"新乐市"}]},{"code":"130200","name":"唐山市","children":[{"code":"130202","name":"路南区"},{"code":"130203","name":"路北区"},{"code":"130204","name":"古冶区"},{"code":"130205","name":"开平区"},{"code":"130207","name":"丰南区"},{"code":"130208","name":"丰润区"},{"code":"130209","name":"曹妃甸区"},{"code":"130224","name":"滦南县"},{"code":"130225","name":"乐亭县"},{"code":"130227","name":"迁西县"},{"code":"130229","name":"玉田县"},{"code":"130271","name":"河北唐山芦台经济开发区"},{"code":"130272","name":"唐山市汉沽管理区"},{"code":"130273","name":"唐山高新技术产业开发区"},{"code":"130274","name":"河北唐山海港经济开发区"},{"code":"130281","name":"遵化市"},{"code":"130283","name":"迁安市"},{"code":"130284","name":"滦州市"}]},{"code":"130300","name":"秦皇岛市","children":[{"code":"130302","name":"海港区"},{"code":"130303","name":"山海关区"},{"code":"130304","name":"北戴河区"},{"code":"130306","name":"抚宁区"},{"code":"130321","name":"青龙满族自治县"},{"code":"130322","name":"昌黎县"},{"code":"130324","name":"卢龙县"},{"code":"130371","name":"秦皇岛市经济技术开发区"},{"code":"130372","name":"北戴河新区"}]},{"code":"130400","name":"邯郸市","children":[{"code":"130402","name":"邯山区"},{"code":"130403","name":"丛台区"},{"code":"130404","name":"复兴区"},{"code":"130406","name":"峰峰矿区"},{"code":"130407","name":"肥乡区"},{"code":"130408","name":"永年区"},{"code":"130423","name":"临漳县"},{"code":"130424","name":"成安县"},{"code":"130425","name":"大名县"},{"code":"130426","name":"涉县"},{"code":"130427","name":"磁县"},{"code":"130430","name":"邱县"},{"code":"130431","name":"鸡泽县"},{"code":"130432","name":"广平县"},{"code":"130433","name":"馆陶县"},{"code":"130434","name":"魏县"},{"code":"130435","name":"曲周县"},{"code":"130471","name":"邯郸经济技术开发区"},{"code":"130473","name":"邯郸冀南新区"},{"code":"130481","name":"武安市"}]},{"code":"130500","name":"邢台市","children":[{"code":"130502","name":"襄都区"},{"code":"130503","name":"信都区"},{"code":"130505","name":"任泽区"},{"code":"130506","name":"南和区"},{"code":"130522","name":"临城县"},{"code":"130523","name":"内丘县"},{"code":"130524","name":"柏乡县"},{"code":"130525","name":"隆尧县"},{"code":"130528","name":"宁晋县"},{"code":"130529","name":"巨鹿县"},{"code":"130530","name":"新河县"},{"code":"130531","name":"广宗县"},{"code":"130532","name":"平乡县"},{"code":"130533","name":"威县"},{"code":"130534","name":"清河县"},{"code":"130535","name":"临西县"},{"code":"130571","name":"河北邢台经济开发区"},{"code":"130581","name":"南宫市"},{"code":"130582","name":"沙河市"}]},{"code":"130600","name":"保定市","children":[{"code":"130602","name":"竞秀区"},{"code":"130606","name":"莲池区"},{"code":"130607","name":"满城区"},{"code":"130608","name":"清苑区"},{"code":"130609","name":"徐水区"},{"code":"130623","name":"涞水县"},{"code":"130624","name":"阜平县"},{"code":"130626","name":"定兴县"},{"code":"130627","name":"唐县"},{"code":"130628","name":"高阳县"},{"code":"130629","name":"容城县"},{"code":"130630","name":"涞源县"},{"code":"130631","name":"望都县"},{"code":"130632","name":"安新县"},{"code":"130633","name":"易县"},{"code":"130634","name":"曲阳县"},{"code":"130635","name":"蠡县"},{"code":"130636","name":"顺平县"},{"code":"130637","name":"博野县"},{"code":"130638","name":"雄县"},{"code":"130671","name":"保定高新技术产业开发区"},{"code":"130672","name":"保定白沟新城"},{"code":"130681","name":"涿州市"},{"code":"130682","name":"定州市"},{"code":"130683","name":"安国市"},{"code":"130684","name":"高碑店市"}]},{"code":"130700","name":"张家口市","children":[{"code":"130702","name":"桥东区"},{"code":"130703","name":"桥西区"},{"code":"130705","name":"宣化区"},{"code":"130706","name":"下花园区"},{"code":"130708","name":"万全区"},{"code":"130709","name":"崇礼区"},{"code":"130722","name":"张北县"},{"code":"130723","name":"康保县"},{"code":"130724","name":"沽源县"},{"code":"130725","name":"尚义县"},{"code":"130726","name":"蔚县"},{"code":"130727","name":"阳原县"},{"code":"130728","name":"怀安县"},{"code":"130730","name":"怀来县"},{"code":"130731","name":"涿鹿县"},{"code":"130732","name":"赤城县"},{"code":"130771","name":"张家口经济开发区"},{"code":"130772","name":"张家口市察北管理区"},{"code":"130773","name":"张家口市塞北管理区"}]},{"code":"130800","name":"承德市","children":[{"code":"130802","name":"双桥区"},{"code":"130803","name":"双滦区"},{"code":"130804","name":"鹰手营子矿区"},{"code":"130821","name":"承德县"},{"code":"130822","name":"兴隆县"},{"code":"130824","name":"滦平县"},{"code":"130825","name":"隆化县"},{"code":"130826","name":"丰宁满族自治县"},{"code":"130827","name":"宽城满族自治县"},{"code":"130828","name":"围场满族蒙古族自治县"},{"code":"130871","name":"承德高新技术产业开发区"},{"code":"130881","name":"平泉市"}]},{"code":"130900","name":"沧州市","children":[{"code":"130902","name":"新华区"},{"code":"130903","name":"运河区"},{"code":"130921","name":"沧县"},{"code":"130922","name":"青县"},{"code":"130923","name":"东光县"},{"code":"130924","name":"海兴县"},{"code":"130925","name":"盐山县"},{"code":"130926","name":"肃宁县"},{"code":"130927","name":"南皮县"},{"code":"130928","name":"吴桥县"},{"code":"130929","name":"献县"},{"code":"130930","name":"孟村回族自治县"},{"code":"130971","name":"河北沧州经济开发区"},{"code":"130972","name":"沧州高新技术产业开发区"},{"code":"130973","name":"沧州渤海新区"},{"code":"130981","name":"泊头市"},{"code":"130982","name":"任丘市"},{"code":"130983","name":"黄骅市"},{"code":"130984","name":"河间市"}]},{"code":"131000","name":"廊坊市","children":[{"code":"131002","name":"安次区"},{"code":"131003","name":"广阳区"},{"code":"131022","name":"固安县"},{"code":"131023","name":"永清县"},{"code":"131024","name":"香河县"},{"code":"131025","name":"大城县"},{"code":"131026","name":"文安县"},{"code":"131028","name":"大厂回族自治县"},{"code":"131071","name":"廊坊经济技术开发区"},{"code":"131081","name":"霸州市"},{"code":"131082","name":"三河市"}]},{"code":"131100","name":"衡水市","children":[{"code":"131102","name":"桃城区"},{"code":"131103","name":"冀州区"},{"code":"131121","name":"枣强县"},{"code":"131122","name":"武邑县"},{"code":"131123","name":"武强县"},{"code":"131124","name":"饶阳县"},{"code":"131125","name":"安平县"},{"code":"131126","name":"故城县"},{"code":"131127","name":"景县"},{"code":"131128","name":"阜城县"},{"code":"131171","name":"河北衡水高新技术产业开发区"},{"code":"131172","name":"衡水滨湖新区"},{"code":"131182","name":"深州市"}]}]},{"code":"140000","name":"山西省","children":[{"code":"140100","name":"太原市","children":[{"code":"140105","name":"小店区"},{"code":"140106","name":"迎泽区"},{"code":"140107","name":"杏花岭区"},{"code":"140108","name":"尖草坪区"},{"code":"140109","name":"万柏林区"},{"code":"140110","name":"晋源区"},{"code":"140121","name":"清徐县"},{"code":"140122","name":"阳曲县"},{"code":"140123","name":"娄烦县"},{"code":"140171","name":"山西转型综合改革示范区"},{"code":"140181","name":"古交市"}]},{"code":"140200","name":"大同市","children":[{"code":"140212","name":"新荣区"},{"code":"140213","name":"平城区"},{"code":"140214","name":"云冈区"},{"code":"140215","name":"云州区"},{"code":"140221","name":"阳高县"},{"code":"140222","name":"天镇县"},{"code":"140223","name":"广灵县"},{"code":"140224","name":"灵丘县"},{"code":"140225","name":"浑源县"},{"code":"140226","name":"左云县"},{"code":"140271","name":"山西大同经济开发区"}]},{"code":"140300","name":"阳泉市","children":[{"code":"140302","name":"城区"},{"code":"140303","name":"矿区"},{"code":"140311","name":"郊区"},{"code":"140321","name":"平定县"},{"code":"140322","name":"盂县"}]},{"code":"140400","name":"长治市","children":[{"code":"140403","name":"潞州区"},{"code":"140404","name":"上党区"},{"code":"140405","name":"屯留区"},{"code":"140406","name":"潞城区"},{"code":"140423","name":"襄垣县"},{"code":"140425","name":"平顺县"},{"code":"140426","name":"黎城县"},{"code":"140427","name":"壶关县"},{"code":"140428","name":"长子县"},{"code":"140429","name":"武乡县"},{"code":"140430","name":"沁县"},{"code":"140431","name":"沁源县"},{"code":"140471","name":"山西长治高新技术产业园区"}]},{"code":"140500","name":"晋城市","children":[{"code":"140502","name":"城区"},{"code":"140521","name":"沁水县"},{"code":"140522","name":"阳城县"},{"code":"140524","name":"陵川县"},{"code":"140525","name":"泽州县"},{"code":"140581","name":"高平市"}]},{"code":"140600","name":"朔州市","children":[{"code":"140602","name":"朔城区"},{"code":"140603","name":"平鲁区"},{"code":"140621","name":"山阴县"},{"code":"140622","name":"应县"},{"code":"140623","name":"右玉县"},{"code":"140671","name":"山西朔州经济开发区"},{"code":"140681","name":"怀仁市"}]},{"code":"140700","name":"晋中市","children":[{"code":"140702","name":"榆次区"},{"code":"140703","name":"太谷区"},{"code":"140721","name":"榆社县"},{"code":"140722","name":"左权县"},{"code":"140723","name":"和顺县"},{"code":"140724","name":"昔阳县"},{"code":"140725","name":"寿阳县"},{"code":"140727","name":"祁县"},{"code":"140728","name":"平遥县"},{"code":"140729","name":"灵石县"},{"code":"140781","name":"介休市"}]},{"code":"140800","name":"运城市","children":[{"code":"140802","name":"盐湖区"},{"code":"140821","name":"临猗县"},{"code":"140822","name":"万荣县"},{"code":"140823","name":"闻喜县"},{"code":"140824","name":"稷山县"},{"code":"140825","name":"新绛县"},{"code":"140826","name":"绛县"},{"code":"140827","name":"垣曲县"},{"code":"140828","name":"夏县"},{"code":"140829","name":"平陆县"},{"code":"140830","name":"芮城县"},{"code":"140881","name":"永济市"},{"code":"140882","name":"河津市"}]},{"code":"140900","name":"忻州市","children":[{"code":"140902","name":"忻府区"},{"code":"140921","name":"定襄县"},{"code":"140922","name":"五台县"},{"code":"140923","name":"代县"},{"code":"140924","name":"繁峙县"},{"code":"140925","name":"宁武县"},{"code":"140926","name":"静乐县"},{"code":"140927","name":"神池县"},{"code":"140928","name":"五寨县"},{"code":"140929","name":"岢岚县"},{"code":"140930","name":"河曲县"},{"code":"140931","name":"保德县"},{"code":"140932","name":"偏关县"},{"code":"140971","name":"五台山风景名胜区"},{"code":"140981","name":"原平市"}]},{"code":"141000","name":"临汾市","children":[{"code":"141002","name":"尧都区"},{"code":"141021","name":"曲沃县"},{"code":"141022","name":"翼城县"},{"code":"141023","name":"襄汾县"},{"code":"141024","name":"洪洞县"},{"code":"141025","name":"古县"},{"code":"141026","name":"安泽县"},{"code":"141027","name":"浮山县"},{"code":"141028","name":"吉县"},{"code":"141029","name":"乡宁县"},{"code":"141030","name":"大宁县"},{"code":"141031","name":"隰县"},{"code":"141032","name":"永和县"},{"code":"141033","name":"蒲县"},{"code":"141034","name":"汾西县"},{"code":"141081","name":"侯马市"},{"code":"141082","name":"霍州市"}]},{"code":"141100","name":"吕梁市","children":[{"code":"141102","name":"离石区"},{"code":"141121","name":"文水县"},{"code":"141122","name":"交城县"},{"code":"141123","name":"兴县"},{"code":"141124","name":"临县"},{"code":"141125","name":"柳林县"},{"code":"141126","name":"石楼县"},{"code":"141127","name":"岚县"},{"code":"141128","name":"方山县"},{"code":"141129","name":"中阳县"},{"code":"141130","name":"交口县"},{"code":"141181","name":"孝义市"},{"code":"141182","name":"汾阳市"}]}]},{"code":"150000","name":"内蒙古自治区","children":[{"code":"150100","name":"呼和浩特市","children":[{"code":"150102","name":"新城区"},{"code":"150103","name":"回民区"},{"code":"150104","name":"玉泉区"},{"code":"150105","name":"赛罕区"},{"code":"150121","name":"土默特左旗"},{"code":"150122","name":"托克托县"},{"code":"150123","name":"和林格尔县"},{"code":"150124","name":"清水河县"},{"code":"150125","name":"武川县"},{"code":"150172","name":"呼和浩特经济技术开发区"}]},{"code":"150200","name":"包头市","children":[{"code":"150202","name":"东河区"},{"code":"150203","name":"昆都仑区"},{"code":"150204","name":"青山区"},{"code":"150205","name":"石拐区"},{"code":"150206","name":"白云鄂博矿区"},{"code":"150207","name":"九原区"},{"code":"150221","name":"土默特右旗"},{"code":"150222","name":"固阳县"},{"code":"150223","name":"达尔罕茂明安联合旗"},{"code":"150271","name":"包头稀土高新技术产业开发区"}]},{"code":"150300","name":"乌海市","children":[{"code":"150302","name":"海勃湾区"},{"code":"150303","name":"海南区"},{"code":"150304","name":"乌达区"}]},{"code":"150400","name":"赤峰市","children":[{"code":"150402","name":"红山区"},{"code":"150403","name":"元宝山区"},{"code":"150404","name":"松山区"},{"code":"150421","name":"阿鲁科尔沁旗"},{"code":"150422","name":"巴林左旗"},{"code":"150423","name":"巴林右旗"},{"code":"150424","name":"林西县"},{"code":"150425","name":"克什克腾旗"},{"code":"150426","name":"翁牛特旗"},{"code":"150428","name":"喀喇沁旗"},{"code":"150429","name":"宁城县"},{"code":"150430","name":"敖汉旗"}]},{"code":"150500","name":"通辽市","children":[{"code":"150502","name":"科尔沁区"},{"code":"150521","name":"科尔沁左翼中旗"},{"code":"150522","name":"科尔沁左翼后旗"},{"code":"150523","name":"开鲁县"},{"code":"150524","name":"库伦旗"},{"code":"150525","name":"奈曼旗"},{"code":"150526","name":"扎鲁特旗"},{"code":"150571","name":"通辽经济技术开发区"},{"code":"150581","name":"霍林郭勒市"}]},{"code":"150600","name":"鄂尔多斯市","children":[{"code":"150602","name":"东胜区"},{"code":"150603","name":"康巴什区"},{"code":"150621","name":"达拉特旗"},{"code":"150622","name":"准格尔旗"},{"code":"150623","name":"鄂托克前旗"},{"code":"150624","name":"鄂托克旗"},{"code":"150625","name":"杭锦旗"},{"code":"150626","name":"乌审旗"},{"code":"150627","name":"伊金霍洛旗"}]},{"code":"150700","name":"呼伦贝尔市","children":[{"code":"150702","name":"海拉尔区"},{"code":"150703","name":"扎赉诺尔区"},{"code":"150721","name":"阿荣旗"},{"code":"150722","name":"莫力达瓦达斡尔族自治旗"},{"code":"150723","name":"鄂伦春自治旗"},{"code":"150724","name":"鄂温克族自治旗"},{"code":"150725","name":"陈巴尔虎旗"},{"code":"150726","name":"新巴尔虎左旗"},{"code":"150727","name":"新巴尔虎右旗"},{"code":"150781","name":"满洲里市"},{"code":"150782","name":"牙克石市"},{"code":"150783","name":"扎兰屯市"},{"code":"150784","name":"额尔古纳市"},{"code":"150785","name":"根河市"}]},{"code":"150800","name":"巴彦淖尔市","children":[{"code":"150802","name":"临河区"},{"code":"150821","name":"五原县"},{"code":"150822","name":"磴口县"},{"code":"150823","name":"乌拉特前旗"},{"code":"150824","name":"乌拉特中旗"},{"code":"150825","name":"乌拉特后旗"},{"code":"150826","name":"杭锦后旗"}]},{"code":"150900","name":"乌兰察布市","children":[{"code":"150902","name":"集宁区"},{"code":"150921","name":"卓资县"},{"code":"150922","name":"化德县"},{"code":"150923","name":"商都县"},{"code":"150924","name":"兴和县"},{"code":"150925","name":"凉城县"},{"code":"150926","name":"察哈尔右翼前旗"},{"code":"150927","name":"察哈尔右翼中旗"},{"code":"150928","name":"察哈尔右翼后旗"},{"code":"150929","name":"四子王旗"},{"code":"150981","name":"丰镇市"}]},{"code":"152200","name":"兴安盟","children":[{"code":"152201","name":"乌兰浩特市"},{"code":"152202","name":"阿尔山市"},{"code":"152221","name":"科尔沁右翼前旗"},{"code":"152222","name":"科尔沁右翼中旗"},{"code":"152223","name":"扎赉特旗"},{"code":"152224","name":"突泉县"}]},{"code":"152500","name":"锡林郭勒盟","children":[{"code":"152501","name":"二连浩特市"},{"code":"152502","name":"锡林浩特市"},{"code":"152522","name":"阿巴嘎旗"},{"code":"152523","name":"苏尼特左旗"},{"code":"152524","name":"苏尼特右旗"},{"code":"152525","name":"东乌珠穆沁旗"},{"code":"152526","name":"西乌珠穆沁旗"},{"code":"152527","name":"太仆寺旗"},{"code":"152528","name":"镶黄旗"},{"code":"152529","name":"正镶白旗"},{"code":"152530","name":"正蓝旗"},{"code":"152531","name":"多伦县"},{"code":"152571","name":"乌拉盖管委会"}]},{"code":"152900","name":"阿拉善盟","children":[{"code":"152921","name":"阿拉善左旗"},{"code":"152922","name":"阿拉善右旗"},{"code":"152923","name":"额济纳旗"},{"code":"152971","name":"内蒙古阿拉善高新技术产业开发区"}]}]},{"code":"210000","name":"辽宁省","children":[{"code":"210100","name":"沈阳市","children":[{"code":"210102","name":"和平区"},{"code":"210103","name":"沈河区"},{"code":"210104","name":"大东区"},{"code":"210105","name":"皇姑区"},{"code":"210106","name":"铁西区"},{"code":"210111","name":"苏家屯区"},{"code":"210112","name":"浑南区"},{"code":"210113","name":"沈北新区"},{"code":"210114","name":"于洪区"},{"code":"210115","name":"辽中区"},{"code":"210123","name":"康平县"},{"code":"210124","name":"法库县"},{"code":"210181","name":"新民市"}]},{"code":"210200","name":"大连市","children":[{"code":"210202","name":"中山区"},{"code":"210203","name":"西岗区"},{"code":"210204","name":"沙河口区"},{"code":"210211","name":"甘井子区"},{"code":"210212","name":"旅顺口区"},{"code":"210213","name":"金州区"},{"code":"210214","name":"普兰店区"},{"code":"210224","name":"长海县"},{"code":"210281","name":"瓦房店市"},{"code":"210283","name":"庄河市"}]},{"code":"210300","name":"鞍山市","children":[{"code":"210302","name":"铁东区"},{"code":"210303","name":"铁西区"},{"code":"210304","name":"立山区"},{"code":"210311","name":"千山区"},{"code":"210321","name":"台安县"},{"code":"210323","name":"岫岩满族自治县"},{"code":"210381","name":"海城市"}]},{"code":"210400","name":"抚顺市","children":[{"code":"210402","name":"新抚区"},{"code":"210403","name":"东洲区"},{"code":"210404","name":"望花区"},{"code":"210411","name":"顺城区"},{"code":"210421","name":"抚顺县"},{"code":"210422","name":"新宾满族自治县"},{"code":"210423","name":"清原满族自治县"}]},{"code":"210500","name":"本溪市","children":[{"code":"210502","name":"平山区"},{"code":"210503","name":"溪湖区"},{"code":"210504","name":"明山区"},{"code":"210505","name":"南芬区"},{"code":"210521","name":"本溪满族自治县"},{"code":"210522","name":"桓仁满族自治县"}]},{"code":"210600","name":"丹东市","children":[{"code":"210602","name":"元宝区"},{"code":"210603","name":"振兴区"},{"code":"210604","name":"振安区"},{"code":"210624","name":"宽甸满族自治县"},{"code":"210681","name":"东港市"},{"code":"210682","name":"凤城市"}]},{"code":"210700","name":"锦州市","children":[{"code":"210702","name":"古塔区"},{"code":"210703","name":"凌河区"},{"code":"210711","name":"太和区"},{"code":"210726","name":"黑山县"},{"code":"210727","name":"义县"},{"code":"210781","name":"凌海市"},{"code":"210782","name":"北镇市"}]},{"code":"210800","name":"营口市","children":[{"code":"210802","name":"站前区"},{"code":"210803","name":"西市区"},{"code":"210804","name":"鲅鱼圈区"},{"code":"210811","name":"老边区"},{"code":"210881","name":"盖州市"},{"code":"210882","name":"大石桥市"}]},{"code":"210900","name":"阜新市","children":[{"code":"210902","name":"海州区"},{"code":"210903","name":"新邱区"},{"code":"210904","name":"太平区"},{"code":"210905","name":"清河门区"},{"code":"210911","name":"细河区"},{"code":"210921","name":"阜新蒙古族自治县"},{"code":"210922","name":"彰武县"}]},{"code":"211000","name":"辽阳市","children":[{"code":"211002","name":"白塔区"},{"code":"211003","name":"文圣区"},{"code":"211004","name":"宏伟区"},{"code":"211005","name":"弓长岭区"},{"code":"211011","name":"太子河区"},{"code":"211021","name":"辽阳县"},{"code":"211081","name":"灯塔市"}]},{"code":"211100","name":"盘锦市","children":[{"code":"211102","name":"双台子区"},{"code":"211103","name":"兴隆台区"},{"code":"211104","name":"大洼区"},{"code":"211122","name":"盘山县"}]},{"code":"211200","name":"铁岭市","children":[{"code":"211202","name":"银州区"},{"code":"211204","name":"清河区"},{"code":"211221","name":"铁岭县"},{"code":"211223","name":"西丰县"},{"code":"211224","name":"昌图县"},{"code":"211281","name":"调兵山市"},{"code":"211282","name":"开原市"}]},{"code":"211300","name":"朝阳市","children":[{"code":"211302","name":"双塔区"},{"code":"211303","name":"龙城区"},{"code":"211321","name":"朝阳县"},{"code":"211322","name":"建平县"},{"code":"211324","name":"喀喇沁左翼蒙古族自治县"},{"code":"211381","name":"北票市"},{"code":"211382","name":"凌源市"}]},{"code":"211400","name":"葫芦岛市","children":[{"code":"211402","name":"连山区"},{"code":"211403","name":"龙港区"},{"code":"211404","name":"南票区"},{"code":"211421","name":"绥中县"},{"code":"211422","name":"建昌县"},{"code":"211481","name":"兴城市"}]}]},{"code":"220000","name":"吉林省","children":[{"code":"220100","name":"长春市","children":[{"code":"220102","name":"南关区"},{"code":"220103","name":"宽城区"},{"code":"220104","name":"朝阳区"},{"code":"220105","name":"二道区"},{"code":"220106","name":"绿园区"},{"code":"220112","name":"双阳区"},{"code":"220113","name":"九台区"},{"code":"220122","name":"农安县"},{"code":"220171","name":"长春经济技术开发区"},{"code":"220172","name":"长春净月高新技术产业开发区"},{"code":"220173","name":"长春高新技术产业开发区"},{"code":"220174","name":"长春汽车经济技术开发区"},{"code":"220182","name":"榆树市"},{"code":"220183","name":"德惠市"},{"code":"220184","name":"公主岭市"}]},{"code":"220200","name":"吉林市","children":[{"code":"220202","name":"昌邑区"},{"code":"220203","name":"龙潭区"},{"code":"220204","name":"船营区"},{"code":"220211","name":"丰满区"},{"code":"220221","name":"永吉县"},{"code":"220271","name":"吉林经济开发区"},{"code":"220272","name":"吉林高新技术产业开发区"},{"code":"220273","name":"吉林中国新加坡食品区"},{"code":"220281","name":"蛟河市"},{"code":"220282","name":"桦甸市"},{"code":"220283","name":"舒兰市"},{"code":"220284","name":"磐石市"}]},{"code":"220300","name":"四平市","children":[{"code":"220302","name":"铁西区"},{"code":"220303","name":"铁东区"},{"code":"220322","name":"梨树县"},{"code":"220323","name":"伊通满族自治县"},{"code":"220382","name":"双辽市"}]},{"code":"220400","name":"辽源市","children":[{"code":"220402","name":"龙山区"},{"code":"220403","name":"西安区"},{"code":"220421","name":"东丰县"},{"code":"220422","name":"东辽县"}]},{"code":"220500","name":"通化市","children":[{"code":"220502","name":"东昌区"},{"code":"220503","name":"二道江区"},{"code":"220521","name":"通化县"},{"code":"220523","name":"辉南县"},{"code":"220524","name":"柳河县"},{"code":"220581","name":"梅河口市"},{"code":"220582","name":"集安市"}]},{"code":"220600","name":"白山市","children":[{"code":"220602","name":"浑江区"},{"code":"220605","name":"江源区"},{"code":"220621","name":"抚松县"},{"code":"220622","name":"靖宇县"},{"code":"220623","name":"长白朝鲜族自治县"},{"code":"220681","name":"临江市"}]},{"code":"220700","name":"松原市","children":[{"code":"220702","name":"宁江区"},{"code":"220721","name":"前郭尔罗斯蒙古族自治县"},{"code":"220722","name":"长岭县"},{"code":"220723","name":"乾安县"},{"code":"220771","name":"吉林松原经济开发区"},{"code":"220781","name":"扶余市"}]},{"code":"220800","name":"白城市","children":[{"code":"220802","name":"洮北区"},{"code":"220821","name":"镇赉县"},{"code":"220822","name":"通榆县"},{"code":"220871","name":"吉林白城经济开发区"},{"code":"220881","name":"洮南市"},{"code":"220882","name":"大安市"}]},{"code":"222400","name":"延边朝鲜族自治州","children":[{"code":"222401","name":"延吉市"},{"code":"222402","name":"图们市"},{"code":"222403","name":"敦化市"},{"code":"222404","name":"珲春市"},{"code":"222405","name":"龙井市"},{"code":"222406","name":"和龙市"},{"code":"222424","name":"汪清县"},{"code":"222426","name":"安图县"}]}]},{"code":"230000","name":"黑龙江省","children":[{"code":"230100","name":"哈尔滨市","children":[{"code":"230102","name":"道里区"},{"code":"230103","name":"南岗区"},{"code":"230104","name":"道外区"},{"code":"230108","name":"平房区"},{"code":"230109","name":"松北区"},{"code":"230110","name":"香坊区"},{"code":"230111","name":"呼兰区"},{"code":"230112","name":"阿城区"},{"code":"230113","name":"双城区"},{"code":"230123","name":"依兰县"},{"code":"230124","name":"方正县"},{"code":"230125","name":"宾县"},{"code":"230126","name":"巴彦县"},{"code":"230127","name":"木兰县"},{"code":"230128","name":"通河县"},{"code":"230129","name":"延寿县"},{"code":"230183","name":"尚志市"},{"code":"230184","name":"五常市"}]},{"code":"230200","name":"齐齐哈尔市","children":[{"code":"230202","name":"龙沙区"},{"code":"230203","name":"建华区"},{"code":"230204","name":"铁锋区"},{"code":"230205","name":"昂昂溪区"},{"code":"230206","name":"富拉尔基区"},{"code":"230207","name":"碾子山区"},{"code":"230208","name":"梅里斯达斡尔族区"},{"code":"230221","name":"龙江县"},{"code":"230223","name":"依安县"},{"code":"230224","name":"泰来县"},{"code":"230225","name":"甘南县"},{"code":"230227","name":"富裕县"},{"code":"230229","name":"克山县"},{"code":"230230","name":"克东县"},{"code":"230231","name":"拜泉县"},{"code":"230281","name":"讷河市"}]},{"code":"230300","name":"鸡西市","children":[{"code":"230302","name":"鸡冠区"},{"code":"230303","name":"恒山区"},{"code":"230304","name":"滴道区"},{"code":"230305","name":"梨树区"},{"code":"230306","name":"城子河区"},{"code":"230307","name":"麻山区"},{"code":"230321","name":"鸡东县"},{"code":"230381","name":"虎林市"},{"code":"230382","name":"密山市"}]},{"code":"230400","name":"鹤岗市","children":[{"code":"230402","name":"向阳区"},{"code":"230403","name":"工农区"},{"code":"230404","name":"南山区"},{"code":"230405","name":"兴安区"},{"code":"230406","name":"东山区"},{"code":"230407","name":"兴山区"},{"code":"230421","name":"萝北县"},{"code":"230422","name":"绥滨县"}]},{"code":"230500","name":"双鸭山市","children":[{"code":"230502","name":"尖山区"},{"code":"230503","name":"岭东区"},{"code":"230505","name":"四方台区"},{"code":"230506","name":"宝山区"},{"code":"230521","name":"集贤县"},{"code":"230522","name":"友谊县"},{"code":"230523","name":"宝清县"},{"code":"230524","name":"饶河县"}]},{"code":"230600","name":"大庆市","children":[{"code":"230602","name":"萨尔图区"},{"code":"230603","name":"龙凤区"},{"code":"230604","name":"让胡路区"},{"code":"230605","name":"红岗区"},{"code":"230606","name":"大同区"},{"code":"230621","name":"肇州县"},{"code":"230622","name":"肇源县"},{"code":"230623","name":"林甸县"},{"code":"230624","name":"杜尔伯特蒙古族自治县"},{"code":"230671","name":"大庆高新技术产业开发区"}]},{"code":"230700","name":"伊春市","children":[{"code":"230717","name":"伊美区"},{"code":"230718","name":"乌翠区"},{"code":"230719","name":"友好区"},{"code":"230722","name":"嘉荫县"},{"code":"230723","name":"汤旺县"},{"code":"230724","name":"丰林县"},{"code":"230725","name":"大箐山县"},{"code":"230726","name":"南岔县"},{"code":"230751","name":"金林区"},{"code":"230781","name":"铁力市"}]},{"code":"230800","name":"佳木斯市","children":[{"code":"230803","name":"向阳区"},{"code":"230804","name":"前进区"},{"code":"230805","name":"东风区"},{"code":"230811","name":"郊区"},{"code":"230822","name":"桦南县"},{"code":"230826","name":"桦川县"},{"code":"230828","name":"汤原县"},{"code":"230881","name":"同江市"},{"code":"230882","name":"富锦市"},{"code":"230883","name":"抚远市"}]},{"code":"230900","name":"七台河市","children":[{"code":"230902","name":"新兴区"},{"code":"230903","name":"桃山区"},{"code":"230904","name":"茄子河区"},{"code":"230921","name":"勃利县"}]},{"code":"231000","name":"牡丹江市","children":[{"code":"231002","name":"东安区"},{"code":"231003","name":"阳明区"},{"code":"231004","name":"爱民区"},{"code":"231005","name":"西安区"},{"code":"231025","name":"林口县"},{"code":"231071","name":"牡丹江经济技术开发区"},{"code":"231081","name":"绥芬河市"},{"code":"231083","name":"海林市"},{"code":"231084","name":"宁安市"},{"code":"231085","name":"穆棱市"},{"code":"231086","name":"东宁市"}]},{"code":"231100","name":"黑河市","children":[{"code":"231102","name":"爱辉区"},{"code":"231123","name":"逊克县"},{"code":"231124","name":"孙吴县"},{"code":"231181","name":"北安市"},{"code":"231182","name":"五大连池市"},{"code":"231183","name":"嫩江市"}]},{"code":"231200","name":"绥化市","children":[{"code":"231202","name":"北林区"},{"code":"231221","name":"望奎县"},{"code":"231222","name":"兰西县"},{"code":"231223","name":"青冈县"},{"code":"231224","name":"庆安县"},{"code":"231225","name":"明水县"},{"code":"231226","name":"绥棱县"},{"code":"231281","name":"安达市"},{"code":"231282","name":"肇东市"},{"code":"231283","name":"海伦市"}]},{"code":"232700","name":"大兴安岭地区","children":[{"code":"232701","name":"漠河市"},{"code":"232721","name":"呼玛县"},{"code":"232722","name":"塔河县"},{"code":"232761","name":"加格达奇区"},{"code":"232762","name":"松岭区"},{"code":"232763","name":"新林区"},{"code":"232764","name":"呼中区"}]}]},{"code":"310000","name":"上海市","children":[{"code":"310100","name":"市辖区","children":[{"code":"310101","name":"黄浦区"},{"code":"310104","name":"徐汇区"},{"code":"310105","name":"长宁区"},{"code":"310106","name":"静安区"},{"code":"310107","name":"普陀区"},{"code":"310109","name":"虹口区"},{"code":"310110","name":"杨浦区"},{"code":"310112","name":"闵行区"},{"code":"310113","name":"宝山区"},{"code":"310114","name":"嘉定区"},{"code":"310115","name":"浦东新区"},{"code":"310116","name":"金山区"},{"code":"310117","name":"松江区"},{"code":"310118","name":"青浦区"},{"code":"310120","name":"奉贤区"},{"code":"310151","name":"崇明区"}]}]},{"code":"320000","name":"江苏省","children":[{"code":"320100","name":"南京市","children":[{"code":"320102","name":"玄武区"},{"code":"320104","name":"秦淮区"},{"code":"320105","name":"建邺区"},{"code":"320106","name":"鼓楼区"},{"code":"320111","name":"浦口区"},{"code":"320113","name":"栖霞区"},{"code":"320114","name":"雨花台区"},{"code":"320115","name":"江宁区"},{"code":"320116","name":"六合区"},{"code":"320117","name":"溧水区"},{"code":"320118","name":"高淳区"}]},{"code":"320200","name":"无锡市","children":[{"code":"320205","name":"锡山区"},{"code":"320206","name":"惠山区"},{"code":"320211","name":"滨湖区"},{"code":"320213","name":"梁溪区"},{"code":"320214","name":"新吴区"},{"code":"320281","name":"江阴市"},{"code":"320282","name":"宜兴市"}]},{"code":"320300","name":"徐州市","children":[{"code":"320302","name":"鼓楼区"},{"code":"320303","name":"云龙区"},{"code":"320305","name":"贾汪区"},{"code":"320311","name":"泉山区"},{"code":"320312","name":"铜山区"},{"code":"320321","name":"丰县"},{"code":"320322","name":"沛县"},{"code":"320324","name":"睢宁县"},{"code":"320371","name":"徐州经济技术开发区"},{"code":"320381","name":"新沂市"},{"code":"320382","name":"邳州市"}]},{"code":"320400","name":"常州市","children":[{"code":"320402","name":"天宁区"},{"code":"320404","name":"钟楼区"},{"code":"320411","name":"新北区"},{"code":"320412","name":"武进区"},{"code":"320413","name":"金坛区"},{"code":"320481","name":"溧阳市"}]},{"code":"320500","name":"苏州市","children":[{"code":"320505","name":"虎丘区"},{"code":"320506","name":"吴中区"},{"code":"320507","name":"相城区"},{"code":"320508","name":"姑苏区"},{"code":"320509","name":"吴江区"},{"code":"320571","name":"苏州工业园区"},{"code":"320581","name":"常熟市"},{"code":"320582","name":"张家港市"},{"code":"320583","name":"昆山市"},{"code":"320585","name":"太仓市"}]},{"code":"320600","name":"南通市","children":[{"code":"320612","name":"通州区"},{"code":"320613","name":"崇川区"},{"code":"320614","name":"海门区"},{"code":"320623","name":"如东县"},{"code":"320671","name":"南通经济技术开发区"},{"code":"320681","name":"启东市"},{"code":"320682","name":"如皋市"},{"code":"320685","name":"海安市"}]},{"code":"320700","name":"连云港市","children":[{"code":"320703","name":"连云区"},{"code":"320706","name":"海州区"},{"code":"320707","name":"赣榆区"},{"code":"320722","name":"东海县"},{"code":"320723","name":"灌云县"},{"code":"320724","name":"灌南县"},{"code":"320771","name":"连云港经济技术开发区"},{"code":"320772","name":"连云港高新技术产业开发区"}]},{"code":"320800","name":"淮安市","children":[{"code":"320803","name":"淮安区"},{"code":"320804","name":"淮阴区"},{"code":"320812","name":"清江浦区"},{"code":"320813","name":"洪泽区"},{"code":"320826","name":"涟水县"},{"code":"320830","name":"盱眙县"},{"code":"320831","name":"金湖县"},{"code":"320871","name":"淮安经济技术开发区"}]},{"code":"320900","name":"盐城市","children":[{"code":"320902","name":"亭湖区"},{"code":"320903","name":"盐都区"},{"code":"320904","name":"大丰区"},{"code":"320921","name":"响水县"},{"code":"320922","name":"滨海县"},{"code":"320923","name":"阜宁县"},{"code":"320924","name":"射阳县"},{"code":"320925","name":"建湖县"},{"code":"320971","name":"盐城经济技术开发区"},{"code":"320981","name":"东台市"}]},{"code":"321000","name":"扬州市","children":[{"code":"321002","name":"广陵区"},{"code":"321003","name":"邗江区"},{"code":"321012","name":"江都区"},{"code":"321023","name":"宝应县"},{"code":"321071","name":"扬州经济技术开发区"},{"code":"321081","name":"仪征市"},{"code":"321084","name":"高邮市"}]},{"code":"321100","name":"镇江市","children":[{"code":"321102","name":"京口区"},{"code":"321111","name":"润州区"},{"code":"321112","name":"丹徒区"},{"code":"321171","name":"镇江新区"},{"code":"321181","name":"丹阳市"},{"code":"321182","name":"扬中市"},{"code":"321183","name":"句容市"}]},{"code":"321200","name":"泰州市","children":[{"code":"321202","name":"海陵区"},{"code":"321203","name":"高港区"},{"code":"321204","name":"姜堰区"},{"code":"321271","name":"泰州医药高新技术产业开发区"},{"code":"321281","name":"兴化市"},{"code":"321282","name":"靖江市"},{"code":"321283","name":"泰兴市"}]},{"code":"321300","name":"宿迁市","children":[{"code":"321302","name":"宿城区"},{"code":"321311","name":"宿豫区"},{"code":"321322","name":"沭阳县"},{"code":"321323","name":"泗阳县"},{"code":"321324","name":"泗洪县"},{"code":"321371","name":"宿迁经济技术开发区"}]}]},{"code":"330000","name":"浙江省","children":[{"code":"330100","name":"杭州市","children":[{"code":"330102","name":"上城区"},{"code":"330105","name":"拱墅区"},{"code":"330106","name":"西湖区"},{"code":"330108","name":"滨江区"},{"code":"330109","name":"萧山区"},{"code":"330110","name":"余杭区"},{"code":"330111","name":"富阳区"},{"code":"330112","name":"临安区"},{"code":"330113","name":"临平区"},{"code":"330114","name":"钱塘区"},{"code":"330122","name":"桐庐县"},{"code":"330127","name":"淳安县"},{"code":"330182","name":"建德市"}]},{"code":"330200","name":"宁波市","children":[{"code":"330203","name":"海曙区"},{"code":"330205","name":"江北区"},{"code":"330206","name":"北仑区"},{"code":"330211","name":"镇海区"},{"code":"330212","name":"鄞州区"},{"code":"330213","name":"奉化区"},{"code":"330225","name":"象山县"},{"code":"330226","name":"宁海县"},{"code":"330281","name":"余姚市"},{"code":"330282","name":"慈溪市"}]},{"code":"330300","name":"温州市","children":[{"code":"330302","name":"鹿城区"},{"code":"330303","name":"龙湾区"},{"code":"330304","name":"瓯海区"},{"code":"330305","name":"洞头区"},{"code":"330324","name":"永嘉县"},{"code":"330326","name":"平阳县"},{"code":"330327","name":"苍南县"},{"code":"330328","name":"文成县"},{"code":"330329","name":"泰顺县"},{"code":"330381","name":"瑞安市"},{"code":"330382","name":"乐清市"},{"code":"330383","name":"龙港市"}]},{"code":"330400","name":"嘉兴市","children":[{"code":"330402","name":"南湖区"},{"code":"330411","name":"秀洲区"},{"code":"330421","name":"嘉善县"},{"code":"330424","name":"海盐县"},{"code":"330481","name":"海宁市"},{"code":"330482","name":"平湖市"},{"code":"330483","name":"桐乡市"}]},{"code":"330500","name":"湖州市","children":[{"code":"330502","name":"吴兴区"},{"code":"330503","name":"南浔区"},{"code":"330521","name":"德清县"},{"code":"330522","name":"长兴县"},{"code":"330523","name":"安吉县"}]},{"code":"330600","name":"绍兴市","children":[{"code":"330602","name":"越城区"},{"code":"330603","name":"柯桥区"},{"code":"330604","name":"上虞区"},{"code":"330624","name":"新昌县"},{"code":"330681","name":"诸暨市"},{"code":"330683","name":"嵊州市"}]},{"code":"330700","name":"金华市","children":[{"code":"330702","name":"婺城区"},{"code":"330703","name":"金东区"},{"code":"330723","name":"武义县"},{"code":"330726","name":"浦江县"},{"code":"330727","name":"磐安县"},{"code":"330781","name":"兰溪市"},{"code":"330782","name":"义乌市"},{"code":"330783","name":"东阳市"},{"code":"330784","name":"永康市"}]},{"code":"330800","name":"衢州市","children":[{"code":"330802","name":"柯城区"},{"code":"330803","name":"衢江区"},{"code":"330822","name":"常山县"},{"code":"330824","name":"开化县"},{"code":"330825","name":"龙游县"},{"code":"330881","name":"江山市"}]},{"code":"330900","name":"舟山市","children":[{"code":"330902","name":"定海区"},{"code":"330903","name":"普陀区"},{"code":"330921","name":"岱山县"},{"code":"330922","name":"嵊泗县"}]},{"code":"331000","name":"台州市","children":[{"code":"331002","name":"椒江区"},{"code":"331003","name":"黄岩区"},{"code":"331004","name":"路桥区"},{"code":"331022","name":"三门县"},{"code":"331023","name":"天台县"},{"code":"331024","name":"仙居县"},{"code":"331081","name":"温岭市"},{"code":"331082","name":"临海市"},{"code":"331083","name":"玉环市"}]},{"code":"331100","name":"丽水市","children":[{"code":"331102","name":"莲都区"},{"code":"331121","name":"青田县"},{"code":"331122","name":"缙云县"},{"code":"331123","name":"遂昌县"},{"code":"331124","name":"松阳县"},{"code":"331125","name":"云和县"},{"code":"331126","name":"庆元县"},{"code":"331127","name":"景宁畲族自治县"},{"code":"331181","name":"龙泉市"}]}]},{"code":"340000","name":"安徽省","children":[{"code":"340100","name":"合肥市","children":[{"code":"340102","name":"瑶海区"},{"code":"340103","name":"庐阳区"},{"code":"340104","name":"蜀山区"},{"code":"340111","name":"包河区"},{"code":"340121","name":"长丰县"},{"code":"340122","name":"肥东县"},{"code":"340123","name":"肥西县"},{"code":"340124","name":"庐江县"},{"code":"340171","name":"合肥高新技术产业开发区"},{"code":"340172","name":"合肥经济技术开发区"},{"code":"340173","name":"合肥新站高新技术产业开发区"},{"code":"340181","name":"巢湖市"}]},{"code":"340200","name":"芜湖市","children":[{"code":"340202","name":"镜湖区"},{"code":"340207","name":"鸠江区"},{"code":"340209","name":"弋江区"},{"code":"340210","name":"湾沚区"},{"code":"340212","name":"繁昌区"},{"code":"340223","name":"南陵县"},{"code":"340271","name":"芜湖经济技术开发区"},{"code":"340272","name":"安徽芜湖三山经济开发区"},{"code":"340281","name":"无为市"}]},{"code":"340300","name":"蚌埠市","children":[{"code":"340302","name":"龙子湖区"},{"code":"340303","name":"蚌山区"},{"code":"340304","name":"禹会区"},{"code":"340311","name":"淮上区"},{"code":"340321","name":"怀远县"},{"code":"340322","name":"五河县"},{"code":"340323","name":"固镇县"},{"code":"340371","name":"蚌埠市高新技术开发区"},{"code":"340372","name":"蚌埠市经济开发区"}]},{"code":"340400","name":"淮南市","children":[{"code":"340402","name":"大通区"},{"code":"340403","name":"田家庵区"},{"code":"340404","name":"谢家集区"},{"code":"340405","name":"八公山区"},{"code":"340406","name":"潘集区"},{"code":"340421","name":"凤台县"},{"code":"340422","name":"寿县"}]},{"code":"340500","name":"马鞍山市","children":[{"code":"340503","name":"花山区"},{"code":"340504","name":"雨山区"},{"code":"340506","name":"博望区"},{"code":"340521","name":"当涂县"},{"code":"340522","name":"含山县"},{"code":"340523","name":"和县"}]},{"code":"340600","name":"淮北市","children":[{"code":"340602","name":"杜集区"},{"code":"340603","name":"相山区"},{"code":"340604","name":"烈山区"},{"code":"340621","name":"濉溪县"}]},{"code":"340700","name":"铜陵市","children":[{"code":"340705","name":"铜官区"},{"code":"340706","name":"义安区"},{"code":"340711","name":"郊区"},{"code":"340722","name":"枞阳县"}]},{"code":"340800","name":"安庆市","children":[{"code":"340802","name":"迎江区"},{"code":"340803","name":"大观区"},{"code":"340811","name":"宜秀区"},{"code":"340822","name":"怀宁县"},{"code":"340825","name":"太湖县"},{"code":"340826","name":"宿松县"},{"code":"340827","name":"望江县"},{"code":"340828","name":"岳西县"},{"code":"340871","name":"安徽安庆经济开发区"},{"code":"340881","name":"桐城市"},{"code":"340882","name":"潜山市"}]},{"code":"341000","name":"黄山市","children":[{"code":"341002","name":"屯溪区"},{"code":"341003","name":"黄山区"},{"code":"341004","name":"徽州区"},{"code":"341021","name":"歙县"},{"code":"341022","name":"休宁县"},{"code":"341023","name":"黟县"},{"code":"341024","name":"祁门县"}]},{"code":"341100","name":"滁州市","children":[{"code":"341102","name":"琅琊区"},{"code":"341103","name":"南谯区"},{"code":"341122","name":"来安县"},{"code":"341124","name":"全椒县"},{"code":"341125","name":"定远县"},{"code":"341126","name":"凤阳县"},{"code":"341171","name":"中新苏滁高新技术产业开发区"},{"code":"341172","name":"滁州经济技术开发区"},{"code":"341181","name":"天长市"},{"code":"341182","name":"明光市"}]},{"code":"341200","name":"阜阳市","children":[{"code":"341202","name":"颍州区"},{"code":"341203","name":"颍东区"},{"code":"341204","name":"颍泉区"},{"code":"341221","name":"临泉县"},{"code":"341222","name":"太和县"},{"code":"341225","name":"阜南县"},{"code":"341226","name":"颍上县"},{"code":"341271","name":"阜阳合肥现代产业园区"},{"code":"341272","name":"阜阳经济技术开发区"},{"code":"341282","name":"界首市"}]},{"code":"341300","name":"宿州市","children":[{"code":"341302","name":"埇桥区"},{"code":"341321","name":"砀山县"},{"code":"341322","name":"萧县"},{"code":"341323","name":"灵璧县"},{"code":"341324","name":"泗县"},{"code":"341371","name":"宿州马鞍山现代产业园区"},{"code":"341372","name":"宿州经济技术开发区"}]},{"code":"341500","name":"六安市","children":[{"code":"341502","name":"金安区"},{"code":"341503","name":"裕安区"},{"code":"341504","name":"叶集区"},{"code":"341522","name":"霍邱县"},{"code":"341523","name":"舒城县"},{"code":"341524","name":"金寨县"},{"code":"341525","name":"霍山县"}]},{"code":"341600","name":"亳州市","children":[{"code":"341602","name":"谯城区"},{"code":"341621","name":"涡阳县"},{"code":"341622","name":"蒙城县"},{"code":"341623","name":"利辛县"}]},{"code":"341700","name":"池州市","children":[{"code":"341702","name":"贵池区"},{"code":"341721","name":"东至县"},{"code":"341722","name":"石台县"},{"code":"341723","name":"青阳县"}]},{"code":"341800","name":"宣城市","children":[{"code":"341802","name":"宣州区"},{"code":"341821","name":"郎溪县"},{"code":"341823","name":"泾县"},{"code":"341824","name":"绩溪县"},{"code":"341825","name":"旌德县"},{"code":"341871","name":"宣城市经济开发区"},{"code":"341881","name":"宁国市"},{"code":"341882","name":"广德市"}]}]},{"code":"350000","name":"福建省","children":[{"code":"350100","name":"福州市","children":[{"code":"350102","name":"鼓楼区"},{"code":"350103","name":"台江区"},{"code":"350104","name":"仓山区"},{"code":"350105","name":"马尾区"},{"code":"350111","name":"晋安区"},{"code":"350112","name":"长乐区"},{"code":"350121","name":"闽侯县"},{"code":"350122","name":"连江县"},{"code":"350123","name":"罗源县"},{"code":"350124","name":"闽清县"},{"code":"350125","name":"永泰县"},{"code":"350128","name":"平潭县"},{"code":"350181","name":"福清市"}]},{"code":"350200","name":"厦门市","children":[{"code":"350203","name":"思明区"},{"code":"350205","name":"海沧区"},{"code":"350206","name":"湖里区"},{"code":"350211","name":"集美区"},{"code":"350212","name":"同安区"},{"code":"350213","name":"翔安区"}]},{"code":"350300","name":"莆田市","children":[{"code":"350302","name":"城厢区"},{"code":"350303","name":"涵江区"},{"code":"350304","name":"荔城区"},{"code":"350305","name":"秀屿区"},{"code":"350322","name":"仙游县"}]},{"code":"350400","name":"三明市","children":[{"code":"350404","name":"三元区"},{"code":"350405","name":"沙县区"},{"code":"350421","name":"明溪县"},{"code":"350423","name":"清流县"},{"code":"350424","name":"宁化县"},{"code":"350425","name":"大田县"},{"code":"350426","name":"尤溪县"},{"code":"350428","name":"将乐县"},{"code":"350429","name":"泰宁县"},{"code":"350430","name":"建宁县"},{"code":"350481","name":"永安市"}]},{"code":"350500","name":"泉州市","children":[{"code":"350502","name":"鲤城区"},{"code":"350503","name":"丰泽区"},{"code":"350504","name":"洛江区"},{"code":"350505","name":"泉港区"},{"code":"350521","name":"惠安县"},{"code":"350524","name":"安溪县"},{"code":"350525","name":"永春县"},{"code":"350526","name":"德化县"},{"code":"350527","name":"金门县"},{"code":"350581","name":"石狮市"},{"code":"350582","name":"晋江市"},{"code":"350583","name":"南安市"}]},{"code":"350600","name":"漳州市","children":[{"code":"350602","name":"芗城区"},{"code":"350603","name":"龙文区"},{"code":"350604","name":"龙海区"},{"code":"350605","name":"长泰区"},{"code":"350622","name":"云霄县"},{"code":"350623","name":"漳浦县"},{"code":"350624","name":"诏安县"},{"code":"350626","name":"东山县"},{"code":"350627","name":"南靖县"},{"code":"350628","name":"平和县"},{"code":"350629","name":"华安县"}]},{"code":"350700","name":"南平市","children":[{"code":"350702","name":"延平区"},{"code":"350703","name":"建阳区"},{"code":"350721","name":"顺昌县"},{"code":"350722","name":"浦城县"},{"code":"350723","name":"光泽县"},{"code":"350724","name":"松溪县"},{"code":"350725","name":"政和县"},{"code":"350781","name":"邵武市"},{"code":"350782","name":"武夷山市"},{"code":"350783","name":"建瓯市"}]},{"code":"350800","name":"龙岩市","children":[{"code":"350802","name":"新罗区"},{"code":"350803","name":"永定区"},{"code":"350821","name":"长汀县"},{"code":"350823","name":"上杭县"},{"code":"350824","name":"武平县"},{"code":"350825","name":"连城县"},{"code":"350881","name":"漳平市"}]},{"code":"350900","name":"宁德市","children":[{"code":"350902","name":"蕉城区"},{"code":"350921","name":"霞浦县"},{"code":"350922","name":"古田县"},{"code":"350923","name":"屏南县"},{"code":"350924","name":"寿宁县"},{"code":"350925","name":"周宁县"},{"code":"350926","name":"柘荣县"},{"code":"350981","name":"福安市"},{"code":"350982","name":"福鼎市"}]}]},{"code":"360000","name":"江西省","children":[{"code":"360100","name":"南昌市","children":[{"code":"360102","name":"东湖区"},{"code":"360103","name":"西湖区"},{"code":"360104","name":"青云谱区"},{"code":"360111","name":"青山湖区"},{"code":"360112","name":"新建区"},{"code":"360113","name":"红谷滩区"},{"code":"360121","name":"南昌县"},{"code":"360123","name":"安义县"},{"code":"360124","name":"进贤县"}]},{"code":"360200","name":"景德镇市","children":[{"code":"360202","name":"昌江区"},{"code":"360203","name":"珠山区"},{"code":"360222","name":"浮梁县"},{"code":"360281","name":"乐平市"}]},{"code":"360300","name":"萍乡市","children":[{"code":"360302","name":"安源区"},{"code":"360313","name":"湘东区"},{"code":"360321","name":"莲花县"},{"code":"360322","name":"上栗县"},{"code":"360323","name":"芦溪县"}]},{"code":"360400","name":"九江市","children":[{"code":"360402","name":"濂溪区"},{"code":"360403","name":"浔阳区"},{"code":"360404","name":"柴桑区"},{"code":"360423","name":"武宁县"},{"code":"360424","name":"修水县"},{"code":"360425","name":"永修县"},{"code":"360426","name":"德安县"},{"code":"360428","name":"都昌县"},{"code":"360429","name":"湖口县"},{"code":"360430","name":"彭泽县"},{"code":"360481","name":"瑞昌市"},{"code":"360482","name":"共青城市"},{"code":"360483","name":"庐山市"}]},{"code":"360500","name":"新余市","children":[{"code":"360502","name":"渝水区"},{"code":"360521","name":"分宜县"}]},{"code":"360600","name":"鹰潭市","children":[{"code":"360602","name":"月湖区"},{"code":"360603","name":"余江区"},{"code":"360681","name":"贵溪市"}]},{"code":"360700","name":"赣州市","children":[{"code":"360702","name":"章贡区"},{"code":"360703","name":"南康区"},{"code":"360704","name":"赣县区"},{"code":"360722","name":"信丰县"},{"code":"360723","name":"大余县"},{"code":"360724","name":"上犹县"},{"code":"360725","name":"崇义县"},{"code":"360726","name":"安远县"},{"code":"360728","name":"定南县"},{"code":"360729","name":"全南县"},{"code":"360730","name":"宁都县"},{"code":"360731","name":"于都县"},{"code":"360732","name":"兴国县"},{"code":"360733","name":"会昌县"},{"code":"360734","name":"寻乌县"},{"code":"360735","name":"石城县"},{"code":"360781","name":"瑞金市"},{"code":"360783","name":"龙南市"}]},{"code":"360800","name":"吉安市","children":[{"code":"360802","name":"吉州区"},{"code":"360803","name":"青原区"},{"code":"360821","name":"吉安县"},{"code":"360822","name":"吉水县"},{"code":"360823","name":"峡江县"},{"code":"360824","name":"新干县"},{"code":"360825","name":"永丰县"},{"code":"360826","name":"泰和县"},{"code":"360827","name":"遂川县"},{"code":"360828","name":"万安县"},{"code":"360829","name":"安福县"},{"code":"360830","name":"永新县"},{"code":"360881","name":"井冈山市"}]},{"code":"360900","name":"宜春市","children":[{"code":"360902","name":"袁州区"},{"code":"360921","name":"奉新县"},{"code":"360922","name":"万载县"},{"code":"360923","name":"上高县"},{"code":"360924","name":"宜丰县"},{"code":"360925","name":"靖安县"},{"code":"360926","name":"铜鼓县"},{"code":"360981","name":"丰城市"},{"code":"360982","name":"樟树市"},{"code":"360983","name":"高安市"}]},{"code":"361000","name":"抚州市","children":[{"code":"361002","name":"临川区"},{"code":"361003","name":"东乡区"},{"code":"361021","name":"南城县"},{"code":"361022","name":"黎川县"},{"code":"361023","name":"南丰县"},{"code":"361024","name":"崇仁县"},{"code":"361025","name":"乐安县"},{"code":"361026","name":"宜黄县"},{"code":"361027","name":"金溪县"},{"code":"361028","name":"资溪县"},{"code":"361030","name":"广昌县"}]},{"code":"361100","name":"上饶市","children":[{"code":"361102","name":"信州区"},{"code":"361103","name":"广丰区"},{"code":"361104","name":"广信区"},{"code":"361123","name":"玉山县"},{"code":"361124","name":"铅山县"},{"code":"361125","name":"横峰县"},{"code":"361126","name":"弋阳县"},{"code":"361127","name":"余干县"},{"code":"361128","name":"鄱阳县"},{"code":"361129","name":"万年县"},{"code":"361130","name":"婺源县"},{"code":"361181","name":"德兴市"}]}]},{"code":"370000","name":"山东省","children":[{"code":"370100","name":"济南市","children":[{"code":"370102","name":"历下区"},{"code":"370103","name":"市中区"},{"code":"370104","name":"槐荫区"},{"code":"370105","name":"天桥区"},{"code":"370112","name":"历城区"},{"code":"370113","name":"长清区"},{"code":"370114","name":"章丘区"},{"code":"370115","name":"济阳区"},{"code":"370116","name":"莱芜区"},{"code":"370117","name":"钢城区"},{"code":"370124","name":"平阴县"},{"code":"370126","name":"商河县"},{"code":"370171","name":"济南高新技术产业开发区"}]},{"code":"370200","name":"青岛市","children":[{"code":"370202","name":"市南区"},{"code":"370203","name":"市北区"},{"code":"370211","name":"黄岛区"},{"code":"370212","name":"崂山区"},{"code":"370213","name":"李沧区"},{"code":"370214","name":"城阳区"},{"code":"370215","name":"即墨区"},{"code":"370271","name":"青岛高新技术产业开发区"},{"code":"370281","name":"胶州市"},{"code":"370283","name":"平度市"},{"code":"370285","name":"莱西市"}]},{"code":"370300","name":"淄博市","children":[{"code":"370302","name":"淄川区"},{"code":"370303","name":"张店区"},{"code":"370304","name":"博山区"},{"code":"370305","name":"临淄区"},{"code":"370306","name":"周村区"},{"code":"370321","name":"桓台县"},{"code":"370322","name":"高青县"},{"code":"370323","name":"沂源县"}]},{"code":"370400","name":"枣庄市","children":[{"code":"370402","name":"市中区"},{"code":"370403","name":"薛城区"},{"code":"370404","name":"峄城区"},{"code":"370405","name":"台儿庄区"},{"code":"370406","name":"山亭区"},{"code":"370481","name":"滕州市"}]},{"code":"370500","name":"东营市","children":[{"code":"370502","name":"东营区"},{"code":"370503","name":"河口区"},{"code":"370505","name":"垦利区"},{"code":"370522","name":"利津县"},{"code":"370523","name":"广饶县"},{"code":"370571","name":"东营经济技术开发区"},{"code":"370572","name":"东营港经济开发区"}]},{"code":"370600","name":"烟台市","children":[{"code":"370602","name":"芝罘区"},{"code":"370611","name":"福山区"},{"code":"370612","name":"牟平区"},{"code":"370613","name":"莱山区"},{"code":"370614","name":"蓬莱区"},{"code":"370671","name":"烟台高新技术产业开发区"},{"code":"370672","name":"烟台经济技术开发区"},{"code":"370681","name":"龙口市"},{"code":"370682","name":"莱阳市"},{"code":"370683","name":"莱州市"},{"code":"370685","name":"招远市"},{"code":"370686","name":"栖霞市"},{"code":"370687","name":"海阳市"}]},{"code":"370700","name":"潍坊市","children":[{"code":"370702","name":"潍城区"},{"code":"370703","name":"寒亭区"},{"code":"370704","name":"坊子区"},{"code":"370705","name":"奎文区"},{"code":"370724","name":"临朐县"},{"code":"370725","name":"昌乐县"},{"code":"370772","name":"潍坊滨海经济技术开发区"},{"code":"370781","name":"青州市"},{"code":"370782","name":"诸城市"},{"code":"370783","name":"寿光市"},{"code":"370784","name":"安丘市"},{"code":"370785","name":"高密市"},{"code":"370786","name":"昌邑市"}]},{"code":"370800","name":"济宁市","children":[{"code":"370811","name":"任城区"},{"code":"370812","name":"兖州区"},{"code":"370826","name":"微山县"},{"code":"370827","name":"鱼台县"},{"code":"370828","name":"金乡县"},{"code":"370829","name":"嘉祥县"},{"code":"370830","name":"汶上县"},{"code":"370831","name":"泗水县"},{"code":"370832","name":"梁山县"},{"code":"370871","name":"济宁高新技术产业开发区"},{"code":"370881","name":"曲阜市"},{"code":"370883","name":"邹城市"}]},{"code":"370900","name":"泰安市","children":[{"code":"370902","name":"泰山区"},{"code":"370911","name":"岱岳区"},{"code":"370921","name":"宁阳县"},{"code":"370923","name":"东平县"},{"code":"370982","name":"新泰市"},{"code":"370983","name":"肥城市"}]},{"code":"371000","name":"威海市","children":[{"code":"371002","name":"环翠区"},{"code":"371003","name":"文登区"},{"code":"371071","name":"威海火炬高技术产业开发区"},{"code":"371072","name":"威海经济技术开发区"},{"code":"371073","name":"威海临港经济技术开发区"},{"code":"371082","name":"荣成市"},{"code":"371083","name":"乳山市"}]},{"code":"371100","name":"日照市","children":[{"code":"371102","name":"东港区"},{"code":"371103","name":"岚山区"},{"code":"371121","name":"五莲县"},{"code":"371122","name":"莒县"},{"code":"371171","name":"日照经济技术开发区"}]},{"code":"371300","name":"临沂市","children":[{"code":"371302","name":"兰山区"},{"code":"371311","name":"罗庄区"},{"code":"371312","name":"河东区"},{"code":"371321","name":"沂南县"},{"code":"371322","name":"郯城县"},{"code":"371323","name":"沂水县"},{"code":"371324","name":"兰陵县"},{"code":"371325","name":"费县"},{"code":"371326","name":"平邑县"},{"code":"371327","name":"莒南县"},{"code":"371328","name":"蒙阴县"},{"code":"371329","name":"临沭县"},{"code":"371371","name":"临沂高新技术产业开发区"}]},{"code":"371400","name":"德州市","children":[{"code":"371402","name":"德城区"},{"code":"371403","name":"陵城区"},{"code":"371422","name":"宁津县"},{"code":"371423","name":"庆云县"},{"code":"371424","name":"临邑县"},{"code":"371425","name":"齐河县"},{"code":"371426","name":"平原县"},{"code":"371427","name":"夏津县"},{"code":"371428","name":"武城县"},{"code":"371471","name":"德州天衢新区"},{"code":"371481","name":"乐陵市"},{"code":"371482","name":"禹城市"}]},{"code":"371500","name":"聊城市","children":[{"code":"371502","name":"东昌府区"},{"code":"371503","name":"茌平区"},{"code":"371521","name":"阳谷县"},{"code":"371522","name":"莘县"},{"code":"371524","name":"东阿县"},{"code":"371525","name":"冠县"},{"code":"371526","name":"高唐县"},{"code":"371581","name":"临清市"}]},{"code":"371600","name":"滨州市","children":[{"code":"371602","name":"滨城区"},{"code":"371603","name":"沾化区"},{"code":"371621","name":"惠民县"},{"code":"371622","name":"阳信县"},{"code":"371623","name":"无棣县"},{"code":"371625","name":"博兴县"},{"code":"371681","name":"邹平市"}]},{"code":"371700","name":"菏泽市","children":[{"code":"371702","name":"牡丹区"},{"code":"371703","name":"定陶区"},{"code":"371721","name":"曹县"},{"code":"371722","name":"单县"},{"code":"371723","name":"成武县"},{"code":"371724","name":"巨野县"},{"code":"371725","name":"郓城县"},{"code":"371726","name":"鄄城县"},{"code":"371728","name":"东明县"},{"code":"371771","name":"菏泽经济技术开发区"},{"code":"371772","name":"菏泽高新技术开发区"}]}]},{"code":"410000","name":"河南省","children":[{"code":"410100","name":"郑州市","children":[{"code":"410102","name":"中原区"},{"code":"410103","name":"二七区"},{"code":"410104","name":"管城回族区"},{"code":"410105","name":"金水区"},{"code":"410106","name":"上街区"},{"code":"410108","name":"惠济区"},{"code":"410122","name":"中牟县"},{"code":"410171","name":"郑州经济技术开发区"},{"code":"410172","name":"郑州高新技术产业开发区"},{"code":"410173","name":"郑州航空港经济综合实验区"},{"code":"410181","name":"巩义市"},{"code":"410182","name":"荥阳市"},{"code":"410183","name":"新密市"},{"code":"410184","name":"新郑市"},{"code":"410185","name":"登封市"}]},{"code":"410200","name":"开封市","children":[{"code":"410202","name":"龙亭区"},{"code":"410203","name":"顺河回族区"},{"code":"410204","name":"鼓楼区"},{"code":"410205","name":"禹王台区"},{"code":"410212","name":"祥符区"},{"code":"410221","name":"杞县"},{"code":"410222","name":"通许县"},{"code":"410223","name":"尉氏县"},{"code":"410225","name":"兰考县"}]},{"code":"410300","name":"洛阳市","children":[{"code":"410302","name":"老城区"},{"code":"410303","name":"西工区"},{"code":"410304","name":"瀍河回族区"},{"code":"410305","name":"涧西区"},{"code":"410307","name":"偃师区"},{"code":"410308","name":"孟津区"},{"code":"410311","name":"洛龙区"},{"code":"410323","name":"新安县"},{"code":"410324","name":"栾川县"},{"code":"410325","name":"嵩县"},{"code":"410326","name":"汝阳县"},{"code":"410327","name":"宜阳县"},{"code":"410328","name":"洛宁县"},{"code":"410329","name":"伊川县"},{"code":"410371","name":"洛阳高新技术产业开发区"}]},{"code":"410400","name":"平顶山市","children":[{"code":"410402","name":"新华区"},{"code":"410403","name":"卫东区"},{"code":"410404","name":"石龙区"},{"code":"410411","name":"湛河区"},{"code":"410421","name":"宝丰县"},{"code":"410422","name":"叶县"},{"code":"410423","name":"鲁山县"},{"code":"410425","name":"郏县"},{"code":"410471","name":"平顶山高新技术产业开发区"},{"code":"410472","name":"平顶山市城乡一体化示范区"},{"code":"410481","name":"舞钢市"},{"code":"410482","name":"汝州市"}]},{"code":"410500","name":"安阳市","children":[{"code":"410502","name":"文峰区"},{"code":"410503","name":"北关区"},{"code":"410505","name":"殷都区"},{"code":"410506","name":"龙安区"},{"code":"410522","name":"安阳县"},{"code":"410523","name":"汤阴县"},{"code":"410526","name":"滑县"},{"code":"410527","name":"内黄县"},{"code":"410571","name":"安阳高新技术产业开发区"},{"code":"410581","name":"林州市"}]},{"code":"410600","name":"鹤壁市","children":[{"code":"410602","name":"鹤山区"},{"code":"410603","name":"山城区"},{"code":"410611","name":"淇滨区"},{"code":"410621","name":"浚县"},{"code":"410622","name":"淇县"},{"code":"410671","name":"鹤壁经济技术开发区"}]},{"code":"410700","name":"新乡市","children":[{"code":"410702","name":"红旗区"},{"code":"410703","name":"卫滨区"},{"code":"410704","name":"凤泉区"},{"code":"410711","name":"牧野区"},{"code":"410721","name":"新乡县"},{"code":"410724","name":"获嘉县"},{"code":"410725","name":"原阳县"},{"code":"410726","name":"延津县"},{"code":"410727","name":"封丘县"},{"code":"410771","name":"新乡高新技术产业开发区"},{"code":"410772","name":"新乡经济技术开发区"},{"code":"410773","name":"新乡市平原城乡一体化示范区"},{"code":"410781","name":"卫辉市"},{"code":"410782","name":"辉县市"},{"code":"410783","name":"长垣市"}]},{"code":"410800","name":"焦作市","children":[{"code":"410802","name":"解放区"},{"code":"410803","name":"中站区"},{"code":"410804","name":"马村区"},{"code":"410811","name":"山阳区"},{"code":"410821","name":"修武县"},{"code":"410822","name":"博爱县"},{"code":"410823","name":"武陟县"},{"code":"410825","name":"温县"},{"code":"410871","name":"焦作城乡一体化示范区"},{"code":"410882","name":"沁阳市"},{"code":"410883","name":"孟州市"}]},{"code":"410900","name":"濮阳市","children":[{"code":"410902","name":"华龙区"},{"code":"410922","name":"清丰县"},{"code":"410923","name":"南乐县"},{"code":"410926","name":"范县"},{"code":"410927","name":"台前县"},{"code":"410928","name":"濮阳县"},{"code":"410971","name":"河南濮阳工业园区"},{"code":"410972","name":"濮阳经济技术开发区"}]},{"code":"411000","name":"许昌市","children":[{"code":"411002","name":"魏都区"},{"code":"411003","name":"建安区"},{"code":"411024","name":"鄢陵县"},{"code":"411025","name":"襄城县"},{"code":"411071","name":"许昌经济技术开发区"},{"code":"411081","name":"禹州市"},{"code":"411082","name":"长葛市"}]},{"code":"411100","name":"漯河市","children":[{"code":"411102","name":"源汇区"},{"code":"411103","name":"郾城区"},{"code":"411104","name":"召陵区"},{"code":"411121","name":"舞阳县"},{"code":"411122","name":"临颍县"},{"code":"411171","name":"漯河经济技术开发区"}]},{"code":"411200","name":"三门峡市","children":[{"code":"411202","name":"湖滨区"},{"code":"411203","name":"陕州区"},{"code":"411221","name":"渑池县"},{"code":"411224","name":"卢氏县"},{"code":"411271","name":"河南三门峡经济开发区"},{"code":"411281","name":"义马市"},{"code":"411282","name":"灵宝市"}]},{"code":"411300","name":"南阳市","children":[{"code":"411302","name":"宛城区"},{"code":"411303","name":"卧龙区"},{"code":"411321","name":"南召县"},{"code":"411322","name":"方城县"},{"code":"411323","name":"西峡县"},{"code":"411324","name":"镇平县"},{"code":"411325","name":"内乡县"},{"code":"411326","name":"淅川县"},{"code":"411327","name":"社旗县"},{"code":"411328","name":"唐河县"},{"code":"411329","name":"新野县"},{"code":"411330","name":"桐柏县"},{"code":"411371","name":"南阳高新技术产业开发区"},{"code":"411372","name":"南阳市城乡一体化示范区"},{"code":"411381","name":"邓州市"}]},{"code":"411400","name":"商丘市","children":[{"code":"411402","name":"梁园区"},{"code":"411403","name":"睢阳区"},{"code":"411421","name":"民权县"},{"code":"411422","name":"睢县"},{"code":"411423","name":"宁陵县"},{"code":"411424","name":"柘城县"},{"code":"411425","name":"虞城县"},{"code":"411426","name":"夏邑县"},{"code":"411471","name":"豫东综合物流产业聚集区"},{"code":"411472","name":"河南商丘经济开发区"},{"code":"411481","name":"永城市"}]},{"code":"411500","name":"信阳市","children":[{"code":"411502","name":"浉河区"},{"code":"411503","name":"平桥区"},{"code":"411521","name":"罗山县"},{"code":"411522","name":"光山县"},{"code":"411523","name":"新县"},{"code":"411524","name":"商城县"},{"code":"411525","name":"固始县"},{"code":"411526","name":"潢川县"},{"code":"411527","name":"淮滨县"},{"code":"411528","name":"息县"},{"code":"411571","name":"信阳高新技术产业开发区"}]},{"code":"411600","name":"周口市","children":[{"code":"411602","name":"川汇区"},{"code":"411603","name":"淮阳区"},{"code":"411621","name":"扶沟县"},{"code":"411622","name":"西华县"},{"code":"411623","name":"商水县"},{"code":"411624","name":"沈丘县"},{"code":"411625","name":"郸城县"},{"code":"411627","name":"太康县"},{"code":"411628","name":"鹿邑县"},{"code":"411671","name":"河南周口经济开发区"},{"code":"411681","name":"项城市"}]},{"code":"411700","name":"驻马店市","children":[{"code":"411702","name":"驿城区"},{"code":"411721","name":"西平县"},{"code":"411722","name":"上蔡县"},{"code":"411723","name":"平舆县"},{"code":"411724","name":"正阳县"},{"code":"411725","name":"确山县"},{"code":"411726","name":"泌阳县"},{"code":"411727","name":"汝南县"},{"code":"411728","name":"遂平县"},{"code":"411729","name":"新蔡县"},{"code":"411771","name":"河南驻马店经济开发区"}]},{"code":"419000","name":"省直辖县级行政区划","children":[{"code":"419001","name":"济源市"}]}]},{"code":"420000","name":"湖北省","children":[{"code":"420100","name":"武汉市","children":[{"code":"420102","name":"江岸区"},{"code":"420103","name":"江汉区"},{"code":"420104","name":"硚口区"},{"code":"420105","name":"汉阳区"},{"code":"420106","name":"武昌区"},{"code":"420107","name":"青山区"},{"code":"420111","name":"洪山区"},{"code":"420112","name":"东西湖区"},{"code":"420113","name":"汉南区"},{"code":"420114","name":"蔡甸区"},{"code":"420115","name":"江夏区"},{"code":"420116","name":"黄陂区"},{"code":"420117","name":"新洲区"}]},{"code":"420200","name":"黄石市","children":[{"code":"420202","name":"黄石港区"},{"code":"420203","name":"西塞山区"},{"code":"420204","name":"下陆区"},{"code":"420205","name":"铁山区"},{"code":"420222","name":"阳新县"},{"code":"420281","name":"大冶市"}]},{"code":"420300","name":"十堰市","children":[{"code":"420302","name":"茅箭区"},{"code":"420303","name":"张湾区"},{"code":"420304","name":"郧阳区"},{"code":"420322","name":"郧西县"},{"code":"420323","name":"竹山县"},{"code":"420324","name":"竹溪县"},{"code":"420325","name":"房县"},{"code":"420381","name":"丹江口市"}]},{"code":"420500","name":"宜昌市","children":[{"code":"420502","name":"西陵区"},{"code":"420503","name":"伍家岗区"},{"code":"420504","name":"点军区"},{"code":"420505","name":"猇亭区"},{"code":"420506","name":"夷陵区"},{"code":"420525","name":"远安县"},{"code":"420526","name":"兴山县"},{"code":"420527","name":"秭归县"},{"code":"420528","name":"长阳土家族自治县"},{"code":"420529","name":"五峰土家族自治县"},{"code":"420581","name":"宜都市"},{"code":"420582","name":"当阳市"},{"code":"420583","name":"枝江市"}]},{"code":"420600","name":"襄阳市","children":[{"code":"420602","name":"襄城区"},{"code":"420606","name":"樊城区"},{"code":"420607","name":"襄州区"},{"code":"420624","name":"南漳县"},{"code":"420625","name":"谷城县"},{"code":"420626","name":"保康县"},{"code":"420682","name":"老河口市"},{"code":"420683","name":"枣阳市"},{"code":"420684","name":"宜城市"}]},{"code":"420700","name":"鄂州市","children":[{"code":"420702","name":"梁子湖区"},{"code":"420703","name":"华容区"},{"code":"420704","name":"鄂城区"}]},{"code":"420800","name":"荆门市","children":[{"code":"420802","name":"东宝区"},{"code":"420804","name":"掇刀区"},{"code":"420822","name":"沙洋县"},{"code":"420881","name":"钟祥市"},{"code":"420882","name":"京山市"}]},{"code":"420900","name":"孝感市","children":[{"code":"420902","name":"孝南区"},{"code":"420921","name":"孝昌县"},{"code":"420922","name":"大悟县"},{"code":"420923","name":"云梦县"},{"code":"420981","name":"应城市"},{"code":"420982","name":"安陆市"},{"code":"420984","name":"汉川市"}]},{"code":"421000","name":"荆州市","children":[{"code":"421002","name":"沙市区"},{"code":"421003","name":"荆州区"},{"code":"421022","name":"公安县"},{"code":"421024","name":"江陵县"},{"code":"421071","name":"荆州经济技术开发区"},{"code":"421081","name":"石首市"},{"code":"421083","name":"洪湖市"},{"code":"421087","name":"松滋市"},{"code":"421088","name":"监利市"}]},{"code":"421100","name":"黄冈市","children":[{"code":"421102","name":"黄州区"},{"code":"421121","name":"团风县"},{"code":"421122","name":"红安县"},{"code":"421123","name":"罗田县"},{"code":"421124","name":"英山县"},{"code":"421125","name":"浠水县"},{"code":"421126","name":"蕲春县"},{"code":"421127","name":"黄梅县"},{"code":"421171","name":"龙感湖管理区"},{"code":"421181","name":"麻城市"},{"code":"421182","name":"武穴市"}]},{"code":"421200","name":"咸宁市","children":[{"code":"421202","name":"咸安区"},{"code":"421221","name":"嘉鱼县"},{"code":"421222","name":"通城县"},{"code":"421223","name":"崇阳县"},{"code":"421224","name":"通山县"},{"code":"421281","name":"赤壁市"}]},{"code":"421300","name":"随州市","children":[{"code":"421303","name":"曾都区"},{"code":"421321","name":"随县"},{"code":"421381","name":"广水市"}]},{"code":"422800","name":"恩施土家族苗族自治州","children":[{"code":"422801","name":"恩施市"},{"code":"422802","name":"利川市"},{"code":"422822","name":"建始县"},{"code":"422823","name":"巴东县"},{"code":"422825","name":"宣恩县"},{"code":"422826","name":"咸丰县"},{"code":"422827","name":"来凤县"},{"code":"422828","name":"鹤峰县"}]},{"code":"429000","name":"省直辖县级行政区划","children":[{"code":"429004","name":"仙桃市"},{"code":"429005","name":"潜江市"},{"code":"429006","name":"天门市"},{"code":"429021","name":"神农架林区"}]}]},{"code":"430000","name":"湖南省","children":[{"code":"430100","name":"长沙市","children":[{"code":"430102","name":"芙蓉区"},{"code":"430103","name":"天心区"},{"code":"430104","name":"岳麓区"},{"code":"430105","name":"开福区"},{"code":"430111","name":"雨花区"},{"code":"430112","name":"望城区"},{"code":"430121","name":"长沙县"},{"code":"430181","name":"浏阳市"},{"code":"430182","name":"宁乡市"}]},{"code":"430200","name":"株洲市","children":[{"code":"430202","name":"荷塘区"},{"code":"430203","name":"芦淞区"},{"code":"430204","name":"石峰区"},{"code":"430211","name":"天元区"},{"code":"430212","name":"渌口区"},{"code":"430223","name":"攸县"},{"code":"430224","name":"茶陵县"},{"code":"430225","name":"炎陵县"},{"code":"430281","name":"醴陵市"}]},{"code":"430300","name":"湘潭市","children":[{"code":"430302","name":"雨湖区"},{"code":"430304","name":"岳塘区"},{"code":"430321","name":"湘潭县"},{"code":"430371","name":"湖南湘潭高新技术产业园区"},{"code":"430372","name":"湘潭昭山示范区"},{"code":"430373","name":"湘潭九华示范区"},{"code":"430381","name":"湘乡市"},{"code":"430382","name":"韶山市"}]},{"code":"430400","name":"衡阳市","children":[{"code":"430405","name":"珠晖区"},{"code":"430406","name":"雁峰区"},{"code":"430407","name":"石鼓区"},{"code":"430408","name":"蒸湘区"},{"code":"430412","name":"南岳区"},{"code":"430421","name":"衡阳县"},{"code":"430422","name":"衡南县"},{"code":"430423","name":"衡山县"},{"code":"430424","name":"衡东县"},{"code":"430426","name":"祁东县"},{"code":"430471","name":"衡阳综合保税区"},{"code":"430472","name":"湖南衡阳高新技术产业园区"},{"code":"430473","name":"湖南衡阳松木经济开发区"},{"code":"430481","name":"耒阳市"},{"code":"430482","name":"常宁市"}]},{"code":"430500","name":"邵阳市","children":[{"code":"430502","name":"双清区"},{"code":"430503","name":"大祥区"},{"code":"430511","name":"北塔区"},{"code":"430522","name":"新邵县"},{"code":"430523","name":"邵阳县"},{"code":"430524","name":"隆回县"},{"code":"430525","name":"洞口县"},{"code":"430527","name":"绥宁县"},{"code":"430528","name":"新宁县"},{"code":"430529","name":"城步苗族自治县"},{"code":"430581","name":"武冈市"},{"code":"430582","name":"邵东市"}]},{"code":"430600","name":"岳阳市","children":[{"code":"430602","name":"岳阳楼区"},{"code":"430603","name":"云溪区"},{"code":"430611","name":"君山区"},{"code":"430621","name":"岳阳县"},{"code":"430623","name":"华容县"},{"code":"430624","name":"湘阴县"},{"code":"430626","name":"平江县"},{"code":"430671","name":"岳阳市屈原管理区"},{"code":"430681","name":"汨罗市"},{"code":"430682","name":"临湘市"}]},{"code":"430700","name":"常德市","children":[{"code":"430702","name":"武陵区"},{"code":"430703","name":"鼎城区"},{"code":"430721","name":"安乡县"},{"code":"430722","name":"汉寿县"},{"code":"430723","name":"澧县"},{"code":"430724","name":"临澧县"},{"code":"430725","name":"桃源县"},{"code":"430726","name":"石门县"},{"code":"430771","name":"常德市西洞庭管理区"},{"code":"430781","name":"津市市"}]},{"code":"430800","name":"张家界市","children":[{"code":"430802","name":"永定区"},{"code":"430811","name":"武陵源区"},{"code":"430821","name":"慈利县"},{"code":"430822","name":"桑植县"}]},{"code":"430900","name":"益阳市","children":[{"code":"430902","name":"资阳区"},{"code":"430903","name":"赫山区"},{"code":"430921","name":"南县"},{"code":"430922","name":"桃江县"},{"code":"430923","name":"安化县"},{"code":"430971","name":"益阳市大通湖管理区"},{"code":"430972","name":"湖南益阳高新技术产业园区"},{"code":"430981","name":"沅江市"}]},{"code":"431000","name":"郴州市","children":[{"code":"431002","name":"北湖区"},{"code":"431003","name":"苏仙区"},{"code":"431021","name":"桂阳县"},{"code":"431022","name":"宜章县"},{"code":"431023","name":"永兴县"},{"code":"431024","name":"嘉禾县"},{"code":"431025","name":"临武县"},{"code":"431026","name":"汝城县"},{"code":"431027","name":"桂东县"},{"code":"431028","name":"安仁县"},{"code":"431081","name":"资兴市"}]},{"code":"431100","name":"永州市","children":[{"code":"431102","name":"零陵区"},{"code":"431103","name":"冷水滩区"},{"code":"431122","name":"东安县"},{"code":"431123","name":"双牌县"},{"code":"431124","name":"道县"},{"code":"431125","name":"江永县"},{"code":"431126","name":"宁远县"},{"code":"431127","name":"蓝山县"},{"code":"431128","name":"新田县"},{"code":"431129","name":"江华瑶族自治县"},{"code":"431171","name":"永州经济技术开发区"},{"code":"431173","name":"永州市回龙圩管理区"},{"code":"431181","name":"祁阳市"}]},{"code":"431200","name":"怀化市","children":[{"code":"431202","name":"鹤城区"},{"code":"431221","name":"中方县"},{"code":"431222","name":"沅陵县"},{"code":"431223","name":"辰溪县"},{"code":"431224","name":"溆浦县"},{"code":"431225","name":"会同县"},{"code":"431226","name":"麻阳苗族自治县"},{"code":"431227","name":"新晃侗族自治县"},{"code":"431228","name":"芷江侗族自治县"},{"code":"431229","name":"靖州苗族侗族自治县"},{"code":"431230","name":"通道侗族自治县"},{"code":"431271","name":"怀化市洪江管理区"},{"code":"431281","name":"洪江市"}]},{"code":"431300","name":"娄底市","children":[{"code":"431302","name":"娄星区"},{"code":"431321","name":"双峰县"},{"code":"431322","name":"新化县"},{"code":"431381","name":"冷水江市"},{"code":"431382","name":"涟源市"}]},{"code":"433100","name":"湘西土家族苗族自治州","children":[{"code":"433101","name":"吉首市"},{"code":"433122","name":"泸溪县"},{"code":"433123","name":"凤凰县"},{"code":"433124","name":"花垣县"},{"code":"433125","name":"保靖县"},{"code":"433126","name":"古丈县"},{"code":"433127","name":"永顺县"},{"code":"433130","name":"龙山县"}]}]},{"code":"450000","name":"广西壮族自治区","children":[{"code":"450100","name":"南宁市","children":[{"code":"450102","name":"兴宁区"},{"code":"450103","name":"青秀区"},{"code":"450105","name":"江南区"},{"code":"450107","name":"西乡塘区"},{"code":"450108","name":"良庆区"},{"code":"450109","name":"邕宁区"},{"code":"450110","name":"武鸣区"},{"code":"450123","name":"隆安县"},{"code":"450124","name":"马山县"},{"code":"450125","name":"上林县"},{"code":"450126","name":"宾阳县"},{"code":"450181","name":"横州市"}]},{"code":"450200","name":"柳州市","children":[{"code":"450202","name":"城中区"},{"code":"450203","name":"鱼峰区"},{"code":"450204","name":"柳南区"},{"code":"450205","name":"柳北区"},{"code":"450206","name":"柳江区"},{"code":"450222","name":"柳城县"},{"code":"450223","name":"鹿寨县"},{"code":"450224","name":"融安县"},{"code":"450225","name":"融水苗族自治县"},{"code":"450226","name":"三江侗族自治县"}]},{"code":"450300","name":"桂林市","children":[{"code":"450302","name":"秀峰区"},{"code":"450303","name":"叠彩区"},{"code":"450304","name":"象山区"},{"code":"450305","name":"七星区"},{"code":"450311","name":"雁山区"},{"code":"450312","name":"临桂区"},{"code":"450321","name":"阳朔县"},{"code":"450323","name":"灵川县"},{"code":"450324","name":"全州县"},{"code":"450325","name":"兴安县"},{"code":"450326","name":"永福县"},{"code":"450327","name":"灌阳县"},{"code":"450328","name":"龙胜各族自治县"},{"code":"450329","name":"资源县"},{"code":"450330","name":"平乐县"},{"code":"450332","name":"恭城瑶族自治县"},{"code":"450381","name":"荔浦市"}]},{"code":"450400","name":"梧州市","children":[{"code":"450403","name":"万秀区"},{"code":"450405","name":"长洲区"},{"code":"450406","name":"龙圩区"},{"code":"450421","name":"苍梧县"},{"code":"450422","name":"藤县"},{"code":"450423","name":"蒙山县"},{"code":"450481","name":"岑溪市"}]},{"code":"450500","name":"北海市","children":[{"code":"450502","name":"海城区"},{"code":"450503","name":"银海区"},{"code":"450512","name":"铁山港区"},{"code":"450521","name":"合浦县"}]},{"code":"450600","name":"防城港市","children":[{"code":"450602","name":"港口区"},{"code":"450603","name":"防城区"},{"code":"450621","name":"上思县"},{"code":"450681","name":"东兴市"}]},{"code":"450700","name":"钦州市","children":[{"code":"450702","name":"钦南区"},{"code":"450703","name":"钦北区"},{"code":"450721","name":"灵山县"},{"code":"450722","name":"浦北县"}]},{"code":"450800","name":"贵港市","children":[{"code":"450802","name":"港北区"},{"code":"450803","name":"港南区"},{"code":"450804","name":"覃塘区"},{"code":"450821","name":"平南县"},{"code":"450881","name":"桂平市"}]},{"code":"450900","name":"玉林市","children":[{"code":"450902","name":"玉州区"},{"code":"450903","name":"福绵区"},{"code":"450921","name":"容县"},{"code":"450922","name":"陆川县"},{"code":"450923","name":"博白县"},{"code":"450924","name":"兴业县"},{"code":"450981","name":"北流市"}]},{"code":"451000","name":"百色市","children":[{"code":"451002","name":"右江区"},{"code":"451003","name":"田阳区"},{"code":"451022","name":"田东县"},{"code":"451024","name":"德保县"},{"code":"451026","name":"那坡县"},{"code":"451027","name":"凌云县"},{"code":"451028","name":"乐业县"},{"code":"451029","name":"田林县"},{"code":"451030","name":"西林县"},{"code":"451031","name":"隆林各族自治县"},{"code":"451081","name":"靖西市"},{"code":"451082","name":"平果市"}]},{"code":"451100","name":"贺州市","children":[{"code":"451102","name":"八步区"},{"code":"451103","name":"平桂区"},{"code":"451121","name":"昭平县"},{"code":"451122","name":"钟山县"},{"code":"451123","name":"富川瑶族自治县"}]},{"code":"451200","name":"河池市","children":[{"code":"451202","name":"金城江区"},{"code":"451203","name":"宜州区"},{"code":"451221","name":"南丹县"},{"code":"451222","name":"天峨县"},{"code":"451223","name":"凤山县"},{"code":"451224","name":"东兰县"},{"code":"451225","name":"罗城仫佬族自治县"},{"code":"451226","name":"环江毛南族自治县"},{"code":"451227","name":"巴马瑶族自治县"},{"code":"451228","name":"都安瑶族自治县"},{"code":"451229","name":"大化瑶族自治县"}]},{"code":"451300","name":"来宾市","children":[{"code":"451302","name":"兴宾区"},{"code":"451321","name":"忻城县"},{"code":"451322","name":"象州县"},{"code":"451323","name":"武宣县"},{"code":"451324","name":"金秀瑶族自治县"},{"code":"451381","name":"合山市"}]},{"code":"451400","name":"崇左市","children":[{"code":"451402","name":"江州区"},{"code":"451421","name":"扶绥县"},{"code":"451422","name":"宁明县"},{"code":"451423","name":"龙州县"},{"code":"451424","name":"大新县"},{"code":"451425","name":"天等县"},{"code":"451481","name":"凭祥市"}]}]},{"code":"460000","name":"海南省","children":[{"code":"460100","name":"海口市","children":[{"code":"460105","name":"秀英区"},{"code":"460106","name":"龙华区"},{"code":"460107","name":"琼山区"},{"code":"460108","name":"美兰区"}]},{"code":"460200","name":"三亚市","children":[{"code":"460202","name":"海棠区"},{"code":"460203","name":"吉阳区"},{"code":"460204","name":"天涯区"},{"code":"460205","name":"崖州区"}]},{"code":"460300","name":"三沙市","children":[{"code":"460321","name":"西沙群岛"},{"code":"460322","name":"南沙群岛"},{"code":"460323","name":"中沙群岛的岛礁及其海域"}]},{"code":"460400","name":"儋州市","children":[{"code":"460400100","name":"那大镇"},{"code":"460400101","name":"和庆镇"},{"code":"460400102","name":"南丰镇"},{"code":"460400103","name":"大成镇"},{"code":"460400104","name":"雅星镇"},{"code":"460400105","name":"兰洋镇"},{"code":"460400106","name":"光村镇"},{"code":"460400107","name":"木棠镇"},{"code":"460400108","name":"海头镇"},{"code":"460400109","name":"峨蔓镇"},{"code":"460400111","name":"王五镇"},{"code":"460400112","name":"白马井镇"},{"code":"460400113","name":"中和镇"},{"code":"460400114","name":"排浦镇"},{"code":"460400115","name":"东成镇"},{"code":"460400116","name":"新州镇"},{"code":"460400499","name":"洋浦经济开发区"},{"code":"460400500","name":"华南热作学院"}]},{"code":"469000","name":"省直辖县级行政区划","children":[{"code":"469001","name":"五指山市"},{"code":"469002","name":"琼海市"},{"code":"469005","name":"文昌市"},{"code":"469006","name":"万宁市"},{"code":"469007","name":"东方市"},{"code":"469021","name":"定安县"},{"code":"469022","name":"屯昌县"},{"code":"469023","name":"澄迈县"},{"code":"469024","name":"临高县"},{"code":"469025","name":"白沙黎族自治县"},{"code":"469026","name":"昌江黎族自治县"},{"code":"469027","name":"乐东黎族自治县"},{"code":"469028","name":"陵水黎族自治县"},{"code":"469029","name":"保亭黎族苗族自治县"},{"code":"469030","name":"琼中黎族苗族自治县"}]}]},{"code":"500000","name":"重庆市","children":[{"code":"500100","name":"市辖区","children":[{"code":"500101","name":"万州区"},{"code":"500102","name":"涪陵区"},{"code":"500103","name":"渝中区"},{"code":"500104","name":"大渡口区"},{"code":"500105","name":"江北区"},{"code":"500106","name":"沙坪坝区"},{"code":"500107","name":"九龙坡区"},{"code":"500108","name":"南岸区"},{"code":"500109","name":"北碚区"},{"code":"500110","name":"綦江区"},{"code":"500111","name":"大足区"},{"code":"500112","name":"渝北区"},{"code":"500113","name":"巴南区"},{"code":"500114","name":"黔江区"},{"code":"500115","name":"长寿区"},{"code":"500116","name":"江津区"},{"code":"500117","name":"合川区"},{"code":"500118","name":"永川区"},{"code":"500119","name":"南川区"},{"code":"500120","name":"璧山区"},{"code":"500151","name":"铜梁区"},{"code":"500152","name":"潼南区"},{"code":"500153","name":"荣昌区"},{"code":"500154","name":"开州区"},{"code":"500155","name":"梁平区"},{"code":"500156","name":"武隆区"}]},{"code":"500200","name":"县","children":[{"code":"500229","name":"城口县"},{"code":"500230","name":"丰都县"},{"code":"500231","name":"垫江县"},{"code":"500233","name":"忠县"},{"code":"500235","name":"云阳县"},{"code":"500236","name":"奉节县"},{"code":"500237","name":"巫山县"},{"code":"500238","name":"巫溪县"},{"code":"500240","name":"石柱土家族自治县"},{"code":"500241","name":"秀山土家族苗族自治县"},{"code":"500242","name":"酉阳土家族苗族自治县"},{"code":"500243","name":"彭水苗族土家族自治县"}]}]},{"code":"510000","name":"四川省","children":[{"code":"510100","name":"成都市","children":[{"code":"510104","name":"锦江区"},{"code":"510105","name":"青羊区"},{"code":"510106","name":"金牛区"},{"code":"510107","name":"武侯区"},{"code":"510108","name":"成华区"},{"code":"510112","name":"龙泉驿区"},{"code":"510113","name":"青白江区"},{"code":"510114","name":"新都区"},{"code":"510115","name":"温江区"},{"code":"510116","name":"双流区"},{"code":"510117","name":"郫都区"},{"code":"510118","name":"新津区"},{"code":"510121","name":"金堂县"},{"code":"510129","name":"大邑县"},{"code":"510131","name":"蒲江县"},{"code":"510181","name":"都江堰市"},{"code":"510182","name":"彭州市"},{"code":"510183","name":"邛崃市"},{"code":"510184","name":"崇州市"},{"code":"510185","name":"简阳市"}]},{"code":"510300","name":"自贡市","children":[{"code":"510302","name":"自流井区"},{"code":"510303","name":"贡井区"},{"code":"510304","name":"大安区"},{"code":"510311","name":"沿滩区"},{"code":"510321","name":"荣县"},{"code":"510322","name":"富顺县"}]},{"code":"510400","name":"攀枝花市","children":[{"code":"510402","name":"东区"},{"code":"510403","name":"西区"},{"code":"510411","name":"仁和区"},{"code":"510421","name":"米易县"},{"code":"510422","name":"盐边县"}]},{"code":"510500","name":"泸州市","children":[{"code":"510502","name":"江阳区"},{"code":"510503","name":"纳溪区"},{"code":"510504","name":"龙马潭区"},{"code":"510521","name":"泸县"},{"code":"510522","name":"合江县"},{"code":"510524","name":"叙永县"},{"code":"510525","name":"古蔺县"}]},{"code":"510600","name":"德阳市","children":[{"code":"510603","name":"旌阳区"},{"code":"510604","name":"罗江区"},{"code":"510623","name":"中江县"},{"code":"510681","name":"广汉市"},{"code":"510682","name":"什邡市"},{"code":"510683","name":"绵竹市"}]},{"code":"510700","name":"绵阳市","children":[{"code":"510703","name":"涪城区"},{"code":"510704","name":"游仙区"},{"code":"510705","name":"安州区"},{"code":"510722","name":"三台县"},{"code":"510723","name":"盐亭县"},{"code":"510725","name":"梓潼县"},{"code":"510726","name":"北川羌族自治县"},{"code":"510727","name":"平武县"},{"code":"510781","name":"江油市"}]},{"code":"510800","name":"广元市","children":[{"code":"510802","name":"利州区"},{"code":"510811","name":"昭化区"},{"code":"510812","name":"朝天区"},{"code":"510821","name":"旺苍县"},{"code":"510822","name":"青川县"},{"code":"510823","name":"剑阁县"},{"code":"510824","name":"苍溪县"}]},{"code":"510900","name":"遂宁市","children":[{"code":"510903","name":"船山区"},{"code":"510904","name":"安居区"},{"code":"510921","name":"蓬溪县"},{"code":"510923","name":"大英县"},{"code":"510981","name":"射洪市"}]},{"code":"511000","name":"内江市","children":[{"code":"511002","name":"市中区"},{"code":"511011","name":"东兴区"},{"code":"511024","name":"威远县"},{"code":"511025","name":"资中县"},{"code":"511083","name":"隆昌市"}]},{"code":"511100","name":"乐山市","children":[{"code":"511102","name":"市中区"},{"code":"511111","name":"沙湾区"},{"code":"511112","name":"五通桥区"},{"code":"511113","name":"金口河区"},{"code":"511123","name":"犍为县"},{"code":"511124","name":"井研县"},{"code":"511126","name":"夹江县"},{"code":"511129","name":"沐川县"},{"code":"511132","name":"峨边彝族自治县"},{"code":"511133","name":"马边彝族自治县"},{"code":"511181","name":"峨眉山市"}]},{"code":"511300","name":"南充市","children":[{"code":"511302","name":"顺庆区"},{"code":"511303","name":"高坪区"},{"code":"511304","name":"嘉陵区"},{"code":"511321","name":"南部县"},{"code":"511322","name":"营山县"},{"code":"511323","name":"蓬安县"},{"code":"511324","name":"仪陇县"},{"code":"511325","name":"西充县"},{"code":"511381","name":"阆中市"}]},{"code":"511400","name":"眉山市","children":[{"code":"511402","name":"东坡区"},{"code":"511403","name":"彭山区"},{"code":"511421","name":"仁寿县"},{"code":"511423","name":"洪雅县"},{"code":"511424","name":"丹棱县"},{"code":"511425","name":"青神县"}]},{"code":"511500","name":"宜宾市","children":[{"code":"511502","name":"翠屏区"},{"code":"511503","name":"南溪区"},{"code":"511504","name":"叙州区"},{"code":"511523","name":"江安县"},{"code":"511524","name":"长宁县"},{"code":"511525","name":"高县"},{"code":"511526","name":"珙县"},{"code":"511527","name":"筠连县"},{"code":"511528","name":"兴文县"},{"code":"511529","name":"屏山县"}]},{"code":"511600","name":"广安市","children":[{"code":"511602","name":"广安区"},{"code":"511603","name":"前锋区"},{"code":"511621","name":"岳池县"},{"code":"511622","name":"武胜县"},{"code":"511623","name":"邻水县"},{"code":"511681","name":"华蓥市"}]},{"code":"511700","name":"达州市","children":[{"code":"511702","name":"通川区"},{"code":"511703","name":"达川区"},{"code":"511722","name":"宣汉县"},{"code":"511723","name":"开江县"},{"code":"511724","name":"大竹县"},{"code":"511725","name":"渠县"},{"code":"511781","name":"万源市"}]},{"code":"511800","name":"雅安市","children":[{"code":"511802","name":"雨城区"},{"code":"511803","name":"名山区"},{"code":"511822","name":"荥经县"},{"code":"511823","name":"汉源县"},{"code":"511824","name":"石棉县"},{"code":"511825","name":"天全县"},{"code":"511826","name":"芦山县"},{"code":"511827","name":"宝兴县"}]},{"code":"511900","name":"巴中市","children":[{"code":"511902","name":"巴州区"},{"code":"511903","name":"恩阳区"},{"code":"511921","name":"通江县"},{"code":"511922","name":"南江县"},{"code":"511923","name":"平昌县"}]},{"code":"512000","name":"资阳市","children":[{"code":"512002","name":"雁江区"},{"code":"512021","name":"安岳县"},{"code":"512022","name":"乐至县"}]},{"code":"513200","name":"阿坝藏族羌族自治州","children":[{"code":"513201","name":"马尔康市"},{"code":"513221","name":"汶川县"},{"code":"513222","name":"理县"},{"code":"513223","name":"茂县"},{"code":"513224","name":"松潘县"},{"code":"513225","name":"九寨沟县"},{"code":"513226","name":"金川县"},{"code":"513227","name":"小金县"},{"code":"513228","name":"黑水县"},{"code":"513230","name":"壤塘县"},{"code":"513231","name":"阿坝县"},{"code":"513232","name":"若尔盖县"},{"code":"513233","name":"红原县"}]},{"code":"513300","name":"甘孜藏族自治州","children":[{"code":"513301","name":"康定市"},{"code":"513322","name":"泸定县"},{"code":"513323","name":"丹巴县"},{"code":"513324","name":"九龙县"},{"code":"513325","name":"雅江县"},{"code":"513326","name":"道孚县"},{"code":"513327","name":"炉霍县"},{"code":"513328","name":"甘孜县"},{"code":"513329","name":"新龙县"},{"code":"513330","name":"德格县"},{"code":"513331","name":"白玉县"},{"code":"513332","name":"石渠县"},{"code":"513333","name":"色达县"},{"code":"513334","name":"理塘县"},{"code":"513335","name":"巴塘县"},{"code":"513336","name":"乡城县"},{"code":"513337","name":"稻城县"},{"code":"513338","name":"得荣县"}]},{"code":"513400","name":"凉山彝族自治州","children":[{"code":"513401","name":"西昌市"},{"code":"513402","name":"会理市"},{"code":"513422","name":"木里藏族自治县"},{"code":"513423","name":"盐源县"},{"code":"513424","name":"德昌县"},{"code":"513426","name":"会东县"},{"code":"513427","name":"宁南县"},{"code":"513428","name":"普格县"},{"code":"513429","name":"布拖县"},{"code":"513430","name":"金阳县"},{"code":"513431","name":"昭觉县"},{"code":"513432","name":"喜德县"},{"code":"513433","name":"冕宁县"},{"code":"513434","name":"越西县"},{"code":"513435","name":"甘洛县"},{"code":"513436","name":"美姑县"},{"code":"513437","name":"雷波县"}]}]},{"code":"520000","name":"贵州省","children":[{"code":"520100","name":"贵阳市","children":[{"code":"520102","name":"南明区"},{"code":"520103","name":"云岩区"},{"code":"520111","name":"花溪区"},{"code":"520112","name":"乌当区"},{"code":"520113","name":"白云区"},{"code":"520115","name":"观山湖区"},{"code":"520121","name":"开阳县"},{"code":"520122","name":"息烽县"},{"code":"520123","name":"修文县"},{"code":"520181","name":"清镇市"}]},{"code":"520200","name":"六盘水市","children":[{"code":"520201","name":"钟山区"},{"code":"520203","name":"六枝特区"},{"code":"520204","name":"水城区"},{"code":"520281","name":"盘州市"}]},{"code":"520300","name":"遵义市","children":[{"code":"520302","name":"红花岗区"},{"code":"520303","name":"汇川区"},{"code":"520304","name":"播州区"},{"code":"520322","name":"桐梓县"},{"code":"520323","name":"绥阳县"},{"code":"520324","name":"正安县"},{"code":"520325","name":"道真仡佬族苗族自治县"},{"code":"520326","name":"务川仡佬族苗族自治县"},{"code":"520327","name":"凤冈县"},{"code":"520328","name":"湄潭县"},{"code":"520329","name":"余庆县"},{"code":"520330","name":"习水县"},{"code":"520381","name":"赤水市"},{"code":"520382","name":"仁怀市"}]},{"code":"520400","name":"安顺市","children":[{"code":"520402","name":"西秀区"},{"code":"520403","name":"平坝区"},{"code":"520422","name":"普定县"},{"code":"520423","name":"镇宁布依族苗族自治县"},{"code":"520424","name":"关岭布依族苗族自治县"},{"code":"520425","name":"紫云苗族布依族自治县"}]},{"code":"520500","name":"毕节市","children":[{"code":"520502","name":"七星关区"},{"code":"520521","name":"大方县"},{"code":"520523","name":"金沙县"},{"code":"520524","name":"织金县"},{"code":"520525","name":"纳雍县"},{"code":"520526","name":"威宁彝族回族苗族自治县"},{"code":"520527","name":"赫章县"},{"code":"520581","name":"黔西市"}]},{"code":"520600","name":"铜仁市","children":[{"code":"520602","name":"碧江区"},{"code":"520603","name":"万山区"},{"code":"520621","name":"江口县"},{"code":"520622","name":"玉屏侗族自治县"},{"code":"520623","name":"石阡县"},{"code":"520624","name":"思南县"},{"code":"520625","name":"印江土家族苗族自治县"},{"code":"520626","name":"德江县"},{"code":"520627","name":"沿河土家族自治县"},{"code":"520628","name":"松桃苗族自治县"}]},{"code":"522300","name":"黔西南布依族苗族自治州","children":[{"code":"522301","name":"兴义市"},{"code":"522302","name":"兴仁市"},{"code":"522323","name":"普安县"},{"code":"522324","name":"晴隆县"},{"code":"522325","name":"贞丰县"},{"code":"522326","name":"望谟县"},{"code":"522327","name":"册亨县"},{"code":"522328","name":"安龙县"}]},{"code":"522600","name":"黔东南苗族侗族自治州","children":[{"code":"522601","name":"凯里市"},{"code":"522622","name":"黄平县"},{"code":"522623","name":"施秉县"},{"code":"522624","name":"三穗县"},{"code":"522625","name":"镇远县"},{"code":"522626","name":"岑巩县"},{"code":"522627","name":"天柱县"},{"code":"522628","name":"锦屏县"},{"code":"522629","name":"剑河县"},{"code":"522630","name":"台江县"},{"code":"522631","name":"黎平县"},{"code":"522632","name":"榕江县"},{"code":"522633","name":"从江县"},{"code":"522634","name":"雷山县"},{"code":"522635","name":"麻江县"},{"code":"522636","name":"丹寨县"}]},{"code":"522700","name":"黔南布依族苗族自治州","children":[{"code":"522701","name":"都匀市"},{"code":"522702","name":"福泉市"},{"code":"522722","name":"荔波县"},{"code":"522723","name":"贵定县"},{"code":"522725","name":"瓮安县"},{"code":"522726","name":"独山县"},{"code":"522727","name":"平塘县"},{"code":"522728","name":"罗甸县"},{"code":"522729","name":"长顺县"},{"code":"522730","name":"龙里县"},{"code":"522731","name":"惠水县"},{"code":"522732","name":"三都水族自治县"}]}]},{"code":"530000","name":"云南省","children":[{"code":"530100","name":"昆明市","children":[{"code":"530102","name":"五华区"},{"code":"530103","name":"盘龙区"},{"code":"530111","name":"官渡区"},{"code":"530112","name":"西山区"},{"code":"530113","name":"东川区"},{"code":"530114","name":"呈贡区"},{"code":"530115","name":"晋宁区"},{"code":"530124","name":"富民县"},{"code":"530125","name":"宜良县"},{"code":"530126","name":"石林彝族自治县"},{"code":"530127","name":"嵩明县"},{"code":"530128","name":"禄劝彝族苗族自治县"},{"code":"530129","name":"寻甸回族彝族自治县"},{"code":"530181","name":"安宁市"}]},{"code":"530300","name":"曲靖市","children":[{"code":"530302","name":"麒麟区"},{"code":"530303","name":"沾益区"},{"code":"530304","name":"马龙区"},{"code":"530322","name":"陆良县"},{"code":"530323","name":"师宗县"},{"code":"530324","name":"罗平县"},{"code":"530325","name":"富源县"},{"code":"530326","name":"会泽县"},{"code":"530381","name":"宣威市"}]},{"code":"530400","name":"玉溪市","children":[{"code":"530402","name":"红塔区"},{"code":"530403","name":"江川区"},{"code":"530423","name":"通海县"},{"code":"530424","name":"华宁县"},{"code":"530425","name":"易门县"},{"code":"530426","name":"峨山彝族自治县"},{"code":"530427","name":"新平彝族傣族自治县"},{"code":"530428","name":"元江哈尼族彝族傣族自治县"},{"code":"530481","name":"澄江市"}]},{"code":"530500","name":"保山市","children":[{"code":"530502","name":"隆阳区"},{"code":"530521","name":"施甸县"},{"code":"530523","name":"龙陵县"},{"code":"530524","name":"昌宁县"},{"code":"530581","name":"腾冲市"}]},{"code":"530600","name":"昭通市","children":[{"code":"530602","name":"昭阳区"},{"code":"530621","name":"鲁甸县"},{"code":"530622","name":"巧家县"},{"code":"530623","name":"盐津县"},{"code":"530624","name":"大关县"},{"code":"530625","name":"永善县"},{"code":"530626","name":"绥江县"},{"code":"530627","name":"镇雄县"},{"code":"530628","name":"彝良县"},{"code":"530629","name":"威信县"},{"code":"530681","name":"水富市"}]},{"code":"530700","name":"丽江市","children":[{"code":"530702","name":"古城区"},{"code":"530721","name":"玉龙纳西族自治县"},{"code":"530722","name":"永胜县"},{"code":"530723","name":"华坪县"},{"code":"530724","name":"宁蒗彝族自治县"}]},{"code":"530800","name":"普洱市","children":[{"code":"530802","name":"思茅区"},{"code":"530821","name":"宁洱哈尼族彝族自治县"},{"code":"530822","name":"墨江哈尼族自治县"},{"code":"530823","name":"景东彝族自治县"},{"code":"530824","name":"景谷傣族彝族自治县"},{"code":"530825","name":"镇沅彝族哈尼族拉祜族自治县"},{"code":"530826","name":"江城哈尼族彝族自治县"},{"code":"530827","name":"孟连傣族拉祜族佤族自治县"},{"code":"530828","name":"澜沧拉祜族自治县"},{"code":"530829","name":"西盟佤族自治县"}]},{"code":"530900","name":"临沧市","children":[{"code":"530902","name":"临翔区"},{"code":"530921","name":"凤庆县"},{"code":"530922","name":"云县"},{"code":"530923","name":"永德县"},{"code":"530924","name":"镇康县"},{"code":"530925","name":"双江拉祜族佤族布朗族傣族自治县"},{"code":"530926","name":"耿马傣族佤族自治县"},{"code":"530927","name":"沧源佤族自治县"}]},{"code":"532300","name":"楚雄彝族自治州","children":[{"code":"532301","name":"楚雄市"},{"code":"532302","name":"禄丰市"},{"code":"532322","name":"双柏县"},{"code":"532323","name":"牟定县"},{"code":"532324","name":"南华县"},{"code":"532325","name":"姚安县"},{"code":"532326","name":"大姚县"},{"code":"532327","name":"永仁县"},{"code":"532328","name":"元谋县"},{"code":"532329","name":"武定县"}]},{"code":"532500","name":"红河哈尼族彝族自治州","children":[{"code":"532501","name":"个旧市"},{"code":"532502","name":"开远市"},{"code":"532503","name":"蒙自市"},{"code":"532504","name":"弥勒市"},{"code":"532523","name":"屏边苗族自治县"},{"code":"532524","name":"建水县"},{"code":"532525","name":"石屏县"},{"code":"532527","name":"泸西县"},{"code":"532528","name":"元阳县"},{"code":"532529","name":"红河县"},{"code":"532530","name":"金平苗族瑶族傣族自治县"},{"code":"532531","name":"绿春县"},{"code":"532532","name":"河口瑶族自治县"}]},{"code":"532600","name":"文山壮族苗族自治州","children":[{"code":"532601","name":"文山市"},{"code":"532622","name":"砚山县"},{"code":"532623","name":"西畴县"},{"code":"532624","name":"麻栗坡县"},{"code":"532625","name":"马关县"},{"code":"532626","name":"丘北县"},{"code":"532627","name":"广南县"},{"code":"532628","name":"富宁县"}]},{"code":"532800","name":"西双版纳傣族自治州","children":[{"code":"532801","name":"景洪市"},{"code":"532822","name":"勐海县"},{"code":"532823","name":"勐腊县"}]},{"code":"532900","name":"大理白族自治州","children":[{"code":"532901","name":"大理市"},{"code":"532922","name":"漾濞彝族自治县"},{"code":"532923","name":"祥云县"},{"code":"532924","name":"宾川县"},{"code":"532925","name":"弥渡县"},{"code":"532926","name":"南涧彝族自治县"},{"code":"532927","name":"巍山彝族回族自治县"},{"code":"532928","name":"永平县"},{"code":"532929","name":"云龙县"},{"code":"532930","name":"洱源县"},{"code":"532931","name":"剑川县"},{"code":"532932","name":"鹤庆县"}]},{"code":"533100","name":"德宏傣族景颇族自治州","children":[{"code":"533102","name":"瑞丽市"},{"code":"533103","name":"芒市"},{"code":"533122","name":"梁河县"},{"code":"533123","name":"盈江县"},{"code":"533124","name":"陇川县"}]},{"code":"533300","name":"怒江傈僳族自治州","children":[{"code":"533301","name":"泸水市"},{"code":"533323","name":"福贡县"},{"code":"533324","name":"贡山独龙族怒族自治县"},{"code":"533325","name":"兰坪白族普米族自治县"}]},{"code":"533400","name":"迪庆藏族自治州","children":[{"code":"533401","name":"香格里拉市"},{"code":"533422","name":"德钦县"},{"code":"533423","name":"维西傈僳族自治县"}]}]},{"code":"540000","name":"西藏自治区","children":[{"code":"540100","name":"拉萨市","children":[{"code":"540102","name":"城关区"},{"code":"540103","name":"堆龙德庆区"},{"code":"540104","name":"达孜区"},{"code":"540121","name":"林周县"},{"code":"540122","name":"当雄县"},{"code":"540123","name":"尼木县"},{"code":"540124","name":"曲水县"},{"code":"540127","name":"墨竹工卡县"},{"code":"540171","name":"格尔木藏青工业园区"},{"code":"540172","name":"拉萨经济技术开发区"},{"code":"540173","name":"西藏文化旅游创意园区"},{"code":"540174","name":"达孜工业园区"}]},{"code":"540200","name":"日喀则市","children":[{"code":"540202","name":"桑珠孜区"},{"code":"540221","name":"南木林县"},{"code":"540222","name":"江孜县"},{"code":"540223","name":"定日县"},{"code":"540224","name":"萨迦县"},{"code":"540225","name":"拉孜县"},{"code":"540226","name":"昂仁县"},{"code":"540227","name":"谢通门县"},{"code":"540228","name":"白朗县"},{"code":"540229","name":"仁布县"},{"code":"540230","name":"康马县"},{"code":"540231","name":"定结县"},{"code":"540232","name":"仲巴县"},{"code":"540233","name":"亚东县"},{"code":"540234","name":"吉隆县"},{"code":"540235","name":"聂拉木县"},{"code":"540236","name":"萨嘎县"},{"code":"540237","name":"岗巴县"}]},{"code":"540300","name":"昌都市","children":[{"code":"540302","name":"卡若区"},{"code":"540321","name":"江达县"},{"code":"540322","name":"贡觉县"},{"code":"540323","name":"类乌齐县"},{"code":"540324","name":"丁青县"},{"code":"540325","name":"察雅县"},{"code":"540326","name":"八宿县"},{"code":"540327","name":"左贡县"},{"code":"540328","name":"芒康县"},{"code":"540329","name":"洛隆县"},{"code":"540330","name":"边坝县"}]},{"code":"540400","name":"林芝市","children":[{"code":"540402","name":"巴宜区"},{"code":"540421","name":"工布江达县"},{"code":"540422","name":"米林县"},{"code":"540423","name":"墨脱县"},{"code":"540424","name":"波密县"},{"code":"540425","name":"察隅县"},{"code":"540426","name":"朗县"}]},{"code":"540500","name":"山南市","children":[{"code":"540502","name":"乃东区"},{"code":"540521","name":"扎囊县"},{"code":"540522","name":"贡嘎县"},{"code":"540523","name":"桑日县"},{"code":"540524","name":"琼结县"},{"code":"540525","name":"曲松县"},{"code":"540526","name":"措美县"},{"code":"540527","name":"洛扎县"},{"code":"540528","name":"加查县"},{"code":"540529","name":"隆子县"},{"code":"540530","name":"错那县"},{"code":"540531","name":"浪卡子县"}]},{"code":"540600","name":"那曲市","children":[{"code":"540602","name":"色尼区"},{"code":"540621","name":"嘉黎县"},{"code":"540622","name":"比如县"},{"code":"540623","name":"聂荣县"},{"code":"540624","name":"安多县"},{"code":"540625","name":"申扎县"},{"code":"540626","name":"索县"},{"code":"540627","name":"班戈县"},{"code":"540628","name":"巴青县"},{"code":"540629","name":"尼玛县"},{"code":"540630","name":"双湖县"}]},{"code":"542500","name":"阿里地区","children":[{"code":"542521","name":"普兰县"},{"code":"542522","name":"札达县"},{"code":"542523","name":"噶尔县"},{"code":"542524","name":"日土县"},{"code":"542525","name":"革吉县"},{"code":"542526","name":"改则县"},{"code":"542527","name":"措勤县"}]}]},{"code":"610000","name":"陕西省","children":[{"code":"610100","name":"西安市","children":[{"code":"610102","name":"新城区"},{"code":"610103","name":"碑林区"},{"code":"610104","name":"莲湖区"},{"code":"610111","name":"灞桥区"},{"code":"610112","name":"未央区"},{"code":"610113","name":"雁塔区"},{"code":"610114","name":"阎良区"},{"code":"610115","name":"临潼区"},{"code":"610116","name":"长安区"},{"code":"610117","name":"高陵区"},{"code":"610118","name":"鄠邑区"},{"code":"610122","name":"蓝田县"},{"code":"610124","name":"周至县"}]},{"code":"610200","name":"铜川市","children":[{"code":"610202","name":"王益区"},{"code":"610203","name":"印台区"},{"code":"610204","name":"耀州区"},{"code":"610222","name":"宜君县"}]},{"code":"610300","name":"宝鸡市","children":[{"code":"610302","name":"渭滨区"},{"code":"610303","name":"金台区"},{"code":"610304","name":"陈仓区"},{"code":"610305","name":"凤翔区"},{"code":"610323","name":"岐山县"},{"code":"610324","name":"扶风县"},{"code":"610326","name":"眉县"},{"code":"610327","name":"陇县"},{"code":"610328","name":"千阳县"},{"code":"610329","name":"麟游县"},{"code":"610330","name":"凤县"},{"code":"610331","name":"太白县"}]},{"code":"610400","name":"咸阳市","children":[{"code":"610402","name":"秦都区"},{"code":"610403","name":"杨陵区"},{"code":"610404","name":"渭城区"},{"code":"610422","name":"三原县"},{"code":"610423","name":"泾阳县"},{"code":"610424","name":"乾县"},{"code":"610425","name":"礼泉县"},{"code":"610426","name":"永寿县"},{"code":"610428","name":"长武县"},{"code":"610429","name":"旬邑县"},{"code":"610430","name":"淳化县"},{"code":"610431","name":"武功县"},{"code":"610481","name":"兴平市"},{"code":"610482","name":"彬州市"}]},{"code":"610500","name":"渭南市","children":[{"code":"610502","name":"临渭区"},{"code":"610503","name":"华州区"},{"code":"610522","name":"潼关县"},{"code":"610523","name":"大荔县"},{"code":"610524","name":"合阳县"},{"code":"610525","name":"澄城县"},{"code":"610526","name":"蒲城县"},{"code":"610527","name":"白水县"},{"code":"610528","name":"富平县"},{"code":"610581","name":"韩城市"},{"code":"610582","name":"华阴市"}]},{"code":"610600","name":"延安市","children":[{"code":"610602","name":"宝塔区"},{"code":"610603","name":"安塞区"},{"code":"610621","name":"延长县"},{"code":"610622","name":"延川县"},{"code":"610625","name":"志丹县"},{"code":"610626","name":"吴起县"},{"code":"610627","name":"甘泉县"},{"code":"610628","name":"富县"},{"code":"610629","name":"洛川县"},{"code":"610630","name":"宜川县"},{"code":"610631","name":"黄龙县"},{"code":"610632","name":"黄陵县"},{"code":"610681","name":"子长市"}]},{"code":"610700","name":"汉中市","children":[{"code":"610702","name":"汉台区"},{"code":"610703","name":"南郑区"},{"code":"610722","name":"城固县"},{"code":"610723","name":"洋县"},{"code":"610724","name":"西乡县"},{"code":"610725","name":"勉县"},{"code":"610726","name":"宁强县"},{"code":"610727","name":"略阳县"},{"code":"610728","name":"镇巴县"},{"code":"610729","name":"留坝县"},{"code":"610730","name":"佛坪县"}]},{"code":"610800","name":"榆林市","children":[{"code":"610802","name":"榆阳区"},{"code":"610803","name":"横山区"},{"code":"610822","name":"府谷县"},{"code":"610824","name":"靖边县"},{"code":"610825","name":"定边县"},{"code":"610826","name":"绥德县"},{"code":"610827","name":"米脂县"},{"code":"610828","name":"佳县"},{"code":"610829","name":"吴堡县"},{"code":"610830","name":"清涧县"},{"code":"610831","name":"子洲县"},{"code":"610881","name":"神木市"}]},{"code":"610900","name":"安康市","children":[{"code":"610902","name":"汉滨区"},{"code":"610921","name":"汉阴县"},{"code":"610922","name":"石泉县"},{"code":"610923","name":"宁陕县"},{"code":"610924","name":"紫阳县"},{"code":"610925","name":"岚皋县"},{"code":"610926","name":"平利县"},{"code":"610927","name":"镇坪县"},{"code":"610929","name":"白河县"},{"code":"610981","name":"旬阳市"}]},{"code":"611000","name":"商洛市","children":[{"code":"611002","name":"商州区"},{"code":"611021","name":"洛南县"},{"code":"611022","name":"丹凤县"},{"code":"611023","name":"商南县"},{"code":"611024","name":"山阳县"},{"code":"611025","name":"镇安县"},{"code":"611026","name":"柞水县"}]}]},{"code":"620000","name":"甘肃省","children":[{"code":"620100","name":"兰州市","children":[{"code":"620102","name":"城关区"},{"code":"620103","name":"七里河区"},{"code":"620104","name":"西固区"},{"code":"620105","name":"安宁区"},{"code":"620111","name":"红古区"},{"code":"620121","name":"永登县"},{"code":"620122","name":"皋兰县"},{"code":"620123","name":"榆中县"},{"code":"620171","name":"兰州新区"}]},{"code":"620200","name":"嘉峪关市","children":[{"code":"620201001","name":"雄关街道"},{"code":"620201002","name":"钢城街道"},{"code":"620201100","name":"新城镇"},{"code":"620201101","name":"峪泉镇"},{"code":"620201102","name":"文殊镇"}]},{"code":"620300","name":"金昌市","children":[{"code":"620302","name":"金川区"},{"code":"620321","name":"永昌县"}]},{"code":"620400","name":"白银市","children":[{"code":"620402","name":"白银区"},{"code":"620403","name":"平川区"},{"code":"620421","name":"靖远县"},{"code":"620422","name":"会宁县"},{"code":"620423","name":"景泰县"}]},{"code":"620500","name":"天水市","children":[{"code":"620502","name":"秦州区"},{"code":"620503","name":"麦积区"},{"code":"620521","name":"清水县"},{"code":"620522","name":"秦安县"},{"code":"620523","name":"甘谷县"},{"code":"620524","name":"武山县"},{"code":"620525","name":"张家川回族自治县"}]},{"code":"620600","name":"武威市","children":[{"code":"620602","name":"凉州区"},{"code":"620621","name":"民勤县"},{"code":"620622","name":"古浪县"},{"code":"620623","name":"天祝藏族自治县"}]},{"code":"620700","name":"张掖市","children":[{"code":"620702","name":"甘州区"},{"code":"620721","name":"肃南裕固族自治县"},{"code":"620722","name":"民乐县"},{"code":"620723","name":"临泽县"},{"code":"620724","name":"高台县"},{"code":"620725","name":"山丹县"}]},{"code":"620800","name":"平凉市","children":[{"code":"620802","name":"崆峒区"},{"code":"620821","name":"泾川县"},{"code":"620822","name":"灵台县"},{"code":"620823","name":"崇信县"},{"code":"620825","name":"庄浪县"},{"code":"620826","name":"静宁县"},{"code":"620881","name":"华亭市"}]},{"code":"620900","name":"酒泉市","children":[{"code":"620902","name":"肃州区"},{"code":"620921","name":"金塔县"},{"code":"620922","name":"瓜州县"},{"code":"620923","name":"肃北蒙古族自治县"},{"code":"620924","name":"阿克塞哈萨克族自治县"},{"code":"620981","name":"玉门市"},{"code":"620982","name":"敦煌市"}]},{"code":"621000","name":"庆阳市","children":[{"code":"621002","name":"西峰区"},{"code":"621021","name":"庆城县"},{"code":"621022","name":"环县"},{"code":"621023","name":"华池县"},{"code":"621024","name":"合水县"},{"code":"621025","name":"正宁县"},{"code":"621026","name":"宁县"},{"code":"621027","name":"镇原县"}]},{"code":"621100","name":"定西市","children":[{"code":"621102","name":"安定区"},{"code":"621121","name":"通渭县"},{"code":"621122","name":"陇西县"},{"code":"621123","name":"渭源县"},{"code":"621124","name":"临洮县"},{"code":"621125","name":"漳县"},{"code":"621126","name":"岷县"}]},{"code":"621200","name":"陇南市","children":[{"code":"621202","name":"武都区"},{"code":"621221","name":"成县"},{"code":"621222","name":"文县"},{"code":"621223","name":"宕昌县"},{"code":"621224","name":"康县"},{"code":"621225","name":"西和县"},{"code":"621226","name":"礼县"},{"code":"621227","name":"徽县"},{"code":"621228","name":"两当县"}]},{"code":"622900","name":"临夏回族自治州","children":[{"code":"622901","name":"临夏市"},{"code":"622921","name":"临夏县"},{"code":"622922","name":"康乐县"},{"code":"622923","name":"永靖县"},{"code":"622924","name":"广河县"},{"code":"622925","name":"和政县"},{"code":"622926","name":"东乡族自治县"},{"code":"622927","name":"积石山保安族东乡族撒拉族自治县"}]},{"code":"623000","name":"甘南藏族自治州","children":[{"code":"623001","name":"合作市"},{"code":"623021","name":"临潭县"},{"code":"623022","name":"卓尼县"},{"code":"623023","name":"舟曲县"},{"code":"623024","name":"迭部县"},{"code":"623025","name":"玛曲县"},{"code":"623026","name":"碌曲县"},{"code":"623027","name":"夏河县"}]}]},{"code":"630000","name":"青海省","children":[{"code":"630100","name":"西宁市","children":[{"code":"630102","name":"城东区"},{"code":"630103","name":"城中区"},{"code":"630104","name":"城西区"},{"code":"630105","name":"城北区"},{"code":"630106","name":"湟中区"},{"code":"630121","name":"大通回族土族自治县"},{"code":"630123","name":"湟源县"}]},{"code":"630200","name":"海东市","children":[{"code":"630202","name":"乐都区"},{"code":"630203","name":"平安区"},{"code":"630222","name":"民和回族土族自治县"},{"code":"630223","name":"互助土族自治县"},{"code":"630224","name":"化隆回族自治县"},{"code":"630225","name":"循化撒拉族自治县"}]},{"code":"632200","name":"海北藏族自治州","children":[{"code":"632221","name":"门源回族自治县"},{"code":"632222","name":"祁连县"},{"code":"632223","name":"海晏县"},{"code":"632224","name":"刚察县"}]},{"code":"632300","name":"黄南藏族自治州","children":[{"code":"632301","name":"同仁市"},{"code":"632322","name":"尖扎县"},{"code":"632323","name":"泽库县"},{"code":"632324","name":"河南蒙古族自治县"}]},{"code":"632500","name":"海南藏族自治州","children":[{"code":"632521","name":"共和县"},{"code":"632522","name":"同德县"},{"code":"632523","name":"贵德县"},{"code":"632524","name":"兴海县"},{"code":"632525","name":"贵南县"}]},{"code":"632600","name":"果洛藏族自治州","children":[{"code":"632621","name":"玛沁县"},{"code":"632622","name":"班玛县"},{"code":"632623","name":"甘德县"},{"code":"632624","name":"达日县"},{"code":"632625","name":"久治县"},{"code":"632626","name":"玛多县"}]},{"code":"632700","name":"玉树藏族自治州","children":[{"code":"632701","name":"玉树市"},{"code":"632722","name":"杂多县"},{"code":"632723","name":"称多县"},{"code":"632724","name":"治多县"},{"code":"632725","name":"囊谦县"},{"code":"632726","name":"曲麻莱县"}]},{"code":"632800","name":"海西蒙古族藏族自治州","children":[{"code":"632801","name":"格尔木市"},{"code":"632802","name":"德令哈市"},{"code":"632803","name":"茫崖市"},{"code":"632821","name":"乌兰县"},{"code":"632822","name":"都兰县"},{"code":"632823","name":"天峻县"},{"code":"632857","name":"大柴旦行政委员会"}]}]},{"code":"640000","name":"宁夏回族自治区","children":[{"code":"640100","name":"银川市","children":[{"code":"640104","name":"兴庆区"},{"code":"640105","name":"西夏区"},{"code":"640106","name":"金凤区"},{"code":"640121","name":"永宁县"},{"code":"640122","name":"贺兰县"},{"code":"640181","name":"灵武市"}]},{"code":"640200","name":"石嘴山市","children":[{"code":"640202","name":"大武口区"},{"code":"640205","name":"惠农区"},{"code":"640221","name":"平罗县"}]},{"code":"640300","name":"吴忠市","children":[{"code":"640302","name":"利通区"},{"code":"640303","name":"红寺堡区"},{"code":"640323","name":"盐池县"},{"code":"640324","name":"同心县"},{"code":"640381","name":"青铜峡市"}]},{"code":"640400","name":"固原市","children":[{"code":"640402","name":"原州区"},{"code":"640422","name":"西吉县"},{"code":"640423","name":"隆德县"},{"code":"640424","name":"泾源县"},{"code":"640425","name":"彭阳县"}]},{"code":"640500","name":"中卫市","children":[{"code":"640502","name":"沙坡头区"},{"code":"640521","name":"中宁县"},{"code":"640522","name":"海原县"}]}]},{"code":"650000","name":"新疆维吾尔自治区","children":[{"code":"650100","name":"乌鲁木齐市","children":[{"code":"650102","name":"天山区"},{"code":"650103","name":"沙依巴克区"},{"code":"650104","name":"新市区"},{"code":"650105","name":"水磨沟区"},{"code":"650106","name":"头屯河区"},{"code":"650107","name":"达坂城区"},{"code":"650109","name":"米东区"},{"code":"650121","name":"乌鲁木齐县"}]},{"code":"650200","name":"克拉玛依市","children":[{"code":"650202","name":"独山子区"},{"code":"650203","name":"克拉玛依区"},{"code":"650204","name":"白碱滩区"},{"code":"650205","name":"乌尔禾区"}]},{"code":"650400","name":"吐鲁番市","children":[{"code":"650402","name":"高昌区"},{"code":"650421","name":"鄯善县"},{"code":"650422","name":"托克逊县"}]},{"code":"650500","name":"哈密市","children":[{"code":"650502","name":"伊州区"},{"code":"650521","name":"巴里坤哈萨克自治县"},{"code":"650522","name":"伊吾县"}]},{"code":"652300","name":"昌吉回族自治州","children":[{"code":"652301","name":"昌吉市"},{"code":"652302","name":"阜康市"},{"code":"652323","name":"呼图壁县"},{"code":"652324","name":"玛纳斯县"},{"code":"652325","name":"奇台县"},{"code":"652327","name":"吉木萨尔县"},{"code":"652328","name":"木垒哈萨克自治县"}]},{"code":"652700","name":"博尔塔拉蒙古自治州","children":[{"code":"652701","name":"博乐市"},{"code":"652702","name":"阿拉山口市"},{"code":"652722","name":"精河县"},{"code":"652723","name":"温泉县"}]},{"code":"652800","name":"巴音郭楞蒙古自治州","children":[{"code":"652801","name":"库尔勒市"},{"code":"652822","name":"轮台县"},{"code":"652823","name":"尉犁县"},{"code":"652824","name":"若羌县"},{"code":"652825","name":"且末县"},{"code":"652826","name":"焉耆回族自治县"},{"code":"652827","name":"和静县"},{"code":"652828","name":"和硕县"},{"code":"652829","name":"博湖县"},{"code":"652871","name":"库尔勒经济技术开发区"}]},{"code":"652900","name":"阿克苏地区","children":[{"code":"652901","name":"阿克苏市"},{"code":"652902","name":"库车市"},{"code":"652922","name":"温宿县"},{"code":"652924","name":"沙雅县"},{"code":"652925","name":"新和县"},{"code":"652926","name":"拜城县"},{"code":"652927","name":"乌什县"},{"code":"652928","name":"阿瓦提县"},{"code":"652929","name":"柯坪县"}]},{"code":"653000","name":"克孜勒苏柯尔克孜自治州","children":[{"code":"653001","name":"阿图什市"},{"code":"653022","name":"阿克陶县"},{"code":"653023","name":"阿合奇县"},{"code":"653024","name":"乌恰县"}]},{"code":"653100","name":"喀什地区","children":[{"code":"653101","name":"喀什市"},{"code":"653121","name":"疏附县"},{"code":"653122","name":"疏勒县"},{"code":"653123","name":"英吉沙县"},{"code":"653124","name":"泽普县"},{"code":"653125","name":"莎车县"},{"code":"653126","name":"叶城县"},{"code":"653127","name":"麦盖提县"},{"code":"653128","name":"岳普湖县"},{"code":"653129","name":"伽师县"},{"code":"653130","name":"巴楚县"},{"code":"653131","name":"塔什库尔干塔吉克自治县"}]},{"code":"653200","name":"和田地区","children":[{"code":"653201","name":"和田市"},{"code":"653221","name":"和田县"},{"code":"653222","name":"墨玉县"},{"code":"653223","name":"皮山县"},{"code":"653224","name":"洛浦县"},{"code":"653225","name":"策勒县"},{"code":"653226","name":"于田县"},{"code":"653227","name":"民丰县"}]},{"code":"654000","name":"伊犁哈萨克自治州","children":[{"code":"654002","name":"伊宁市"},{"code":"654003","name":"奎屯市"},{"code":"654004","name":"霍尔果斯市"},{"code":"654021","name":"伊宁县"},{"code":"654022","name":"察布查尔锡伯自治县"},{"code":"654023","name":"霍城县"},{"code":"654024","name":"巩留县"},{"code":"654025","name":"新源县"},{"code":"654026","name":"昭苏县"},{"code":"654027","name":"特克斯县"},{"code":"654028","name":"尼勒克县"}]},{"code":"654200","name":"塔城地区","children":[{"code":"654201","name":"塔城市"},{"code":"654202","name":"乌苏市"},{"code":"654203","name":"沙湾市"},{"code":"654221","name":"额敏县"},{"code":"654224","name":"托里县"},{"code":"654225","name":"裕民县"},{"code":"654226","name":"和布克赛尔蒙古自治县"}]},{"code":"654300","name":"阿勒泰地区","children":[{"code":"654301","name":"阿勒泰市"},{"code":"654321","name":"布尔津县"},{"code":"654322","name":"富蕴县"},{"code":"654323","name":"福海县"},{"code":"654324","name":"哈巴河县"},{"code":"654325","name":"青河县"},{"code":"654326","name":"吉木乃县"}]},{"code":"659000","name":"自治区直辖县级行政区划","children":[{"code":"659001","name":"石河子市"},{"code":"659002","name":"阿拉尔市"},{"code":"659003","name":"图木舒克市"},{"code":"659004","name":"五家渠市"},{"code":"659005","name":"北屯市"},{"code":"659006","name":"铁门关市"},{"code":"659007","name":"双河市"},{"code":"659008","name":"可克达拉市"},{"code":"659009","name":"昆玉市"},{"code":"659010","name":"胡杨河市"},{"code":"659011","name":"新星市"}]}]}]'), Bt = /* @__PURE__ */ Ce({
name: "NewbieAddress",
props: {
value: {
type: [String, Number, Array],
default: () => []
},
/**
* 生成哪个级别的数据
* 1: 省, 2: 省市, 3: 省市区
*/
level: {
type: Number,
default: 3
},
/**
* 是否禁用选择器
*/
disabled: {
type: Boolean,
default: !1
},
/**
* 占位符
*/
placeholder: {
type: String,
default: "请选择地区"
},
/**
* 获取数据的链接,如果不传则使用本地数据
*
*/
url: {
type: String,
default: ""
},
/**
* 返回数据处理函数,处理后返回数据格式必需符合下面的 [数据格式](#数据格式)
*/
afterFetched: {
type: Function,
default: null
},
/**
* 自定义数据源
*/
dataSource: {
type: Array,
default: () => []
}
},
emits: ["update:value"],
setup(e, {
emit: n
}) {
const a = Ue({
items: e.dataSource,
value: e.value
});
q(() => e.dataSource, () => {
a.items = e.dataSource;
}), a.items.length === 0 && (e.url ? o() : a.items = Fd);
const o = async () => {
let c = await pn().get(e.url);
e.afterFetched && (c = e.afterFetched(c)), a.items = c;
}, t = (c) => {
n("update:value", c);
};
return () => m(io, {
value: a.value,
"onUpdate:value": (c) => a.value = c,
fieldNames: {
label: "name",
value: "code",
children: "children"
},
allowClear: !0,
placeholder: e.placeholder,
disabled: e.disabled,
options: a.items,
changeOnSelect: !0,
showSearch: !0,
onChange: t
}, null);
}
});
function zt(e, n) {
if (e += "", e && e.length === 6) {
if (n || (/0000$/.test(e) ? n = 1 : /00$/.test(e) ? n = 2 : n = 3), n === 1)
return [`${e.substr(0, 2)}0000`];
if (n === 2)
return [`${e.substr(0, 2)}0000`, `${e.substr(0, 4)}00`];
if (n === 3)
return [`${e.substr(0, 2)}0000`, `${e.substr(0, 4)}00`, e];
}
return [];
}
const Te = (e) => (e.install = (n) => {
const a = e.name || e.__name;
n.component(a, e);
}, e), Hd = zt, Kd = Te(Bt), jn = /* @__PURE__ */ Ce({
name: "NewbieButton",
props: {
/**
* 按钮类型
* @values primary, ghost, dashed, link, text ,default
*/
type: {
type: String,
default: "default"
},
/**
* 按钮大小
* @values large, middle, small
*/
size: {
type: String,
default: "middle"
},
/**
* 失效状态
*/
disabled: {
type: Boolean,
default: !1
},
/**
* 设置危险按钮
*/
danger: {
type: Boolean,
default: !1
},
/**
* 按钮标签
*/
label: {
type: String,
default: ""
},
/**
* 按钮图标,需要使用
*
*/
icon: {
type: Object,
default: null
},
/**
* 按钮图标位置
* @values left, right
*/
iconPosition: {
type: String,
default: "left"
},
/**
* 请求状态控制器
* @param {boolean} fetcher.loading 是否加载中
*/
fetcher: {
type: Object,
default: () => ({
loading: !1
})
},
/**
* 原生 [Button](https://www.antdv.com/components/button-cn#api) 配置
*/
buttonProps: {
type: Object,
default: () => ({})
}
},
emits: [
/**
* @event click
* @param {Event} event 点击事件
*/
"click"
],
setup(e, {
emit: n,
slots: a
}) {
const o = (d) => {
n("click", d);
}, t = () => e.label || a.default(), c = () => e.icon && e.iconPosition === "left" ? [e.icon, t()] : e.icon && e.iconPosition === "right" ? [t(), e.icon] : [t()];
return () => m(te, H({
danger: e.danger,
loading: e.fetcher.loading,
type: e.type,
size: e.size,
disabled: e.disabled,
onClick: o
}, e.buttonProps), {
default: () => c()
});
}
}), Wd = Te(jn);
function Je(e) {
let n = `请使用 '@${e}' 事件,不要放在 props 中`;
return n += `
Please use '@${e}' event instead of props`, n;
}
const Ut = (e, n) => {
const a = e.__vccOpts || e;
for (const [o, t] of n)
a[o] = t;
return a;
}, Yd = Ce({
props: {
/** 编辑器模式 */
mode: {
type: String,
default: "default"
},
/** 编辑器默认内容 */
defaultContent: {
type: Array,
default: () => []
},
defaultHtml: {
type: String,
default: ""
},
/** 编辑器默认配置 */
defaultConfig: {
type: Object,
default: () => ({})
},
/* 自定义 v-model */
modelValue: {
type: String,
default: ""
}
},
emits: ["update:modelValue", "onCreated", "onChange", "onDestroyed", "onMaxLength", "onFocus", "onBlur", "customAlert", "customPaste"],
setup(e, n) {
const a = j(null), o = ht(null), t = j(""), c = (i) => {
if (!a.value) return;
const r = Bc(e.defaultContent);
i({
selector: a.value,
mode: e.mode,
content: r || [],
html: e.defaultHtml || e.modelValue || "",
config: {
...e.defaultConfig,
onCreated(s) {
if (o.value = s, n.emit("onCreated", s), e.defaultConfig.onCreated) {
const u = Je("onCreated");
throw new Error(u);
}
},
onChange(s) {
const u = s.getHtml();
if (t.value = u, n.emit("update:modelValue", u), n.emit("onChange", s), e.defaultConfig.onChange) {
const g = Je("onChange");
throw new Error(g);
}
},
onDestroyed(s) {
if (n.emit("onDestroyed", s), e.defaultConfig.onDestroyed) {
const u = Je("onDestroyed");
throw new Error(u);
}
},
onMaxLength(s) {
if (n.emit("onMaxLength", s), e.defaultConfig.onMaxLength) {
const u = Je("onMaxLength");
throw new Error(u);
}
},
onFocus(s) {
if (n.emit("onFocus", s), e.defaultConfig.onFocus) {
const u = Je("onFocus");
throw new Error(u);
}
},
onBlur(s) {
if (n.emit("onBlur", s), e.defaultConfig.onBlur) {
const u = Je("onBlur");
throw new Error(u);
}
},
customAlert(s, u) {
if (n.emit("customAlert", s, u), e.defaultConfig.customAlert) {
const g = Je("customAlert");
throw new Error(g);
}
},
customPaste: (s, u) => {
if (e.defaultConfig.customPaste) {
const y = Je("customPaste");
throw new Error(y);
}
let g;
return n.emit("customPaste", s, u, (y) => {
g = y;
}), g;
}
}
});
};
function d(i) {
const r = o.value;
r != null && r.setHtml(i);
}
return Xe(() => {
import("./index.esm-BgO95J3d.js").then((i) => {
c(i.createEditor);
});
}), q(
() => e.modelValue,
(i) => {
i !== t.value && d(i);
}
), {
box: a
};
}
}), Xd = {
ref: "box",
style: { height: "100%" }
};
function Qd(e, n, a, o, t, c) {
return vt(), gt("div", Xd, null, 512);
}
const Gd = /* @__PURE__ */ Ut(Yd, [["render", Qd]]), Zd = Ce({
props: {
// editor 实例
editor: {
type: Object,
default: () => null
},
/** 编辑器模式 */
mode: {
type: String,
default: "default"
},
/** 编辑器默认配置 */
defaultConfig: {
type: Object,
default: () => ({})
}
},
setup(e) {
const n = j(null), a = (o) => {
if (n.value) {
if (o == null)
throw new Error("Not found instance of Editor when create <Toolbar/> component");
import("./index.esm-BgO95J3d.js").then((t) => {
t.DomEditor.getToolbar(o) || t.createToolbar({
editor: o,
selector: n.value || "<div></div>",
mode: e.mode,
config: e.defaultConfig
});
});
}
};
return Xe(() => {
oo(() => {
const { editor: o } = e;
o != null && a(o);
});
}), {
selector: n
};
}
}), Jd = { ref: "selector" };
function qd(e, n, a, o, t, c) {
return vt(), gt("div", Jd, null, 512);
}
const er = /* @__PURE__ */ Ut(Zd, [["render", qd]]), Vt = Symbol("NEWBIE_EDITOR"), Ft = Symbol("NEWBIE_TABLE"), ba = Symbol("NEWBIE_UPLOADER"), vo = Symbol("NEWBIE_FORM"), Ht = Symbol("NEWBIE_SEARCH"), nr = /* @__PURE__ */ Ce({
name: "NewbieProvider",
/**
* @typedef {Object} ProviderProps
* @property {EditorProviderProps} [editor] `NewbieEditor` 配置
* @property {TableProviderProps} [table] `NewbieTable` 配置
* @property {UploaderProviderProps} [uploader] `NewbieUploader` 配置
* @property {FormProviderProps} [form] `NewbieForm` 配置
* @property {SearchProviderProps} [search] `NewbieSearch` 配置
*
*/
props: {
/**
* @typedef {Object} EditorProviderProps `NewbieEditor` 配置
* @property {string} editor.uploadUrl 上传地址
*/
editor: {
type: Object,
default: () => ({
uploadUrl: ""
})
},
/**
* @typedef {Object} TableProviderProps `NewbieTable` 配置
* @property {number} [page] 当前页码
* @property {number} [pageSize] 每页条数
* @property {string} [pageKey] 页码参数名
* @property {string} [pageSizeKey] 每页条数参数名
* @property {Function} [afterFetched] 返回数据处理函数
*/
table: {
type: Object,
default: () => ({
page: 1,
pageSize: 10,
pageKey: "page",
pageSizeKey: "pageSize",
afterFetched: null
})
},
/**
* @typedef {Object} UploaderProviderProps `NewbieUploader` 配置
* @property {string} uploadUrl 上传地址
* @property {UploadFileItem} defaultFileItem 默认文件项
*
* @typedef {Object} UploadFileItem 文件项
* @property {string} [id] 文件 ID
* @property {string} [name] 文件名
* @property {string} defaultFileItem.url 文件地址
* @property {string} defaultFileItem.path 文件路径
* @property {string} [thumbUrl] 缩略图地址
*/
uploader: {
type: Object,
default: () => ({
uploadUrl: "",
defaultFileItem: {
id: "id",
name: "name",
url: "url",
path: "path",
thumbUrl: "thumbUrl"
}
})
},
/**
* @typedef {Object} FormProviderProps `NewbieForm` 配置
* @property {Object} [format] 格式化配置, 如 {date: true} 表示在提交表单时使用 `useFormFormat` 格式所有日期字段
* @property {Function} [afterFetched] 处理接口返回数据的函数
* @property {Object} [columns] Field的默认配置, 如 {switch: {defaultProps: {...}}},可以被覆盖
*/
form: {
type: Object,
default: () => ({
format: {},
afterFetched: null,
columns: {}
})
},
/**
* @typedef {Object} SearchProviderProps `NewbieSearch` 配置
* @property {Object} [maskClass] 定制伪 Input 样式
* @property {Object} [inputClass] 弹层中 Input 的样式
* @property {Function} [valueFormatter] 时间格式化函数
*/
search: {
type: Object,
default: () => ({
maskClass: "",
inputClass: "",
valueFormatter: null
})
}
},
setup(e, {
slots: n
}) {
return Dn(Vt, {
uploadUrl: "",
...e.editor
}), Dn(Ft, {
page: 1,
pageSize: 10,
pageKey: "page",
pageSizeKey: "pageSize",
afterFetched: null,
...e.table
}), Dn(ba, {
defaultFileItem: {
id: "id",
name: "name",
url: "url",
path: "path",
thumbUrl: "thumbUrl"
},
...e.uploader
}), Dn(vo, {
format: {},
...e.form
}), Dn(Ht, {
maskClass: "",
inputClass: "",
valueFormatter: null,
...e.search
}), () => {
var a;
return m("div", null, [(a = n.default) == null ? void 0 : a.call(n)]);
};
}
}), Kt = /* @__PURE__ */ Ce({
name: "NewbieEditor",
props: {
/**
* 输入框的值
* @model
*/
value: {
type: String,
default: ""
},
/**
* 占位符
*/
placeholder: {
type: String,
default: "请输入内容..."
},
/**
* 是否禁用
*/
disabled: {
type: Boolean,
default: !1
},
/**
* 是否只读
*/
readonly: {
type: Boolean,
default: !1
},
/**
* @param {Object} config.toolbarConfig [工具栏配置](https://www.wangeditor.com/v5/toolbar-config.html)
* @param {Object} config.editorConfig [编辑器配置](https://www.wangeditor.com/v5/editor-config.html)
*/
config: {
type: Object,
default: () => ({
toolbarConfig: {},
editorConfig: {}
})
}
},
emits: ["update:value"],
setup(e, {
emit: n,
expose: a
}) {
var p, l;
const o = ga.useInjectFormItemContext(), t = ht(), c = j(""), d = j({
excludeKeys: ["group-video", "emotion"],
...(p = e.config) == null ? void 0 : p.toolbarConfig
}), {
uploadUrl: i
} = tn(Vt, () => ({})), r = j({
placeholder: e.placeholder,
readOnly: e.disabled || e.readonly,
MENU_CONF: {
uploadImage: {
async customUpload(b, S) {
const O = new FormData();
O.append("file", b);
try {
let w = await pn().post(i, O);
Hn(w, () => {
const {
url: P,
alt: C,
href: k
} = w.result;
S(P, C, k);
});
} catch (w) {
console.log(w);
}
}
}
},
...(l = e.config) == null ? void 0 : l.editorConfig
}), s = (b) => {
t.value && t.value.setHtml(b);
};
zc(() => {
const b = t.value;
b != null && b.destroy();
}), q(() => e.value, (b) => {
b !== c.value && t.value && s(b);
});
const u = (b) => {
t.value = b, s(e.value), b.on("fullScreen", () => {
document.body.classList.add("fullscreen");
}), b.on("unFullScreen", () => {
document.body.classList.remove("fullscreen");
}), !e.disabled && !e.readonly && (x.value = h());
}, g = (b) => {
let S = b.getHtml();
b.isEmpty() && (S = ""), S !== e.value && (n("update:value", S), o.onFieldChange());
}, y = async (b, S) => {
switch (S) {
case "success":
fe.success(b);
break;
case "info":
fe.info(b);
break;
case "warning":
fe.warning(b);
break;
case "error":
fe.error(b);
break;
default:
fe.info(b);
break;
}
};
a({
setContent: s
});
const x = j(), f = j(), h = () => {
var b;
return (b = t == null ? void 0 : t.value) != null && b.destroy ? m(er, {
editor: t.value,
defaultConfig: d.value,
style: "border-bottom: 1px solid #f0f0f0"
}, null) : m("div", null, null);
}, v = () => m(Gd, {
modelValue: c.value,
"onUpdate:modelValue": (b) => c.value = b,
defaultConfig: r.value,
style: "height: 400px; overflow-y: hidden",
onOnChange: g,
onOnCreated: u,
onCustomAlert: y
}, null);
return Xe(() => {
f.value = v();
}), () => m("div", {
style: "border: 1px solid #f0f0f0"
}, [x.value, f.value]);
}
}), ar = Te(Kt), we = (e) => Wa(e) || oe(e) ? "auto" : isNaN(e) ? e : `${e}px`, or = (e, n) => {
let a = St, o = `请选择${e.title || ""}`;
return e.defaultProps && e.defaultProps.type === "range" && (a = Et, o = se(e.placeholder) ? [e.placeholder, e.placeholder] : [o, o]), m(a, H({
value: n[e.key],
"onUpdate:value": (t) => n[e.key] = t,
allowClear: !0,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: o,
style: e.style || {
width: we(e.width || "200px")
},
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
});
}, tr = (e, n) => {
let a = Ot, o = `请选择${e.title || ""}`;
return e.defaultProps && e.defaultProps.type === "range" && (a = Pt, o = se(e.placeholder) ? [e.placeholder, e.placeholder] : [o, o]), m(a, H({
value: n[e.key],
"onUpdate:value": (t) => n[e.key] = t,
allowClear: !0,
placeholder: o,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
style: e.style || {
width: we(e.width || "200px")
},
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
});
}, cr = (e, n) => {
(n[e.key] === null || n[e.key] === "null" || n[e.key] === void 0) && (n[e.key] = ""), n[e.key] = String(n[e.key]);
let a = {};
e.defaultProps && (e.defaultProps.prefix && (a.prefix = () => $(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (a.suffix = () => $(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (a.addonBefore = () => $(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (a.addonAfter = () => $(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append));
let o = {
width: we(e.width || "200px")
}, t = Nn;
return (e.type === "textarea" || e.defaultProps && e.defaultProps.type === "textarea") && (t = Nn.TextArea, o = {
width: we(e.width || "100%")
}), (e.type === "password" || e.defaultProps && e.defaultProps.type === "password") && (t = Nn.Password), m(t, H({
value: n[e.key],
"onUpdate:value": (c) => n[e.key] = c,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: e.placeholder || `请填写${e.title || ""}`,
style: e.style || o,
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...a,
...e.defaultSlots
});
};
function dr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const rr = (e, n, a) => {
var c, d, i, r, s;
Object.keys(a).length || (a.value = null);
let o = (c = n[e.key]) != null && c.length ? n[e.key].map((u) => m(ke, {
key: u,
closable: !e.disabled,
style: {
marginBottom: "10px"
},
onClose: () => {
n[e.key] = n[e.key].filter((g) => g !== u);
}
}, dr(u) ? u : {
default: () => [u]
})) : null, t = null;
return e.disabled || e.readonly ? t = null : ((d = e.defaultProps) == null ? void 0 : d.inputType) === "time" ? t = m(Ot, {
value: a.value,
"onUpdate:value": (u) => a.value = u,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
format: ((i = e.defaultProps) == null ? void 0 : i.format) || "HH:mm",
onChange: (u) => {
var y;
if (!u)
return;
const g = u.format(((y = e.defaultProps) == null ? void 0 : y.format) || "HH:mm");
if (n[e.key].indexOf(g) !== -1) {
fe.warn("时间已存在");
return;
}
n[e.key].push(g), cn(() => {
a.value = "";
});
}
}, null) : ((r = e.defaultProps) == null ? void 0 : r.inputType) === "time_range" ? t = m(Pt, {
value: a.value,
"onUpdate:value": (u) => a.value = u,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
format: ((s = e.defaultProps) == null ? void 0 : s.format) || "HH:mm",
onChange: (u) => {
var y, x;
if (!u)
return;
let g = [u[0].format(((y = e.defaultProps) == null ? void 0 : y.format) || "HH:mm"), u[1].format(((x = e.defaultProps) == null ? void 0 : x.format) || "HH:mm")];
if (g = g.join("至"), n[e.key].indexOf(g) !== -1) {
fe.warn("时间已存在");
return;
}
n[e.key].push(g), cn(() => {
a.value = [];
});
}
}, null) : t = m(Nn, {
value: a.value,
"onUpdate:value": (u) => a.value = u,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: e.placeholder || "按Enter键确认",
style: e.style || {
width: we(e.width || "200px")
},
onPressEnter: to((u) => {
if (u.preventDefault(), u.keyCode === 13 && a.value) {
if (n[e.key].indexOf(a.value) !== -1) {
fe.warn("标签已存在");
return;
}
n[e.key].push(a.value), a.value = "";
}
}, ["stop"])
}, {
prefix: () => m(At, null, null)
}), m("div", {
class: "newbie-form-tag"
}, [[o, t]]);
}, lr = (e, n) => {
let a = $(e.options) ? e.options(n) : e.options;
return a = a.map((o) => se(o) || de(o) ? {
value: o,
label: o
} : o), m(Fn, H({
value: n[e.key],
"onUpdate:value": (o) => n[e.key] = o,
options: a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
allowClear: !0,
placeholder: e.placeholder || `请选择${e.title || ""}`,
dropdownMatchSelectWidth: !e.width,
showSearch: !0,
optionFilterProp: "label",
style: e.style || (e.width ? {
width: we(e.width)
} : {}),
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
});
}, ir = (e, n) => {
let a = $(e.options) ? e.options(n) : e.options;
return m(Hc, H({
value: n[e.key],
"onUpdate:value": (o) => n[e.key] = o,
treeData: a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
treeDefaultExpandAll: !0,
treeNodeFilterProp: "label",
showSearch: !0,
allowClear: !0,
placeholder: e.placeholder || `请选择${e.title || ""}`,
dropdownMatchSelectWidth: !e.width,
style: e.style || (e.width ? {
width: we(e.width)
} : {}),
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
});
}, sr = (e, n, a) => {
if (Object.keys(a).length || (a.fetcher = {
loading: !1
}, a.options = [], a.init = !1), !a.init) {
a.init = !0;
let c = [];
e.options && (c = $(e.options) ? e.options(n) : e.options, c = c.map((d) => se(d) || de(d) ? {
value: d,
label: d
} : d)), a.options = c;
}
const o = e.method || "get";
if (["get", "post"].indexOf(o) === -1)
return console.error(`${e.key}: method must be 'get' or 'post' in "remote" type`), null;
if (!e.url)
return console.error(`${e.key}: url is required in "remote" type`), null;
const t = fd(async (c) => {
if (c = c.trim(), !c)
return;
let d = await pn(a.fetcher)[o](e.url, {
params: {
[e.keyword || "keyword"]: c,
...e.params
}
});
Hn(d, () => {
e.onSearch && (d.result = e.onSearch(d.result)), a.options = d.result;
});
}, 1e3);
return m(Fn, H({
value: n[e.key],
"onUpdate:value": (c) => n[e.key] = c,
options: a.options,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
showSearch: !0,
allowClear: !0,
filterOption: !1,
notFoundContent: a.fetcher.loading ? void 0 : "无内容",
placeholder: e.placeholder || `请检索并选择${e.title}`,
dropdownMatchSelectWidth: !e.width,
style: e.style || (e.width ? {
width: we(e.width)
} : {}),
class: {
readonly: e.readonly,
...e.class
},
onSearch: t
}, e.defaultProps), {
notFoundContent: () => a.fetcher.loading ? m(_t, null, null) : "",
...e.defaultSlots
});
}, ur = (e, n) => m(Bt, H({
value: n[e.key],
"onUpdate:value": (a) => n[e.key] = a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: e.placeholder || `请选择${e.title || ""}`,
class: {
readonly: e.readonly,
...e.class
},
style: e.style || {
width: we(e.width || "200px")
}
}, e.defaultProps), null), mr = (e, n) => {
var o;
let a = $(e.options) ? e.options(n) : e.options;
return (de(n[e.key]) || se(n[e.key])) && (n[e.key] = rd(a, n[e.key], (o = e.defaultProps) == null ? void 0 : o.fieldNames)), m(io, H({
value: n[e.key],
"onUpdate:value": (t) => n[e.key] = t,
allowClear: !0,
options: a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
changeOnSelect: !0,
showSearch: {
filter(t, c) {
return c.some((d) => d.label && d.label.toLowerCase().indexOf(t.toLowerCase()) > -1);
}
},
placeholder: e.placeholder || `请选择${e.title || ""}`,
style: e.style || {
width: we(e.width || "200px")
},
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
});
}, fr = (e, n) => (n[e.key] = Number(n[e.key]) || 0, m(Ha, H({
value: n[e.key],
"onUpdate:value": (a) => n[e.key] = a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: e.placeholder || `请填写${e.title || ""}`,
style: e.style || {
width: we(e.width) || "100px"
},
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...e.defaultSlots
}));
function pr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const hr = (e, n) => {
let a = {
checkedChildren: () => {
var o;
return ((o = e.options) == null ? void 0 : o[0]) || null;
},
unCheckedChildren: () => {
var o;
return ((o = e.options) == null ? void 0 : o[1]) || null;
}
};
return m(va, H({
checked: n[e.key],
"onUpdate:checked": (o) => n[e.key] = o,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
style: e.style || {}
}, e.defaultProps), pr(a) ? a : {
default: () => [a]
});
};
function gr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const vr = (e, n) => {
let a, o = $(e.options) ? e.options(n) : e.options;
return o = o.map((t) => se(t) || de(t) ? {
value: t,
label: t
} : t), e.readonly ? m("div", {
style: {
padding: "0 11px"
}
}, [m(ke, null, gr(a = po(n[e.key], o)) ? a : {
default: () => [a]
})]) : m(ya, H({
value: n[e.key],
"onUpdate:value": (t) => n[e.key] = t,
optionType: "button",
buttonStyle: "solid",
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
options: o,
style: e.style || {}
}, e.defaultProps), {
...e.defaultSlots
});
};
function yr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const br = (e, n) => {
let a = $(e.options) ? e.options(n) : e.options;
return a = a.map((o) => se(o) || de(o) ? {
value: o,
label: o
} : o), e.readonly ? m("div", {
style: {
padding: "0 11px"
}
}, [ho(a, n[e.key]).map((o) => m(ke, {
style: {
marginRight: "5px"
}
}, yr(o) ? o : {
default: () => [o]
}))]) : m(Dt, H({
value: n[e.key],
"onUpdate:value": (o) => n[e.key] = o,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
options: a,
shape: "square",
style: e.style || {}
}, e.defaultProps), {
...e.defaultSlots
});
}, wr = (e, n) => n[e.key] ? m("div", H({
style: e.style || {},
innerHTML: n[e.key]
}, e.defaultProps), null) : null;
function kr(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var Ia = { exports: {} }, Vo;
function Cr() {
return Vo || (Vo = 1, function(e) {
(function() {
var n = function(a) {
if (!(this instanceof n))
return new n(a);
if (this.version = 1, this.support = typeof File < "u" && typeof Blob < "u" && typeof FileList < "u" && (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || !1), !this.support) return !1;
var o = this;
o.files = [], o.defaults = {
chunkSize: 1048576,
forceChunkSize: !1,
simultaneousUploads: 3,
fileParameterName: "file",
chunkNumberParameterName: "resumableChunkNumber",
chunkSizeParameterName: "resumableChunkSize",
currentChunkSizeParameterName: "resumableCurrentChunkSize",
totalSizeParameterName: "resumableTotalSize",
typeParameterName: "resumableType",
identifierParameterName: "resumableIdentifier",
fileNameParameterName: "resumableFilename",
relativePathParameterName: "resumableRelativePath",
totalChunksParameterName: "resumableTotalChunks",
throttleProgressCallbacks: 0.5,
query: {},
headers: {},
preprocess: null,
method: "multipart",
uploadMethod: "POST",
testMethod: "GET",
prioritizeFirstAndLastChunk: !1,
target: "/",
testTarget: null,
parameterNamespace: "",
testChunks: !0,
generateUniqueIdentifier: null,
getTarget: null,
maxChunkRetries: 100,
chunkRetryInterval: void 0,
permanentErrors: [400, 404, 415, 500, 501],
maxFiles: void 0,
withCredentials: !1,
xhrTimeout: 0,
clearInput: !0,
chunkFormat: "blob",
setChunkTypeFromFile: !1,
maxFilesErrorCallback: function(f, h) {
var v = o.getOpt("maxFiles");
alert("Please upload no more than " + v + " file" + (v === 1 ? "" : "s") + " at a time.");
},
minFileSize: 1,
minFileSizeErrorCallback: function(f, h) {
alert(f.fileName || f.name + " is too small, please upload files larger than " + t.formatSize(o.getOpt("minFileSize")) + ".");
},
maxFileSize: void 0,
maxFileSizeErrorCallback: function(f, h) {
alert(f.fileName || f.name + " is too large, please upload files less than " + t.formatSize(o.getOpt("maxFileSize")) + ".");
},
fileType: [],
fileTypeErrorCallback: function(f, h) {
alert(f.fileName || f.name + " has type not allowed, please upload files of type " + o.getOpt("fileType") + ".");
}
}, o.opts = a || {}, o.getOpt = function(f) {
var h = this;
if (f instanceof Array) {
var v = {};
return t.each(f, function(p) {
v[p] = h.getOpt(p);
}), v;
}
if (h instanceof x) {
if (typeof h.opts[f] < "u")
return h.opts[f];
h = h.fileObj;
}
if (h instanceof y) {
if (typeof h.opts[f] < "u")
return h.opts[f];
h = h.resumableObj;
}
if (h instanceof n)
return typeof h.opts[f] < "u" ? h.opts[f] : h.defaults[f];
}, o.events = [], o.on = function(f, h) {
o.events.push(f.toLowerCase(), h);
}, o.fire = function() {
for (var f = [], h = 0; h < arguments.length; h++) f.push(arguments[h]);
for (var v = f[0].toLowerCase(), h = 0; h <= o.events.length; h += 2)
o.events[h] == v && o.events[h + 1].apply(o, f.slice(1)), o.events[h] == "catchall" && o.events[h + 1].apply(null, f);
v == "fileerror" && o.fire("error", f[2], f[1]), v == "fileprogress" && o.fire("progress");
};
var t = {
stopEvent: function(f) {
f.stopPropagation(), f.preventDefault();
},
each: function(f, h) {
if (typeof f.length < "u") {
for (var v = 0; v < f.length; v++)
if (h(f[v]) === !1) return;
} else
for (v in f)
if (h(v, f[v]) === !1) return;
},
generateUniqueIdentifier: function(f, h) {
var v = o.getOpt("generateUniqueIdentifier");
if (typeof v == "function")
return v(f, h);
var p = f.webkitRelativePath || f.fileName || f.name, l = f.size;
return l + "-" + p.replace(/[^0-9a-zA-Z_-]/img, "");
},
contains: function(f, h) {
var v = !1;
return t.each(f, function(p) {
return p == h ? (v = !0, !1) : !0;
}), v;
},
formatSize: function(f) {
return f < 1024 ? f + " bytes" : f < 1024 * 1024 ? (f / 1024).toFixed(0) + " KB" : f < 1024 * 1024 * 1024 ? (f / 1024 / 1024).toFixed(1) + " MB" : (f / 1024 / 1024 / 1024).toFixed(1) + " GB";
},
getTarget: function(f, h) {
var v = o.getOpt("target");
if (f === "test" && o.getOpt("testTarget") && (v = o.getOpt("testTarget") === "/" ? o.getOpt("target") : o.getOpt("testTarget")), typeof v == "function")
return v(h);
var p = v.indexOf("?") < 0 ? "?" : "&", l = h.join("&");
return v + p + l;
}
}, c = function(f) {
t.stopEvent(f), f.dataTransfer && f.dataTransfer.items ? u(f.dataTransfer.items, f) : f.dataTransfer && f.dataTransfer.files && u(f.dataTransfer.files, f);
}, d = function(f) {
f.preventDefault();
};
function i(f, h, v, p) {
var l;
if (f.isFile)
return f.file(function(b) {
b.relativePath = h + b.name, v.push(b), p();
});
if (f.isDirectory ? l = f : f instanceof File && v.push(f), typeof f.webkitGetAsEntry == "function" && (l = f.webkitGetAsEntry()), l && l.isDirectory)
return s(l, h + l.name + "/", v, p);
typeof f.getAsFile == "function" && (f = f.getAsFile(), f instanceof File && (f.relativePath = h + f.name, v.push(f))), p();
}
function r(f, h) {
if (!f || f.length === 0)
return h();
f[0](function() {
r(f.slice(1), h);
});
}
function s(f, h, v, p) {
var l = f.createReader();
l.readEntries(function(b) {
if (!b.length)
return p();
r(
b.map(function(S) {
return i.bind(null, S, h, v);
}),
p
);
});
}
function u(f, h) {
if (f.length) {
o.fire("beforeAdd");
var v = [];
r(
Array.prototype.map.call(f, function(p) {
return i.bind(null, p, "", v);
}),
function() {
v.length && g(v, h);
}
);
}
}
var g = function(f, h) {
var v = 0, p = o.getOpt(["maxFiles", "minFileSize", "maxFileSize", "maxFilesErrorCallback", "minFileSizeErrorCallback", "maxFileSizeErrorCallback", "fileType", "fileTypeErrorCallback"]);
if (typeof p.maxFiles < "u" && p.maxFiles < f.length + o.files.length)
if (p.maxFiles === 1 && o.files.length === 1 && f.length === 1)
o.removeFile(o.files[0]);
else
return p.maxFilesErrorCallback(f, v++), !1;
var l = [], b = [], S = f.length, O = function() {
if (!--S) {
if (!l.length && !b.length)
return;
window.setTimeout(function() {
o.fire("filesAdded", l, b);
}, 0);
}
};
t.each(f, function(w) {
var P = w.name;
if (p.fileType.length > 0) {
var C = !1;
for (var k in p.fileType) {
var E = "." + p.fileType[k];
if (P.toLowerCase().indexOf(E.toLowerCase(), P.length - E.length) !== -1) {
C = !0;
break;
}
}
if (!C)
return p.fileTypeErrorCallback(w, v++), !1;
}
if (typeof p.minFileSize < "u" && w.size < p.minFileSize)
return p.minFileSizeErrorCallback(w, v++), !1;
if (typeof p.maxFileSize < "u" && w.size > p.maxFileSize)
return p.maxFileSizeErrorCallback(w, v++), !1;
function D(A) {
o.getFromUniqueIdentifier(A) ? b.push(w) : function() {
w.uniqueIdentifier = A;
var R = new y(o, w, A);
o.files.push(R), l.push(R), R.container = typeof h < "u" ? h.srcElement : null, window.setTimeout(function() {
o.fire("fileAdded", R, h);
}, 0);
}(), O();
}
var M = t.generateUniqueIdentifier(w, h);
M && typeof M.then == "function" ? M.then(
function(A) {
D(A);
},
function() {
O();
}
) : D(M);
});
};
function y(f, h, v) {
var p = this;
p.opts = {}, p.getOpt = f.getOpt, p._prevProgress = 0, p.resumableObj = f, p.file = h, p.fileName = h.fileName || h.name, p.size = h.size, p.relativePath = h.relativePath || h.webkitRelativePath || p.fileName, p.uniqueIdentifier = v, p._pause = !1, p.container = "";
var l = v !== void 0, b = function(S, O) {
switch (S) {
case "progress":
p.resumableObj.fire("fileProgress", p, O);
break;
case "error":
p.abort(), l = !0, p.chunks = [], p.resumableObj.fire("fileError", p, O);
break;
case "success":
if (l) return;
p.resumableObj.fire("fileProgress", p), p.isComplete() && p.resumableObj.fire("fileSuccess", p, O);
break;
case "retry":
p.resumableObj.fire("fileRetry", p);
break;
}
};
return p.chunks = [], p.abort = function() {
var S = 0;
t.each(p.chunks, function(O) {
O.status() == "uploading" && (O.abort(), S++);
}), S > 0 && p.resumableObj.fire("fileProgress", p);
}, p.cancel = function() {
var S = p.chunks;
p.chunks = [], t.each(S, function(O) {
O.status() == "uploading" && (O.abort(), p.resumableObj.uploadNextChunk());
}), p.resumableObj.removeFile(p), p.resumableObj.fire("fileProgress", p);
}, p.retry = function() {
p.bootstrap();
var S = !1;
p.resumableObj.on("chunkingComplete", function() {
S || p.resumableObj.upload(), S = !0;
});
}, p.bootstrap = function() {
p.abort(), l = !1, p.chunks = [], p._prevProgress = 0;
for (var S = p.getOpt("forceChunkSize") ? Math.ceil : Math.floor, O = Math.max(S(p.file.size / p.getOpt("chunkSize")), 1), w = 0; w < O; w++)
(function(P) {
window.setTimeout(function() {
p.chunks.push(new x(p.resumableObj, p, P, b)), p.resumableObj.fire("chunkingProgress", p, P / O);
}, 0);
})(w);
window.setTimeout(function() {
p.resumableObj.fire("chunkingComplete", p);
}, 0);
}, p.progress = function() {
if (l) return 1;
var S = 0, O = !1;
return t.each(p.chunks, function(w) {
w.status() == "error" && (O = !0), S += w.progress(!0);
}), S = O || S > 0.99999 ? 1 : S, S = Math.max(p._prevProgress, S), p._prevProgress = S, S;
}, p.isUploading = function() {
var S = !1;
return t.each(p.chunks, function(O) {
if (O.status() == "uploading")
return S = !0, !1;
}), S;
}, p.isComplete = function() {
var S = !1;
return t.each(p.chunks, function(O) {
var w = O.status();
if (w == "pending" || w == "uploading" || O.preprocessState === 1)
return S = !0, !1;
}), !S;
}, p.pause = function(S) {
typeof S > "u" ? p._pause = !p._pause : p._pause = S;
}, p.isPaused = function() {
return p._pause;
}, p.resumableObj.fire("chunkingStart", p), p.bootstrap(), this;
}
function x(f, h, v, p) {
var l = this;
l.opts = {}, l.getOpt = f.getOpt, l.resumableObj = f, l.fileObj = h, l.fileObjSize = h.size, l.fileObjType = h.file.type, l.offset = v, l.callback = p, l.lastProgressCallback = /* @__PURE__ */ new Date(), l.tested = !1, l.retries = 0, l.pendingRetry = !1, l.preprocessState = 0;
var b = l.getOpt("chunkSize");
return l.loaded = 0, l.startByte = l.offset * b, l.endByte = Math.min(l.fileObjSize, (l.offset + 1) * b), l.fileObjSize - l.endByte < b && !l.getOpt("forceChunkSize") && (l.endByte = l.fileObjSize), l.xhr = null, l.test = function() {
l.xhr = new XMLHttpRequest();
var S = function(k) {
l.tested = !0;
var E = l.status();
E == "success" ? (l.callback(E, l.message()), l.resumableObj.uploadNextChunk()) : l.send();
};
l.xhr.addEventListener("load", S, !1), l.xhr.addEventListener("error", S, !1), l.xhr.addEventListener("timeout", S, !1);
var O = [], w = l.getOpt("parameterNamespace"), P = l.getOpt("query");
typeof P == "function" && (P = P(l.fileObj, l)), t.each(P, function(k, E) {
O.push([encodeURIComponent(w + k), encodeURIComponent(E)].join("="));
}), O = O.concat(
[
// define key/value pairs for additional parameters
["chunkNumberParameterName", l.offset + 1],
["chunkSizeParameterName", l.getOpt("chunkSize")],
["currentChunkSizeParameterName", l.endByte - l.startByte],
["totalSizeParameterName", l.fileObjSize],
["typeParameterName", l.fileObjType],
["identifierParameterName", l.fileObj.uniqueIdentifier],
["fileNameParameterName", l.fileObj.fileName],
["relativePathParameterName", l.fileObj.relativePath],
["totalChunksParameterName", l.fileObj.chunks.length]
].filter(function(k) {
return l.getOpt(k[0]);
}).map(function(k) {
return [
w + l.getOpt(k[0]),
encodeURIComponent(k[1])
].join("=");
})
), l.xhr.open(l.getOpt("testMethod"), t.getTarget("test", O)), l.xhr.timeout = l.getOpt("xhrTimeout"), l.xhr.withCredentials = l.getOpt("withCredentials");
var C = l.getOpt("headers");
typeof C == "function" && (C = C(l.fileObj, l)), t.each(C, function(k, E) {
l.xhr.setRequestHeader(k, E);
}), l.xhr.send(null);
}, l.preprocessFinished = function() {
l.preprocessState = 2, l.send();
}, l.send = function() {
var S = l.getOpt("preprocess");
if (typeof S == "function")
switch (l.preprocessState) {
case 0:
l.preprocessState = 1, S(l);
return;
case 1:
return;
}
if (l.getOpt("testChunks") && !l.tested) {
l.test();
return;
}
l.xhr = new XMLHttpRequest(), l.xhr.upload.addEventListener("progress", function(N) {
/* @__PURE__ */ new Date() - l.lastProgressCallback > l.getOpt("throttleProgressCallbacks") * 1e3 && (l.callback("progress"), l.lastProgressCallback = /* @__PURE__ */ new Date()), l.loaded = N.loaded || 0;
}, !1), l.loaded = 0, l.pendingRetry = !1, l.callback("progress");
var O = function(N) {
var F = l.status();
if (F == "success" || F == "error")
l.callback(F, l.message()), l.resumableObj.uploadNextChunk();
else {
l.callback("retry", l.message()), l.abort(), l.retries++;
var Z = l.getOpt("chunkRetryInterval");
Z !== void 0 ? (l.pendingRetry = !0, setTimeout(l.send, Z)) : l.send();
}
};
l.xhr.addEventListener("load", O, !1), l.xhr.addEventListener("error", O, !1), l.xhr.addEventListener("timeout", O, !1);
var w = [
["chunkNumberParameterName", l.offset + 1],
["chunkSizeParameterName", l.getOpt("chunkSize")],
["currentChunkSizeParameterName", l.endByte - l.startByte],
["totalSizeParameterName", l.fileObjSize],
["typeParameterName", l.fileObjType],
["identifierParameterName", l.fileObj.uniqueIdentifier],
["fileNameParameterName", l.fileObj.fileName],
["relativePathParameterName", l.fileObj.relativePath],
["totalChunksParameterName", l.fileObj.chunks.length]
].filter(function(N) {
return l.getOpt(N[0]);
}).reduce(function(N, F) {
return N[l.getOpt(F[0])] = F[1], N;
}, {}), P = l.getOpt("query");
typeof P == "function" && (P = P(l.fileObj, l)), t.each(P, function(N, F) {
w[N] = F;
});
var C = l.fileObj.file.slice ? "slice" : l.fileObj.file.mozSlice ? "mozSlice" : l.fileObj.file.webkitSlice ? "webkitSlice" : "slice", k = l.fileObj.file[C](l.startByte, l.endByte, l.getOpt("setChunkTypeFromFile") ? l.fileObj.file.type : ""), E = null, D = [], M = l.getOpt("parameterNamespace");
if (l.getOpt("method") === "octet")
E = k, t.each(w, function(N, F) {
D.push([encodeURIComponent(M + N), encodeURIComponent(F)].join("="));
});
else if (E = new FormData(), t.each(w, function(N, F) {
E.append(M + N, F), D.push([encodeURIComponent(M + N), encodeURIComponent(F)].join("="));
}), l.getOpt("chunkFormat") == "blob")
E.append(M + l.getOpt("fileParameterName"), k, l.fileObj.fileName);
else if (l.getOpt("chunkFormat") == "base64") {
var A = new FileReader();
A.onload = function(N) {
E.append(M + l.getOpt("fileParameterName"), A.result), l.xhr.send(E);
}, A.readAsDataURL(k);
}
var R = t.getTarget("upload", D), K = l.getOpt("uploadMethod");
l.xhr.open(K, R), l.getOpt("method") === "octet" && l.xhr.setRequestHeader("Content-Type", "application/octet-stream"), l.xhr.timeout = l.getOpt("xhrTimeout"), l.xhr.withCredentials = l.getOpt("withCredentials");
var T = l.getOpt("headers");
typeof T == "function" && (T = T(l.fileObj, l)), t.each(T, function(N, F) {
l.xhr.setRequestHeader(N, F);
}), l.getOpt("chunkFormat") == "blob" && l.xhr.send(E);
}, l.abort = function() {
l.xhr && l.xhr.abort(), l.xhr = null;
}, l.status = function() {
return l.pendingRetry ? "uploading" : l.xhr ? l.xhr.readyState < 4 ? "uploading" : l.xhr.status == 200 || l.xhr.status == 201 ? "success" : t.contains(l.getOpt("permanentErrors"), l.xhr.status) || l.retries >= l.getOpt("maxChunkRetries") ? "error" : (l.abort(), "pending") : "pending";
}, l.message = function() {
return l.xhr ? l.xhr.responseText : "";
}, l.progress = function(S) {
typeof S > "u" && (S = !1);
var O = S ? (l.endByte - l.startByte) / l.fileObjSize : 1;
if (l.pendingRetry) return 0;
(!l.xhr || !l.xhr.status) && (O *= 0.95);
var w = l.status();
switch (w) {
case "success":
case "error":
return 1 * O;
case "pending":
return 0 * O;
default:
return l.loaded / (l.endByte - l.startByte) * O;
}
}, this;
}
return o.uploadNextChunk = function() {
var f = !1;
if (o.getOpt("prioritizeFirstAndLastChunk") && (t.each(o.files, function(v) {
if (v.chunks.length && v.chunks[0].status() == "pending" && v.chunks[0].preprocessState === 0)
return v.chunks[0].send(), f = !0, !1;
if (v.chunks.length > 1 && v.chunks[v.chunks.length - 1].status() == "pending" && v.chunks[v.chunks.length - 1].preprocessState === 0)
return v.chunks[v.chunks.length - 1].send(), f = !0, !1;
}), f) || (t.each(o.files, function(v) {
if (v.isPaused() === !1 && t.each(v.chunks, function(p) {
if (p.status() == "pending" && p.preprocessState === 0)
return p.send(), f = !0, !1;
}), f) return !1;
}), f)) return !0;
var h = !1;
return t.each(o.files, function(v) {
if (!v.isComplete())
return h = !0, !1;
}), h || o.fire("complete"), !1;
}, o.assignBrowse = function(f, h) {
typeof f.length > "u" && (f = [f]), t.each(f, function(v) {
var p;
v.tagName === "INPUT" && v.type === "file" ? p = v : (p = document.createElement("input"), p.setAttribute("type", "file"), p.style.display = "none", v.addEventListener("click", function() {
p.style.opacity = 0, p.style.display = "block", p.focus(), p.click(), p.style.display = "none";
}, !1), v.appendChild(p));
var l = o.getOpt("maxFiles");
typeof l > "u" || l != 1 ? p.setAttribute("multiple", "multiple") : p.removeAttribute("multiple"), h ? p.setAttribute("webkitdirectory", "webkitdirectory") : p.removeAttribute("webkitdirectory");
var b = o.getOpt("fileType");
typeof b < "u" && b.length >= 1 ? p.setAttribute("accept", b.map(function(S) {
return "." + S;
}).join(",")) : p.removeAttribute("accept"), p.addEventListener("change", function(S) {
g(S.target.files, S);
var O = o.getOpt("clearInput");
O && (S.target.value = "");
}, !1);
});
}, o.assignDrop = function(f) {
typeof f.length > "u" && (f = [f]), t.each(f, function(h) {
h.addEventListener("dragover", d, !1), h.addEventListener("dragenter", d, !1), h.addEventListener("drop", c, !1);
});
}, o.unAssignDrop = function(f) {
typeof f.length > "u" && (f = [f]), t.each(f, function(h) {
h.removeEventListener("dragover", d), h.removeEventListener("dragenter", d), h.removeEventListener("drop", c);
});
}, o.isUploading = function() {
var f = !1;
return t.each(o.files, function(h) {
if (h.isUploading())
return f = !0, !1;
}), f;
}, o.upload = function() {
if (!o.isUploading()) {
o.fire("uploadStart");
for (var f = 1; f <= o.getOpt("simultaneousUploads"); f++)
o.uploadNextChunk();
}
}, o.pause = function() {
t.each(o.files, function(f) {
f.abort();
}), o.fire("pause");
}, o.cancel = function() {
o.fire("beforeCancel");
for (var f = o.files.length - 1; f >= 0; f--)
o.files[f].cancel();
o.fire("cancel");
}, o.progress = function() {
var f = 0, h = 0;
return t.each(o.files, function(v) {
f += v.progress() * v.size, h += v.size;
}), h > 0 ? f / h : 0;
}, o.addFile = function(f, h) {
g([f], h);
}, o.addFiles = function(f, h) {
g(f, h);
}, o.removeFile = function(f) {
for (var h = o.files.length - 1; h >= 0; h--)
o.files[h] === f && o.files.splice(h, 1);
}, o.getFromUniqueIdentifier = function(f) {
var h = !1;
return t.each(o.files, function(v) {
v.uniqueIdentifier == f && (h = v);
}), h;
}, o.getSize = function() {
var f = 0;
return t.each(o.files, function(h) {
f += h.size;
}), f;
}, o.handleDropEvent = function(f) {
c(f);
}, o.handleChangeEvent = function(f) {
g(f.target.files, f), f.target.value = "";
}, o.updateQuery = function(f) {
o.opts.query = f;
}, this;
};
e.exports = n;
})();
}(Ia)), Ia.exports;
}
var xr = Cr();
const Sr = /* @__PURE__ */ kr(xr);
function Fo(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const Wt = /* @__PURE__ */ Ce({
name: "NewbieUploader",
props: {
value: {
type: [Object, Array, String],
default: () => ({})
},
/**
* 上传文件字段名
*/
name: {
type: String,
default: "file"
},
/**
* 设置上传的请求头部,IE10 以上有效
*/
headers: {
type: Object,
default: () => ({})
},
/**
* 接受上传的文件类型, 详见 [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept)
*/
accept: {
type: String,
default: ""
},
/**
* 上传列表的内建样式,支持三种基本样式 text, picture 和 picture-card
*
* @values text, picture, picture-card
*/
type: {
type: String,
default: "picture-card"
},
/**
* 是否禁用
*/
disabled: {
type: Boolean,
default: !1
},
/**
* 单个文件大小上限,单位为 MB
*/
maxSize: {
type: Number,
default: 20
},
/**
* 上传文件个数上限
*/
maxNum: {
type: Number,
default: 1
},
/**
* 是否支持多选文件
*/
multiple: {
type: Boolean,
default: !1
},
/**
* 是否使用分块上传
*/
multipart: {
type: Boolean,
default: !1
},
/**
* 上传文件的服务器地址
*/
action: {
type: String,
default: ""
},
/**
* 上传时的附加参数
*/
extraData: {
type: Object,
default: () => ({})
},
/**
* 上传按钮文本
*/
uploadText: {
type: String,
default: "上传"
},
/**
* 上传盘符标志,可以灵活配合后台使用
*/
disk: {
type: String,
default: ""
},
/**
* 原生 [Uploader](https://www.antdv.com/components/upload-cn#api) 配置
*/
uploadProps: {
type: Object,
default: () => ({})
}
},
emits: [
"update:value",
/**
* 上传成功时触发
*
* @event success
* @param {Array} fileList 文件列表
*
*/
"success"
],
setup(e, {
emit: n
}) {
const {
STATE_CODE_SUCCESS: a
} = ld, o = ga.useInjectFormItemContext(), t = tn(ba, () => ({})), c = t.uploadUrl || "", d = t.defaultFileItem || {}, {
url: i,
path: r,
name: s
} = d, u = Ue({
fileList: [],
previewVisible: !1,
previewCurrent: 0,
progress: e.multipart ? {
strokeColor: {
"0%": "#108ee9",
"100%": "#87d068"
},
strokeWidth: 3,
format: (P) => `${parseFloat(P.toFixed(2))}%`
} : null
}), g = X(() => !e.maxNum || e.maxNum === 1), y = X(() => u.fileList.length >= e.maxNum), x = X(() => e.type === "picture-card"), f = (P) => {
be(P) || (P = [P]);
const C = P.filter((k) => k.done || !!k[r] || !!k[s]).map((k) => ({
...Ya(k, Object.values(d)),
_type: "file",
_disk: e.disk
}));
return g.value ? C[0] || null : C;
}, h = (P) => {
if (!P)
return [];
P = be(P) ? P : [P], u.fileList = P.filter((C) => C[i] || C[s] || C[r]).map((C) => ({
uid: pd(1, 1e7),
done: !0,
name: C[s] || "附件",
url: C[i],
_type: "file",
...C
})), n("update:value", f(u.fileList));
};
Xe(() => {
h(e.value);
}), q(() => e.value, (P) => {
P && !be(P) && (P = [P]), Kn(jo(P, r).sort(), jo(u.fileList, r).sort()) || h(P);
});
const v = (P) => {
u.previewCurrent = u.fileList.findIndex((C) => C.uid === P.uid), u.previewVisible = !0;
}, p = (P) => {
let C = f(P);
n("update:value", C), n("success", C), o.onFieldChange();
}, l = ({
file: P,
fileList: C
}) => {
var k, E;
if (C = C.map((D) => {
if (D.status === "done" && D.response) {
const M = D.response;
M.result[r] ? (D = {
...D,
...Ya(M.result, Object.values(d))
}, D.done = !0) : D.isRemoved = !0;
} else D.status === "error" && (D.isRemoved = !0);
return D;
}).filter((D) => !D.isRemoved), P.status === "removed")
p(C);
else if (P.status === "done" && ((k = P.response) == null ? void 0 : k.status) !== a)
fe.error(((E = P.response) == null ? void 0 : E.result) || "上传失败,请稍后再试");
else if (P.status === "error" && P.error)
P.error.status === 413 ? fe.error("413, 超过服务器上传附件的大小限制") : fe.error(P.error.message || "上传失败,请稍后再试");
else if (!P.status) {
let D = -1;
C.forEach((M, A) => {
M.uid === P.uid && (D = A);
}), D >= 0 && C.splice(D, 1);
}
hn(C, (D) => D.done) && p(C), u.fileList = C;
}, b = (P) => P.size > e.maxSize * 1024 * 1024 ? (fe.error(`最大只能上传${e.maxSize}M 的文件`), !1) : y.value ? (fe.error(`最多只能上传${e.maxNum}个文件`), !1) : !0, S = async ({
action: P,
data: C,
file: k,
filename: E,
headers: D,
onError: M,
onProgress: A,
onSuccess: R,
withCredentials: K
}) => {
console.log("Using uploadAction");
const T = new FormData();
C && Object.keys(C).forEach((N) => {
T.append(N, C[N]);
}), T.append(E, k), e.disk && T.append("_disk", e.disk);
try {
let N = await pn().post(P, T, {
withCredentials: K,
headers: D,
onUploadProgress: ({
total: F,
loaded: Z
}) => {
A({
percent: parseInt(Math.round(Z / F * 100).toFixed(2))
}, k);
}
});
R(N, k);
} catch (N) {
M(N);
}
return {
abort() {
console.log("upload progress is aborted.");
}
};
}, O = async ({
action: P,
data: C,
file: k,
headers: E,
onError: D,
onProgress: M,
onSuccess: A
}) => {
C = C || {}, e.disk && (C._disk = e.disk);
const R = new Sr({
// Use chunk size that is smaller than your maximum limit due a resumable issue
// https://github.com/23/resumable.js/issues/51
chunkSize: 1 * 1024 * 1024,
//https://github.com/23/resumable.js/issues/559#issuecomment-622429803
forceChunkSize: !1,
simultaneousUploads: 3,
testChunks: !1,
throttleProgressCallbacks: 1,
// Get the url from data-url tag
target: P,
query: C,
headers: E
});
R.on("fileAdded", () => {
R.upload();
}), R.on("fileProgress", (K) => {
M({
percent: K.progress() * 100
});
}), R.on("fileSuccess", (K, T) => {
A(JSON.parse(T), K);
}), R.on("fileError", (K) => {
D(K);
}), R.addFile(k);
}, w = () => x.value ? y.value ? null : [e.disabled ? m(Nt, null, null) : m(Ro, null, null), e.disabled ? null : m("div", {
class: "newbie-upload-text"
}, [he("上传")])] : !x.value && !y.value ? [m(jn, {
label: e.uploadText || "上传",
type: "primary",
icon: m(Ro, null, null)
}, null)] : null;
return () => {
let P, C;
return m("div", {
class: "newbie-uploader"
}, [m(Kc, H({
fileList: u.fileList,
"onUpdate:fileList": (k) => u.fileList = k,
class: `newbie-upload ${x.value ? "is-image" : ""}`,
name: e.name,
listType: e.type,
disabled: e.disabled,
accept: e.accept,
action: e.action || c,
headers: e.headers,
data: e.extraData,
multiple: e.multiple,
progress: u.progress,
beforeUpload: b,
customRequest: e.multipart ? O : S,
onPreview: e.type !== "text" ? v : null,
onChange: l
}, e.uploadProps), Fo(P = w()) ? P : {
default: () => [P]
}), e.type !== "text" ? m(Wc, {
preview: {
visible: u.previewVisible,
onVisibleChange: (k) => u.previewVisible = k,
current: u.previewCurrent
}
}, Fo(C = u.fileList.map((k) => m(It, {
style: {
display: "none"
},
src: k.url
}, null))) ? C : {
default: () => [C]
}) : null]);
};
}
}), Er = (e, n) => m(Wt, H({
value: n[e.key],
"onUpdate:value": (a) => n[e.key] = a,
key: e.key,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, e.defaultProps), {
...e.defaultSlots
}), Or = (e, n) => m(Kt, H({
key: e.key,
value: n[e.key],
"onUpdate:value": (a) => n[e.key] = a,
readonly: e.readonly,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
placeholder: e.placeholder || `请填写${e.title || ""}`
}, e.defaultProps), null), Pr = (e, n) => {
const a = n[e.key];
return a ? be(a) ? a.map((o) => m(ke, o.defaultProps, {
default: () => o
})) : m(ke, e.defaultProps, {
default: () => a
}) : null;
}, ia = (e, n, a, o) => {
let t = "";
const { uploaderProvider: c } = o;
if (n && !oe(n[e.key]) ? t = n[e.key] : oe(e.defaultValue) || (t = $(e.defaultValue) ? e.defaultValue({ submitForm: a, existingData: n }) : e.defaultValue), e.init && $(e.init) && (t = e.init({ submitForm: a, value: t, existingData: n })), e.type === "number" || e.type === "slider" || e.type === "rate")
t = t ? Number(t) : 0;
else if (e.type === "select" || e.type === "remote")
e.defaultProps && (e.defaultProps.mode === "multiple" || e.defaultProps.mode === "tags") ? t = t || [] : t = t || void 0;
else if (e.type === "tree-select")
e.defaultProps && (e.defaultProps.multiple === !0 || e.defaultProps.treeCheckable === !0) ? t = t || [] : t = t || void 0;
else if (e.type === "date" || e.type === "time")
e.defaultProps && e.defaultProps.type === "range" ? t = t ? [Oa(t[0]), Oa(t[1])] : [] : t = t ? Oa(t) : null;
else if (e.type === "address")
t = t || [], be(t) || (t = zt(t));
else if (e.type === "uploader")
if (e.defaultProps && e.defaultProps.maxNum && e.defaultProps.maxNum > 1)
t = t || [];
else {
const { path: d, url: i } = c.defaultFileItem;
t = t || { [d]: "", [i]: "" };
}
else ["matrix-checkbox", "matrix-radio", "matrix-scale", "rate-radio"].includes(e.type) ? t = t || {} : ["group", "tag", "checkbox", "rate-checkbox"].includes(e.type) && (t = t || []);
return t;
}, _r = (e, n) => {
const a = n[e.key];
return !(Le(a) && !Object.keys(a).length || be(a) && !a.length || a === "" || a === !1 || a === null || a === void 0 || a === 0);
};
function Yt(e) {
return wt() ? (kt(e), !0) : !1;
}
function ye(e) {
return typeof e == "function" ? e() : bt(e);
}
const Xt = typeof window < "u", rn = () => {
};
function Qt(e, n) {
function a(...o) {
return new Promise((t, c) => {
Promise.resolve(e(() => n.apply(this, o), { fn: n, thisArg: this, args: o })).then(t).catch(c);
});
}
return a;
}
function Dr(e, n = {}) {
let a, o, t = rn;
const c = (i) => {
clearTimeout(i), t(), t = rn;
};
return (i) => {
const r = ye(e), s = ye(n.maxWait);
return a && c(a), r <= 0 || s !== void 0 && s <= 0 ? (o && (c(o), o = null), Promise.resolve(i())) : new Promise((u, g) => {
t = n.rejectOnCancel ? g : u, s && !o && (o = setTimeout(() => {
a && c(a), o = null, u(i());
}, s)), a = setTimeout(() => {
o && c(o), o = null, u(i());
}, r);
});
};
}
function Ir(e, n = !0, a = !0, o = !1) {
let t = 0, c, d = !0, i = rn, r;
const s = () => {
c && (clearTimeout(c), c = void 0, i(), i = rn);
};
return (g) => {
const y = ye(e), x = Date.now() - t, f = () => r = g();
return s(), y <= 0 ? (t = Date.now(), f()) : (x > y && (a || !d) ? (t = Date.now(), f()) : n && (r = new Promise((h, v) => {
i = o ? v : h, c = setTimeout(() => {
t = Date.now(), d = !0, h(f()), s();
}, Math.max(0, y - x));
})), !a && !c && (c = setTimeout(() => d = !0, y)), d = !1, r);
};
}
function Tr(...e) {
if (e.length !== 1)
return co(...e);
const n = e[0];
return typeof n == "function" ? Ct(ro(() => ({ get: n, set: rn }))) : j(n);
}
function $r(e, n = 200, a = {}) {
return Qt(
Dr(n, a),
e
);
}
function Ar(e, n = 200, a = !1, o = !0, t = !1) {
return Qt(
Ir(n, a, o, t),
e
);
}
var Nr = Object.defineProperty, Mr = Object.defineProperties, jr = Object.getOwnPropertyDescriptors, Ho = Object.getOwnPropertySymbols, Lr = Object.prototype.hasOwnProperty, Rr = Object.prototype.propertyIsEnumerable, Ko = (e, n, a) => n in e ? Nr(e, n, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[n] = a, Br = (e, n) => {
for (var a in n || (n = {}))
Lr.call(n, a) && Ko(e, a, n[a]);
if (Ho)
for (var a of Ho(n))
Rr.call(n, a) && Ko(e, a, n[a]);
return e;
}, zr = (e, n) => Mr(e, jr(n));
function Ur(e) {
if (!Uc(e))
return Vc(e);
const n = Array.isArray(e.value) ? new Array(e.value.length) : {};
for (const a in e.value)
n[a] = ro(() => ({
get() {
return e.value[a];
},
set(o) {
if (Array.isArray(e.value)) {
const t = [...e.value];
t[a] = o, e.value = t;
} else {
const t = zr(Br({}, e.value), { [a]: o });
Object.setPrototypeOf(t, Object.getPrototypeOf(e.value)), e.value = t;
}
}
}));
return n;
}
function Vr(e, n = !0) {
yt() ? Xe(e) : n ? e() : cn(e);
}
function Fr(e) {
var n;
const a = ye(e);
return (n = a == null ? void 0 : a.$el) != null ? n : a;
}
const wa = Xt ? window : void 0;
function Sn(...e) {
let n, a, o, t;
if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([a, o, t] = e, n = wa) : [n, a, o, t] = e, !n)
return rn;
Array.isArray(a) || (a = [a]), Array.isArray(o) || (o = [o]);
const c = [], d = () => {
c.forEach((u) => u()), c.length = 0;
}, i = (u, g, y, x) => (u.addEventListener(g, y, x), () => u.removeEventListener(g, y, x)), r = q(
() => [Fr(n), ye(t)],
([u, g]) => {
d(), u && c.push(
...a.flatMap((y) => o.map((x) => i(u, y, x, g)))
);
},
{ immediate: !0, flush: "post" }
), s = () => {
r(), d();
};
return Yt(s), s;
}
function Hr() {
const e = j(!1);
return yt() && Xe(() => {
e.value = !0;
}), e;
}
function Kr(e) {
const n = Hr();
return X(() => (n.value, !!e()));
}
function Wr(e, n = {}) {
const { window: a = wa } = n, o = Kr(() => a && "matchMedia" in a && typeof a.matchMedia == "function");
let t;
const c = j(!1), d = () => {
t && ("removeEventListener" in t ? t.removeEventListener("change", i) : t.removeListener(i));
}, i = () => {
o.value && (d(), t = a.matchMedia(Tr(e).value), c.value = !!(t != null && t.matches), t && ("addEventListener" in t ? t.addEventListener("change", i) : t.addListener(i)));
};
return oo(i), Yt(() => d()), c;
}
var Yr = Object.defineProperty, Xr = Object.defineProperties, Qr = Object.getOwnPropertyDescriptors, Wo = Object.getOwnPropertySymbols, Gr = Object.prototype.hasOwnProperty, Zr = Object.prototype.propertyIsEnumerable, Yo = (e, n, a) => n in e ? Yr(e, n, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[n] = a, Jr = (e, n) => {
for (var a in n || (n = {}))
Gr.call(n, a) && Yo(e, a, n[a]);
if (Wo)
for (var a of Wo(n))
Zr.call(n, a) && Yo(e, a, n[a]);
return e;
}, qr = (e, n) => Xr(e, Qr(n));
function el(e, n = {}) {
var a, o;
const {
pointerTypes: t,
preventDefault: c,
stopPropagation: d,
exact: i,
onMove: r,
onEnd: s,
onStart: u,
initialValue: g,
axis: y = "both",
draggingElement: x = wa,
handle: f = e
} = n, h = j(
(a = ye(g)) != null ? a : { x: 0, y: 0 }
), v = j(), p = (w) => t ? t.includes(w.pointerType) : !0, l = (w) => {
ye(c) && w.preventDefault(), ye(d) && w.stopPropagation();
}, b = (w) => {
if (!p(w) || ye(i) && w.target !== ye(e))
return;
const P = ye(e).getBoundingClientRect(), C = {
x: w.clientX - P.left,
y: w.clientY - P.top
};
(u == null ? void 0 : u(C, w)) !== !1 && (v.value = C, l(w));
}, S = (w) => {
if (!p(w) || !v.value)
return;
let { x: P, y: C } = h.value;
(y === "x" || y === "both") && (P = w.clientX - v.value.x), (y === "y" || y === "both") && (C = w.clientY - v.value.y), h.value = {
x: P,
y: C
}, r == null || r(h.value, w), l(w);
}, O = (w) => {
p(w) && v.value && (v.value = void 0, s == null || s(h.value, w), l(w));
};
if (Xt) {
const w = { capture: (o = n.capture) != null ? o : !0 };
Sn(f, "pointerdown", b, w), Sn(x, "pointermove", S, w), Sn(x, "pointerup", O, w);
}
return qr(Jr({}, Ur(h)), {
position: h,
isDragging: X(() => !!v.value),
style: X(
() => `left:${h.value.x}px;top:${h.value.y}px;`
)
});
}
const Xo = 1;
function nl(e, n = {}) {
const {
throttle: a = 0,
idle: o = 200,
onStop: t = rn,
onScroll: c = rn,
offset: d = {
left: 0,
right: 0,
top: 0,
bottom: 0
},
eventListenerOptions: i = {
capture: !1,
passive: !0
},
behavior: r = "auto"
} = n, s = j(0), u = j(0), g = X({
get() {
return s.value;
},
set(O) {
x(O, void 0);
}
}), y = X({
get() {
return u.value;
},
set(O) {
x(void 0, O);
}
});
function x(O, w) {
var P, C, k;
const E = ye(e);
E && ((k = E instanceof Document ? document.body : E) == null || k.scrollTo({
top: (P = ye(w)) != null ? P : y.value,
left: (C = ye(O)) != null ? C : g.value,
behavior: ye(r)
}));
}
const f = j(!1), h = Ue({
left: !0,
right: !1,
top: !0,
bottom: !1
}), v = Ue({
left: !1,
right: !1,
top: !1,
bottom: !1
}), p = (O) => {
f.value && (f.value = !1, v.left = !1, v.right = !1, v.top = !1, v.bottom = !1, t(O));
}, l = $r(p, a + o), b = (O) => {
const w = O === window ? O.document.documentElement : O === document ? O.documentElement : O, { display: P, flexDirection: C } = getComputedStyle(w), k = w.scrollLeft;
v.left = k < s.value, v.right = k > s.value;
const E = Math.abs(k) <= 0 + (d.left || 0), D = Math.abs(k) + w.clientWidth >= w.scrollWidth - (d.right || 0) - Xo;
P === "flex" && C === "row-reverse" ? (h.left = D, h.right = E) : (h.left = E, h.right = D), s.value = k;
let M = w.scrollTop;
O === document && !M && (M = document.body.scrollTop), v.top = M < u.value, v.bottom = M > u.value;
const A = Math.abs(M) <= 0 + (d.top || 0), R = Math.abs(M) + w.clientHeight >= w.scrollHeight - (d.bottom || 0) - Xo;
P === "flex" && C === "column-reverse" ? (h.top = R, h.bottom = A) : (h.top = A, h.bottom = R), u.value = M;
}, S = (O) => {
const w = O.target === document ? O.target.documentElement : O.target;
b(w), f.value = !0, l(O), c(O);
};
return Sn(
e,
"scroll",
a ? Ar(S, a, !0, !1) : S,
i
), Sn(
e,
"scrollend",
p,
i
), {
x: g,
y,
isScrolling: f,
arrivedState: h,
directions: v,
measure() {
const O = ye(e);
O && b(O);
}
};
}
function al(e = {}) {
const {
window: n = wa,
initialWidth: a = 1 / 0,
initialHeight: o = 1 / 0,
listenOrientation: t = !0,
includeScrollbar: c = !0
} = e, d = j(a), i = j(o), r = () => {
n && (c ? (d.value = n.innerWidth, i.value = n.innerHeight) : (d.value = n.document.documentElement.clientWidth, i.value = n.document.documentElement.clientHeight));
};
if (r(), Vr(r), Sn("resize", r, { passive: !0 }), t) {
const s = Wr("(orientation: portrait)");
q(s, () => r());
}
return { width: d, height: i };
}
const Gt = /* @__PURE__ */ Ce({
name: "NewbieModal",
props: {
/**
* 弹窗类型
*
* @values modal, drawer
*/
type: {
type: String,
default: "modal"
},
/**
* 可见性控制
* `v-model:visible`
*/
visible: {
type: Boolean,
default: !1
},
/**
* 宽度
*/
width: {
type: [Number, String],
default: 800
},
/**
* 高度,仅当Type为modal时有效
*/
height: {
type: [Number, String],
default: 500
},
/**
* 标题
*/
title: {
type: String,
default: ""
},
/**
* 为 `Function` 时返回 Promise, resolve(true) 正常关闭,resolve(false) 可阻止关闭;
* 为 `Object` 时参考 [下方配置 beforeclose](#beforeclose)
*/
beforeClose: {
type: [Function, Object],
default: null
},
/**
* 原生 [Modal](https://www.antdv.com/components/modal-cn#api) 或者是 [Drawer](https://www.antdv.com/components/drawer-cn#api) 的配置
*/
modalProps: {
type: Object,
default: () => ({})
}
},
emits: [
/**
* @event update:visible
* @param {boolean} visible 是否可见
*/
"update:visible",
/**
* 关闭弹窗时回调
*
* @event close
*/
"close"
],
setup(e, {
emit: n,
slots: a
}) {
const o = j(null), t = j(!1), c = j(!1);
q(
() => e.visible,
(w) => {
c.value = w;
},
{
immediate: !0
}
// 添加 immediate 选项
);
const d = async () => {
if (!(e.beforeClose && $(e.beforeClose) && !await e.beforeClose())) {
if (e.beforeClose && Le(e.beforeClose)) {
const {
title: w,
content: P,
okText: C,
cancelText: k,
trigger: E
} = e.beforeClose;
if ($(E) ? E() : E) {
dn.confirm({
title: w || "操作提示",
content: P || "确定关闭当前弹窗吗?",
okText: C || "确定",
cancelText: k || "取消",
onOk: () => {
t.value = !1, n("update:visible", !1), n("close");
}
});
return;
}
}
t.value = !1, n("update:visible", !1), n("close");
}
}, {
x: i,
y: r,
isDragging: s
} = el(o), u = j(0), g = j(0), y = j(!1), x = j(0), f = j(0), h = j(0), v = j(0), p = j({
left: 0,
right: 0,
top: 0,
bottom: 0
});
q([i, r], () => {
if (!y.value) {
u.value = i.value, g.value = r.value;
const w = document.body.getBoundingClientRect(), P = o.value.getBoundingClientRect();
p.value.right = w.width - P.width, p.value.bottom = Math.max(w.height - P.height, 800), h.value = x.value, v.value = f.value;
}
y.value = !0;
}), q(s, () => {
s || (y.value = !1);
}), oo(() => {
y.value && (x.value = h.value + Math.min(Math.max(p.value.left, i.value), p.value.right) - u.value, f.value = v.value + Math.min(Math.max(p.value.top, r.value), p.value.bottom) - g.value);
});
const l = X(() => ({
transform: `translate(${x.value}px, ${f.value}px)`
})), b = () => m("div", {
class: "newbie-modal-header"
}, [m("span", {
class: "newbie-modal-title",
ref: o
}, [e.title]), m("div", {
class: "newbie-modal-actions"
}, [t.value ? m("a", {
onClick: () => t.value = !1
}, [m(yd, {
style: {
fontSize: "16px"
}
}, null)]) : m("a", {
onClick: () => t.value = !0
}, [m(bd, {
style: {
fontSize: "16px"
}
}, null)]), m("a", {
onClick: d
}, [m(Bo, {
style: {
fontSize: "20px",
marginTop: "2px"
}
}, null)])])]), S = () => m(dn, H({
footer: null,
wrapStyle: {
overflow: "hidden"
},
wrapClassName: `newbie-modal ${t.value ? "full-modal" : ""}`,
width: t.value ? "100%" : we(e.width),
open: c.value,
"onUpdate:open": (w) => c.value = w,
bodyStyle: {
maxHeight: e.height ? we(e.height) : "600px",
overflow: "auto"
},
closable: !1,
destroyOnClose: !0,
maskClosable: !1,
onCancel: d
}, e.modalProps), {
/**
* @slot 弹窗内容
*/
default: () => {
var w;
return (w = a.default) == null ? void 0 : w.call(a);
},
title: () => b(),
modalRender: ({
originVNode: w
}) => m("div", {
style: l.value
}, [w])
}), O = () => m(Yc, H({
title: e.title,
open: c.value,
"onUpdate:open": (w) => c.value = w,
closable: !1,
destroyOnClose: !0,
width: we(e.width),
maskClosable: !1,
onClose: d
}, e.modalProps), {
/**
* @slot 弹窗内容
*/
default: () => {
var w;
return (w = a.default) == null ? void 0 : w.call(a);
},
extra: () => m(Bo, {
onClick: d
}, null)
});
return () => m("div", {
class: "newbie-modal"
}, [e.type === "modal" ? S() : O()]);
}
}), ol = (e, n, a) => {
const {
searchProvider: o
} = a;
let t = [{
label: "等于",
value: "equal"
}, {
label: "不等于",
value: "notEqual"
}, {
label: "包含",
value: "include"
}, {
label: "不包含",
value: "exclude"
}, {
label: "为空",
value: "null"
}, {
label: "不为空",
value: "notNull"
}];
e.conditions && e.conditions.length && (t = t.filter((s) => e.conditions.includes(s.value)));
const c = X(() => n[e.key].value), d = j();
e.collectItem = () => {
let s = n[e.key].value || null, u = null;
const g = ie(t, {
value: n[e.key].condition
});
return g && ["null", "notNull"].includes(g.value) ? (s = null, u = `${e.title}${g == null ? void 0 : g.label}`) : s && (u = `${e.title}${g == null ? void 0 : g.label}: ${s}`), {
value: s,
searchLabel: u
};
};
const i = () => {
var s;
(s = d.value) == null || s.focus();
}, r = m(Nn, H({
ref: d,
value: n[e.key].value,
"onUpdate:value": (s) => n[e.key].value = s,
allowClear: !0,
disabled: n[e.key].condition === "null" || n[e.key].condition === "notNull",
class: `${o.inputClass || ""}`,
style: {
width: "200px"
},
placeholder: `搜索${e.title}`
}, e.inputProps), null);
return {
conditions: t,
Component: r,
displayValue: c,
onComponentOpen: i
};
}, tl = (e, n, a) => {
const {
searchProvider: o
} = a;
let t = [{
label: "等于",
value: "equal"
}, {
label: "不等于",
value: "notEqual"
}, {
label: "小于",
value: "lessThan"
}, {
label: "大于",
value: "greaterThan"
}, {
label: "介于",
value: "between"
}];
e.conditions && e.conditions.length && (t = t.filter((u) => e.conditions.includes(u.value)));
const c = () => {
if (n[e.key].condition === "between" && n[e.key].value && de(n[e.key].value[0]) && de(n[e.key].value[1]) && n[e.key].value[0] > n[e.key].value[1]) {
const u = n[e.key].value[0];
n[e.key].value[0] = n[e.key].value[1], n[e.key].value[1] = u;
}
}, d = j(null);
e.collectItem = () => {
var x;
let u = null, g = null;
const y = (x = ie(t, {
value: n[e.key].condition
})) == null ? void 0 : x.label;
return n[e.key].condition === "between" && n[e.key].value && hn(n[e.key].value, de) ? (u = n[e.key].value, g = `${e.title}${y}: ${u[0]} - ${u[1]} `) : n[e.key].condition !== "between" && n[e.key].value && de(n[e.key].value[0]) && (u = n[e.key].value[0], g = `${e.title}${y}: ${u}`), {
value: u,
searchLabel: g
};
};
const i = () => {
var u;
(u = d.value) == null || u.focus();
}, r = X(() => n[e.key].condition === "between" && n[e.key].value && hn(n[e.key].value, de) ? [m(ke, {
style: {
marginRight: 0
}
}, {
default: () => n[e.key].value[0]
}), m("span", null, [he(" - ")]), m(ke, null, {
default: () => n[e.key].value[1]
})] : n[e.key].value[0]);
let s = [m(Ha, H({
ref: d,
value: n[e.key].value[0],
"onUpdate:value": (u) => n[e.key].value[0] = u,
style: {
width: "200px"
},
class: `${o.inputClass || ""}`,
placeholder: `搜索${e.title}`,
onBlur: c
}, e.inputProps), null)];
return n[e.key].condition === "between" && (s = m("div", {
style: {
display: "flex",
alignItems: "center"
}
}, [s.concat([m("span", {
style: {
margin: "0 8px"
}
}, [he("-")]), m(Ha, H({
value: n[e.key].value[1],
"onUpdate:value": (u) => n[e.key].value[1] = u,
style: {
width: "200px"
},
class: `${o.inputClass || ""}`,
placeholder: "请输入",
onBlur: c
}, e.inputProps), null)])])), {
conditions: t,
Component: s,
displayValue: r,
onComponentOpen: i
};
}, cl = (e, n, a) => {
const {
searchProvider: o
} = a;
let t = [{
label: "等于",
value: "equal"
}, {
label: "不等于",
value: "notEqual"
}, {
label: "包含",
value: "include"
}, {
label: "不包含",
value: "exclude"
}];
e.conditions && e.conditions.length && (t = t.filter((u) => e.conditions.includes(u.value)));
let c = $(e.options) ? e.options() : e.options;
c = c.map((u) => se(u) || de(u) ? {
value: u,
label: u
} : u);
const d = X(() => m(Cn, null, {
default: () => n[e.key].value.map((u) => m(ke, null, {
default: () => {
var g;
return (g = ie(c, {
value: u
})) == null ? void 0 : g.label;
}
}))
}));
q(() => n[e.key].condition, (u) => {
var g;
["equal", "notEqual"].includes(u) && (n[e.key].value = (g = n[e.key].value) != null && g[0] ? [n[e.key].value[0]] : []);
});
const i = j(null);
e.collectItem = () => {
var x, f, h, v, p, l;
let u = null, g = null;
const y = (x = ie(t, {
value: n[e.key].condition
})) == null ? void 0 : x.label;
if (["equal", "notEqual"].includes(n[e.key].condition) && !oe((f = n[e.key].value) == null ? void 0 : f[0]) && !Wa((h = n[e.key].value) == null ? void 0 : h[0]))
u = ((v = n[e.key].value) == null ? void 0 : v[0]) || null, g = `${e.title}${y}: ${(p = ie(c, {
value: u
})) == null ? void 0 : p.label}`;
else if (!["equal", "notEqual"].includes(n[e.key].condition) && hn(n[e.key].value, (b) => !Wa(b) && !oe(b))) {
u = n[e.key].value;
const b = (l = u.map((S) => {
var O;
return (O = ie(c, {
value: S
})) == null ? void 0 : O.label;
})) == null ? void 0 : l.join(",");
g = `${e.title}${y}: ${b}`;
}
return {
value: u,
searchLabel: g
};
};
const r = () => {
}, s = ["equal", "notEqual"].includes(n[e.key].condition) ? m(Fn, H({
ref: i,
value: n[e.key].value[0],
"onUpdate:value": (u) => n[e.key].value[0] = u,
allowClear: !0,
options: c,
style: {
width: "200px"
},
class: `${o.inputClass || ""}`,
defaultOpen: !0,
getPopupContainer: (u) => u.parentNode,
placeholder: `搜索${e.title}`
}, e.inputProps), null) : m(Fn, H({
ref: i,
value: n[e.key].value,
"onUpdate:value": (u) => n[e.key].value = u,
allowClear: !0,
options: c,
mode: "multiple",
class: `${o.inputClass || ""}`,
style: {
width: "200px"
},
defaultOpen: !0,
getPopupContainer: (u) => u.parentNode,
placeholder: `搜索${e.title}`
}, e.inputProps), null);
return {
conditions: t,
Component: s,
displayValue: d,
onComponentOpen: r
};
}, dl = (e, n, a) => {
const {
searchProvider: o
} = a;
let t = [{
label: "等于",
value: "equal"
}, {
label: "不包含",
value: "exclude"
}];
e.conditions && e.conditions.length && (t = t.filter((s) => e.conditions.includes(s.value)));
const c = X(() => n[e.key].value.trim().split(`
`).join(",")), d = j(null);
e.collectItem = () => {
var y, x;
let s = null, u = null;
const g = (y = ie(t, {
value: n[e.key].condition
})) == null ? void 0 : y.label;
return s = (x = n[e.key].value) != null && x.trim() ? n[e.key].value.trim().split(`
`) : null, u = s ? `${e.title}${g}: ${s == null ? void 0 : s.join(",")}` : null, {
value: s,
searchLabel: u
};
};
const i = () => {
var s;
(s = d.value) == null || s.focus();
}, r = m(na, H({
ref: d,
value: n[e.key].value,
"onUpdate:value": (s) => n[e.key].value = s,
allowClear: !0,
class: `${o.inputClass || ""}`,
style: {
width: "200px"
},
autoSize: {
minRows: 4,
maxRows: 8
},
placeholder: `搜索${e.title},每行一个`
}, e.inputProps), null);
return {
conditions: t,
Component: r,
displayValue: c,
onComponentOpen: i
};
}, rl = (e, n, a) => {
var x, f;
const {
searchProvider: o
} = a;
let t = [{
label: "等于",
value: "equal"
}, {
label: "小于",
value: "lessThan"
}, {
label: "大于",
value: "greaterThan"
}, {
label: "介于",
value: "between"
}, {
label: "为空",
value: "null"
}, {
label: "不为空",
value: "notNull"
}];
e.conditions && e.conditions.length && (t = t.filter((h) => e.conditions.includes(h.value)));
const c = j(null), d = ((x = e.inputProps) == null ? void 0 : x.format) || "YYYY-MM-DD", i = ((f = e.inputProps) == null ? void 0 : f.picker) || "date";
e.collectItem = () => {
var l;
let h = null, v = null;
const p = (l = ie(t, {
value: n[e.key].condition
})) == null ? void 0 : l.label;
return n[e.key].condition === "between" && n[e.key].value && hn(n[e.key].value, re.isDayjs) ? (h = n[e.key].value, v = `${e.title}${p}: ${h[0].format(d)} - ${h[1].format(d)} `) : n[e.key].condition !== "between" && re.isDayjs(n[e.key].value[0]) && (h = n[e.key].value[0], v = `${e.title}${p}: ${h.format(d)}`), {
value: h,
searchLabel: v
};
};
const r = () => {
var h;
(h = c.value) == null || h.focus();
}, s = X(() => {
var h, v;
return n[e.key].condition === "between" && n[e.key].value && hn(n[e.key].value, re.isDayjs) ? [m(ke, {
style: {
marginRight: 0
}
}, {
default: () => {
var p, l;
return (l = (p = n[e.key].value) == null ? void 0 : p[0]) == null ? void 0 : l.format(d);
}
}), m("span", null, [he(" - ")]), m(ke, null, {
default: () => {
var p, l;
return (l = (p = n[e.key].value) == null ? void 0 : p[1]) == null ? void 0 : l.format(d);
}
})] : (v = (h = n[e.key].value) == null ? void 0 : h[0]) == null ? void 0 : v.format(d);
}), u = j([{
label: "上周",
value: re().add(-7, "d")
}, {
label: "上个月",
value: re().add(-1, "month")
}]), g = j([{
label: "最近一周",
value: [re().add(-7, "d"), re()]
}, {
label: "最近两周",
value: [re().add(-14, "d"), re()]
}, {
label: "最近30天",
value: [re().add(-30, "d"), re()]
}, {
label: "最近90天",
value: [re().add(-90, "d"), re()]
}]);
let y = n[e.key].condition === "between" ? m(Et, H({
ref: c,
value: n[e.key].value,
"onUpdate:value": (h) => n[e.key].value = h,
allowClear: !0,
inputReadOnly: !0,
open: !0,
presets: i === "date" ? g.value : [],
style: {
width: "400px"
},
class: `${o.inputClass || ""}`,
placeholder: ["开始时间", "结束时间"],
getPopupContainer: (h) => h == null ? void 0 : h.parentNode
}, e.inputProps), null) : m(St, H({
ref: c,
value: n[e.key].value[0],
"onUpdate:value": (h) => n[e.key].value[0] = h,
allowClear: !0,
open: !0,
inputReadOnly: !0,
presets: i === "date" ? u.value : [],
style: {
width: "200px"
},
class: `${o.inputClass || ""}`,
placeholder: `搜索${e.title}`,
getPopupContainer: (h) => h == null ? void 0 : h.parentNode
}, e.inputProps), null);
return {
conditions: t,
Component: y,
displayValue: s,
onComponentOpen: r
};
}, ll = (e, n, a) => {
const {
searchProvider: o
} = a;
let t = $(e.options) ? e.options() : e.options, c = [{
label: "等于",
value: "equal"
}, {
label: "不等于",
value: "notEqual"
}, {
label: "包括子级",
value: "include"
}];
e.conditions && e.conditions.length && (c = c.filter((u) => e.conditions.includes(u.value)));
const d = X(() => {
var u;
return Mo(t, n[e.key].value, (u = e.inputProps) == null ? void 0 : u.fieldNames).join("/");
}), i = j(null);
e.collectItem = () => {
var x, f;
let u = n[e.key].value || null, g = null;
const y = (x = ie(c, {
value: n[e.key].condition
})) == null ? void 0 : x.label;
return u && (g = `${e.title}${y}: ${Mo(t, u, (f = e.inputProps) == null ? void 0 : f.fieldNames).join("/")}`), {
value: u,
searchLabel: g
};
};
const r = () => {
var u;
(u = i.value) == null || u.focus();
}, s = m(io, H({
ref: i,
value: n[e.key].value,
"onUpdate:value": (u) => n[e.key].value = u,
allowClear: !0,
open: !0,
class: `${o.inputClass || ""}`,
style: {
width: "200px"
},
options: t,
changeOnSelect: $t(c, {
value: "include"
}) > -1,
showSearch: !0,
placeholder: `搜索${e.title}`,
getPopupContainer: (u) => u == null ? void 0 : u.parentNode
}, e.inputProps), null);
return {
conditions: c,
Component: s,
displayValue: d,
onComponentOpen: r
};
}, il = (e, n, a) => {
var y, x;
const {
searchProvider: o
} = a, t = "checked", c = "unchecked";
let d = [{
label: "等于",
value: "equal"
}];
e.conditions && e.conditions.length && (d = d.filter((f) => e.conditions.includes(f.value)));
const i = [{
value: t,
label: ((y = e.options) == null ? void 0 : y[0]) || "是"
}, {
value: c,
label: ((x = e.options) == null ? void 0 : x[1]) || "否"
}], r = X(() => {
var f;
return (f = ie(i, {
value: n[e.key].value
})) == null ? void 0 : f.label;
}), s = j(null);
e.collectItem = () => {
var p;
let f = n[e.key].value === void 0 ? void 0 : n[e.key].value === "checked", h = null;
const v = ie(d, {
value: n[e.key].condition
});
return f && (h = `${e.title}${v == null ? void 0 : v.label}: ${(p = ie(i, {
value: n[e.key].value
})) == null ? void 0 : p.label}`), {
value: f,
searchLabel: h
};
};
const u = () => {
}, g = m(Fn, H({
ref: s,
value: n[e.key].value,
"onUpdate:value": (f) => n[e.key].value = f,
allowClear: !0,
options: i,
style: {
width: "200px"
},
class: `${o.inputClass || ""}`,
defaultOpen: !0,
getPopupContainer: (f) => f.parentNode,
placeholder: `搜索${e.title}`
}, e.inputProps), null);
return {
conditions: d,
Component: g,
displayValue: r,
onComponentOpen: u
};
}, sl = (e, n) => {
var c;
let a = $(e.options) ? e.options() : e.options;
a = a.map((d) => se(d) || de(d) ? {
value: d,
label: d
} : d);
const o = j(e.options.map(() => !1));
(c = n[e.key].value) != null && c.length && n[e.key].value.forEach((d) => {
const i = a.findIndex((r) => r.value === d);
i !== -1 && (o.value[i] = !0);
}), e.expandable === "multiple" && (n[e.key].condition = "include");
const t = (d) => {
e.expandable === "multiple" ? n[e.key].value = o.value.map((i, r) => {
if (i)
return a[r].value;
}) : o.value.forEach((i, r) => {
if (r === d) {
i ? n[e.key].value = [a[d].value] : n[e.key].value = [];
return;
}
o.value[r] = !1;
});
};
return e.collectItem = () => {
var r, s, u, g;
let d = null, i = null;
if (e.expandable === "multiple")
if (d = (r = n[e.key].value) == null ? void 0 : r.filter((y) => y), !d || !d.length)
d = null;
else {
const y = (s = d.map((x) => {
var f;
return (f = ie(a, {
value: x
})) == null ? void 0 : f.label;
})) == null ? void 0 : s.join(",");
i = `${e.title}包含: ${y}`;
}
else
d = ((u = n[e.key].value) == null ? void 0 : u[0]) || null, i = `${e.title}等于: ${(g = ie(a, {
value: d
})) == null ? void 0 : g.label}`;
return {
value: d,
searchLabel: i
};
}, m("div", {
class: "newbie-search-expand-item"
}, [m("div", {
class: "newbie-search-expand-item-title"
}, [e.title, he(":")]), m("div", {
class: "newbie-search-expand-item-options"
}, [m(Cn, {
size: 20
}, {
default: () => a.map((d, i) => m(Xc, {
checked: o.value[i],
"onUpdate:checked": (r) => o.value[i] = r,
onChange: () => t(i)
}, {
default: () => d.label
}))
})]), m("div", {
class: "newbie-search-expand-item-extra"
}, [e.expandable === "multiple" ? "可多选" : ""])]);
};
/**!
* Sortable 1.14.0
* @author RubaXa <trash@rubaxa.org>
* @author owenm <owen23355@gmail.com>
* @license MIT
*/
function Qo(e, n) {
var a = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
n && (o = o.filter(function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), a.push.apply(a, o);
}
return a;
}
function Ve(e) {
for (var n = 1; n < arguments.length; n++) {
var a = arguments[n] != null ? arguments[n] : {};
n % 2 ? Qo(Object(a), !0).forEach(function(o) {
ul(e, o, a[o]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(a)) : Qo(Object(a)).forEach(function(o) {
Object.defineProperty(e, o, Object.getOwnPropertyDescriptor(a, o));
});
}
return e;
}
function aa(e) {
"@babel/helpers - typeof";
return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? aa = function(n) {
return typeof n;
} : aa = function(n) {
return n && typeof Symbol == "function" && n.constructor === Symbol && n !== Symbol.prototype ? "symbol" : typeof n;
}, aa(e);
}
function ul(e, n, a) {
return n in e ? Object.defineProperty(e, n, {
value: a,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[n] = a, e;
}
function Ye() {
return Ye = Object.assign || function(e) {
for (var n = 1; n < arguments.length; n++) {
var a = arguments[n];
for (var o in a)
Object.prototype.hasOwnProperty.call(a, o) && (e[o] = a[o]);
}
return e;
}, Ye.apply(this, arguments);
}
function ml(e, n) {
if (e == null) return {};
var a = {}, o = Object.keys(e), t, c;
for (c = 0; c < o.length; c++)
t = o[c], !(n.indexOf(t) >= 0) && (a[t] = e[t]);
return a;
}
function fl(e, n) {
if (e == null) return {};
var a = ml(e, n), o, t;
if (Object.getOwnPropertySymbols) {
var c = Object.getOwnPropertySymbols(e);
for (t = 0; t < c.length; t++)
o = c[t], !(n.indexOf(o) >= 0) && Object.prototype.propertyIsEnumerable.call(e, o) && (a[o] = e[o]);
}
return a;
}
var pl = "1.14.0";
function Ke(e) {
if (typeof window < "u" && window.navigator)
return !!/* @__PURE__ */ navigator.userAgent.match(e);
}
var Qe = Ke(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), Qn = Ke(/Edge/i), Go = Ke(/firefox/i), Ln = Ke(/safari/i) && !Ke(/chrome/i) && !Ke(/android/i), Zt = Ke(/iP(ad|od|hone)/i), hl = Ke(/chrome/i) && Ke(/android/i), Jt = {
capture: !1,
passive: !1
};
function Y(e, n, a) {
e.addEventListener(n, a, !Qe && Jt);
}
function W(e, n, a) {
e.removeEventListener(n, a, !Qe && Jt);
}
function sa(e, n) {
if (n) {
if (n[0] === ">" && (n = n.substring(1)), e)
try {
if (e.matches)
return e.matches(n);
if (e.msMatchesSelector)
return e.msMatchesSelector(n);
if (e.webkitMatchesSelector)
return e.webkitMatchesSelector(n);
} catch {
return !1;
}
return !1;
}
}
function gl(e) {
return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode;
}
function je(e, n, a, o) {
if (e) {
a = a || document;
do {
if (n != null && (n[0] === ">" ? e.parentNode === a && sa(e, n) : sa(e, n)) || o && e === a)
return e;
if (e === a) break;
} while (e = gl(e));
}
return null;
}
var Zo = /\s+/g;
function Pe(e, n, a) {
if (e && n)
if (e.classList)
e.classList[a ? "add" : "remove"](n);
else {
var o = (" " + e.className + " ").replace(Zo, " ").replace(" " + n + " ", " ");
e.className = (o + (a ? " " + n : "")).replace(Zo, " ");
}
}
function B(e, n, a) {
var o = e && e.style;
if (o) {
if (a === void 0)
return document.defaultView && document.defaultView.getComputedStyle ? a = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (a = e.currentStyle), n === void 0 ? a : a[n];
!(n in o) && n.indexOf("webkit") === -1 && (n = "-webkit-" + n), o[n] = a + (typeof a == "string" ? "" : "px");
}
}
function En(e, n) {
var a = "";
if (typeof e == "string")
a = e;
else
do {
var o = B(e, "transform");
o && o !== "none" && (a = o + " " + a);
} while (!n && (e = e.parentNode));
var t = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
return t && new t(a);
}
function qt(e, n, a) {
if (e) {
var o = e.getElementsByTagName(n), t = 0, c = o.length;
if (a)
for (; t < c; t++)
a(o[t], t);
return o;
}
return [];
}
function ze() {
var e = document.scrollingElement;
return e || document.documentElement;
}
function le(e, n, a, o, t) {
if (!(!e.getBoundingClientRect && e !== window)) {
var c, d, i, r, s, u, g;
if (e !== window && e.parentNode && e !== ze() ? (c = e.getBoundingClientRect(), d = c.top, i = c.left, r = c.bottom, s = c.right, u = c.height, g = c.width) : (d = 0, i = 0, r = window.innerHeight, s = window.innerWidth, u = window.innerHeight, g = window.innerWidth), (n || a) && e !== window && (t = t || e.parentNode, !Qe))
do
if (t && t.getBoundingClientRect && (B(t, "transform") !== "none" || a && B(t, "position") !== "static")) {
var y = t.getBoundingClientRect();
d -= y.top + parseInt(B(t, "border-top-width")), i -= y.left + parseInt(B(t, "border-left-width")), r = d + c.height, s = i + c.width;
break;
}
while (t = t.parentNode);
if (o && e !== window) {
var x = En(t || e), f = x && x.a, h = x && x.d;
x && (d /= h, i /= f, g /= f, u /= h, r = d + u, s = i + g);
}
return {
top: d,
left: i,
bottom: r,
right: s,
width: g,
height: u
};
}
}
function Jo(e, n, a) {
for (var o = on(e, !0), t = le(e)[n]; o; ) {
var c = le(o)[a], d = void 0;
if (d = t >= c, !d) return o;
if (o === ze()) break;
o = on(o, !1);
}
return !1;
}
function On(e, n, a, o) {
for (var t = 0, c = 0, d = e.children; c < d.length; ) {
if (d[c].style.display !== "none" && d[c] !== z.ghost && (o || d[c] !== z.dragged) && je(d[c], a.draggable, e, !1)) {
if (t === n)
return d[c];
t++;
}
c++;
}
return null;
}
function yo(e, n) {
for (var a = e.lastElementChild; a && (a === z.ghost || B(a, "display") === "none" || n && !sa(a, n)); )
a = a.previousElementSibling;
return a || null;
}
function Ie(e, n) {
var a = 0;
if (!e || !e.parentNode)
return -1;
for (; e = e.previousElementSibling; )
e.nodeName.toUpperCase() !== "TEMPLATE" && e !== z.clone && (!n || sa(e, n)) && a++;
return a;
}
function qo(e) {
var n = 0, a = 0, o = ze();
if (e)
do {
var t = En(e), c = t.a, d = t.d;
n += e.scrollLeft * c, a += e.scrollTop * d;
} while (e !== o && (e = e.parentNode));
return [n, a];
}
function vl(e, n) {
for (var a in e)
if (e.hasOwnProperty(a)) {
for (var o in n)
if (n.hasOwnProperty(o) && n[o] === e[a][o]) return Number(a);
}
return -1;
}
function on(e, n) {
if (!e || !e.getBoundingClientRect) return ze();
var a = e, o = !1;
do
if (a.clientWidth < a.scrollWidth || a.clientHeight < a.scrollHeight) {
var t = B(a);
if (a.clientWidth < a.scrollWidth && (t.overflowX == "auto" || t.overflowX == "scroll") || a.clientHeight < a.scrollHeight && (t.overflowY == "auto" || t.overflowY == "scroll")) {
if (!a.getBoundingClientRect || a === document.body) return ze();
if (o || n) return a;
o = !0;
}
}
while (a = a.parentNode);
return ze();
}
function yl(e, n) {
if (e && n)
for (var a in n)
n.hasOwnProperty(a) && (e[a] = n[a]);
return e;
}
function Ta(e, n) {
return Math.round(e.top) === Math.round(n.top) && Math.round(e.left) === Math.round(n.left) && Math.round(e.height) === Math.round(n.height) && Math.round(e.width) === Math.round(n.width);
}
var Rn;
function ec(e, n) {
return function() {
if (!Rn) {
var a = arguments, o = this;
a.length === 1 ? e.call(o, a[0]) : e.apply(o, a), Rn = setTimeout(function() {
Rn = void 0;
}, n);
}
};
}
function bl() {
clearTimeout(Rn), Rn = void 0;
}
function nc(e, n, a) {
e.scrollLeft += n, e.scrollTop += a;
}
function ac(e) {
var n = window.Polymer, a = window.jQuery || window.Zepto;
return n && n.dom ? n.dom(e).cloneNode(!0) : a ? a(e).clone(!0)[0] : e.cloneNode(!0);
}
var De = "Sortable" + (/* @__PURE__ */ new Date()).getTime();
function wl() {
var e = [], n;
return {
captureAnimationState: function() {
if (e = [], !!this.options.animation) {
var o = [].slice.call(this.el.children);
o.forEach(function(t) {
if (!(B(t, "display") === "none" || t === z.ghost)) {
e.push({
target: t,
rect: le(t)
});
var c = Ve({}, e[e.length - 1].rect);
if (t.thisAnimationDuration) {
var d = En(t, !0);
d && (c.top -= d.f, c.left -= d.e);
}
t.fromRect = c;
}
});
}
},
addAnimationState: function(o) {
e.push(o);
},
removeAnimationState: function(o) {
e.splice(vl(e, {
target: o
}), 1);
},
animateAll: function(o) {
var t = this;
if (!this.options.animation) {
clearTimeout(n), typeof o == "function" && o();
return;
}
var c = !1, d = 0;
e.forEach(function(i) {
var r = 0, s = i.target, u = s.fromRect, g = le(s), y = s.prevFromRect, x = s.prevToRect, f = i.rect, h = En(s, !0);
h && (g.top -= h.f, g.left -= h.e), s.toRect = g, s.thisAnimationDuration && Ta(y, g) && !Ta(u, g) && // Make sure animatingRect is on line between toRect & fromRect
(f.top - g.top) / (f.left - g.left) === (u.top - g.top) / (u.left - g.left) && (r = Cl(f, y, x, t.options)), Ta(g, u) || (s.prevFromRect = u, s.prevToRect = g, r || (r = t.options.animation), t.animate(s, f, g, r)), r && (c = !0, d = Math.max(d, r), clearTimeout(s.animationResetTimer), s.animationResetTimer = setTimeout(function() {
s.animationTime = 0, s.prevFromRect = null, s.fromRect = null, s.prevToRect = null, s.thisAnimationDuration = null;
}, r), s.thisAnimationDuration = r);
}), clearTimeout(n), c ? n = setTimeout(function() {
typeof o == "function" && o();
}, d) : typeof o == "function" && o(), e = [];
},
animate: function(o, t, c, d) {
if (d) {
B(o, "transition", ""), B(o, "transform", "");
var i = En(this.el), r = i && i.a, s = i && i.d, u = (t.left - c.left) / (r || 1), g = (t.top - c.top) / (s || 1);
o.animatingX = !!u, o.animatingY = !!g, B(o, "transform", "translate3d(" + u + "px," + g + "px,0)"), this.forRepaintDummy = kl(o), B(o, "transition", "transform " + d + "ms" + (this.options.easing ? " " + this.options.easing : "")), B(o, "transform", "translate3d(0,0,0)"), typeof o.animated == "number" && clearTimeout(o.animated), o.animated = setTimeout(function() {
B(o, "transition", ""), B(o, "transform", ""), o.animated = !1, o.animatingX = !1, o.animatingY = !1;
}, d);
}
}
};
}
function kl(e) {
return e.offsetWidth;
}
function Cl(e, n, a, o) {
return Math.sqrt(Math.pow(n.top - e.top, 2) + Math.pow(n.left - e.left, 2)) / Math.sqrt(Math.pow(n.top - a.top, 2) + Math.pow(n.left - a.left, 2)) * o.animation;
}
var vn = [], $a = {
initializeByDefault: !0
}, Gn = {
mount: function(n) {
for (var a in $a)
$a.hasOwnProperty(a) && !(a in n) && (n[a] = $a[a]);
vn.forEach(function(o) {
if (o.pluginName === n.pluginName)
throw "Sortable: Cannot mount plugin ".concat(n.pluginName, " more than once");
}), vn.push(n);
},
pluginEvent: function(n, a, o) {
var t = this;
this.eventCanceled = !1, o.cancel = function() {
t.eventCanceled = !0;
};
var c = n + "Global";
vn.forEach(function(d) {
a[d.pluginName] && (a[d.pluginName][c] && a[d.pluginName][c](Ve({
sortable: a
}, o)), a.options[d.pluginName] && a[d.pluginName][n] && a[d.pluginName][n](Ve({
sortable: a
}, o)));
});
},
initializePlugins: function(n, a, o, t) {
vn.forEach(function(i) {
var r = i.pluginName;
if (!(!n.options[r] && !i.initializeByDefault)) {
var s = new i(n, a, n.options);
s.sortable = n, s.options = n.options, n[r] = s, Ye(o, s.defaults);
}
});
for (var c in n.options)
if (n.options.hasOwnProperty(c)) {
var d = this.modifyOption(n, c, n.options[c]);
typeof d < "u" && (n.options[c] = d);
}
},
getEventProperties: function(n, a) {
var o = {};
return vn.forEach(function(t) {
typeof t.eventProperties == "function" && Ye(o, t.eventProperties.call(a[t.pluginName], n));
}), o;
},
modifyOption: function(n, a, o) {
var t;
return vn.forEach(function(c) {
n[c.pluginName] && c.optionListeners && typeof c.optionListeners[a] == "function" && (t = c.optionListeners[a].call(n[c.pluginName], o));
}), t;
}
};
function xl(e) {
var n = e.sortable, a = e.rootEl, o = e.name, t = e.targetEl, c = e.cloneEl, d = e.toEl, i = e.fromEl, r = e.oldIndex, s = e.newIndex, u = e.oldDraggableIndex, g = e.newDraggableIndex, y = e.originalEvent, x = e.putSortable, f = e.extraEventProperties;
if (n = n || a && a[De], !!n) {
var h, v = n.options, p = "on" + o.charAt(0).toUpperCase() + o.substr(1);
window.CustomEvent && !Qe && !Qn ? h = new CustomEvent(o, {
bubbles: !0,
cancelable: !0
}) : (h = document.createEvent("Event"), h.initEvent(o, !0, !0)), h.to = d || a, h.from = i || a, h.item = t || a, h.clone = c, h.oldIndex = r, h.newIndex = s, h.oldDraggableIndex = u, h.newDraggableIndex = g, h.originalEvent = y, h.pullMode = x ? x.lastPutMode : void 0;
var l = Ve(Ve({}, f), Gn.getEventProperties(o, n));
for (var b in l)
h[b] = l[b];
a && a.dispatchEvent(h), v[p] && v[p].call(n, h);
}
}
var Sl = ["evt"], Ee = function(n, a) {
var o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, t = o.evt, c = fl(o, Sl);
Gn.pluginEvent.bind(z)(n, a, Ve({
dragEl: I,
parentEl: ne,
ghostEl: V,
rootEl: J,
nextEl: mn,
lastDownEl: oa,
cloneEl: ae,
cloneHidden: an,
dragStarted: In,
putSortable: pe,
activeSortable: z.active,
originalEvent: t,
oldIndex: kn,
oldDraggableIndex: Bn,
newIndex: _e,
newDraggableIndex: en,
hideGhostForTarget: dc,
unhideGhostForTarget: rc,
cloneNowHidden: function() {
an = !0;
},
cloneNowShown: function() {
an = !1;
},
dispatchSortableEvent: function(i) {
xe({
sortable: a,
name: i,
originalEvent: t
});
}
}, c));
};
function xe(e) {
xl(Ve({
putSortable: pe,
cloneEl: ae,
targetEl: I,
rootEl: J,
oldIndex: kn,
oldDraggableIndex: Bn,
newIndex: _e,
newDraggableIndex: en
}, e));
}
var I, ne, V, J, mn, oa, ae, an, kn, _e, Bn, en, Zn, pe, bn = !1, ua = !1, ma = [], sn, $e, Aa, Na, et, nt, In, yn, zn, Un = !1, Jn = !1, ta, ge, Ma = [], Xa = !1, fa = [], ka = typeof document < "u", qn = Zt, at = Qn || Qe ? "cssFloat" : "float", El = ka && !hl && !Zt && "draggable" in document.createElement("div"), oc = function() {
if (ka) {
if (Qe)
return !1;
var e = document.createElement("x");
return e.style.cssText = "pointer-events:auto", e.style.pointerEvents === "auto";
}
}(), tc = function(n, a) {
var o = B(n), t = parseInt(o.width) - parseInt(o.paddingLeft) - parseInt(o.paddingRight) - parseInt(o.borderLeftWidth) - parseInt(o.borderRightWidth), c = On(n, 0, a), d = On(n, 1, a), i = c && B(c), r = d && B(d), s = i && parseInt(i.marginLeft) + parseInt(i.marginRight) + le(c).width, u = r && parseInt(r.marginLeft) + parseInt(r.marginRight) + le(d).width;
if (o.display === "flex")
return o.flexDirection === "column" || o.flexDirection === "column-reverse" ? "vertical" : "horizontal";
if (o.display === "grid")
return o.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
if (c && i.float && i.float !== "none") {
var g = i.float === "left" ? "left" : "right";
return d && (r.clear === "both" || r.clear === g) ? "vertical" : "horizontal";
}
return c && (i.display === "block" || i.display === "flex" || i.display === "table" || i.display === "grid" || s >= t && o[at] === "none" || d && o[at] === "none" && s + u > t) ? "vertical" : "horizontal";
}, Ol = function(n, a, o) {
var t = o ? n.left : n.top, c = o ? n.right : n.bottom, d = o ? n.width : n.height, i = o ? a.left : a.top, r = o ? a.right : a.bottom, s = o ? a.width : a.height;
return t === i || c === r || t + d / 2 === i + s / 2;
}, Pl = function(n, a) {
var o;
return ma.some(function(t) {
var c = t[De].options.emptyInsertThreshold;
if (!(!c || yo(t))) {
var d = le(t), i = n >= d.left - c && n <= d.right + c, r = a >= d.top - c && a <= d.bottom + c;
if (i && r)
return o = t;
}
}), o;
}, cc = function(n) {
function a(c, d) {
return function(i, r, s, u) {
var g = i.options.group.name && r.options.group.name && i.options.group.name === r.options.group.name;
if (c == null && (d || g))
return !0;
if (c == null || c === !1)
return !1;
if (d && c === "clone")
return c;
if (typeof c == "function")
return a(c(i, r, s, u), d)(i, r, s, u);
var y = (d ? i : r).options.group.name;
return c === !0 || typeof c == "string" && c === y || c.join && c.indexOf(y) > -1;
};
}
var o = {}, t = n.group;
(!t || aa(t) != "object") && (t = {
name: t
}), o.name = t.name, o.checkPull = a(t.pull, !0), o.checkPut = a(t.put), o.revertClone = t.revertClone, n.group = o;
}, dc = function() {
!oc && V && B(V, "display", "none");
}, rc = function() {
!oc && V && B(V, "display", "");
};
ka && document.addEventListener("click", function(e) {
if (ua)
return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), ua = !1, !1;
}, !0);
var un = function(n) {
if (I) {
n = n.touches ? n.touches[0] : n;
var a = Pl(n.clientX, n.clientY);
if (a) {
var o = {};
for (var t in n)
n.hasOwnProperty(t) && (o[t] = n[t]);
o.target = o.rootEl = a, o.preventDefault = void 0, o.stopPropagation = void 0, a[De]._onDragOver(o);
}
}
}, _l = function(n) {
I && I.parentNode[De]._isOutsideThisEl(n.target);
};
function z(e, n) {
if (!(e && e.nodeType && e.nodeType === 1))
throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));
this.el = e, this.options = n = Ye({}, n), e[De] = this;
var a = {
group: null,
sort: !0,
disabled: !1,
store: null,
handle: null,
draggable: /^[uo]l$/i.test(e.nodeName) ? ">li" : ">*",
swapThreshold: 1,
// percentage; 0 <= x <= 1
invertSwap: !1,
// invert always
invertedSwapThreshold: null,
// will be set to same as swapThreshold if default
removeCloneOnHide: !0,
direction: function() {
return tc(e, this.options);
},
ghostClass: "sortable-ghost",
chosenClass: "sortable-chosen",
dragClass: "sortable-drag",
ignore: "a, img",
filter: null,
preventOnFilter: !0,
animation: 0,
easing: null,
setData: function(d, i) {
d.setData("Text", i.textContent);
},
dropBubble: !1,
dragoverBubble: !1,
dataIdAttr: "data-id",
delay: 0,
delayOnTouchOnly: !1,
touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,
forceFallback: !1,
fallbackClass: "sortable-fallback",
fallbackOnBody: !1,
fallbackTolerance: 0,
fallbackOffset: {
x: 0,
y: 0
},
supportPointer: z.supportPointer !== !1 && "PointerEvent" in window && !Ln,
emptyInsertThreshold: 5
};
Gn.initializePlugins(this, e, a);
for (var o in a)
!(o in n) && (n[o] = a[o]);
cc(n);
for (var t in this)
t.charAt(0) === "_" && typeof this[t] == "function" && (this[t] = this[t].bind(this));
this.nativeDraggable = n.forceFallback ? !1 : El, this.nativeDraggable && (this.options.touchStartThreshold = 1), n.supportPointer ? Y(e, "pointerdown", this._onTapStart) : (Y(e, "mousedown", this._onTapStart), Y(e, "touchstart", this._onTapStart)), this.nativeDraggable && (Y(e, "dragover", this), Y(e, "dragenter", this)), ma.push(this.el), n.store && n.store.get && this.sort(n.store.get(this) || []), Ye(this, wl());
}
z.prototype = /** @lends Sortable.prototype */
{
constructor: z,
_isOutsideThisEl: function(n) {
!this.el.contains(n) && n !== this.el && (yn = null);
},
_getDirection: function(n, a) {
return typeof this.options.direction == "function" ? this.options.direction.call(this, n, a, I) : this.options.direction;
},
_onTapStart: function(n) {
if (n.cancelable) {
var a = this, o = this.el, t = this.options, c = t.preventOnFilter, d = n.type, i = n.touches && n.touches[0] || n.pointerType && n.pointerType === "touch" && n, r = (i || n).target, s = n.target.shadowRoot && (n.path && n.path[0] || n.composedPath && n.composedPath()[0]) || r, u = t.filter;
if (jl(o), !I && !(/mousedown|pointerdown/.test(d) && n.button !== 0 || t.disabled) && !s.isContentEditable && !(!this.nativeDraggable && Ln && r && r.tagName.toUpperCase() === "SELECT") && (r = je(r, t.draggable, o, !1), !(r && r.animated) && oa !== r)) {
if (kn = Ie(r), Bn = Ie(r, t.draggable), typeof u == "function") {
if (u.call(this, n, r, this)) {
xe({
sortable: a,
rootEl: s,
name: "filter",
targetEl: r,
toEl: o,
fromEl: o
}), Ee("filter", a, {
evt: n
}), c && n.cancelable && n.preventDefault();
return;
}
} else if (u && (u = u.split(",").some(function(g) {
if (g = je(s, g.trim(), o, !1), g)
return xe({
sortable: a,
rootEl: g,
name: "filter",
targetEl: r,
fromEl: o,
toEl: o
}), Ee("filter", a, {
evt: n
}), !0;
}), u)) {
c && n.cancelable && n.preventDefault();
return;
}
t.handle && !je(s, t.handle, o, !1) || this._prepareDragStart(n, i, r);
}
}
},
_prepareDragStart: function(n, a, o) {
var t = this, c = t.el, d = t.options, i = c.ownerDocument, r;
if (o && !I && o.parentNode === c) {
var s = le(o);
if (J = c, I = o, ne = I.parentNode, mn = I.nextSibling, oa = o, Zn = d.group, z.dragged = I, sn = {
target: I,
clientX: (a || n).clientX,
clientY: (a || n).clientY
}, et = sn.clientX - s.left, nt = sn.clientY - s.top, this._lastX = (a || n).clientX, this._lastY = (a || n).clientY, I.style["will-change"] = "all", r = function() {
if (Ee("delayEnded", t, {
evt: n
}), z.eventCanceled) {
t._onDrop();
return;
}
t._disableDelayedDragEvents(), !Go && t.nativeDraggable && (I.draggable = !0), t._triggerDragStart(n, a), xe({
sortable: t,
name: "choose",
originalEvent: n
}), Pe(I, d.chosenClass, !0);
}, d.ignore.split(",").forEach(function(u) {
qt(I, u.trim(), ja);
}), Y(i, "dragover", un), Y(i, "mousemove", un), Y(i, "touchmove", un), Y(i, "mouseup", t._onDrop), Y(i, "touchend", t._onDrop), Y(i, "touchcancel", t._onDrop), Go && this.nativeDraggable && (this.options.touchStartThreshold = 4, I.draggable = !0), Ee("delayStart", this, {
evt: n
}), d.delay && (!d.delayOnTouchOnly || a) && (!this.nativeDraggable || !(Qn || Qe))) {
if (z.eventCanceled) {
this._onDrop();
return;
}
Y(i, "mouseup", t._disableDelayedDrag), Y(i, "touchend", t._disableDelayedDrag), Y(i, "touchcancel", t._disableDelayedDrag), Y(i, "mousemove", t._delayedDragTouchMoveHandler), Y(i, "touchmove", t._delayedDragTouchMoveHandler), d.supportPointer && Y(i, "pointermove", t._delayedDragTouchMoveHandler), t._dragStartTimer = setTimeout(r, d.delay);
} else
r();
}
},
_delayedDragTouchMoveHandler: function(n) {
var a = n.touches ? n.touches[0] : n;
Math.max(Math.abs(a.clientX - this._lastX), Math.abs(a.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
},
_disableDelayedDrag: function() {
I && ja(I), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
},
_disableDelayedDragEvents: function() {
var n = this.el.ownerDocument;
W(n, "mouseup", this._disableDelayedDrag), W(n, "touchend", this._disableDelayedDrag), W(n, "touchcancel", this._disableDelayedDrag), W(n, "mousemove", this._delayedDragTouchMoveHandler), W(n, "touchmove", this._delayedDragTouchMoveHandler), W(n, "pointermove", this._delayedDragTouchMoveHandler);
},
_triggerDragStart: function(n, a) {
a = a || n.pointerType == "touch" && n, !this.nativeDraggable || a ? this.options.supportPointer ? Y(document, "pointermove", this._onTouchMove) : a ? Y(document, "touchmove", this._onTouchMove) : Y(document, "mousemove", this._onTouchMove) : (Y(I, "dragend", this), Y(J, "dragstart", this._onDragStart));
try {
document.selection ? ca(function() {
document.selection.empty();
}) : window.getSelection().removeAllRanges();
} catch {
}
},
_dragStarted: function(n, a) {
if (bn = !1, J && I) {
Ee("dragStarted", this, {
evt: a
}), this.nativeDraggable && Y(document, "dragover", _l);
var o = this.options;
!n && Pe(I, o.dragClass, !1), Pe(I, o.ghostClass, !0), z.active = this, n && this._appendGhost(), xe({
sortable: this,
name: "start",
originalEvent: a
});
} else
this._nulling();
},
_emulateDragOver: function() {
if ($e) {
this._lastX = $e.clientX, this._lastY = $e.clientY, dc();
for (var n = document.elementFromPoint($e.clientX, $e.clientY), a = n; n && n.shadowRoot && (n = n.shadowRoot.elementFromPoint($e.clientX, $e.clientY), n !== a); )
a = n;
if (I.parentNode[De]._isOutsideThisEl(n), a)
do {
if (a[De]) {
var o = void 0;
if (o = a[De]._onDragOver({
clientX: $e.clientX,
clientY: $e.clientY,
target: n,
rootEl: a
}), o && !this.options.dragoverBubble)
break;
}
n = a;
} while (a = a.parentNode);
rc();
}
},
_onTouchMove: function(n) {
if (sn) {
var a = this.options, o = a.fallbackTolerance, t = a.fallbackOffset, c = n.touches ? n.touches[0] : n, d = V && En(V, !0), i = V && d && d.a, r = V && d && d.d, s = qn && ge && qo(ge), u = (c.clientX - sn.clientX + t.x) / (i || 1) + (s ? s[0] - Ma[0] : 0) / (i || 1), g = (c.clientY - sn.clientY + t.y) / (r || 1) + (s ? s[1] - Ma[1] : 0) / (r || 1);
if (!z.active && !bn) {
if (o && Math.max(Math.abs(c.clientX - this._lastX), Math.abs(c.clientY - this._lastY)) < o)
return;
this._onDragStart(n, !0);
}
if (V) {
d ? (d.e += u - (Aa || 0), d.f += g - (Na || 0)) : d = {
a: 1,
b: 0,
c: 0,
d: 1,
e: u,
f: g
};
var y = "matrix(".concat(d.a, ",").concat(d.b, ",").concat(d.c, ",").concat(d.d, ",").concat(d.e, ",").concat(d.f, ")");
B(V, "webkitTransform", y), B(V, "mozTransform", y), B(V, "msTransform", y), B(V, "transform", y), Aa = u, Na = g, $e = c;
}
n.cancelable && n.preventDefault();
}
},
_appendGhost: function() {
if (!V) {
var n = this.options.fallbackOnBody ? document.body : J, a = le(I, !0, qn, !0, n), o = this.options;
if (qn) {
for (ge = n; B(ge, "position") === "static" && B(ge, "transform") === "none" && ge !== document; )
ge = ge.parentNode;
ge !== document.body && ge !== document.documentElement ? (ge === document && (ge = ze()), a.top += ge.scrollTop, a.left += ge.scrollLeft) : ge = ze(), Ma = qo(ge);
}
V = I.cloneNode(!0), Pe(V, o.ghostClass, !1), Pe(V, o.fallbackClass, !0), Pe(V, o.dragClass, !0), B(V, "transition", ""), B(V, "transform", ""), B(V, "box-sizing", "border-box"), B(V, "margin", 0), B(V, "top", a.top), B(V, "left", a.left), B(V, "width", a.width), B(V, "height", a.height), B(V, "opacity", "0.8"), B(V, "position", qn ? "absolute" : "fixed"), B(V, "zIndex", "100000"), B(V, "pointerEvents", "none"), z.ghost = V, n.appendChild(V), B(V, "transform-origin", et / parseInt(V.style.width) * 100 + "% " + nt / parseInt(V.style.height) * 100 + "%");
}
},
_onDragStart: function(n, a) {
var o = this, t = n.dataTransfer, c = o.options;
if (Ee("dragStart", this, {
evt: n
}), z.eventCanceled) {
this._onDrop();
return;
}
Ee("setupClone", this), z.eventCanceled || (ae = ac(I), ae.draggable = !1, ae.style["will-change"] = "", this._hideClone(), Pe(ae, this.options.chosenClass, !1), z.clone = ae), o.cloneId = ca(function() {
Ee("clone", o), !z.eventCanceled && (o.options.removeCloneOnHide || J.insertBefore(ae, I), o._hideClone(), xe({
sortable: o,
name: "clone"
}));
}), !a && Pe(I, c.dragClass, !0), a ? (ua = !0, o._loopId = setInterval(o._emulateDragOver, 50)) : (W(document, "mouseup", o._onDrop), W(document, "touchend", o._onDrop), W(document, "touchcancel", o._onDrop), t && (t.effectAllowed = "move", c.setData && c.setData.call(o, t, I)), Y(document, "drop", o), B(I, "transform", "translateZ(0)")), bn = !0, o._dragStartId = ca(o._dragStarted.bind(o, a, n)), Y(document, "selectstart", o), In = !0, Ln && B(document.body, "user-select", "none");
},
// Returns true - if no further action is needed (either inserted or another condition)
_onDragOver: function(n) {
var a = this.el, o = n.target, t, c, d, i = this.options, r = i.group, s = z.active, u = Zn === r, g = i.sort, y = pe || s, x, f = this, h = !1;
if (Xa) return;
function v(F, Z) {
Ee(F, f, Ve({
evt: n,
isOwner: u,
axis: x ? "vertical" : "horizontal",
revert: d,
dragRect: t,
targetRect: c,
canSort: g,
fromSortable: y,
target: o,
completed: l,
onMove: function(Ne, He) {
return ea(J, a, I, t, Ne, le(Ne), n, He);
},
changed: b
}, Z));
}
function p() {
v("dragOverAnimationCapture"), f.captureAnimationState(), f !== y && y.captureAnimationState();
}
function l(F) {
return v("dragOverCompleted", {
insertion: F
}), F && (u ? s._hideClone() : s._showClone(f), f !== y && (Pe(I, pe ? pe.options.ghostClass : s.options.ghostClass, !1), Pe(I, i.ghostClass, !0)), pe !== f && f !== z.active ? pe = f : f === z.active && pe && (pe = null), y === f && (f._ignoreWhileAnimating = o), f.animateAll(function() {
v("dragOverAnimationComplete"), f._ignoreWhileAnimating = null;
}), f !== y && (y.animateAll(), y._ignoreWhileAnimating = null)), (o === I && !I.animated || o === a && !o.animated) && (yn = null), !i.dragoverBubble && !n.rootEl && o !== document && (I.parentNode[De]._isOutsideThisEl(n.target), !F && un(n)), !i.dragoverBubble && n.stopPropagation && n.stopPropagation(), h = !0;
}
function b() {
_e = Ie(I), en = Ie(I, i.draggable), xe({
sortable: f,
name: "change",
toEl: a,
newIndex: _e,
newDraggableIndex: en,
originalEvent: n
});
}
if (n.preventDefault !== void 0 && n.cancelable && n.preventDefault(), o = je(o, i.draggable, a, !0), v("dragOver"), z.eventCanceled) return h;
if (I.contains(n.target) || o.animated && o.animatingX && o.animatingY || f._ignoreWhileAnimating === o)
return l(!1);
if (ua = !1, s && !i.disabled && (u ? g || (d = ne !== J) : pe === this || (this.lastPutMode = Zn.checkPull(this, s, I, n)) && r.checkPut(this, s, I, n))) {
if (x = this._getDirection(n, o) === "vertical", t = le(I), v("dragOverValid"), z.eventCanceled) return h;
if (d)
return ne = J, p(), this._hideClone(), v("revert"), z.eventCanceled || (mn ? J.insertBefore(I, mn) : J.appendChild(I)), l(!0);
var S = yo(a, i.draggable);
if (!S || $l(n, x, this) && !S.animated) {
if (S === I)
return l(!1);
if (S && a === n.target && (o = S), o && (c = le(o)), ea(J, a, I, t, o, c, n, !!o) !== !1)
return p(), a.appendChild(I), ne = a, b(), l(!0);
} else if (S && Tl(n, x, this)) {
var O = On(a, 0, i, !0);
if (O === I)
return l(!1);
if (o = O, c = le(o), ea(J, a, I, t, o, c, n, !1) !== !1)
return p(), a.insertBefore(I, O), ne = a, b(), l(!0);
} else if (o.parentNode === a) {
c = le(o);
var w = 0, P, C = I.parentNode !== a, k = !Ol(I.animated && I.toRect || t, o.animated && o.toRect || c, x), E = x ? "top" : "left", D = Jo(o, "top", "top") || Jo(I, "top", "top"), M = D ? D.scrollTop : void 0;
yn !== o && (P = c[E], Un = !1, Jn = !k && i.invertSwap || C), w = Al(n, o, c, x, k ? 1 : i.swapThreshold, i.invertedSwapThreshold == null ? i.swapThreshold : i.invertedSwapThreshold, Jn, yn === o);
var A;
if (w !== 0) {
var R = Ie(I);
do
R -= w, A = ne.children[R];
while (A && (B(A, "display") === "none" || A === V));
}
if (w === 0 || A === o)
return l(!1);
yn = o, zn = w;
var K = o.nextElementSibling, T = !1;
T = w === 1;
var N = ea(J, a, I, t, o, c, n, T);
if (N !== !1)
return (N === 1 || N === -1) && (T = N === 1), Xa = !0, setTimeout(Il, 30), p(), T && !K ? a.appendChild(I) : o.parentNode.insertBefore(I, T ? K : o), D && nc(D, 0, M - D.scrollTop), ne = I.parentNode, P !== void 0 && !Jn && (ta = Math.abs(P - le(o)[E])), b(), l(!0);
}
if (a.contains(I))
return l(!1);
}
return !1;
},
_ignoreWhileAnimating: null,
_offMoveEvents: function() {
W(document, "mousemove", this._onTouchMove), W(document, "touchmove", this._onTouchMove), W(document, "pointermove", this._onTouchMove), W(document, "dragover", un), W(document, "mousemove", un), W(document, "touchmove", un);
},
_offUpEvents: function() {
var n = this.el.ownerDocument;
W(n, "mouseup", this._onDrop), W(n, "touchend", this._onDrop), W(n, "pointerup", this._onDrop), W(n, "touchcancel", this._onDrop), W(document, "selectstart", this);
},
_onDrop: function(n) {
var a = this.el, o = this.options;
if (_e = Ie(I), en = Ie(I, o.draggable), Ee("drop", this, {
evt: n
}), ne = I && I.parentNode, _e = Ie(I), en = Ie(I, o.draggable), z.eventCanceled) {
this._nulling();
return;
}
bn = !1, Jn = !1, Un = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Qa(this.cloneId), Qa(this._dragStartId), this.nativeDraggable && (W(document, "drop", this), W(a, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), Ln && B(document.body, "user-select", ""), B(I, "transform", ""), n && (In && (n.cancelable && n.preventDefault(), !o.dropBubble && n.stopPropagation()), V && V.parentNode && V.parentNode.removeChild(V), (J === ne || pe && pe.lastPutMode !== "clone") && ae && ae.parentNode && ae.parentNode.removeChild(ae), I && (this.nativeDraggable && W(I, "dragend", this), ja(I), I.style["will-change"] = "", In && !bn && Pe(I, pe ? pe.options.ghostClass : this.options.ghostClass, !1), Pe(I, this.options.chosenClass, !1), xe({
sortable: this,
name: "unchoose",
toEl: ne,
newIndex: null,
newDraggableIndex: null,
originalEvent: n
}), J !== ne ? (_e >= 0 && (xe({
rootEl: ne,
name: "add",
toEl: ne,
fromEl: J,
originalEvent: n
}), xe({
sortable: this,
name: "remove",
toEl: ne,
originalEvent: n
}), xe({
rootEl: ne,
name: "sort",
toEl: ne,
fromEl: J,
originalEvent: n
}), xe({
sortable: this,
name: "sort",
toEl: ne,
originalEvent: n
})), pe && pe.save()) : _e !== kn && _e >= 0 && (xe({
sortable: this,
name: "update",
toEl: ne,
originalEvent: n
}), xe({
sortable: this,
name: "sort",
toEl: ne,
originalEvent: n
})), z.active && ((_e == null || _e === -1) && (_e = kn, en = Bn), xe({
sortable: this,
name: "end",
toEl: ne,
originalEvent: n
}), this.save()))), this._nulling();
},
_nulling: function() {
Ee("nulling", this), J = I = ne = V = mn = ae = oa = an = sn = $e = In = _e = en = kn = Bn = yn = zn = pe = Zn = z.dragged = z.ghost = z.clone = z.active = null, fa.forEach(function(n) {
n.checked = !0;
}), fa.length = Aa = Na = 0;
},
handleEvent: function(n) {
switch (n.type) {
case "drop":
case "dragend":
this._onDrop(n);
break;
case "dragenter":
case "dragover":
I && (this._onDragOver(n), Dl(n));
break;
case "selectstart":
n.preventDefault();
break;
}
},
/**
* Serializes the item into an array of string.
* @returns {String[]}
*/
toArray: function() {
for (var n = [], a, o = this.el.children, t = 0, c = o.length, d = this.options; t < c; t++)
a = o[t], je(a, d.draggable, this.el, !1) && n.push(a.getAttribute(d.dataIdAttr) || Ml(a));
return n;
},
/**
* Sorts the elements according to the array.
* @param {String[]} order order of the items
*/
sort: function(n, a) {
var o = {}, t = this.el;
this.toArray().forEach(function(c, d) {
var i = t.children[d];
je(i, this.options.draggable, t, !1) && (o[c] = i);
}, this), a && this.captureAnimationState(), n.forEach(function(c) {
o[c] && (t.removeChild(o[c]), t.appendChild(o[c]));
}), a && this.animateAll();
},
/**
* Save the current sorting
*/
save: function() {
var n = this.options.store;
n && n.set && n.set(this);
},
/**
* For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
* @param {HTMLElement} el
* @param {String} [selector] default: `options.draggable`
* @returns {HTMLElement|null}
*/
closest: function(n, a) {
return je(n, a || this.options.draggable, this.el, !1);
},
/**
* Set/get option
* @param {string} name
* @param {*} [value]
* @returns {*}
*/
option: function(n, a) {
var o = this.options;
if (a === void 0)
return o[n];
var t = Gn.modifyOption(this, n, a);
typeof t < "u" ? o[n] = t : o[n] = a, n === "group" && cc(o);
},
/**
* Destroy
*/
destroy: function() {
Ee("destroy", this);
var n = this.el;
n[De] = null, W(n, "mousedown", this._onTapStart), W(n, "touchstart", this._onTapStart), W(n, "pointerdown", this._onTapStart), this.nativeDraggable && (W(n, "dragover", this), W(n, "dragenter", this)), Array.prototype.forEach.call(n.querySelectorAll("[draggable]"), function(a) {
a.removeAttribute("draggable");
}), this._onDrop(), this._disableDelayedDragEvents(), ma.splice(ma.indexOf(this.el), 1), this.el = n = null;
},
_hideClone: function() {
if (!an) {
if (Ee("hideClone", this), z.eventCanceled) return;
B(ae, "display", "none"), this.options.removeCloneOnHide && ae.parentNode && ae.parentNode.removeChild(ae), an = !0;
}
},
_showClone: function(n) {
if (n.lastPutMode !== "clone") {
this._hideClone();
return;
}
if (an) {
if (Ee("showClone", this), z.eventCanceled) return;
I.parentNode == J && !this.options.group.revertClone ? J.insertBefore(ae, I) : mn ? J.insertBefore(ae, mn) : J.appendChild(ae), this.options.group.revertClone && this.animate(I, ae), B(ae, "display", ""), an = !1;
}
}
};
function Dl(e) {
e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault();
}
function ea(e, n, a, o, t, c, d, i) {
var r, s = e[De], u = s.options.onMove, g;
return window.CustomEvent && !Qe && !Qn ? r = new CustomEvent("move", {
bubbles: !0,
cancelable: !0
}) : (r = document.createEvent("Event"), r.initEvent("move", !0, !0)), r.to = n, r.from = e, r.dragged = a, r.draggedRect = o, r.related = t || n, r.relatedRect = c || le(n), r.willInsertAfter = i, r.originalEvent = d, e.dispatchEvent(r), u && (g = u.call(s, r, d)), g;
}
function ja(e) {
e.draggable = !1;
}
function Il() {
Xa = !1;
}
function Tl(e, n, a) {
var o = le(On(a.el, 0, a.options, !0)), t = 10;
return n ? e.clientX < o.left - t || e.clientY < o.top && e.clientX < o.right : e.clientY < o.top - t || e.clientY < o.bottom && e.clientX < o.left;
}
function $l(e, n, a) {
var o = le(yo(a.el, a.options.draggable)), t = 10;
return n ? e.clientX > o.right + t || e.clientX <= o.right && e.clientY > o.bottom && e.clientX >= o.left : e.clientX > o.right && e.clientY > o.top || e.clientX <= o.right && e.clientY > o.bottom + t;
}
function Al(e, n, a, o, t, c, d, i) {
var r = o ? e.clientY : e.clientX, s = o ? a.height : a.width, u = o ? a.top : a.left, g = o ? a.bottom : a.right, y = !1;
if (!d) {
if (i && ta < s * t) {
if (!Un && (zn === 1 ? r > u + s * c / 2 : r < g - s * c / 2) && (Un = !0), Un)
y = !0;
else if (zn === 1 ? r < u + ta : r > g - ta)
return -zn;
} else if (r > u + s * (1 - t) / 2 && r < g - s * (1 - t) / 2)
return Nl(n);
}
return y = y || d, y && (r < u + s * c / 2 || r > g - s * c / 2) ? r > u + s / 2 ? 1 : -1 : 0;
}
function Nl(e) {
return Ie(I) < Ie(e) ? 1 : -1;
}
function Ml(e) {
for (var n = e.tagName + e.className + e.src + e.href + e.textContent, a = n.length, o = 0; a--; )
o += n.charCodeAt(a);
return o.toString(36);
}
function jl(e) {
fa.length = 0;
for (var n = e.getElementsByTagName("input"), a = n.length; a--; ) {
var o = n[a];
o.checked && fa.push(o);
}
}
function ca(e) {
return setTimeout(e, 0);
}
function Qa(e) {
return clearTimeout(e);
}
ka && Y(document, "touchmove", function(e) {
(z.active || bn) && e.cancelable && e.preventDefault();
});
z.utils = {
on: Y,
off: W,
css: B,
find: qt,
is: function(n, a) {
return !!je(n, a, n, !1);
},
extend: yl,
throttle: ec,
closest: je,
toggleClass: Pe,
clone: ac,
index: Ie,
nextTick: ca,
cancelNextTick: Qa,
detectDirection: tc,
getChild: On
};
z.get = function(e) {
return e[De];
};
z.mount = function() {
for (var e = arguments.length, n = new Array(e), a = 0; a < e; a++)
n[a] = arguments[a];
n[0].constructor === Array && (n = n[0]), n.forEach(function(o) {
if (!o.prototype || !o.prototype.constructor)
throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(o));
o.utils && (z.utils = Ve(Ve({}, z.utils), o.utils)), Gn.mount(o);
});
};
z.create = function(e, n) {
return new z(e, n);
};
z.version = pl;
var ce = [], Tn, Ga, Za = !1, La, Ra, pa, $n;
function Ll() {
function e() {
this.defaults = {
scroll: !0,
forceAutoScrollFallback: !1,
scrollSensitivity: 30,
scrollSpeed: 10,
bubbleScroll: !0
};
for (var n in this)
n.charAt(0) === "_" && typeof this[n] == "function" && (this[n] = this[n].bind(this));
}
return e.prototype = {
dragStarted: function(a) {
var o = a.originalEvent;
this.sortable.nativeDraggable ? Y(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? Y(document, "pointermove", this._handleFallbackAutoScroll) : o.touches ? Y(document, "touchmove", this._handleFallbackAutoScroll) : Y(document, "mousemove", this._handleFallbackAutoScroll);
},
dragOverCompleted: function(a) {
var o = a.originalEvent;
!this.options.dragOverBubble && !o.rootEl && this._handleAutoScroll(o);
},
drop: function() {
this.sortable.nativeDraggable ? W(document, "dragover", this._handleAutoScroll) : (W(document, "pointermove", this._handleFallbackAutoScroll), W(document, "touchmove", this._handleFallbackAutoScroll), W(document, "mousemove", this._handleFallbackAutoScroll)), ot(), da(), bl();
},
nulling: function() {
pa = Ga = Tn = Za = $n = La = Ra = null, ce.length = 0;
},
_handleFallbackAutoScroll: function(a) {
this._handleAutoScroll(a, !0);
},
_handleAutoScroll: function(a, o) {
var t = this, c = (a.touches ? a.touches[0] : a).clientX, d = (a.touches ? a.touches[0] : a).clientY, i = document.elementFromPoint(c, d);
if (pa = a, o || this.options.forceAutoScrollFallback || Qn || Qe || Ln) {
Ba(a, this.options, i, o);
var r = on(i, !0);
Za && (!$n || c !== La || d !== Ra) && ($n && ot(), $n = setInterval(function() {
var s = on(document.elementFromPoint(c, d), !0);
s !== r && (r = s, da()), Ba(a, t.options, s, o);
}, 10), La = c, Ra = d);
} else {
if (!this.options.bubbleScroll || on(i, !0) === ze()) {
da();
return;
}
Ba(a, this.options, on(i, !1), !1);
}
}
}, Ye(e, {
pluginName: "scroll",
initializeByDefault: !0
});
}
function da() {
ce.forEach(function(e) {
clearInterval(e.pid);
}), ce = [];
}
function ot() {
clearInterval($n);
}
var Ba = ec(function(e, n, a, o) {
if (n.scroll) {
var t = (e.touches ? e.touches[0] : e).clientX, c = (e.touches ? e.touches[0] : e).clientY, d = n.scrollSensitivity, i = n.scrollSpeed, r = ze(), s = !1, u;
Ga !== a && (Ga = a, da(), Tn = n.scroll, u = n.scrollFn, Tn === !0 && (Tn = on(a, !0)));
var g = 0, y = Tn;
do {
var x = y, f = le(x), h = f.top, v = f.bottom, p = f.left, l = f.right, b = f.width, S = f.height, O = void 0, w = void 0, P = x.scrollWidth, C = x.scrollHeight, k = B(x), E = x.scrollLeft, D = x.scrollTop;
x === r ? (O = b < P && (k.overflowX === "auto" || k.overflowX === "scroll" || k.overflowX === "visible"), w = S < C && (k.overflowY === "auto" || k.overflowY === "scroll" || k.overflowY === "visible")) : (O = b < P && (k.overflowX === "auto" || k.overflowX === "scroll"), w = S < C && (k.overflowY === "auto" || k.overflowY === "scroll"));
var M = O && (Math.abs(l - t) <= d && E + b < P) - (Math.abs(p - t) <= d && !!E), A = w && (Math.abs(v - c) <= d && D + S < C) - (Math.abs(h - c) <= d && !!D);
if (!ce[g])
for (var R = 0; R <= g; R++)
ce[R] || (ce[R] = {});
(ce[g].vx != M || ce[g].vy != A || ce[g].el !== x) && (ce[g].el = x, ce[g].vx = M, ce[g].vy = A, clearInterval(ce[g].pid), (M != 0 || A != 0) && (s = !0, ce[g].pid = setInterval((function() {
o && this.layer === 0 && z.active._onTouchMove(pa);
var K = ce[this.layer].vy ? ce[this.layer].vy * i : 0, T = ce[this.layer].vx ? ce[this.layer].vx * i : 0;
typeof u == "function" && u.call(z.dragged.parentNode[De], T, K, e, pa, ce[this.layer].el) !== "continue" || nc(ce[this.layer].el, T, K);
}).bind({
layer: g
}), 24))), g++;
} while (n.bubbleScroll && y !== r && (y = on(y, !1)));
Za = s;
}
}, 30), lc = function(n) {
var a = n.originalEvent, o = n.putSortable, t = n.dragEl, c = n.activeSortable, d = n.dispatchSortableEvent, i = n.hideGhostForTarget, r = n.unhideGhostForTarget;
if (a) {
var s = o || c;
i();
var u = a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, g = document.elementFromPoint(u.clientX, u.clientY);
r(), s && !s.el.contains(g) && (d("spill"), this.onSpill({
dragEl: t,
putSortable: o
}));
}
};
function bo() {
}
bo.prototype = {
startIndex: null,
dragStart: function(n) {
var a = n.oldDraggableIndex;
this.startIndex = a;
},
onSpill: function(n) {
var a = n.dragEl, o = n.putSortable;
this.sortable.captureAnimationState(), o && o.captureAnimationState();
var t = On(this.sortable.el, this.startIndex, this.options);
t ? this.sortable.el.insertBefore(a, t) : this.sortable.el.appendChild(a), this.sortable.animateAll(), o && o.animateAll();
},
drop: lc
};
Ye(bo, {
pluginName: "revertOnSpill"
});
function wo() {
}
wo.prototype = {
onSpill: function(n) {
var a = n.dragEl, o = n.putSortable, t = o || this.sortable;
t.captureAnimationState(), a.parentNode && a.parentNode.removeChild(a), t.animateAll();
},
drop: lc
};
Ye(wo, {
pluginName: "removeOnSpill"
});
z.mount(new Ll());
z.mount(wo, bo);
function za(e) {
e.parentElement !== null && e.parentElement.removeChild(e);
}
function tt(e, n, a) {
const o = a === 0 ? e.children[0] : e.children[a - 1].nextSibling;
e.insertBefore(n, o);
}
function Rl() {
return typeof window < "u" ? window.console : global.console;
}
const Bl = Rl();
function zl(e) {
const n = /* @__PURE__ */ Object.create(null);
return function(o) {
return n[o] || (n[o] = e(o));
};
}
const Ul = /-(\w)/g, Vl = zl((e) => e.replace(Ul, (n, a) => a.toUpperCase())), ic = ["Start", "Add", "Remove", "Update", "End"], sc = ["Choose", "Unchoose", "Sort", "Filter", "Clone"], uc = ["Move"], Fl = [uc, ic, sc].flatMap((e) => e).map((e) => `on${e}`), Ja = {
manage: uc,
manageAndEmit: ic,
emit: sc
};
function Hl(e) {
return Fl.indexOf(e) !== -1;
}
const Kl = [
"a",
"abbr",
"address",
"area",
"article",
"aside",
"audio",
"b",
"base",
"bdi",
"bdo",
"blockquote",
"body",
"br",
"button",
"canvas",
"caption",
"cite",
"code",
"col",
"colgroup",
"data",
"datalist",
"dd",
"del",
"details",
"dfn",
"dialog",
"div",
"dl",
"dt",
"em",
"embed",
"fieldset",
"figcaption",
"figure",
"footer",
"form",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"head",
"header",
"hgroup",
"hr",
"html",
"i",
"iframe",
"img",
"input",
"ins",
"kbd",
"label",
"legend",
"li",
"link",
"main",
"map",
"mark",
"math",
"menu",
"menuitem",
"meta",
"meter",
"nav",
"noscript",
"object",
"ol",
"optgroup",
"option",
"output",
"p",
"param",
"picture",
"pre",
"progress",
"q",
"rb",
"rp",
"rt",
"rtc",
"ruby",
"s",
"samp",
"script",
"section",
"select",
"slot",
"small",
"source",
"span",
"strong",
"style",
"sub",
"summary",
"sup",
"svg",
"table",
"tbody",
"td",
"template",
"textarea",
"tfoot",
"th",
"thead",
"time",
"title",
"tr",
"track",
"u",
"ul",
"var",
"video",
"wbr"
];
function Wl(e) {
return Kl.includes(e);
}
function Yl(e) {
return ["transition-group", "TransitionGroup"].includes(e);
}
function mc(e) {
return ["id", "class", "role", "style"].includes(e) || e.startsWith("data-") || e.startsWith("aria-") || e.startsWith("on");
}
function fc(e) {
return e.reduce((n, [a, o]) => (n[a] = o, n), {});
}
function Xl({ $attrs: e, componentData: n = {} }) {
return {
...fc(
Object.entries(e).filter(([o, t]) => mc(o))
),
...n
};
}
function Ql({ $attrs: e, callBackBuilder: n }) {
const a = fc(pc(e));
Object.entries(n).forEach(([t, c]) => {
Ja[t].forEach((d) => {
a[`on${d}`] = c(d);
});
});
const o = `[data-draggable]${a.draggable || ""}`;
return {
...a,
draggable: o
};
}
function pc(e) {
return Object.entries(e).filter(([n, a]) => !mc(n)).map(([n, a]) => [Vl(n), a]).filter(([n, a]) => !Hl(n));
}
const ct = ({ el: e }) => e, Gl = (e, n) => e.__draggable_context = n, dt = (e) => e.__draggable_context;
class Zl {
constructor({
nodes: { header: n, default: a, footer: o },
root: t,
realList: c
}) {
this.defaultNodes = a, this.children = [...n, ...a, ...o], this.externalComponent = t.externalComponent, this.rootTransition = t.transition, this.tag = t.tag, this.realList = c;
}
get _isRootComponent() {
return this.externalComponent || this.rootTransition;
}
render(n, a) {
const { tag: o, children: t, _isRootComponent: c } = this;
return n(o, a, c ? { default: () => t } : t);
}
updated() {
const { defaultNodes: n, realList: a } = this;
n.forEach((o, t) => {
Gl(ct(o), {
element: a[t],
index: t
});
});
}
getUnderlyingVm(n) {
return dt(n);
}
getVmIndexFromDomIndex(n, a) {
const { defaultNodes: o } = this, { length: t } = o, c = a.children, d = c.item(n);
if (d === null)
return t;
const i = dt(d);
if (i)
return i.index;
if (t === 0)
return 0;
const r = ct(o[0]), s = [...c].findIndex(
(u) => u === r
);
return n < s ? 0 : t;
}
}
function Jl(e, n) {
const a = e[n];
return a ? a() : [];
}
function ql({ $slots: e, realList: n, getKey: a }) {
const o = n || [], [t, c] = ["header", "footer"].map(
(r) => Jl(e, r)
), { item: d } = e;
if (!d)
throw new Error("draggable element must have an item slot");
const i = o.flatMap(
(r, s) => d({ element: r, index: s }).map((u) => (u.key = a(r), u.props = { ...u.props || {}, "data-draggable": !0 }, u))
);
if (i.length !== o.length)
throw new Error("Item slot must have only one child");
return {
header: t,
footer: c,
default: i
};
}
function ei(e) {
const n = Yl(e), a = !Wl(e) && !n;
return {
transition: n,
externalComponent: a,
tag: a ? lo(e) : n ? xt : e
};
}
function ni({ $slots: e, tag: n, realList: a, getKey: o }) {
const t = ql({ $slots: e, realList: a, getKey: o }), c = ei(n);
return new Zl({ nodes: t, root: c, realList: a });
}
function hc(e, n) {
cn(() => this.$emit(e.toLowerCase(), n));
}
function gc(e) {
return (n, a) => {
if (this.realList !== null)
return this[`onDrag${e}`](n, a);
};
}
function ai(e) {
const n = gc.call(this, e);
return (a, o) => {
n.call(this, a, o), hc.call(this, e, a);
};
}
let Ua = null;
const oi = {
list: {
type: Array,
required: !1,
default: null
},
modelValue: {
type: Array,
required: !1,
default: null
},
itemKey: {
type: [String, Function],
required: !0
},
clone: {
type: Function,
default: (e) => e
},
tag: {
type: String,
default: "div"
},
move: {
type: Function,
default: null
},
componentData: {
type: Object,
required: !1,
default: null
}
}, ti = [
"update:modelValue",
"change",
...[...Ja.manageAndEmit, ...Ja.emit].map((e) => e.toLowerCase())
], qa = Ce({
name: "draggable",
inheritAttrs: !1,
props: oi,
emits: ti,
data() {
return {
error: !1
};
},
render() {
try {
this.error = !1;
const { $slots: e, $attrs: n, tag: a, componentData: o, realList: t, getKey: c } = this, d = ni({
$slots: e,
tag: a,
realList: t,
getKey: c
});
this.componentStructure = d;
const i = Xl({ $attrs: n, componentData: o });
return d.render(Q, i);
} catch (e) {
return this.error = !0, Q("pre", { style: { color: "red" } }, e.stack);
}
},
created() {
this.list !== null && this.modelValue !== null && Bl.error(
"modelValue and list props are mutually exclusive! Please set one or another."
);
},
mounted() {
if (this.error)
return;
const { $attrs: e, $el: n, componentStructure: a } = this;
a.updated();
const o = Ql({
$attrs: e,
callBackBuilder: {
manageAndEmit: (c) => ai.call(this, c),
emit: (c) => hc.bind(this, c),
manage: (c) => gc.call(this, c)
}
}), t = n.nodeType === 1 ? n : n.parentElement;
this._sortable = new z(t, o), this.targetDomElement = t, t.__draggable_component__ = this;
},
updated() {
this.componentStructure.updated();
},
beforeUnmount() {
this._sortable !== void 0 && this._sortable.destroy();
},
computed: {
realList() {
const { list: e } = this;
return e || this.modelValue;
},
getKey() {
const { itemKey: e } = this;
return typeof e == "function" ? e : (n) => n[e];
}
},
watch: {
$attrs: {
handler(e) {
const { _sortable: n } = this;
n && pc(e).forEach(([a, o]) => {
n.option(a, o);
});
},
deep: !0
}
},
methods: {
getUnderlyingVm(e) {
return this.componentStructure.getUnderlyingVm(e) || null;
},
getUnderlyingPotencialDraggableComponent(e) {
return e.__draggable_component__;
},
emitChanges(e) {
cn(() => this.$emit("change", e));
},
alterList(e) {
if (this.list) {
e(this.list);
return;
}
const n = [...this.modelValue];
e(n), this.$emit("update:modelValue", n);
},
spliceList() {
const e = (n) => n.splice(...arguments);
this.alterList(e);
},
updatePosition(e, n) {
const a = (o) => o.splice(n, 0, o.splice(e, 1)[0]);
this.alterList(a);
},
getRelatedContextFromMoveEvent({ to: e, related: n }) {
const a = this.getUnderlyingPotencialDraggableComponent(e);
if (!a)
return { component: a };
const o = a.realList, t = { list: o, component: a };
return e !== n && o ? { ...a.getUnderlyingVm(n) || {}, ...t } : t;
},
getVmIndexFromDomIndex(e) {
return this.componentStructure.getVmIndexFromDomIndex(
e,
this.targetDomElement
);
},
onDragStart(e) {
this.context = this.getUnderlyingVm(e.item), e.item._underlying_vm_ = this.clone(this.context.element), Ua = e.item;
},
onDragAdd(e) {
const n = e.item._underlying_vm_;
if (n === void 0)
return;
za(e.item);
const a = this.getVmIndexFromDomIndex(e.newIndex);
this.spliceList(a, 0, n);
const o = { element: n, newIndex: a };
this.emitChanges({ added: o });
},
onDragRemove(e) {
if (tt(this.$el, e.item, e.oldIndex), e.pullMode === "clone") {
za(e.clone);
return;
}
const { index: n, element: a } = this.context;
this.spliceList(n, 1);
const o = { element: a, oldIndex: n };
this.emitChanges({ removed: o });
},
onDragUpdate(e) {
za(e.item), tt(e.from, e.item, e.oldIndex);
const n = this.context.index, a = this.getVmIndexFromDomIndex(e.newIndex);
this.updatePosition(n, a);
const o = { element: this.context.element, oldIndex: n, newIndex: a };
this.emitChanges({ moved: o });
},
computeFutureIndex(e, n) {
if (!e.element)
return 0;
const a = [...n.to.children].filter(
(d) => d.style.display !== "none"
), o = a.indexOf(n.related), t = e.component.getVmIndexFromDomIndex(
o
);
return a.indexOf(Ua) !== -1 || !n.willInsertAfter ? t : t + 1;
},
onDragMove(e, n) {
const { move: a, realList: o } = this;
if (!a || !o)
return !0;
const t = this.getRelatedContextFromMoveEvent(e), c = this.computeFutureIndex(t, e), d = {
...this.context,
futureIndex: c
}, i = {
...e,
relatedContext: t,
draggedContext: d
};
return a(i, n);
},
onDragEnd() {
Ua = null;
}
}
}), ci = (e, n) => {
const a = (o) => {
const t = n.targetKeys.indexOf(o.key);
n.targetKeys.splice(t, 1);
};
return m(Qc, {
class: "newbie-search-sortable",
selectedKeys: n.selectedKeys,
"onUpdate:selectedKeys": (o) => n.selectedKeys = o,
targetKeys: n.targetKeys,
"onUpdate:targetKeys": (o) => n.targetKeys = o,
locale: {
itemUnit: "项",
itemsUnit: "项",
notFoundContent: "列表为空",
searchPlaceholder: "请输入搜索内容",
titles: ["可排序项", "已排序项"]
},
listStyle: {
minWidth: "300px"
},
dataSource: e,
titles: ["可排序项", "已排序项"],
oneWay: !0,
render: (o) => o.title
}, {
children({
direction: o,
filteredItems: t
}) {
if (o === "right")
return t.length ? m(qa, {
class: "list-group",
itemKey: "key",
tag: "div",
modelValue: n.targetKeys,
"onUpdate:modelValue": (c) => n.targetKeys = c,
sort: !0,
animation: 0,
group: "sortables",
ghostClass: "ghost",
handle: ".drag-handle"
}, {
item: ({
element: c
}) => {
const d = ie(e, {
key: c
});
return d.direction || (d.direction = "asc"), m("div", {
class: "newbie-search-sortable__sortable-item"
}, [m("span", {
class: "drag-handle"
}, [m(wd, null, null)]), m("div", {
class: "newbie-search-sortable__sortable-item-content"
}, [m("span", {
class: "newbie-search-sortable__sortable-item-title"
}, [d.title]), m("span", {
class: "newbie-search-sortable__sortable-item-sorter"
}, [m(fn, {
title: d.direction === "asc" ? "升序排列" : "降序排列",
placement: "left"
}, {
default: () => [m(te, {
size: "small",
type: d.direction === "asc" ? "primary" : "default",
icon: d.direction === "asc" ? m(Mt, null, null) : m(jt, null, null),
onClick: () => d.direction = d.direction === "asc" ? "desc" : "asc"
}, null)]
})])]), m("span", {
class: "newbie-search-sortable__sortable-item-delete"
}, [m(fn, {
title: "移除当前项",
placement: "right"
}, {
default: () => [m(te, {
type: "danger",
icon: m(Lt, null, null),
onClick: () => a(d)
}, null)]
})])]);
}
}) : m("div", {
class: "newbie-search-sortable__sortable-empty"
}, [he("请选择排序项")]);
}
});
};
function ko(e) {
return wt() ? (kt(e), !0) : !1;
}
function Pn(e) {
return typeof e == "function" ? e() : bt(e);
}
const Co = typeof window < "u", Wn = () => {
}, eo = /* @__PURE__ */ di();
function di() {
var e;
return Co && ((e = window == null ? void 0 : window.navigator) == null ? void 0 : e.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);
}
function ri(...e) {
if (e.length !== 1)
return co(...e);
const n = e[0];
return typeof n == "function" ? Ct(ro(() => ({ get: n, set: Wn }))) : j(n);
}
function An(e) {
var n;
const a = Pn(e);
return (n = a == null ? void 0 : a.$el) != null ? n : a;
}
const vc = Co ? window : void 0;
function Va(...e) {
let n, a, o, t;
if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([a, o, t] = e, n = vc) : [n, a, o, t] = e, !n)
return Wn;
Array.isArray(a) || (a = [a]), Array.isArray(o) || (o = [o]);
const c = [], d = () => {
c.forEach((u) => u()), c.length = 0;
}, i = (u, g, y, x) => (u.addEventListener(g, y, x), () => u.removeEventListener(g, y, x)), r = q(
() => [An(n), Pn(t)],
([u, g]) => {
d(), u && c.push(
...a.flatMap((y) => o.map((x) => i(u, y, x, g)))
);
},
{ immediate: !0, flush: "post" }
), s = () => {
r(), d();
};
return ko(s), s;
}
let rt = !1;
function li(e, n, a = {}) {
const { window: o = vc, ignore: t = [], capture: c = !0, detectIframe: d = !1 } = a;
if (!o)
return;
eo && !rt && (rt = !0, Array.from(o.document.body.children).forEach((y) => y.addEventListener("click", Wn)), o.document.documentElement.addEventListener("click", Wn));
let i = !0;
const r = (y) => t.some((x) => {
if (typeof x == "string")
return Array.from(o.document.querySelectorAll(x)).some((f) => f === y.target || y.composedPath().includes(f));
{
const f = An(x);
return f && (y.target === f || y.composedPath().includes(f));
}
}), u = [
Va(o, "click", (y) => {
const x = An(e);
if (!(!x || x === y.target || y.composedPath().includes(x))) {
if (y.detail === 0 && (i = !r(y)), !i) {
i = !0;
return;
}
n(y);
}
}, { passive: !0, capture: c }),
Va(o, "pointerdown", (y) => {
const x = An(e);
x && (i = !y.composedPath().includes(x) && !r(y));
}, { passive: !0 }),
d && Va(o, "blur", (y) => {
setTimeout(() => {
var x;
const f = An(e);
((x = o.document.activeElement) == null ? void 0 : x.tagName) === "IFRAME" && !(f != null && f.contains(o.document.activeElement)) && n(y);
}, 0);
})
].filter(Boolean);
return () => u.forEach((y) => y());
}
const ii = /* @__PURE__ */ Ce({
name: "OnClickOutside",
props: ["as", "options"],
emits: ["trigger"],
setup(e, { slots: n, emit: a }) {
const o = j();
return li(o, (t) => {
a("trigger", t);
}, e.options), () => {
if (n.default)
return Q(e.as || "div", { ref: o }, n.default());
};
}
});
function si(e) {
var n;
const a = Pn(e);
return (n = a == null ? void 0 : a.$el) != null ? n : a;
}
const ui = Co ? window : void 0;
function mi(...e) {
let n, a, o, t;
if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([a, o, t] = e, n = ui) : [n, a, o, t] = e, !n)
return Wn;
Array.isArray(a) || (a = [a]), Array.isArray(o) || (o = [o]);
const c = [], d = () => {
c.forEach((u) => u()), c.length = 0;
}, i = (u, g, y, x) => (u.addEventListener(g, y, x), () => u.removeEventListener(g, y, x)), r = q(
() => [si(n), Pn(t)],
([u, g]) => {
d(), u && c.push(
...a.flatMap((y) => o.map((x) => i(u, y, x, g)))
);
},
{ immediate: !0, flush: "post" }
), s = () => {
r(), d();
};
return ko(s), s;
}
function yc(e) {
const n = window.getComputedStyle(e);
if (n.overflowX === "scroll" || n.overflowY === "scroll" || n.overflowX === "auto" && e.clientWidth < e.scrollWidth || n.overflowY === "auto" && e.clientHeight < e.scrollHeight)
return !0;
{
const a = e.parentNode;
return !a || a.tagName === "BODY" ? !1 : yc(a);
}
}
function fi(e) {
const n = e || window.event, a = n.target;
return yc(a) ? !1 : n.touches.length > 1 ? !0 : (n.preventDefault && n.preventDefault(), !1);
}
function pi(e, n = !1) {
const a = j(n);
let o = null, t;
q(ri(e), (i) => {
if (i) {
const r = i;
t = r.style.overflow, a.value && (r.style.overflow = "hidden");
}
}, {
immediate: !0
});
const c = () => {
const i = Pn(e);
!i || a.value || (eo && (o = mi(
i,
"touchmove",
(r) => {
fi(r);
},
{ passive: !1 }
)), i.style.overflow = "hidden", a.value = !0);
}, d = () => {
const i = Pn(e);
!i || !a.value || (eo && (o == null || o()), i.style.overflow = t, a.value = !1);
};
return ko(d), X({
get() {
return a.value;
},
set(i) {
i ? c() : d();
}
});
}
function hi() {
let e = !1;
const n = j(!1);
return (a, o) => {
if (n.value = o.value, e)
return;
e = !0;
const t = pi(a, o.value);
q(n, (c) => t.value = c);
};
}
hi();
var bc = {
update: null,
begin: null,
loopBegin: null,
changeBegin: null,
change: null,
changeComplete: null,
loopComplete: null,
complete: null,
loop: 1,
direction: "normal",
autoplay: !0,
timelineOffset: 0
}, xo = {
duration: 1e3,
delay: 0,
endDelay: 0,
easing: "easeOutElastic(1, .5)",
round: 0
}, gi = ["translateX", "translateY", "translateZ", "rotate", "rotateX", "rotateY", "rotateZ", "scale", "scaleX", "scaleY", "scaleZ", "skew", "skewX", "skewY", "perspective", "matrix", "matrix3d"], ha = {
CSS: {},
springs: {}
};
function Re(e, n, a) {
return Math.min(Math.max(e, n), a);
}
function Vn(e, n) {
return e.indexOf(n) > -1;
}
function Fa(e, n) {
return e.apply(null, n);
}
var L = {
arr: function(e) {
return Array.isArray(e);
},
obj: function(e) {
return Vn(Object.prototype.toString.call(e), "Object");
},
pth: function(e) {
return L.obj(e) && e.hasOwnProperty("totalLength");
},
svg: function(e) {
return e instanceof SVGElement;
},
inp: function(e) {
return e instanceof HTMLInputElement;
},
dom: function(e) {
return e.nodeType || L.svg(e);
},
str: function(e) {
return typeof e == "string";
},
fnc: function(e) {
return typeof e == "function";
},
und: function(e) {
return typeof e > "u";
},
nil: function(e) {
return L.und(e) || e === null;
},
hex: function(e) {
return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);
},
rgb: function(e) {
return /^rgb/.test(e);
},
hsl: function(e) {
return /^hsl/.test(e);
},
col: function(e) {
return L.hex(e) || L.rgb(e) || L.hsl(e);
},
key: function(e) {
return !bc.hasOwnProperty(e) && !xo.hasOwnProperty(e) && e !== "targets" && e !== "keyframes";
}
};
function wc(e) {
var n = /\(([^)]+)\)/.exec(e);
return n ? n[1].split(",").map(function(a) {
return parseFloat(a);
}) : [];
}
function kc(e, n) {
var a = wc(e), o = Re(L.und(a[0]) ? 1 : a[0], 0.1, 100), t = Re(L.und(a[1]) ? 100 : a[1], 0.1, 100), c = Re(L.und(a[2]) ? 10 : a[2], 0.1, 100), d = Re(L.und(a[3]) ? 0 : a[3], 0.1, 100), i = Math.sqrt(t / o), r = c / (2 * Math.sqrt(t * o)), s = r < 1 ? i * Math.sqrt(1 - r * r) : 0, u = 1, g = r < 1 ? (r * i + -d) / s : -d + i;
function y(f) {
var h = n ? n * f / 1e3 : f;
return r < 1 ? h = Math.exp(-h * r * i) * (u * Math.cos(s * h) + g * Math.sin(s * h)) : h = (u + g * h) * Math.exp(-h * i), f === 0 || f === 1 ? f : 1 - h;
}
function x() {
var f = ha.springs[e];
if (f)
return f;
for (var h = 1 / 6, v = 0, p = 0; ; )
if (v += h, y(v) === 1) {
if (p++, p >= 16)
break;
} else
p = 0;
var l = v * h * 1e3;
return ha.springs[e] = l, l;
}
return n ? y : x;
}
function vi(e) {
return e === void 0 && (e = 10), function(n) {
return Math.ceil(Re(n, 1e-6, 1) * e) * (1 / e);
};
}
var yi = function() {
var e = 11, n = 1 / (e - 1);
function a(u, g) {
return 1 - 3 * g + 3 * u;
}
function o(u, g) {
return 3 * g - 6 * u;
}
function t(u) {
return 3 * u;
}
function c(u, g, y) {
return ((a(g, y) * u + o(g, y)) * u + t(g)) * u;
}
function d(u, g, y) {
return 3 * a(g, y) * u * u + 2 * o(g, y) * u + t(g);
}
function i(u, g, y, x, f) {
var h, v, p = 0;
do
v = g + (y - g) / 2, h = c(v, x, f) - u, h > 0 ? y = v : g = v;
while (Math.abs(h) > 1e-7 && ++p < 10);
return v;
}
function r(u, g, y, x) {
for (var f = 0; f < 4; ++f) {
var h = d(g, y, x);
if (h === 0)
return g;
var v = c(g, y, x) - u;
g -= v / h;
}
return g;
}
function s(u, g, y, x) {
if (!(0 <= u && u <= 1 && 0 <= y && y <= 1))
return;
var f = new Float32Array(e);
if (u !== g || y !== x)
for (var h = 0; h < e; ++h)
f[h] = c(h * n, u, y);
function v(p) {
for (var l = 0, b = 1, S = e - 1; b !== S && f[b] <= p; ++b)
l += n;
--b;
var O = (p - f[b]) / (f[b + 1] - f[b]), w = l + O * n, P = d(w, u, y);
return P >= 1e-3 ? r(p, w, u, y) : P === 0 ? w : i(p, l, l + n, u, y);
}
return function(p) {
return u === g && y === x || p === 0 || p === 1 ? p : c(v(p), g, x);
};
}
return s;
}(), Cc = function() {
var e = { linear: function() {
return function(o) {
return o;
};
} }, n = {
Sine: function() {
return function(o) {
return 1 - Math.cos(o * Math.PI / 2);
};
},
Circ: function() {
return function(o) {
return 1 - Math.sqrt(1 - o * o);
};
},
Back: function() {
return function(o) {
return o * o * (3 * o - 2);
};
},
Bounce: function() {
return function(o) {
for (var t, c = 4; o < ((t = Math.pow(2, --c)) - 1) / 11; )
;
return 1 / Math.pow(4, 3 - c) - 7.5625 * Math.pow((t * 3 - 2) / 22 - o, 2);
};
},
Elastic: function(o, t) {
o === void 0 && (o = 1), t === void 0 && (t = 0.5);
var c = Re(o, 1, 10), d = Re(t, 0.1, 2);
return function(i) {
return i === 0 || i === 1 ? i : -c * Math.pow(2, 10 * (i - 1)) * Math.sin((i - 1 - d / (Math.PI * 2) * Math.asin(1 / c)) * (Math.PI * 2) / d);
};
}
}, a = ["Quad", "Cubic", "Quart", "Quint", "Expo"];
return a.forEach(function(o, t) {
n[o] = function() {
return function(c) {
return Math.pow(c, t + 2);
};
};
}), Object.keys(n).forEach(function(o) {
var t = n[o];
e["easeIn" + o] = t, e["easeOut" + o] = function(c, d) {
return function(i) {
return 1 - t(c, d)(1 - i);
};
}, e["easeInOut" + o] = function(c, d) {
return function(i) {
return i < 0.5 ? t(c, d)(i * 2) / 2 : 1 - t(c, d)(i * -2 + 2) / 2;
};
}, e["easeOutIn" + o] = function(c, d) {
return function(i) {
return i < 0.5 ? (1 - t(c, d)(1 - i * 2)) / 2 : (t(c, d)(i * 2 - 1) + 1) / 2;
};
};
}), e;
}();
function So(e, n) {
if (L.fnc(e))
return e;
var a = e.split("(")[0], o = Cc[a], t = wc(e);
switch (a) {
case "spring":
return kc(e, n);
case "cubicBezier":
return Fa(yi, t);
case "steps":
return Fa(vi, t);
default:
return Fa(o, t);
}
}
function xc(e) {
try {
var n = document.querySelectorAll(e);
return n;
} catch {
return;
}
}
function Ca(e, n) {
for (var a = e.length, o = arguments.length >= 2 ? arguments[1] : void 0, t = [], c = 0; c < a; c++)
if (c in e) {
var d = e[c];
n.call(o, d, c, e) && t.push(d);
}
return t;
}
function xa(e) {
return e.reduce(function(n, a) {
return n.concat(L.arr(a) ? xa(a) : a);
}, []);
}
function lt(e) {
return L.arr(e) ? e : (L.str(e) && (e = xc(e) || e), e instanceof NodeList || e instanceof HTMLCollection ? [].slice.call(e) : [e]);
}
function Eo(e, n) {
return e.some(function(a) {
return a === n;
});
}
function Oo(e) {
var n = {};
for (var a in e)
n[a] = e[a];
return n;
}
function no(e, n) {
var a = Oo(e);
for (var o in e)
a[o] = n.hasOwnProperty(o) ? n[o] : e[o];
return a;
}
function Sa(e, n) {
var a = Oo(e);
for (var o in n)
a[o] = L.und(e[o]) ? n[o] : e[o];
return a;
}
function bi(e) {
var n = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e);
return n ? "rgba(" + n[1] + ",1)" : e;
}
function wi(e) {
var n = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, a = e.replace(n, function(i, r, s, u) {
return r + r + s + s + u + u;
}), o = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a), t = parseInt(o[1], 16), c = parseInt(o[2], 16), d = parseInt(o[3], 16);
return "rgba(" + t + "," + c + "," + d + ",1)";
}
function ki(e) {
var n = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e), a = parseInt(n[1], 10) / 360, o = parseInt(n[2], 10) / 100, t = parseInt(n[3], 10) / 100, c = n[4] || 1;
function d(y, x, f) {
return f < 0 && (f += 1), f > 1 && (f -= 1), f < 1 / 6 ? y + (x - y) * 6 * f : f < 1 / 2 ? x : f < 2 / 3 ? y + (x - y) * (2 / 3 - f) * 6 : y;
}
var i, r, s;
if (o == 0)
i = r = s = t;
else {
var u = t < 0.5 ? t * (1 + o) : t + o - t * o, g = 2 * t - u;
i = d(g, u, a + 1 / 3), r = d(g, u, a), s = d(g, u, a - 1 / 3);
}
return "rgba(" + i * 255 + "," + r * 255 + "," + s * 255 + "," + c + ")";
}
function Ci(e) {
if (L.rgb(e))
return bi(e);
if (L.hex(e))
return wi(e);
if (L.hsl(e))
return ki(e);
}
function We(e) {
var n = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);
if (n)
return n[1];
}
function xi(e) {
if (Vn(e, "translate") || e === "perspective")
return "px";
if (Vn(e, "rotate") || Vn(e, "skew"))
return "deg";
}
function ao(e, n) {
return L.fnc(e) ? e(n.target, n.id, n.total) : e;
}
function Be(e, n) {
return e.getAttribute(n);
}
function Po(e, n, a) {
var o = We(n);
if (Eo([a, "deg", "rad", "turn"], o))
return n;
var t = ha.CSS[n + a];
if (!L.und(t))
return t;
var c = 100, d = document.createElement(e.tagName), i = e.parentNode && e.parentNode !== document ? e.parentNode : document.body;
i.appendChild(d), d.style.position = "absolute", d.style.width = c + a;
var r = c / d.offsetWidth;
i.removeChild(d);
var s = r * parseFloat(n);
return ha.CSS[n + a] = s, s;
}
function Sc(e, n, a) {
if (n in e.style) {
var o = n.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(), t = e.style[n] || getComputedStyle(e).getPropertyValue(o) || "0";
return a ? Po(e, t, a) : t;
}
}
function _o(e, n) {
if (L.dom(e) && !L.inp(e) && (!L.nil(Be(e, n)) || L.svg(e) && e[n]))
return "attribute";
if (L.dom(e) && Eo(gi, n))
return "transform";
if (L.dom(e) && n !== "transform" && Sc(e, n))
return "css";
if (e[n] != null)
return "object";
}
function Ec(e) {
if (L.dom(e)) {
for (var n = e.style.transform || "", a = /(\w+)\(([^)]*)\)/g, o = /* @__PURE__ */ new Map(), t; t = a.exec(n); )
o.set(t[1], t[2]);
return o;
}
}
function Si(e, n, a, o) {
var t = Vn(n, "scale") ? 1 : 0 + xi(n), c = Ec(e).get(n) || t;
return a && (a.transforms.list.set(n, c), a.transforms.last = n), o ? Po(e, c, o) : c;
}
function Do(e, n, a, o) {
switch (_o(e, n)) {
case "transform":
return Si(e, n, o, a);
case "css":
return Sc(e, n, a);
case "attribute":
return Be(e, n);
default:
return e[n] || 0;
}
}
function Io(e, n) {
var a = /^(\*=|\+=|-=)/.exec(e);
if (!a)
return e;
var o = We(e) || 0, t = parseFloat(n), c = parseFloat(e.replace(a[0], ""));
switch (a[0][0]) {
case "+":
return t + c + o;
case "-":
return t - c + o;
case "*":
return t * c + o;
}
}
function Oc(e, n) {
if (L.col(e))
return Ci(e);
if (/\s/g.test(e))
return e;
var a = We(e), o = a ? e.substr(0, e.length - a.length) : e;
return n ? o + n : o;
}
function To(e, n) {
return Math.sqrt(Math.pow(n.x - e.x, 2) + Math.pow(n.y - e.y, 2));
}
function Ei(e) {
return Math.PI * 2 * Be(e, "r");
}
function Oi(e) {
return Be(e, "width") * 2 + Be(e, "height") * 2;
}
function Pi(e) {
return To(
{ x: Be(e, "x1"), y: Be(e, "y1") },
{ x: Be(e, "x2"), y: Be(e, "y2") }
);
}
function Pc(e) {
for (var n = e.points, a = 0, o, t = 0; t < n.numberOfItems; t++) {
var c = n.getItem(t);
t > 0 && (a += To(o, c)), o = c;
}
return a;
}
function _i(e) {
var n = e.points;
return Pc(e) + To(n.getItem(n.numberOfItems - 1), n.getItem(0));
}
function _c(e) {
if (e.getTotalLength)
return e.getTotalLength();
switch (e.tagName.toLowerCase()) {
case "circle":
return Ei(e);
case "rect":
return Oi(e);
case "line":
return Pi(e);
case "polyline":
return Pc(e);
case "polygon":
return _i(e);
}
}
function Di(e) {
var n = _c(e);
return e.setAttribute("stroke-dasharray", n), n;
}
function Ii(e) {
for (var n = e.parentNode; L.svg(n) && L.svg(n.parentNode); )
n = n.parentNode;
return n;
}
function Dc(e, n) {
var a = n || {}, o = a.el || Ii(e), t = o.getBoundingClientRect(), c = Be(o, "viewBox"), d = t.width, i = t.height, r = a.viewBox || (c ? c.split(" ") : [0, 0, d, i]);
return {
el: o,
viewBox: r,
x: r[0] / 1,
y: r[1] / 1,
w: d,
h: i,
vW: r[2],
vH: r[3]
};
}
function Ti(e, n) {
var a = L.str(e) ? xc(e)[0] : e, o = n || 100;
return function(t) {
return {
property: t,
el: a,
svg: Dc(a),
totalLength: _c(a) * (o / 100)
};
};
}
function $i(e, n, a) {
function o(u) {
u === void 0 && (u = 0);
var g = n + u >= 1 ? n + u : 0;
return e.el.getPointAtLength(g);
}
var t = Dc(e.el, e.svg), c = o(), d = o(-1), i = o(1), r = a ? 1 : t.w / t.vW, s = a ? 1 : t.h / t.vH;
switch (e.property) {
case "x":
return (c.x - t.x) * r;
case "y":
return (c.y - t.y) * s;
case "angle":
return Math.atan2(i.y - d.y, i.x - d.x) * 180 / Math.PI;
}
}
function it(e, n) {
var a = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g, o = Oc(L.pth(e) ? e.totalLength : e, n) + "";
return {
original: o,
numbers: o.match(a) ? o.match(a).map(Number) : [0],
strings: L.str(e) || n ? o.split(a) : []
};
}
function $o(e) {
var n = e ? xa(L.arr(e) ? e.map(lt) : lt(e)) : [];
return Ca(n, function(a, o, t) {
return t.indexOf(a) === o;
});
}
function Ic(e) {
var n = $o(e);
return n.map(function(a, o) {
return { target: a, id: o, total: n.length, transforms: { list: Ec(a) } };
});
}
function Ai(e, n) {
var a = Oo(n);
if (/^spring/.test(a.easing) && (a.duration = kc(a.easing)), L.arr(e)) {
var o = e.length, t = o === 2 && !L.obj(e[0]);
t ? e = { value: e } : L.fnc(n.duration) || (a.duration = n.duration / o);
}
var c = L.arr(e) ? e : [e];
return c.map(function(d, i) {
var r = L.obj(d) && !L.pth(d) ? d : { value: d };
return L.und(r.delay) && (r.delay = i ? 0 : n.delay), L.und(r.endDelay) && (r.endDelay = i === c.length - 1 ? n.endDelay : 0), r;
}).map(function(d) {
return Sa(d, a);
});
}
function Ni(e) {
for (var n = Ca(xa(e.map(function(c) {
return Object.keys(c);
})), function(c) {
return L.key(c);
}).reduce(function(c, d) {
return c.indexOf(d) < 0 && c.push(d), c;
}, []), a = {}, o = function(c) {
var d = n[c];
a[d] = e.map(function(i) {
var r = {};
for (var s in i)
L.key(s) ? s == d && (r.value = i[s]) : r[s] = i[s];
return r;
});
}, t = 0; t < n.length; t++) o(t);
return a;
}
function Mi(e, n) {
var a = [], o = n.keyframes;
o && (n = Sa(Ni(o), n));
for (var t in n)
L.key(t) && a.push({
name: t,
tweens: Ai(n[t], e)
});
return a;
}
function ji(e, n) {
var a = {};
for (var o in e) {
var t = ao(e[o], n);
L.arr(t) && (t = t.map(function(c) {
return ao(c, n);
}), t.length === 1 && (t = t[0])), a[o] = t;
}
return a.duration = parseFloat(a.duration), a.delay = parseFloat(a.delay), a;
}
function Li(e, n) {
var a;
return e.tweens.map(function(o) {
var t = ji(o, n), c = t.value, d = L.arr(c) ? c[1] : c, i = We(d), r = Do(n.target, e.name, i, n), s = a ? a.to.original : r, u = L.arr(c) ? c[0] : s, g = We(u) || We(r), y = i || g;
return L.und(d) && (d = s), t.from = it(u, y), t.to = it(Io(d, u), y), t.start = a ? a.end : 0, t.end = t.start + t.delay + t.duration + t.endDelay, t.easing = So(t.easing, t.duration), t.isPath = L.pth(c), t.isPathTargetInsideSVG = t.isPath && L.svg(n.target), t.isColor = L.col(t.from.original), t.isColor && (t.round = 1), a = t, t;
});
}
var Tc = {
css: function(e, n, a) {
return e.style[n] = a;
},
attribute: function(e, n, a) {
return e.setAttribute(n, a);
},
object: function(e, n, a) {
return e[n] = a;
},
transform: function(e, n, a, o, t) {
if (o.list.set(n, a), n === o.last || t) {
var c = "";
o.list.forEach(function(d, i) {
c += i + "(" + d + ") ";
}), e.style.transform = c;
}
}
};
function $c(e, n) {
var a = Ic(e);
a.forEach(function(o) {
for (var t in n) {
var c = ao(n[t], o), d = o.target, i = We(c), r = Do(d, t, i, o), s = i || We(r), u = Io(Oc(c, s), r), g = _o(d, t);
Tc[g](d, t, u, o.transforms, !0);
}
});
}
function Ri(e, n) {
var a = _o(e.target, n.name);
if (a) {
var o = Li(n, e), t = o[o.length - 1];
return {
type: a,
property: n.name,
animatable: e,
tweens: o,
duration: t.end,
delay: o[0].delay,
endDelay: t.endDelay
};
}
}
function Bi(e, n) {
return Ca(xa(e.map(function(a) {
return n.map(function(o) {
return Ri(a, o);
});
})), function(a) {
return !L.und(a);
});
}
function Ac(e, n) {
var a = e.length, o = function(c) {
return c.timelineOffset ? c.timelineOffset : 0;
}, t = {};
return t.duration = a ? Math.max.apply(Math, e.map(function(c) {
return o(c) + c.duration;
})) : n.duration, t.delay = a ? Math.min.apply(Math, e.map(function(c) {
return o(c) + c.delay;
})) : n.delay, t.endDelay = a ? t.duration - Math.max.apply(Math, e.map(function(c) {
return o(c) + c.duration - c.endDelay;
})) : n.endDelay, t;
}
var st = 0;
function zi(e) {
var n = no(bc, e), a = no(xo, e), o = Mi(a, e), t = Ic(e.targets), c = Bi(t, o), d = Ac(c, a), i = st;
return st++, Sa(n, {
id: i,
children: [],
animatables: t,
animations: c,
duration: d.duration,
delay: d.delay,
endDelay: d.endDelay
});
}
var Ae = [], Nc = function() {
var e;
function n() {
!e && (!ut() || !ee.suspendWhenDocumentHidden) && Ae.length > 0 && (e = requestAnimationFrame(a));
}
function a(t) {
for (var c = Ae.length, d = 0; d < c; ) {
var i = Ae[d];
i.paused ? (Ae.splice(d, 1), c--) : (i.tick(t), d++);
}
e = d > 0 ? requestAnimationFrame(a) : void 0;
}
function o() {
ee.suspendWhenDocumentHidden && (ut() ? e = cancelAnimationFrame(e) : (Ae.forEach(
function(t) {
return t._onDocumentVisibility();
}
), Nc()));
}
return typeof document < "u" && document.addEventListener("visibilitychange", o), n;
}();
function ut() {
return !!document && document.hidden;
}
function ee(e) {
e === void 0 && (e = {});
var n = 0, a = 0, o = 0, t, c = 0, d = null;
function i(l) {
var b = window.Promise && new Promise(function(S) {
return d = S;
});
return l.finished = b, b;
}
var r = zi(e);
i(r);
function s() {
var l = r.direction;
l !== "alternate" && (r.direction = l !== "normal" ? "normal" : "reverse"), r.reversed = !r.reversed, t.forEach(function(b) {
return b.reversed = r.reversed;
});
}
function u(l) {
return r.reversed ? r.duration - l : l;
}
function g() {
n = 0, a = u(r.currentTime) * (1 / ee.speed);
}
function y(l, b) {
b && b.seek(l - b.timelineOffset);
}
function x(l) {
if (r.reversePlayback)
for (var S = c; S--; )
y(l, t[S]);
else
for (var b = 0; b < c; b++)
y(l, t[b]);
}
function f(l) {
for (var b = 0, S = r.animations, O = S.length; b < O; ) {
var w = S[b], P = w.animatable, C = w.tweens, k = C.length - 1, E = C[k];
k && (E = Ca(C, function(gn) {
return l < gn.end;
})[0] || E);
for (var D = Re(l - E.start - E.delay, 0, E.duration) / E.duration, M = isNaN(D) ? 1 : E.easing(D), A = E.to.strings, R = E.round, K = [], T = E.to.numbers.length, N = void 0, F = 0; F < T; F++) {
var Z = void 0, Ge = E.to.numbers[F], Ne = E.from.numbers[F] || 0;
E.isPath ? Z = $i(E.value, M * Ge, E.isPathTargetInsideSVG) : Z = Ne + M * (Ge - Ne), R && (E.isColor && F > 2 || (Z = Math.round(Z * R) / R)), K.push(Z);
}
var He = A.length;
if (!He)
N = K[0];
else {
N = A[0];
for (var Me = 0; Me < He; Me++) {
A[Me];
var ln = A[Me + 1], Ze = K[Me];
isNaN(Ze) || (ln ? N += Ze + ln : N += Ze + " ");
}
}
Tc[w.type](P.target, w.property, N, P.transforms), w.currentValue = N, b++;
}
}
function h(l) {
r[l] && !r.passThrough && r[l](r);
}
function v() {
r.remaining && r.remaining !== !0 && r.remaining--;
}
function p(l) {
var b = r.duration, S = r.delay, O = b - r.endDelay, w = u(l);
r.progress = Re(w / b * 100, 0, 100), r.reversePlayback = w < r.currentTime, t && x(w), !r.began && r.currentTime > 0 && (r.began = !0, h("begin")), !r.loopBegan && r.currentTime > 0 && (r.loopBegan = !0, h("loopBegin")), w <= S && r.currentTime !== 0 && f(0), (w >= O && r.currentTime !== b || !b) && f(b), w > S && w < O ? (r.changeBegan || (r.changeBegan = !0, r.changeCompleted = !1, h("changeBegin")), h("change"), f(w)) : r.changeBegan && (r.changeCompleted = !0, r.changeBegan = !1, h("changeComplete")), r.currentTime = Re(w, 0, b), r.began && h("update"), l >= b && (a = 0, v(), r.remaining ? (n = o, h("loopComplete"), r.loopBegan = !1, r.direction === "alternate" && s()) : (r.paused = !0, r.completed || (r.completed = !0, h("loopComplete"), h("complete"), !r.passThrough && "Promise" in window && (d(), i(r)))));
}
return r.reset = function() {
var l = r.direction;
r.passThrough = !1, r.currentTime = 0, r.progress = 0, r.paused = !0, r.began = !1, r.loopBegan = !1, r.changeBegan = !1, r.completed = !1, r.changeCompleted = !1, r.reversePlayback = !1, r.reversed = l === "reverse", r.remaining = r.loop, t = r.children, c = t.length;
for (var b = c; b--; )
r.children[b].reset();
(r.reversed && r.loop !== !0 || l === "alternate" && r.loop === 1) && r.remaining++, f(r.reversed ? r.duration : 0);
}, r._onDocumentVisibility = g, r.set = function(l, b) {
return $c(l, b), r;
}, r.tick = function(l) {
o = l, n || (n = o), p((o + (a - n)) * ee.speed);
}, r.seek = function(l) {
p(u(l));
}, r.pause = function() {
r.paused = !0, g();
}, r.play = function() {
r.paused && (r.completed && r.reset(), r.paused = !1, Ae.push(r), g(), Nc());
}, r.reverse = function() {
s(), r.completed = !r.reversed, g();
}, r.restart = function() {
r.reset(), r.play();
}, r.remove = function(l) {
var b = $o(l);
Mc(b, r);
}, r.reset(), r.autoplay && r.play(), r;
}
function mt(e, n) {
for (var a = n.length; a--; )
Eo(e, n[a].animatable.target) && n.splice(a, 1);
}
function Mc(e, n) {
var a = n.animations, o = n.children;
mt(e, a);
for (var t = o.length; t--; ) {
var c = o[t], d = c.animations;
mt(e, d), !d.length && !c.children.length && o.splice(t, 1);
}
!a.length && !o.length && n.pause();
}
function Ui(e) {
for (var n = $o(e), a = Ae.length; a--; ) {
var o = Ae[a];
Mc(n, o);
}
}
function Vi(e, n) {
n === void 0 && (n = {});
var a = n.direction || "normal", o = n.easing ? So(n.easing) : null, t = n.grid, c = n.axis, d = n.from || 0, i = d === "first", r = d === "center", s = d === "last", u = L.arr(e), g = parseFloat(u ? e[0] : e), y = u ? parseFloat(e[1]) : 0, x = We(u ? e[1] : e) || 0, f = n.start || 0 + (u ? g : 0), h = [], v = 0;
return function(p, l, b) {
if (i && (d = 0), r && (d = (b - 1) / 2), s && (d = b - 1), !h.length) {
for (var S = 0; S < b; S++) {
if (!t)
h.push(Math.abs(d - S));
else {
var O = r ? (t[0] - 1) / 2 : d % t[0], w = r ? (t[1] - 1) / 2 : Math.floor(d / t[0]), P = S % t[0], C = Math.floor(S / t[0]), k = O - P, E = w - C, D = Math.sqrt(k * k + E * E);
c === "x" && (D = -k), c === "y" && (D = -E), h.push(D);
}
v = Math.max.apply(Math, h);
}
o && (h = h.map(function(A) {
return o(A / v) * v;
})), a === "reverse" && (h = h.map(function(A) {
return c ? A < 0 ? A * -1 : -A : Math.abs(v - A);
}));
}
var M = u ? (y - g) / v : g;
return f + M * (Math.round(h[l] * 100) / 100) + x;
};
}
function Fi(e) {
e === void 0 && (e = {});
var n = ee(e);
return n.duration = 0, n.add = function(a, o) {
var t = Ae.indexOf(n), c = n.children;
t > -1 && Ae.splice(t, 1);
function d(y) {
y.passThrough = !0;
}
for (var i = 0; i < c.length; i++)
d(c[i]);
var r = Sa(a, no(xo, e));
r.targets = r.targets || e.targets;
var s = n.duration;
r.autoplay = !1, r.direction = n.direction, r.timelineOffset = L.und(o) ? s : Io(o, s), d(n), n.seek(r.timelineOffset);
var u = ee(r);
d(u), c.push(u);
var g = Ac(c, e);
return n.delay = g.delay, n.endDelay = g.endDelay, n.duration = g.duration, n.seek(0), n.reset(), n.autoplay && n.play(), n;
}, n;
}
ee.version = "3.2.1";
ee.speed = 1;
ee.suspendWhenDocumentHidden = !0;
ee.running = Ae;
ee.remove = Ui;
ee.get = Do;
ee.set = $c;
ee.convertPx = Po;
ee.path = Ti;
ee.setDashoffset = Di;
ee.stagger = Vi;
ee.timeline = Fi;
ee.easing = So;
ee.penner = Cc;
ee.random = function(e, n) {
return Math.floor(Math.random() * (n - e + 1)) + e;
};
const Hi = (e, n, a, o) => {
const {
searchProvider: t,
props: c
} = o, d = j(null);
let i = {};
!e.type || e.type === "input" ? i = ol(e, n, o) : e.type === "number" ? i = tl(e, n, o) : e.type === "select" ? i = cl(e, n, o) : e.type === "textarea" ? i = dl(e, n, o) : e.type === "date" ? i = rl(e, n, o) : e.type === "cascade" ? i = ll(e, n, o) : e.type === "switch" && (i = il(e, n, o));
const {
conditions: r,
Component: s,
displayValue: u,
onComponentOpen: g
} = i, y = (l) => {
n[e.key].condition = r[l].value;
}, x = () => {
a.showPanel && (a.showPanel = !1);
}, f = () => {
a.showPanel = !0, cn(() => {
g && g();
});
}, h = {
onEnter: (l, b) => {
ee({
targets: ".newbie-search-input-container",
padding: "11px",
translateX: "0",
translateY: "0",
duration: 100,
easing: "linear"
}), ee({
targets: ".newbie-search-condition",
top: "-44px",
opacity: 1,
duration: 100,
easing: "linear"
}), b();
}
}, v = X(() => {
var l;
return ((l = ie(r, {
value: n[e.key].condition
})) == null ? void 0 : l.label) || "等于";
}), p = X(() => {
var l;
return ((l = ie(r, {
value: n[e.key].condition
})) == null ? void 0 : l.label) || "等于";
});
return m(ii, {
onTrigger: x
}, {
default: () => [m("div", {
class: `newbie-search-item ${t.maskClass || ""} ${a.hidden ? "hidden" : ""}`
}, [m("div", {
class: "newbie-search-mask",
onClick: f
}, [m("div", {
class: "newbie-search-mask-title"
}, [e.title]), m("div", {
class: "newbie-search-mask-content"
}, [n[e.key].condition !== "equal" ? m("div", {
class: "newbie-search-mask-condition"
}, [p.value]) : null, m("div", {
class: "newbie-search-mask-value"
}, [u == null ? void 0 : u.value])])]), m(Fc, {
css: !1,
onEnter: h.onEnter
}, {
default: () => [a.showPanel ? m("div", {
class: "newbie-search-popup-panel",
ref: d
}, [m("div", {
class: "newbie-search-condition"
}, [m("span", {
class: "newbie-search-condition-title"
}, [he("搜索 "), m(Gc, {
code: !0
}, {
default: () => e.title
})]), c.disableConditions || e.disableConditions ? null : m(so, {
trigger: ["click"],
getPopupContainer: () => d.value
}, {
default: () => m("a", {
class: "newbie-search-condition-dropdown-link",
onClick: to(() => {
}, ["prevent"])
}, [v.value, he(" "), m(go, null, null)]),
overlay: () => m(uo, null, {
default: () => r.map((l, b) => m(Mn, {
key: l.value
}, {
default: () => m("a", {
onClick: () => y(b)
}, [l.label])
}))
})
})]), m("div", {
class: "newbie-search-input-container"
}, [s])]) : null]
})])]
});
};
function Ki(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const jc = /* @__PURE__ */ Ce({
name: "NewbieSearch",
props: {
/**
* @typedef {Object} SearchItemConfig 搜索项
* @property {string} key 搜索项的 key
* @property {string} title 搜索项的标题
* @property {string} type 搜索项的类型
* @property {number} sortOrder 排序,数字越大越靠前,默认为0
* @property {boolean|Object} [expandable] 搜索项是否展开
* @property {Array|Function} [options] 搜索项的选项
* @property {Object} [inputProps] 搜索项的输入框属性
* @property {boolean} [disableConditions] 是否禁用搜索条件
* @property {Array} [conditions] 搜索项的条件,可选项为不同类型的内置条件
* @property {*} [defaultValue] 默认搜索值
* @property {*} [defaultCondition] 默认搜索条件
* @property {Function} [collectItem] 收集搜索项的内容[内部使用]
* */
/**
* 搜索项的配置, 详见 [SearchItemConfig](#searchitemconfig-配置)
*/
filterableColumns: {
type: [Array, Function],
default: () => []
},
/**
* 可排序的搜索项
*/
sortableColumns: {
type: [Array, Function],
default: () => []
},
/**
* 是否禁用搜索条件
*/
disableConditions: {
type: Boolean,
default: !1
},
/**
* 是否在搜索条件变化时自动搜索
*/
autoQuery: {
type: Boolean,
default: !1
},
/**
* 搜索项的间距
*/
gutter: {
type: [String, Number],
default: 16
},
/**
* 持久化,传入 localStorage 的 key,如果为 true, 将会以 URL Hash 为 key
*/
persistence: {
type: [Boolean, String],
default: !1
}
},
emits: [
/**
* 点击搜索
* @property queryForm {Object} 搜索栏的值
*/
"search"
],
setup(e, {
expose: n,
emit: a
}) {
const o = tn(Ht, () => {
}), t = Ue({
queryForm: {},
// 搜索表单
sortForm: {
selectedKeys: [],
targetKeys: []
},
// 排序表单
columnKey: {},
// 自定义列
searchKey: {},
// 自定义搜索框
searchLabels: [],
// 搜索项展示
fieldColumns: [],
//表单搜索项
expandColumns: [],
//展开搜索项
sortColumns: [],
//可排序搜索项
openSortable: !1,
//是否打开排序设置
isFormExpanded: !1,
//是否已经展开
availableSearchItems: 0
//第一行可展数量
}), c = j(), {
width: d
} = al(), i = ["number", "date"], r = ["select", "cascade"], s = {}, u = (C) => e.persistence ? (C = C || "", la(e.persistence) ? `newbieSearch_${C}` + ra(location.href) : `newbieSearch_${C}` + ra(location.pathname + "_" + e.persistence)) : null, g = () => {
const C = {}, k = [], E = [], D = [], M = [], A = e.persistence ? qe(u()).get({}) : {}, R = e.persistence ? qe(u("sort")).get({}) : {};
e.filterableColumns.forEach((K) => {
const T = ve(K);
oe(T.sortOrder) && (T.sortOrder = 0), s[T.key] || (s[T.key] = Ue({
showPanel: !1
})), T.type = T.type || "input";
let N = "", F = "equal";
if (T.expandable ? N = [] : i.includes(T.type) ? N = [null, null] : r.includes(T.type) && (N = []), oe(A[T.key]))
oe(T.defaultValue) || ($(T.defaultValue) ? N = T.defaultValue() : N = T.defaultValue);
else {
const Z = A[T.key].value;
(i.includes(T.type) || r.includes(T.type)) && !be(Z) ? N = [Z] : N = Z;
}
if (oe(A[T.key]) ? T.conditions && T.conditions.length === 1 ? F = T.conditions[0] : T.defaultCondition && ($(T.defaultCondition) ? F = T.defaultCondition() : F = T.defaultCondition) : F = A[T.key].condition, T.expandable) {
if (!T.options) {
console.error("expandable 为 true 时,必须提供 options 属性");
return;
}
T.type = "select", k.push(T);
} else
oe(s[T.key].hidden) && (s[T.key].hidden = !1), E.push(T);
T.type === "date" && (be(N) ? N = N.map((Z) => se(Z) ? re(new Date(Z)) : Z) : se(N) && (N = re(new Date(N)))), T.type === "switch" && (N = la(N) ? N ? "checked" : "unchecked" : void 0), C[T.key] = {
value: N,
type: T.type,
condition: F
};
}), e.sortableColumns.forEach((K) => {
const T = ve(K);
oe(R[K.key]) || (M.push(K.key), T.direction = R[K.key]), (K.direction === "asc" || K.direction === "desc") && M.push(K.key), D.push(T);
}), t.queryForm = C, t.sortColumns = Pa(D, ["sortOrder"], ["desc"]), t.fieldColumns = Pa(E, ["sortOrder"], ["desc"]), t.expandColumns = Pa(k, ["sortOrder"], ["desc"]), t.sortForm.targetKeys = M;
};
q(() => [e.filterableColumns, e.sortableColumns], () => {
g();
}, {
immediate: !0
});
const y = X(() => t.fieldColumns.length > t.availableSearchItems), x = () => {
t.openSortable = !1, a("search", {
newbieQuery: l(),
newbieSort: p()
});
}, f = () => {
qe(u()).remove(), qe(u("sort")).remove(), g();
}, h = () => {
v({
show: !t.isFormExpanded
}), t.isFormExpanded = !t.isFormExpanded;
}, v = ({
show: C,
stand: k
}) => {
y.value && !k && t.fieldColumns.forEach((E, D) => {
s[E.key].hidden = C ? !1 : D >= t.availableSearchItems;
});
};
Xe(() => {
e.persistence && a("search", {
persistence: !0,
newbieQuery: l(),
newbieSort: p()
}), q(() => d.value, () => {
const C = Math.floor(c.value.scrollWidth / (200 + e.gutter));
t.availableSearchItems !== C && (t.availableSearchItems = C, v({}));
}, {
immediate: !0
});
});
const p = () => {
const C = {};
if (t.sortForm.targetKeys.forEach((k) => {
const E = ie(t.sortColumns, {
key: k
});
C[k] = E.direction, t.searchLabels.push(m(ke, {
color: "green"
}, {
default: () => [m("span", {
style: {
marginRight: "2px"
}
}, [E.title]), E.direction === "asc" ? m(Mt, null, null) : m(jt, null, null)]
}));
}), e.persistence) {
const k = u("sort");
qe(k).set(C);
}
return C;
}, l = () => {
const C = {}, k = {};
if (t.searchLabels = [], hd(t.fieldColumns, t.expandColumns).forEach((E) => {
var K;
let {
value: D,
searchLabel: M
} = E.collectItem ? E.collectItem() : {};
const {
condition: A,
type: R
} = t.queryForm[E.key];
if (Array.isArray(D) && D.length > 0 || !Array.isArray(D) && D !== null && D !== void 0 && D !== "" || A === "null" || A === "notNull") {
e.persistence && (k[E.key] = {
condition: A,
type: R,
value: D
});
const T = (K = o == null ? void 0 : o.valueFormatter) == null ? void 0 : K[E.type];
T && $(T) && (D = be(D) ? D.map((N) => T(N)) : T(D)), C[E.key] = {
condition: A,
type: R,
value: D
}, t.searchLabels.push(M ? m(ke, {
color: "blue"
}, Ki(M) ? M : {
default: () => [M]
}) : null);
}
}), e.persistence) {
const E = u();
qe(E).set(k);
}
return C;
};
n({
getQueryForm: l,
setQueryForm: (C) => {
Object.keys(C).forEach((k) => {
t.queryForm[k].value = C[k];
});
},
getSortForm: p,
getSearch: () => {
t.searchLabels = [];
const C = {}, k = l(), E = p();
return Object.keys(k).length && (C.newbieQuery = k), Object.keys(E).length && (C.newbieSort = E), C;
}
});
const O = () => t.fieldColumns.map((C) => Hi(C, t.queryForm, s[C.key], {
props: e,
searchProvider: o
})), w = () => t.expandColumns.map((C) => sl(C, t.queryForm)), P = () => t.sortColumns.length ? m(dn, {
title: "排序设置",
open: t.openSortable,
"onUpdate:open": (C) => t.openSortable = C,
width: "800px",
okText: "搜索",
cancelText: "关闭",
onOk: () => x()
}, {
default: () => ci(t.sortColumns, t.sortForm)
}) : null;
return () => {
var C, k;
return m("div", {
class: "newbie-search"
}, [m("div", {
class: "newbie-search-query"
}, [m("div", {
class: "newbie-search-form"
}, [m("div", {
class: "newbie-search-form-wrapper",
ref: c
}, [m(Cn, {
size: [e.gutter, 10],
wrap: !0,
style: {
marginBottom: 0
}
}, {
default: () => O()
})])]), m(Cn, {
class: "newbie-search-operation"
}, {
default: () => [y.value ? m(fn, {
title: "展示/关闭更多搜索选项"
}, {
default: () => m(te, {
type: "link",
icon: t.isFormExpanded ? m(kd, null, null) : m(Cd, null, null),
onClick: h
}, {
default: () => t.isFormExpanded ? "收起" : "更多"
})
}) : null, m(fn, {
title: "清除所有搜索项"
}, {
default: () => m(te, {
type: "dashed",
icon: m(xd, null, null),
onClick: f
}, {
default: () => e.sortableColumns.length ? "" : "清除"
})
}), e.sortableColumns.length ? m(fn, {
title: "排序设置"
}, {
default: () => m(te, {
type: t.sortForm.targetKeys.length ? "primary" : "default",
icon: m(Sd, null, null),
onClick: () => t.openSortable = !0
}, null)
}) : null, m(te, {
type: "primary",
icon: m(Ed, null, null),
onClick: x
}, {
default: () => "搜索"
})]
})]), (C = t.expandColumns) != null && C.length ? m("div", {
class: "newbie-search-expand"
}, [w()]) : null, (k = t.searchLabels) != null && k.length ? m("div", {
class: "newbie-search-label"
}, [m("span", {
class: "newbie-search-label-title"
}, [he("搜索条件:")]), m(Cn, {
class: "newbie-search-label-content",
wrap: !0,
style: {
marginBottom: 0
}
}, {
default: () => t.searchLabels
})]) : null, P()]);
};
}
}), Wi = /* @__PURE__ */ Ce({
name: "NewbieTable",
props: {
/**
* 表格标题
*/
title: {
type: String,
default: ""
},
/**
* 是否使用表单搜索
*/
filterable: {
type: Boolean,
default: !0
},
/**
* 原生表格属性
*/
tableProps: {
type: Object,
default: () => ({})
},
/**
* 原生表格事件
*/
tableEvents: {
type: Object,
default: () => ({})
},
/**
* 原生 slot
*/
tableSlots: {
type: Object,
default: () => ({})
},
/**
* 是否使用分页,为 Object 时时使用自定义分页
*/
pagination: {
type: [Boolean, Object],
default: !0
},
/**
* 原生翻页事件
*/
pageEvents: {
type: Object,
default: () => ({})
},
/**
* 是否在搜索条件变化时自动搜索
*/
autoQuery: {
type: Boolean,
default: !1
},
/**
* 表格数据请求 URL
*/
url: {
type: String,
default: ""
},
/**
* 表格请求方式,默认为 GET
*
* @values get, post
*/
method: {
type: String,
default: "get"
},
/**
* 请求数据时额外提交的参数
*/
extraData: {
type: Object,
default: () => ({})
},
/**
* 请求后 Res 的处理方法, 如有 url, 则该方法必须传
*/
afterFetched: {
type: Function,
default: null
},
/**
* @typedef {Object} TableColumnConfig
* @property {string} title - 列标题
* @property {string} dataIndex - 列数据在数据项中对应的 key,支持 a.b.c 的嵌套写法
* @property {string} key - Vue 需要的 key,如果已经设置了唯一的 dataIndex,可以忽略这个属性
* @property {string} [width] - 列宽度
* @property {string} [align] - 对齐方式
* @property {boolean} [ellipsis] - 是否自动缩略
* @property {boolean} [fixed] - 列是否固定,可选 true(等效于 left) 'left' 'right'
* @property {boolean | Object} [filterable] - 是否可过滤,如果是对象,则为过滤配置,为 true 时 `filterable.type = 'input'`
* @property {boolean} [isOnlyForQuery] - 是否只用于搜索
*/
/**
* 表格列定义, [TableColumnConfig ](#tablecolunmconfig-配置)
*/
columns: {
type: [Array, Function],
default: () => []
},
/**
* 选择功能的配置
*/
rowSelection: {
type: [Boolean, Object],
default: () => null
},
/**
* 数据值需要指定 key 值,当启用 `rowSelection` 时一定要指定这个 key
*/
rowKey: {
type: [String, Function],
default: "id"
},
/**
* 表格数据
*/
dataSource: {
type: Array,
default: () => []
},
/**
* 表格数据, alias of `dataSource`
*/
formData: {
type: Array,
default: () => []
},
/**
* 额外的展开行
*/
expandRender: {
type: [String, Function],
default: null
},
/**
* 展开的行
*/
expandedRowKeys: {
type: Array,
default: () => null
},
/**
* 是否显示刷新按钮
*/
showRefresh: {
type: Boolean,
default: !0
},
/**
* 持久化,传入 localStorage 的 key,如果为 true, 将会以 URL Hash 为 key
*/
persistence: {
type: [Boolean, String],
default: !1
}
},
emits: [
/**
* 未传入 `url` 时的手动请求方法
*/
"fetch"
],
setup(e, {
emit: n,
slots: a,
expose: o
}) {
var ue;
const t = j(), c = j(), d = tn(Ft, () => {
}), i = (_) => e.persistence ? (_ = _ || "", la(e.persistence) ? `newbieTable_${_}` + ra(location.href) : `newbieTable_${_}` + ra(location.pathname + "_" + e.persistence)) : null;
let r = e.persistence ? qe(i()).get({}) : {};
const s = Ue({
customColumns: [],
tableColumns: [],
filterableColumns: [],
// 可过滤的列
sortableColumns: [],
// 可排序的列
temporary: {},
// 用于存放一些临时数据
tableLoading: {
loading: !1
},
// 翻页Loading
customColumnVisible: !1,
columnKeyModal: [],
pagination: {
// 翻页数据
totalSize: 0,
currentPage: r.currentPage || 1,
pageSize: r.pageSize || ((ue = e.pagination) == null ? void 0 : ue.pageSize) || 10
},
id: "",
tableSelection: [],
// 给外部用
tableKeySelection: [],
// 内部用
items: [],
// 表格内容
columnKey: {},
// 自定义列
fetchQueue: [],
// 请示队列,以最后那个为准
searchFormData: {}
// 搜索表单数据
}), u = () => {
if (!e.persistence)
return;
const _ = {
...s.pagination
};
qe(i()).set(_);
}, g = () => {
s.columnKeyModal = [], Object.keys(s.columnKey).forEach((_) => {
s.columnKey[_] && s.columnKeyModal.push(_);
}), s.customColumnVisible = !0;
}, y = () => {
s.columnKeyModal = [];
}, x = () => {
y(), Object.keys(s.columnKey).forEach((_) => {
s.columnKeyModal.push(_);
});
}, f = (_, U) => {
s.tableKeySelection = [].concat(_), s.tableSelection = [].concat(U);
}, h = (_, U) => {
U.width = _;
}, v = () => {
Object.keys(s.columnKey).forEach((_) => {
s.columnKey[_] = s.columnKeyModal.indexOf(_) > -1;
}), s.customColumnVisible = !1;
}, p = () => {
let _ = {
...s.searchFormData,
...e.extraData
};
return e.pagination && (s.pagination.pageSize && (_[d.pageSizeKey] = s.pagination.pageSize), _[d.pageKey] = s.pagination.currentPage), _;
}, l = (_) => {
var U;
t.value && ((U = t.value) == null || U.setQueryForm(_));
}, b = async () => {
let _ = {}, U = p();
const Oe = (/* @__PURE__ */ new Date()).getTime();
s.fetchQueue.push(Oe);
const me = e.method;
me === "get" ? _ = {
params: U
} : me === "post" && (_ = {
...U
});
const Se = await pn(s.tableLoading)[me](e.url, _);
Hn(Se, () => {
if (!s.fetchQueue.length)
return;
s.fetchQueue[s.fetchQueue.length - 1] === Oe && (s.fetchQueue = []), s.tableKeySelection = [], s.tableSelection = [];
const Ao = (e.afterFetched || d.afterFetched)(Se);
e.pagination && (s.pagination.totalSize = Ao.totalSize), s.items = Ao.items;
});
}, S = async (_) => {
_ === !0 && (s.pagination.currentPage = 1), e.url ? await b() : n("fetch"), u();
}, O = (_) => {
s.searchFormData = _, S(!_.persistence);
}, w = (_) => _.key || _.dataIndex, P = (_) => {
const U = [];
return _ && _.length && _.forEach((Oe) => {
const me = ve(Oe), Se = w(me);
if (Se && oe(s.columnKey[Se]) && (s.columnKey[Se] = !0), !me.children)
(Se && s.columnKey[Se] || !Se) && U.push({
...me,
resizable: !0
});
else {
const Ea = P([].concat(me.children));
Ea.length && (me.children = Ea, (Se && s.columnKey[Se] || !Se) && U.push(me));
}
}), U;
}, C = (_) => {
let U = [];
return _ && _.length && _.forEach((Oe) => {
const me = ve(Oe);
if (me.checkKey = w(me), !me.children)
U.push(me);
else {
const Se = C(me.children);
delete me.children, U.push(me), U = U.concat(Se);
}
}), U;
}, k = X(() => {
let _;
return $(e.columns) ? _ = e.columns() : e.columns.length ? _ = e.columns : _ = e.tableProps.columns, _;
}), E = () => {
const _ = k.value.filter((U) => !U.isOnlyForQuery);
s.customColumns = C([].concat(_)), s.tableColumns = P([].concat(_));
}, D = () => {
s.filterableColumns = k.value.filter((_) => _.filterable || _.isOnlyForQuery).map((_) => ({
title: _.title,
key: _.dataIndex || _.key,
options: _.options,
..._.filterable
})), s.sortableColumns = k.value.filter((_) => _.sortable).map((_) => {
let U = {
title: _.title,
key: _.dataIndex || _.key
};
return _.sortable === "asc" || _.sortable === "ASC" ? U.direction = "asc" : _.sortable === "desc" || _.sortable === "DESC" ? U.direction = "desc" : U = {
...U,
..._.sortable
}, U;
});
};
q(() => [k, s.columnKey], (_, U) => {
E(), (!U || !Kn(_[0].value.map((Oe) => w(Oe)).sort(), U[0].value.map((Oe) => w(Oe)).sort())) && D();
}, {
immediate: !0,
deep: !0
}), q(() => s.pagination, (_) => {
var U;
_ && ((U = c.value) == null || U.classList.add("pagination-adapt"));
}, {
deep: !0
});
const M = () => {
e.url ? cn(() => b()) : (e.formData.length && (s.items = e.formData), e.dataSource.length && (s.items = e.dataSource), n("fetch"));
};
Xe(() => {
e.persistence || M();
}), o({
getData: () => [].concat(s.items),
setData: (_) => {
s.items = _;
},
setPagination: (_, U, Oe) => {
oe(_) || (s.pagination.totalSize = _), oe(U) || (s.pagination.currentPage = U), oe(Oe) || (s.pagination.pageSize = Oe);
},
getPagination: () => s.pagination,
getSelection: () => [].concat(s.tableSelection),
getQueryData: p,
setQueryData: l,
doFetch: S,
setTableLoading: (_) => s.tableLoading.loading = _
});
const Z = () => a.title ? m("div", {
class: "newbie-table-title-wrapper"
}, [a.title()]) : e.title ? m("div", {
class: "newbie-table-title-wrapper"
}, [e.title]) : null, Ge = () => a.prepend ? m("div", {
class: "newbie-table-prepend-wrapper"
}, [a.prepend()]) : null, Ne = () => e.filterable ? [m(jc, {
ref: t,
persistence: e.persistence,
filterableColumns: s.filterableColumns,
sortableColumns: s.sortableColumns,
onSearch: O
}, null), m(xn, null, null)] : null, He = () => m("div", {
class: "newbie-table-functional-wrapper"
}, [m("div", {
class: "newbie-table-functional"
}, [a.functional ? a.functional() : null]), m("div", {
class: "newbie-table-functional-default"
}, [e.filterable ? m(te, {
type: "link",
style: {
marginRight: "5px"
},
onClick: g
}, {
default: () => "自定义列"
}) : null, e.showRefresh ? m(te, {
class: "newbie-table-refresh",
icon: m(Od, null, null),
onClick: () => S(!1)
}, null) : null])]), Me = () => ({
bordered: !0,
size: "middle",
scroll: {
y: 570,
x: 1e3,
scrollToFirstRowOnChange: !0
},
rowClassName: (_, U) => U % 2 === 1 ? "newbie-table-striped" : null,
expandedRowRender: e.expandRender,
expandedRowKeys: e.expandedRowKeys,
rowKey: e.rowKey,
...e.tableProps
}), ln = () => {
let _ = e.pagination ? Le(e.pagination) ? ve(e.pagination) : {} : !1;
return Le(_) && (_ = {
size: "small",
showQuickJumper: !0,
showSizeChanger: !0,
showTotal: (U) => `共${U}条`,
pageSizeOptions: ["10", "30", "50", "100"],
total: s.pagination.totalSize,
pageSize: s.pagination.pageSize,
current: s.pagination.currentPage,
"onUpdate:current": (U) => {
s.pagination.currentPage = U;
},
"onUpdate:pageSize": (U) => {
s.pagination.pageSize = U;
},
onChange: () => {
S(!1);
},
showSizeChange: () => {
S(!0);
},
..._
}), _;
}, Ze = () => {
let _ = e.rowSelection ? Le(e.rowSelection) ? ve(e.rowSelection) : {} : null;
return Le(_) && (_ = {
selectedRowKeys: s.tableKeySelection,
preserveSelectedRowKeys: !0,
columnWidth: 40,
fixed: !0,
onChange: f
}), _;
}, gn = () => m(Xn, H({
rowSelection: Ze(),
pagination: ln(),
loading: s.tableLoading.loading,
dataSource: s.items,
columns: s.tableColumns,
onResizeColumn: h
}, Me()), {
...e.tableSlots
}), G = () => a.append || e.pagination ? m("div", {
ref: c,
class: "newbie-table-footer"
}, [m("div", {
class: "newbie-table-append-wrapper"
}, [a.append ? a.append() : null]), m("div", {
class: "newbie-table-pagination-wrapper"
}, null)]) : null;
return () => m("div", {
class: "newbie-table"
}, [m(mo, {
size: "small",
class: "newbie-table-card"
}, {
title: () => Z(),
extra: () => a.extra ? a.extra() : null,
default: () => [Ge(), Ne(), He(), gn(), G()]
}), m(dn, {
open: s.customColumnVisible,
"onUpdate:open": (_) => s.customColumnVisible = _,
title: "自定义列",
width: "900px",
onOk: v
}, {
default: () => [m(Dt, {
value: s.columnKeyModal,
"onUpdate:value": (_) => s.columnKeyModal = _,
style: {
width: "100%"
}
}, {
default: () => m(wn, {
gutter: 15
}, {
default: () => s.customColumns.map((_) => m(nn, {
span: 6
}, {
default: () => m(fo, {
style: {
width: "100%",
marginBottom: "5px",
overflow: "hidden"
},
value: _.checkKey
}, {
default: () => _.title
})
}))
})
}), m(xn, null, null), m(te, {
onClick: x
}, {
default: () => "全选"
}), m(te, {
onClick: y,
style: {
marginLeft: "5px"
}
}, {
default: () => "全不选"
})]
})]);
}
});
function Yi(e) {
if (!e) return null;
be(e) || (e = [e]);
const n = e.map((a) => {
var i, r, s;
let o = {
...a.props
}, {
type: t
} = a;
const {
name: c
} = a;
let d = null;
if ((!t || t === "button") && (d = jn, o.type = o.type || "text"), (t === "a-tag" || t === "tag") && (d = ke), t === "switch" && (d = va, a.name && (o.checkedChildren = ((i = a.name) == null ? void 0 : i[0]) || "", o.unCheckedChildren = ((r = a.name) == null ? void 0 : r[1]) || ""), o.checked = a.value, o.disabled = !0), a.action && (o.onClick = a.action), a.tooltip) {
const u = a.tooltip;
return m(fn, {
title: u,
transfer: !0
}, {
default: () => m(d, o, {
default: () => c
})
});
}
if ((s = a.children) != null && s.length) {
const u = a.children;
return m(so, {
placement: "bottom"
}, {
default: () => m(jn, H({
type: "text"
}, o), {
default: () => [c, m(go, {
style: {
marginLeft: "2px",
fontSize: "12px"
}
}, null)]
}),
overlay: () => m(uo, null, {
default: () => u.map((g) => m(Mn, null, {
default: () => m(jn, H({
type: "text",
style: {
textAlign: "left"
},
buttonProps: {
block: !0
},
onClick: g.action
}, g.props), {
default: () => g.name
})
}))
})
});
}
return m(d, o, {
default: () => c
});
});
return m("div", {
class: "table-actions-wrapper"
}, [n]);
}
function Xi(e, n) {
return e ? (be(e) || (e = [e]), m(Zc, {
gap: "small"
}, {
default: () => e.map((a) => {
const o = a.thumbUrl || a.url || a;
return m(It, {
src: o,
preview: {
src: a.url || a.thumbUrl || a
},
width: 48,
height: 48
}, null);
})
})) : m("span", {
style: {
fontSize: "30px"
}
}, [n ? m(n, null, null) : m(Nt, null, null)]);
}
function Qi(e, n) {
const {
DefaultIcon: a,
placeholder: o = "暂无附件"
} = n || {};
return e ? (be(e) || (e = [e]), e.map((t, c) => {
const d = t.url || t, i = t.name || (e.length > 1 ? `查看附件${c + 1}` : "查看附件");
return m("a", {
href: d,
style: {
display: "block"
},
target: "_blank"
}, [m("span", {
style: {
fontSize: "14px"
}
}, [a ? m(a, null, null) : m(Rt, null, null), he(" "), i])]);
})) : m("span", null, [o]);
}
const Gi = Yi, Lc = Xi, Zi = Qi, Ji = Te(Wi);
function qi(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const es = (e, n, a, o) => {
var v;
Object.keys(a).length || (a.editFormRef = null, a.showEditModal = !1, a.editIndex = -1, a.editFormData = {});
const t = co(a.editFormRef), {
provider: c
} = o, d = c.uploaderProvider;
let i = e.children;
$(e.children) && (i = e.children({
submitForm: n
}));
const r = i.filter((p) => !p.invisible).map((p) => ({
dataIndex: p.key,
title: p.title,
width: p.width,
key: p.key,
item: p,
// 将子项的配置传递给子组件,用于自定义渲染
...p.cellProps
})), s = {
title: "操作",
dataIndex: "operations",
align: "center",
fixed: "right",
width: 120 + (((v = e.childrenOperations) == null ? void 0 : v.length) || 0) * 60
}, u = e.disabled || e.readonly ? [...r] : [...r, s], g = X(() => n[e.key] || []), y = (p, l) => {
if (p)
a.editFormData = p, a.editIndex = l;
else {
let b = {};
i.forEach((S) => {
b[S.key] = ia(S, {}, {}, {
uploaderProvider: d
});
}), a.editFormData = b, a.editIndex = -1;
}
a.showEditModal = !0;
}, x = ({
formatForm: p
}) => (a.editIndex === -1 ? n[e.key].push(p) : n[e.key][a.editIndex] = p, a.showEditModal = !1, !1), f = () => new Promise((p) => {
var l;
(l = t.value) != null && l.isDirty() ? dn.confirm({
content: "内容已修改,是否放弃本次修改?",
okText: "确定",
cancelText: "取消",
onOk: () => p(!0),
onCancel: () => p(!1)
}) : p(!0);
}), h = (p) => {
n[e.key].splice(p, 1);
};
return m("div", null, [m(Xn, {
columns: u,
dataSource: g.value,
pagination: !1,
bordered: !0,
size: "small"
}, {
bodyCell: ({
column: p,
record: l,
index: b
}) => {
var S, O, w, P, C, k, E, D, M, A, R, K, T, N, F, Z, Ge, Ne, He, Me, ln, Ze, gn;
if (((S = p.item) == null ? void 0 : S.type) === "select") {
let G = $((O = p.item) == null ? void 0 : O.options) ? p.item.options({
submitForm: n,
record: l
}) : p.item.options;
return G = G.map((ue) => se(ue) || de(ue) ? {
value: ue,
label: ue
} : ue), m("span", null, [po(l[p.item.key], G)]);
} else if (((w = p.item) == null ? void 0 : w.type) === "date") {
if (l[p.item.key]) {
const G = re(l[p.item.key]);
return (C = (P = p.item) == null ? void 0 : P.defaultProps) != null && C.format ? m("span", null, [G.format(p.item.defaultProps.format)]) : (E = (k = p.item) == null ? void 0 : k.defaultProps) != null && E.showTime ? m("span", null, [G.format("YYYY-MM-DD HH:mm:ss")]) : m("span", null, [G.format("YYYY-MM-DD")]);
}
return null;
} else if (((D = p.item) == null ? void 0 : D.type) === "switch") {
const G = p.item.options || ["是", "否"];
return m(_n, null, {
default: () => [m(va, H({
checked: l[p.item.key],
"onUpdate:checked": (ue) => l[p.item.key] = ue,
disabled: !0,
checkedChildren: G[0],
unCheckedChildren: G[1]
}, p.item.defaultProps), null)]
});
} else if (((M = p.item) == null ? void 0 : M.type) === "tree-select") {
let G = $((A = p.item) == null ? void 0 : A.options) ? p.item.options({
submitForm: n,
record: l
}) : p.item.options, ue = ve(l[p.item.key]);
be(ue) || (ue = [ue]);
const _ = ho(G, ue, ((K = (R = p.item) == null ? void 0 : R.defaultProps) == null ? void 0 : K.fieldNames) || null);
return m("span", null, [_.join(", ")]);
} else {
if (((T = p.item) == null ? void 0 : T.type) === "tag")
return (N = l[p.item.key]) == null ? void 0 : N.map((G) => m(ke, {
color: "blue"
}, qi(G) ? G : {
default: () => [G]
}));
if (((F = p.item) == null ? void 0 : F.type) === "uploader")
return m("div", {
class: "flex justify-center"
}, [Lc(l[p.item.key])]);
if (((Z = p.item) == null ? void 0 : Z.type) === "time" || ((Ge = p.item) == null ? void 0 : Ge.type) === "date") {
const G = ((He = (Ne = p.item) == null ? void 0 : Ne.defaultProps) == null ? void 0 : He.format) || (((Me = p.item) == null ? void 0 : Me.type) === "time" ? "HH:mm:ss" : "YYYY-MM-DD");
return ((Ze = (ln = p.item) == null ? void 0 : ln.defaultProps) == null ? void 0 : Ze.type) === "range" ? m("span", null, [re(l[p.item.key][0]).format(G), he(" - "), re(l[p.item.key][1]).format(G)]) : l[p.item.key] ? m("span", null, [re(l[p.item.key]).format(G)]) : m("span", null, null);
}
}
if (p.dataIndex === "operations") {
const G = [m(te, {
type: "text",
size: "small",
onClick: () => y(l, b)
}, {
default: () => "编辑"
})];
return (gn = e.childrenOperations) == null || gn.forEach((ue) => {
G.push(m(te, {
type: "text",
size: "small",
onClick: () => ue.action({
column: p,
record: l,
index: b
})
}, {
default: () => ue.name
}));
}), G.push(m(ed, {
title: "确定删除当前行吗?",
onConfirm: () => h(b)
}, {
default: () => m(te, {
type: "text",
size: "small"
}, {
default: () => "删除"
})
})), m("div", {
class: "table-actions-wrapper"
}, [he(" "), G, he(" ")]);
}
},
summary: () => e.disabled || e.readonly ? null : m(Jc, null, {
default: () => m(qc, {
colSpan: u.length
}, {
default: () => m(te, {
icon: m(At, null, null),
block: !0,
onClick: () => y(!1)
}, {
default: () => `添加${e.title}`
})
})
})
}), m(Gt, {
visible: a.showEditModal,
"onUpdate:visible": (p) => a.showEditModal = p,
type: "drawer",
title: `编辑${e.title}`,
beforeClose: f
}, {
default: () => [m(lo("NewbieForm"), {
ref: t,
form: i,
closable: !1,
data: a.editFormData,
beforeSubmit: x,
onClose: async () => {
a.showEditModal = !await f();
}
}, null)]
})]);
}, ns = (e, n) => (n[e.key] = Number(n[e.key]) || 0, m(nd, H({
value: n[e.key],
"onUpdate:value": (a) => n[e.key] = a,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, e.defaultProps), {
...e.defaultSlots
})), as = (e, n) => {
const a = $(e.rows) ? e.rows(n) : e.rows;
let o = $(e.options) ? e.options(n) : e.options;
o = o.map((c) => se(c) || de(c) ? {
value: c,
label: c
} : c);
const t = [{
title: "行标题\\选项",
dataIndex: "row",
type: "title"
}].concat(o.map((c) => ({
title: c.label,
dataIndex: c.value,
align: "center",
type: "option"
})));
return m(Xn, {
pagination: !1,
bordered: !0,
columns: t,
dataSource: a,
size: "middle"
}, {
bodyCell: ({
index: c,
column: d
}) => {
const i = a[c];
if (d.type === "title")
return i;
if (d.type === "option") {
const r = `${d.dataIndex}`;
return m(_n, null, {
default: () => m(ya, {
value: n[e.key][i],
"onUpdate:value": (s) => n[e.key][i] = s
}, {
default: () => [m(Tt, {
value: r,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, null)]
})
});
}
}
});
}, os = (e, n) => {
const a = $(e.rows) ? e.rows(n) : e.rows;
let o = $(e.options) ? e.options(n) : e.options;
o = o.map((d) => se(d) || de(d) ? {
value: d,
label: d
} : d);
const t = [{
title: "行标题\\选项",
dataIndex: "row",
type: "title"
}].concat(o.map((d) => ({
title: d.label,
dataIndex: d.value,
align: "center",
type: "option"
}))), c = (d, i) => {
n[e.key][d] || (n[e.key][d] = []), n[e.key][d].includes(i) ? gd(n[e.key][d], (r) => r === i) : n[e.key][d].push(i);
};
return m(Xn, {
pagination: !1,
bordered: !0,
columns: t,
dataSource: a,
size: "middle"
}, {
bodyCell: ({
index: d,
column: i
}) => {
const r = a[d];
if (i.type === "title")
return r;
if (i.type === "option") {
const s = `${i.dataIndex}`;
return m(_n, null, {
default: () => {
var u;
return m(fo, {
id: `${r}_${s}`,
checked: (u = n[e.key][r]) == null ? void 0 : u.includes(s),
onChange: () => c(r, s),
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, null);
}
});
}
}
});
}, ts = (e, n) => {
var d, i;
let a = $(e.rows) ? e.rows(n) : ve(e.rows);
const o = ((d = e.defaultProps) == null ? void 0 : d.level) || 5;
let t = $(e.options) ? e.options(n) : e.options || [];
if (t = t.map((r) => se(r) || de(r) ? {
value: r,
label: r
} : r), t.length > o)
t = t.slice(0, o);
else if (t.length < o)
for (let r = t.length; r < o; r += 1)
t.push({
label: r + 1,
value: r + 1
});
const c = [{
title: "行标题\\选项",
dataIndex: "row",
type: "title"
}].concat(t.map((r) => ({
title: r.label,
dataIndex: r.value,
align: "center",
type: "option"
})));
if (a = a.map((r) => ({
row: r
})), (i = e.defaultProps) != null && i.showScale) {
let r = {
row: "分值"
};
t.forEach((s, u) => r[s.value] = u + 1), a.unshift(r);
}
return m(Xn, {
pagination: !1,
bordered: !0,
columns: c,
dataSource: a,
size: "middle"
}, {
bodyCell: ({
index: r,
column: s,
record: u
}) => {
var g;
if (r === 0 && ((g = e.defaultProps) != null && g.showScale))
return m("span", {
style: {
color: "orange",
fontWeight: "bold"
}
}, [u[s.dataIndex]]);
if (s.type === "option") {
const {
row: y
} = a[r], x = $t(c, {
dataIndex: s.dataIndex
});
return m(_n, null, {
default: () => m(ya, {
value: n[e.key][y],
"onUpdate:value": (f) => n[e.key][y] = f
}, {
default: () => [m(Tt, {
value: x,
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, null)]
})
});
}
return u[s.dataIndex];
}
});
};
function cs(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const ds = (e, n) => {
let a, o = $(e.options) ? e.options(n) : e.options;
o = o.map((c) => {
if (se(c) || de(c))
return {
value: c,
label: c,
rate: 0
};
if (Le(c) && c.value)
return oe(c.label) && (c.label = c.value), oe(c.rate) && (c.rate = 0), c;
});
const t = (c) => {
var i;
const {
value: d
} = c.target;
n[e.key].rate = ((i = ie(o, {
value: d
})) == null ? void 0 : i.rate) || 0;
};
return e.readonly ? m("div", {
style: {
padding: "0 11px"
}
}, [m(ke, null, cs(a = po(n[e.key].value, o)) ? a : {
default: () => [a]
})]) : m(ya, H({
value: n[e.key].value,
"onUpdate:value": (c) => n[e.key].value = c,
optionType: "button",
buttonStyle: "solid",
disabled: $(e.disabled) ? e.disabled(n) : e.disabled,
options: o,
style: e.style || {},
onChange: t
}, e.defaultProps), {
...e.defaultSlots
});
};
function rs(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const ls = (e, n) => {
let a = $(e.options) ? e.options(n) : e.options;
a = a.map((t) => {
if (se(t) || de(t))
return {
value: t,
label: t,
rate: 0
};
if (Le(t) && t.value)
return oe(t.label) && (t.label = t.value), oe(t.rate) && (t.rate = 0), t;
});
const o = (t) => {
n[e.key] || (n[e.key] = []), n[e.key].filter((c) => c.value === t.value).length ? n[e.key] = n[e.key].filter((c) => c.value !== t.value) : n[e.key].push({
value: t.value,
rate: t.rate
});
};
return e.readonly ? m("div", {
style: {
padding: "0 11px"
}
}, [ho(a, n[e.key].map((t) => t.value)).map((t) => m(ke, {
style: {
marginRight: "5px"
}
}, rs(t) ? t : {
default: () => [t]
}))]) : m(_n, null, {
default: () => a.map((t) => {
const c = n[e.key].filter((d) => d.value === t.value).length > 0;
return m(fo, {
id: t.value,
checked: c,
onChange: () => o(t),
disabled: $(e.disabled) ? e.disabled(n) : e.disabled
}, {
default: () => t.label
});
})
});
}, is = (e, n) => m("span", {
style: e.style,
class: {
...e.class
}
}, [$(e.defaultValue) ? e.defaultValue({
submitForm: n
}) : e.defaultValue]), ss = (e, n, a) => {
const o = e.children;
return m("div", {
style: {
display: "flex",
gap: "6px",
...e.style || {}
},
class: {
...e.class || {}
}
}, [o.map((t) => Yn(t, n, a))]);
}, Yn = (e, n, {
props: a,
slots: o,
formState: t
}) => {
var x, f, h;
const c = tn(ba, () => ({}));
tn(vo, () => ({})), oe(n[e.key]) && e.key && (n[e.key] = ia(e, {}, n, {
uploaderProvider: c
}));
let d = null, i = (x = e.rules) != null && x.length ? e.rules.map((v) => v.pattern ? {
...v,
pattern: new RegExp(v.pattern)
} : {
...v
}) : [], r = {
required: !0,
message: e.requiredMessage || `请选择${e.title || ""}`
};
e.type = e.type ? e.type.toLowerCase() : e.type;
const s = $(e.required) ? e.required(n) : e.required;
if (e.readonly = e.readonly || a.readonly, e.disabled = e.disabled || a.disabled || a.readonly || e.readonly, (e.readonly || e.disabled) && (e.placeholder = "--"), $(e.hidden) && e.hidden(n) || la(e.hidden) && e.hidden)
return null;
if (e.type === "slot" && o[e.key])
return o[e.key]({
submitForm: n,
item: e
});
if (e.customRender) {
if (d = e.customRender({
submitForm: n,
item: e
}), !d)
return null;
} else if (e.match) {
const v = {
...e,
...e.match(n),
match: null
};
return Yn(v, n, {
props: a,
slots: o
});
} else
switch (e.type) {
case "select":
d = lr(e, n);
break;
case "remote":
d = sr(e, n, t[e.key]);
break;
case "tree-select":
d = ir(e, n);
break;
case "date":
d = or(e, n);
break;
case "time":
d = tr(e, n);
break;
case "switch":
d = hr(e, n);
break;
case "radio":
d = vr(e, n);
break;
case "checkbox":
d = br(e, n), r.type = "array";
break;
case "tag":
d = rr(e, n, t[e.key]), r.type = "array";
break;
case "address":
d = ur(e, n), r.type = "array";
break;
case "cascade":
d = mr(e, n), r.type = "array";
break;
case "number":
d = fr(e, n), r.trigger = "blur", r.type = "number", r.message = e.requiredMessage || `请填写${e.title || ""}`;
break;
case "html":
d = wr(e, n);
break;
case "uploader":
if (d = Er(e, n), s) {
if (!Object.keys(c).length) {
console.error("请在根组件中注入 NEWBIE_UPLOADER 配置项"), d = null;
break;
}
(f = e.defaultProps) != null && f.maxNum && ((h = e.defaultProps) == null ? void 0 : h.maxNum) > 1 ? (r.type = "array", r.message = e.requiredMessage || `请上传${e.title || ""}`) : (r.type = "object", r.message = e.requiredMessage || `请上传${e.title || ""}`, r.fields = {
[c.defaultFileItem.path]: {
type: "string",
required: !0,
message: `请上传${e.title || ""}`
}
});
}
break;
case "editor":
d = Or(e, n), r.message = e.requiredMessage || `请填写${e.title || ""}`, r.type = "string";
break;
case "text":
d = Pr(e, n);
break;
case "plain":
d = is(e, n);
break;
case "group":
d = es(e, n, t[e.key], {
provider: {
uploaderProvider: c
}
});
break;
case "rate":
d = ns(e, n);
break;
case "matrix-radio": {
d = as(e, n), r.type = "object", r.message = e.requiredMessage || `请完成${e.title}`;
const v = {};
e.rows.forEach((p) => {
v[p] = {
required: !0,
message: `请选择${p}`
};
}), r.fields = v;
break;
}
case "matrix-checkbox": {
d = os(e, n), r.type = "object", r.message = e.requiredMessage || `请完成${e.title}`;
const v = {};
e.rows.forEach((p) => {
v[p] = {
required: !0,
type: "array",
message: `请选择${p}`
};
}), r.fields = v;
break;
}
case "matrix-scale": {
d = ts(e, n), r.type = "object", r.message = e.requiredMessage || `请完成${e.title}`;
const v = {};
e.rows.forEach((p) => {
v[p] = {
type: "number",
required: !0,
message: `请选择${p}`
};
}), r.fields = v;
break;
}
case "rate-radio":
d = ds(e, n);
break;
case "rate-checkbox":
d = ls(e, n), r.type = "array";
break;
case "combiner":
d = ss(e, n, {
props: a,
slots: o
});
break;
default:
d = cr(e, n), r.message = e.requiredMessage || `请填写${e.title || ""}`, r.trigger = "blur", r.type = "string";
break;
}
s && (i.length ? i[0].required = !0 : i.push(r));
let u = {
label: e.title,
name: e.key,
validateFirst: !0,
required: s,
hasFeedback: (i == null ? void 0 : i.length) > 0,
rules: i
};
u = {
...u,
...e.formItemProps
};
let g = e.formItemSlots || {};
e.help && (g.extra = () => m("div", {
class: "newbie-form__form-item-help"
}, [$(e.help) ? e.help(n) : e.help])), g.label && delete u.label;
let y = null;
if (e.optional && !e.readonly) {
if (oe(e.optionalValue)) {
const v = _r(e, n);
e.optionalValue = j(v);
}
y = m("div", {
class: "newbie-form__optional"
}, [m(_n, null, {
default: () => {
var v, p;
return [m(va, {
checked: e.optionalValue.value,
"onUpdate:checked": (l) => e.optionalValue.value = l,
checkedChildren: ((v = e.optional) == null ? void 0 : v[0]) || "",
unCheckedChildren: ((p = e.optional) == null ? void 0 : p[1]) || "",
onChange: (l) => !l && (n[e.key] = null)
}, null)];
}
}), m("div", {
class: "newbie-form__optional-content"
}, [e.optionalValue.value ? d : !1])]);
}
return m(Ka, u, {
default: () => e.optional && !e.readonly ? y : d,
...g
});
};
function ft(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Fe(e);
}
const us = (e, n, a, o) => {
const {
props: t,
slots: c,
formState: d
} = o, i = [], r = [];
e.forEach((v) => {
v.columnIndex === "fixed" ? i.push(v) : ((v.break || !r.length) && r.push([]), r[r.length - 1].push(v));
});
let s = t.columns;
if ((!s || !be(s) || !s.length) && (s = [24]), vd(s) !== 24)
return console.error("NewbieForm columns 栅格分布总和不为24"), null;
const u = r.map(() => s.map(() => []));
r.forEach((v, p) => {
v.forEach((l) => {
var O;
let b = l.columnIndex || 0;
b = de(b) ? Math.min(b, t.columns.length - 1) : b;
let S = 0;
if (be(b)) {
for (let w = b[0]; w <= b[1] && s[w]; w++)
S += s[w], w !== b[0] && u[p][w].push("placeholder");
l.span = S, l.formItemProps = {
labelCol: {
span: (((O = t.formProps.labelCol) == null ? void 0 : O.span) || 6) / (b[b.length - 1] - b[0] + 1)
},
...l.formItemProps
}, u[p][b[0]].push(l);
} else de(b) && (l.span = s[b], u[p][b].push(l));
});
});
const g = i.map((v) => Yn(v, n, o));
let y = [];
const x = (v) => {
const p = document.getElementById(`collapse_${v.key}`);
d[v.key].isCollapse ? p.style.height = `${p.scrollHeight}px` : (p.style.height || (p.style.height = `${p.scrollHeight}px`), setTimeout(() => p.style.height = "0px")), cn(() => {
d[v.key].isCollapse = !d[v.key].isCollapse;
});
};
u.forEach((v, p) => {
const l = Math.max(...v.map((O) => O.length)), b = [];
let S = null;
for (let O = 0; O < l; O++) {
let w = 0;
const P = [];
for (let C = 0; C < u[p].length; C++) {
let k;
const E = u[p][C][O];
if (!E) {
w += s[C];
continue;
}
E.break && (S = E), E !== "placeholder" && (P.push(m(nn, {
span: E.span,
offset: w
}, ft(k = Yn(E, n, o)) ? k : {
default: () => [k]
})), w = 0);
}
b.push(m(wn, {
gutter: 16
}, ft(P) ? P : {
default: () => [P]
}));
}
if (S) {
if (t.breakMode === "divider")
b.unshift(m(xn, t.dividerProps, {
default: () => se(S.break) ? S.break : ""
})), y = y.concat(b);
else if (t.breakMode === "collapse") {
oe(d[S.key].isCollapse) && (d[S.key].isCollapse = !!p);
const O = m("div", {
class: "newbie-form__collapse-wrapper"
}, [m("div", {
class: "newbie-form__collapse-header",
onClick: () => x(S)
}, [m("span", {
class: `newbie-form__collapse-icon ${d[S.key].isCollapse ? "" : "open"}`
}, [m(Pd, null, null)]), m("span", {
class: "newbie-form__collapse-title"
}, [S.break])]), m("div", {
class: `newbie-form__collapse-content-wrapper ${d[S.key].isCollapse ? "collapse" : ""}`,
id: `collapse_${S.key}`
}, [m("div", {
class: "newbie-form__collapse-content"
}, [b])])]);
y = y.concat(O);
}
} else
y = y.concat(b);
});
const f = () => c.footer ? m("div", {
class: "newbie-form__footer"
}, [c.footer()]) : null;
let h;
if (g.length) {
const v = t.disabled || t.readonly || t.hideButtons ? null : m("div", {
class: "newbie-form__submit-wrapper"
}, [m(xn, null, null), m(wn, null, {
default: () => [m(nn, {
span: 24,
offset: 2
}, {
default: () => a
})]
})]);
h = m(wn, {
gutter: 16
}, {
default: () => [m(nn, {
span: 24 - t.fixedColumns
}, {
default: () => y
}), m(nn, {
span: t.fixedColumns
}, {
default: () => [m(ad, {
offsetTop: 20
}, {
default: () => [m(mo, {
style: {
marginLeft: "20px"
}
}, {
default: () => [g, f(), v]
})]
})]
})]
});
} else {
const v = t.disabled || t.readonly || t.hideButtons ? null : m("div", {
class: "newbie-form__submit-wrapper"
}, [m(xn, null, null), m(wn, {
gutter: 16
}, {
default: () => [m(nn, {
offset: t.closable ? 9 : 10
}, {
default: () => a
})]
})]);
h = [y, f(), v];
}
return h;
}, Rc = /* @__PURE__ */ Ce({
name: "NewbieForm",
props: {
/**
* 表单标题,Card 模式下生效
*/
title: {
type: String,
default: ""
},
/**
* 表单数据,用于初始化表单,并会进行 Watch
*
*/
data: {
type: [Object, String],
default: ""
},
/**
* 是否自动加载
* `true` 表示自动加载数据
* `Array,String` 表示会对 `extraData` 数据中的相关字段进行非空验证,不为空再加载数据
*/
autoLoad: {
//自动加载数据,在fetchData里找
type: [Boolean, Array, String],
default: !0
},
/**
* 获取表单数据的URL
*/
fetchUrl: {
type: String,
default: ""
},
/**
* 额外的数据,在提交时会合并到表单数据中并一起提交
*/
extraData: {
type: Object,
default: () => ({})
},
/**
* 提交数据URL
*/
submitUrl: {
type: String,
default: ""
},
/**
* 提交按钮文字
*/
submitButtonText: {
type: String,
default: "保存"
},
/**
* 提交确认提示内容
*/
submitConfirmText: {
type: String,
default: ""
},
/**
* 是否显示关闭按钮
*/
closable: {
type: Boolean,
default: !0
},
/**
* 关闭按钮文字
*/
closeButtonText: {
type: String,
default: "关闭"
},
/**
* 是否将`关闭`按钮放在`提交`按钮前面
*/
closeButtonFirst: {
type: Boolean,
default: !1
},
/**
* 是否隐藏按钮
*/
hideButtons: {
type: Boolean,
default: !1
},
/**
* 是否禁用表单
*/
disabled: {
type: Boolean,
default: !1
},
/**
* 是否只读
*/
readonly: {
type: Boolean,
default: !1
},
/**
* 是否禁用提交按钮
*/
submitDisabled: {
type: Boolean,
default: !1
},
/**
* 分隔类型,默认为 `divider` 分割线
* @values divider, collapse
*/
breakMode: {
type: String,
default: "divider"
},
/**
* 当 breakMode 为 `divider` 时,divider 的配置[原生分割线配置](https://www.antdv.com/components/divider-cn)
*/
dividerProps: {
type: Object,
default: () => ({})
},
/**
* 表单布局,默认为单列,当为多列时,按 24 栅格布局
* 如:columns: [12, 12]
*/
columns: {
type: Array,
default: () => [24]
},
/**
* 如有 fixed 列,默认 fixed 列的宽度为 6,可自定义
*/
fixedColumns: {
type: Number,
default: 6
},
/**
* 是否用 `Card` 包裹
*/
cardWrapper: {
type: Boolean,
default: !0
},
/**
* Card 的配置
*/
cardProps: {
type: Object,
default: () => {
}
},
/**
*
* 表单配置
*
* @typedef {Object} NewbieFormItemConfig
* @property {string} key 数据库关联名称
* @property {string} title 显示的名字
* @property {string} [type] 类型,默认是input
* @property {array|Function} [rows] 矩阵组件行标题
* @property {array|Function} [options] 组件选项
* @property {string} [placeholder] 组件里的提示
* @property {string|Function} [help] form item里的提示
* @property {array} [rules] 验证规则
* @property {string|number} [width] 组件宽度
* @property {string} [style] 样式
* @property {string} [class] 类名
* @property {boolean|Function} [required] 是否必填,默认是false
* @property {string} [requiredMessage] 必填项提示消息
* @property {boolean} [readonly] 是否只读,默认是false
* @property {boolean|Function} [disabled] 组件不可编辑状态,默认为 false
* @property {boolean|Function} [hidden] 组件是否隐藏,默认为 false
* @property {boolean|Array} [optional] 表单项是否开启后才可以输入
* @property {Function} [init] 初始化函数,用于初始化表单项的值
* @property {Function} [beforeSubmit] 在提交前修改表单项的值,该函数会在 NewbieForm 的 beforeSubmit 之前调用
* @property {Function} [match] 支持根据条件返回不同的配置进行动态渲染
* @property {number|Array|string} [columnIndex] 渲染在哪一列,默认为0,第一列
* @property {boolean|string} [break] 新起一行,默认为false,如果为 String 则以 Divider 分割
* @property {Object} [defaultProps] 组件的配置
* @property {Object} [defaultSlots] 组件的默认插槽
* @property {Object} [formItemProps] FormItem 的原生配置
* @property {Object} [formItemSlots] FormItem 的原生Slot配置
* @property {*} [defaultValue] 默认值,默认是空字符串
* @property {Array.<NewbieFormItemConfig>|Function} [children] 子表单配置
* @property {Array} [childrenOperations] 子表单操作
* @property {Object} [cellProps] 单元格的配置
*/
/**
* 表单配置,[见表单项配置](#newbieformitemconfig-表单项配置)
*/
form: {
type: [Array, Function],
default() {
return [];
}
},
/**
* fetch 返回数据处理函数
* @return {Object} 返回处理后的数据,将用于初始化表单
*/
afterFetched: {
type: Function,
default: null
},
/**
*
* @typedef {Object} ExposedFormData
* @property {Object} formatForm Format后的表单数据
* @property {Object} originalForm 原生的表单数据
*
*
* 提交数据处理函数
* @param {ExposedFormData} data
* @return {Boolean|Object} return false会阻止提交操作,return Object会替换提交的数据
*
*/
beforeSubmit: {
type: Function,
default: null
},
/**
* 点击关闭时的动作
*/
close: {
type: Function,
default: null
},
/**
* 提交成功后的回调
*/
afterSubmit: {
type: Function,
default: null
},
/**
* 原生的 [From](https://www.antdv.com/components/form-cn#api) 配置
*/
formProps: {
type: Object,
default: () => ({})
}
},
emits: ["success"],
setup(e, {
expose: n,
slots: a,
emit: o
}) {
const t = j(null), c = Ue({
temporary: {},
// 用于存放一些临时数据
submitFetcher: {
loading: !1
},
isInitializing: !0,
//是否正在初始化
submitForm: {},
//提交表单,初始化数据后会生成
submitFormBackup: {}
//初始化后的表单数据备份,用于重置表单以及脏数据判断
}), d = tn(ba, () => ({})), i = tn(vo, () => ({})), r = {}, s = X(() => ($(e.form) ? e.form() : e.form).map((E) => {
var D;
return E.type || (E.type = "input"), (D = i == null ? void 0 : i.columns) != null && D[E.type] && (E = {
...i.columns[E.type],
...E
}), r[E.key] || (r[E.key] = Ue({})), E;
}));
q(() => e.data, (k) => {
g(k || "");
});
const u = () => {
c.isInitializing = !1, g(e.data || "");
};
Xe(() => {
let k = !1;
e.autoLoad && e.fetchUrl && (k = !0, e.autoLoad && Le(e.autoLoad) ? k = hn(Object.values(Ya(e.extraData, Object.keys(e.autoLoad)))) : e.autoLoad && se(e.autoLoad) && (k = !!e.extraData[e.autoLoad])), k ? y() : u();
});
const g = (k) => {
let E = {}, D = k ? ve(k) : !1;
s.value.forEach((M) => {
M.type === "combiner" ? M.children.forEach((A) => {
E[A.key] = ia(A, D, c.submitForm, {
uploaderProvider: d
});
}) : E[M.key] = ia(M, D, c.submitForm, {
uploaderProvider: d
});
}), D && (E = {
...D,
...E
}), c.submitForm = E, c.submitFormBackup = ve(E);
}, y = () => {
e.fetchUrl && (c.isInitializing = !0, pn().get(e.fetchUrl, {
params: e.extraData
}).then((k) => {
c.isInitializing = !1, Hn(k, () => {
e.afterFetched && $(e.afterFetched) ? k = e.afterFetched(k) : i.afterFetched && $(i.afterFetched) && (k = i.afterFetched(k)), g(k);
});
}).finally(() => {
c.isInitializing = !1;
}));
}, x = () => new Promise((k, E) => {
t.value.validate().then(async () => {
let D = ve(c.submitForm);
const M = s.value.map((R) => R.match ? {
...R,
...R.match(D)
} : R).filter((R) => R.beforeSubmit && $(R.beforeSubmit));
for (const R of M)
D[R.key] = await R.beforeSubmit({
value: D[R.key],
submitForm: D
//将 form 传出去,这样可以增删 form 里的参数
});
if (D = id(D, i.format || {}), e.beforeSubmit && $(e.beforeSubmit) && (D = await e.beforeSubmit({
formatForm: D,
originalForm: c.submitForm
}), D === !1))
return k();
let A = await pn(c.submitFetcher).post(e.submitUrl, D);
return c.submitFormBackup = ve(c.submitForm), e.afterSubmit ? e.afterSubmit(A) : Hn(A, () => {
fe.success(`${e.submitButtonText}成功`), o("success", A);
}), k();
}).catch((D) => (sd(D), E(D)));
}), f = (k) => {
c.isInitializing = k;
}, h = () => {
t.value.resetFields();
}, v = () => ve(c.submitForm);
n({
submit: x,
getForm: v,
getFormStandalone: v,
getFormRealtime: () => c.submitForm,
getField: (k) => ve(c.submitForm[k]),
setForm: (k) => {
Object.keys(k).forEach((E) => {
c.submitForm[E] = k[E];
});
},
reset: h,
isDirty: () => !Kn(c.submitForm, c.submitFormBackup),
isInitializing: f
});
const O = () => {
const k = () => m(te, {
loading: c.submitFetcher.loading,
type: "primary",
htmlType: "submit",
disabled: e.submitDisabled,
onClick: () => {
e.submitConfirmText ? dn.confirm({
content: e.submitConfirmText,
onOk() {
x();
}
}) : x();
}
}, {
default: () => `${e.submitButtonText}${c.submitFetcher.loading ? "中..." : ""}`
}), E = () => m(te, {
type: "default",
onClick: () => {
e.close && $(e.close) && e.close();
}
}, {
default: () => e.closeButtonText
});
return m(Cn, {
size: "large"
}, {
default: () => e.closeButtonFirst ? [e.closable ? E() : null, k()] : [k(), e.closable ? E() : null]
});
}, w = () => us(s.value, c.submitForm, O(), {
props: e,
slots: a,
formState: r
}), P = () => m(ga, H({
model: c.submitForm,
ref: t,
class: "newbie-form",
labelCol: {
span: 6
},
scrollToFirstError: !0
}, e.formProps), {
default: () => [w()]
}), C = () => m(od, {
active: !0,
paragraph: {
rows: 10
},
loading: c.isInitializing
}, {
default: () => {
var k, E;
return [(k = a.prepend) == null ? void 0 : k.call(a), P(), (E = a.append) == null ? void 0 : E.call(a)];
}
});
return () => m("div", {
class: "newbie-form-wrapper"
}, [e.cardWrapper ? m(mo, H(e.cardProps, {
title: e.title
}), {
default: () => C()
}) : C()]);
}
}), ms = Te(Rc), fs = /* @__PURE__ */ Ce({
name: "NewbieList",
props: {
/**
* 加载数据的URL
*/
url: {
type: String,
default: ""
},
/**
* 请求附带参数
*/
extraData: {
type: Object,
default: () => ({})
},
/**
* 高度
*/
height: {
type: Number,
default: 300
},
/**
* 加载触发距离,滚动条与底部距离小于 offset 时触发 load 事件
*/
offset: {
type: Number,
default: 50
},
/**
* 加完完毕提示文案
*/
finishedText: {
type: String,
default: "数据加载完毕"
},
/**
* 是否自动加载
*/
autoLoad: {
type: Boolean,
default: !0
},
/**
* 是否使用 store
* 如果使用 store, 请确认 store 中定义了 pagination 和 initPagination 方法
*/
useStore: {
type: Object,
default: () => null
},
/**
* 原生 [List](https://www.antdv.com/components/list-cn#api) 参数
*/
listProps: {
type: Object,
default: () => ({})
}
},
setup(e, {
slots: n,
expose: a
}) {
var u;
const o = j(null), t = j(null), c = X(() => ({
...e.listProps
}));
let d;
(u = e.useStore) != null && u.initPagination ? (e.useStore.initPagination({
uri: e.url,
params: e.extraData
}), d = X(() => e.useStore.pagination)) : d = j({
uri: e.url,
params: e.extraData
});
const i = (g) => {
d.value = ud(d.value, g);
}, {
y: r
} = nl(o);
return q(r, async (g) => {
g + e.height + e.offset >= o.value.scrollHeight && !d.value.loading && !d.value.finished && await i();
}), e.autoLoad && i(), a({
loadMore: i,
items: () => d.value.items || [],
pagination: d
}), () => {
var g;
return m("div", {
ref: o,
class: "newbie-list",
style: {
height: `${e.height}px`
}
}, [m(td, H({
ref: t,
dataSource: ((g = d.value) == null ? void 0 : g.items) || []
}, c.value), {
default: () => {
var y;
return (y = n.default) == null ? void 0 : y.call(n);
},
renderItem: ({
item: y,
index: x
}) => n.renderItem ? n.renderItem({
item: y,
index: x
}) : null,
loadMore: () => {
var y, x;
return [(y = d.value) != null && y.loading ? m("div", {
class: "loading-container"
}, [m(_t, null, null)]) : null, (x = d.value) != null && x.finished ? m("div", {
class: "finished-text"
}, [e.finishedText]) : null];
}
})]);
};
}
}), ps = Te(fs), hs = Te(Gt), gs = /* @__PURE__ */ Ce({
name: "NewbiePassword",
components: {
InputPassword: cd
},
props: {
/**
* 输入框的值
*
*/
value: {
type: String,
default: ""
},
/**
* 最小长度
*/
min: {
type: Number,
default: 8
},
/**
* 最大长度
*/
max: {
type: Number,
default: 20
},
/**
* 宽度
*/
width: {
type: [Number, String],
default: 300
}
},
emits: [
/**
* @event update:modelValue
*/
"update:value",
/**
* 输入框内容变化时的回调
* @event change
* @param {Event} event 事件对象
*/
"change"
],
setup(e, {
emit: n,
expose: a
}) {
const o = j("");
q(() => e.modelValue, () => {
o.value = e.modelValue;
});
const t = X(() => {
let s = 0;
return [
/\d/,
// 包含数字
/[a-z]/,
// 包含小写字母
/[A-Z]/,
// 包含大写字母
/[^a-zA-Z0-9]/
// 包含特殊符号
].forEach((g) => {
g.test(o.value) && (s += 1);
}), s;
}), c = ["", "bad", "weak", "medium", "strong"], d = (s) => {
const {
value: u
} = s.target;
n("change", s), n("update:value", u);
}, i = X(() => o.value.length > 0 && o.value.length < e.min || o.value.length > e.max || t.value < 4), r = X(() => o.value.length > 0 && o.value.length < e.min ? `密码长度不能少于${e.min}个字符` : o.value.length > e.max ? `密码长度不能超过${e.max}个字符` : t.value < 4 ? "密码必须包含数字、小写字母、大写字母和特殊符号" : "");
return a({
/**
* 密码强度,0 为最弱,4 为最强
* @type {ComputedRef<number>}
*/
strength: t
}), () => m("div", {
class: "newbie-password",
style: {
width: we(e.width)
}
}, [m(lo("input-password"), {
value: o.value,
"onUpdate:value": (s) => o.value = s,
onChange: d,
minlength: e.min,
maxlength: e.max
}, null), m("div", {
class: `strength-indicator-container ${c[t.value]}`
}, [m("div", {
class: `strength-indicator ${t.value >= 1 ? "active" : ""}`
}, null), m("div", {
class: `strength-indicator ${t.value >= 2 ? "active" : ""}`
}, null), m("div", {
class: `strength-indicator ${t.value >= 3 ? "active" : ""}`
}, null), m("div", {
class: `strength-indicator ${t.value >= 4 ? "active" : ""}`
}, null)]), i.value ? m("div", {
class: "error-message"
}, [r.value]) : null]);
}
}), vs = Te(gs), ys = Te(nr), bs = Te(jc), ws = Te(Wt), ks = [{
title: "选择",
children: [{
name: "单选",
type: "radio",
icon: () => Q(_a),
props: {
defaultProps: {
optionType: "outlined"
},
options: ["选项一", "选项二"]
}
}, {
name: "多选",
type: "checkbox",
icon: () => Q(Da),
props: {
options: ["选项一", "选项二"]
}
}, {
name: "下拉选择",
type: "select",
icon: () => Q(_d),
props: {
options: ["选项一", "选项二"],
width: 300
}
}, {
name: "开关",
icon: () => Q(Dd),
type: "switch"
}, {
name: "图片上传",
type: "uploader",
icon: () => Q(Id),
props: {
//disabled: true,
defaultProps: {
accept: ".png,.jpg,.jpeg"
}
}
}, {
name: "文件上传",
type: "uploader",
icon: () => Q(Rt),
props: {
//disabled: true,
defaultProps: {
accept: ".doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.png,.jpg,jpeg",
type: "text"
}
}
}]
}, {
title: "填空",
children: [{
name: "文本",
type: "input",
icon: () => Q(Td),
props: {
width: "100%"
}
}, {
name: "多行文本",
icon: () => Q($d),
type: "textarea"
}, {
name: "日期",
icon: () => Q(zo),
type: "date"
}, {
name: "日期范围",
type: "date",
icon: () => Q(zo),
props: {
width: 300,
defaultProps: {
type: "range"
}
}
}, {
name: "时间",
icon: () => Q(Uo),
type: "time"
}, {
name: "时间范围",
type: "time",
icon: () => Q(Uo),
props: {
width: 300,
defaultProps: {
type: "range"
}
}
}, {
name: "数字",
icon: () => Q(Ad),
type: "number"
}]
}, {
title: "评分",
children: [{
name: "星级评分",
icon: () => Q(Nd),
type: "rate"
}, {
name: "单选评分",
type: "rate-radio",
icon: () => Q(_a),
props: {
defaultProps: {
optionType: "outlined"
},
options: [{
value: "选项一",
rate: 1
}, {
value: "选项二",
rate: 2
}, {
value: "选项三",
rate: 3
}]
}
}, {
name: "多选评分",
type: "rate-checkbox",
icon: () => Q(Da),
props: {
options: [{
value: "选项一",
rate: 1
}, {
value: "选项二",
rate: 2
}, {
value: "选项三",
rate: 3
}]
}
}]
}, {
title: "矩阵",
children: [{
name: "矩阵单选",
type: "matrix-radio",
icon: () => Q(_a),
props: {
options: ["好", "一般", "差"],
rows: ["质量", "外观"]
}
}, {
name: "矩阵多选",
type: "matrix-checkbox",
icon: () => Q(Da),
props: {
options: ["好", "一般", "差"],
rows: ["质量", "外观"]
}
}, {
name: "矩阵量表",
type: "matrix-scale",
icon: () => Q(Md),
props: {
defaultProps: {
showScale: !0
},
options: [],
rows: ["质量", "外观"]
}
}]
}, {
title: "个人信息",
children: [{
name: "姓名",
type: "input",
icon: () => Q(jd),
props: {
title: "您的姓名"
}
}, {
name: "性别",
type: "radio",
icon: () => Q(Ld),
props: {
title: "您的性别",
options: ["男", "女"]
}
}, {
name: "手机号码",
type: "input",
icon: () => Q(Rd),
props: {
title: "请输入您的手机号码",
rules: [{
pattern: "^1[3456789]\\d{9}$",
message: "手机号码格式不正确"
}]
}
}, {
name: "邮箱",
type: "input",
icon: () => Q(Bd),
props: {
title: "请输入您的邮箱地址",
rules: [{
pattern: '^(([^<>()[\\]\\\\.,;:\\s@"]+(\\.[^<>()[\\]\\\\.,;:\\s@"]+)*)|.(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$',
message: "邮箱地址格式不正确"
}]
}
}, {
name: "省市区",
type: "address",
icon: () => Q(zd),
props: {
title: "请选择省份城市与地区"
}
}]
}], Cs = (e) => {
let n = [
{
title: "标题",
key: "title",
required: !0,
type: "textarea"
},
{
title: "必填",
key: "required",
type: "switch",
defaultValue: !1
},
{
title: "备注/提示",
key: "help"
},
{
title: "添加分页栏",
type: "switch",
key: "break",
defaultValue: !1
}
];
return ["input", "select", "textarea"].includes(e.type) && (n = n.concat([
{
title: "输入框提示",
key: "placeholder"
}
])), ["matrix-radio", "matrix-checkbox", "matrix-scale"].includes(e.type) && (n = n.concat([
{
title: "行标题",
key: "rows",
type: "slot"
}
])), ["radio", "checkbox", "select", "matrix-radio", "matrix-checkbox", "matrix-scale", "rate-radio", "rate-checkbox"].includes(e.type) && (n = n.concat([
{
title: "选项",
key: "options",
type: "slot"
}
])), e.type === "matrix-scale" && (n = n.concat([
{
title: "量表等级",
type: "number",
key: "level",
defaultProps: {
min: 1,
max: 10
},
defaultValue: 5
}
])), e.type === "rate" && (n = n.concat([
{
title: "星星总数",
type: "number",
key: "count",
defaultProps: {
min: 1,
max: 10
},
defaultValue: 5
},
{
title: "是否允许半选",
type: "switch",
key: "allowHalf",
defaultValue: !1
}
])), e.type === "uploader" && (n = n.concat([
{
title: "最大上传数",
key: "maxNum",
type: "number",
defaultValue: 1,
defaultProps: {
min: 1,
max: 9
}
},
{
title: "文件权限",
key: "privacy",
type: "radio",
options: [
{ label: "公开", value: "public" },
{ label: "隐私", value: "private" }
],
help: "公开:如新闻图片,通知文件等对所有人可见;隐私:如个人照片,私密文件等会进行访问限制",
defaultValue: "public"
}
])), n;
}, xs = (e) => {
var o, t, c, d, i, r;
const n = e.props, a = {};
return ["title", "required", "help", "break"].forEach((s) => {
a[s] = n[s];
}), ["radio", "checkbox", "select", "rate-radio", "rate-checkbox"].includes(e.type) && (a.options = n.options), ["input", "select", "textarea"].includes(e.type) && (a.placeholder = n.placeholder), e.type === "rate" && (a.count = (o = n.defaultProps) == null ? void 0 : o.count, a.allowHalf = (t = n.defaultProps) == null ? void 0 : t.allowHalf), e.type === "matrix-scale" && (a.level = (c = n.defaultProps) == null ? void 0 : c.level), e.type === "uploader" && (a.maxNum = ((d = n.defaultProps) == null ? void 0 : d.maxNum) || 1, a.privacy = ((r = (i = n.defaultProps) == null ? void 0 : i.extraData) == null ? void 0 : r.type) || "private"), a;
}, Ss = (e, n) => {
if (!n)
return;
const a = n.props;
["title", "required", "help", "break"].forEach((o) => {
a[o] = e[o];
}), ["radio", "checkbox", "select", "rate-radio", "rate-checkbox"].includes(n.type) && (a.options = e.options), ["input", "select", "textarea"].includes(n.type) && (a.placeholder = e.placeholder), n.type === "rate" && (a.defaultProps || (a.defaultProps = {}), a.defaultProps.count = e.count, a.defaultProps.allowHalf = e.allowHalf), n.type === "matrix-scale" && (a.defaultProps || (a.defaultProps = {}), a.defaultProps.level = e.level), n.type === "uploader" && (a.defaultProps || (a.defaultProps = {}), a.defaultProps.extraData || (a.defaultProps.extraData = {}), a.defaultProps.maxNum = e.maxNum, a.defaultProps.extraData.type = e.privacy);
}, Es = /* @__PURE__ */ Ce({
name: "NewbieFormDesigner",
props: {
/**
* 标题
*/
title: {
type: String,
default: ""
},
/**
* @typedef {Object} FormDesignerWidget
* @property {string} name 组件名称
* @property {string} type 组件实际类型
* @property {string} [icon] 组件图标
* @property {Object} [props] 组件的预设配置
**/
/**
*
* 额外的业务组件
*
* @typedef {Object|Array} FormDesignerWidgetGroup
* @property {string} [title] 分组标题
* @property {Array.<FormDesignerWidget>} children 组件类型
*/
widgets: {
type: Array,
default: () => []
},
/**
* 表单项
*
* @typedef {Object|Array} FormDesignerFormItemConfig
* @property {string} key 表单项的唯一标识
* @property {string} type 表单项的类型
* @property {string} title 表单项的标题
* @property
*/
formItems: {
type: [Array, Function],
default: () => []
},
/**
* 组件高度
*/
height: {
type: [String, Number],
default: "100%"
}
},
emits: ["submit"],
setup(e, {
emit: n
}) {
const a = j(null), o = Ue({
submitForm: {},
painterItems: [],
//由于Draggable只能纯粹Copy原来的数据,需要定义另外一个处理后的数组负责渲染
dragOptions: {
animation: 200,
group: "designer",
disabled: !1,
ghostClass: "ghost"
},
isDragging: !1,
currentItem: null,
currentIndex: null,
propsFormData: {},
showOptionsModal: !1,
showValueOptionsModal: !1,
currentOptionItem: null,
optionsValue: "",
rateValue: ""
}), t = () => {
let l = [];
$(e.formItems) ? l = e.formItems() : l = ve(e.formItems), o.painterItems = l.map((b) => ({
key: b.key,
type: b.type,
name: b.title,
props: b
}));
};
q(() => e.formItems, () => t(), {
deep: !0
}), t();
const c = ks.concat(e.widgets).map((l) => (be(l) && (l = {
children: l
}), l)), d = j(c), i = (l) => {
const b = ve(l);
return b.key = Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2), b.props || (b.props = {}), b.props.title = b.props.title || b.name, b.props.key = b.key, b.props.type = b.type, b.props.placeholder = " - ", b;
}, r = (l) => {
const b = i(l);
o.painterItems.push(b), s(o.painterItems.length - 1);
}, s = (l) => {
o.currentItem = o.painterItems[l], o.currentIndex = l, o.propsFormData = xs(o.painterItems[l]);
}, u = ({
newIndex: l
}) => {
l === 0 && s(0);
}, g = (l) => {
var b;
o.painterItems[l].key === ((b = o.currentItem) == null ? void 0 : b.key) && (o.currentItem = null, o.currentIndex = null), o.painterItems.splice(l, 1);
}, y = (l) => {
var b, S, O;
if (o.currentOptionItem = l, o.currentItem.type.startsWith("rate-")) {
let w = "", P = "";
const C = ((b = o.currentItem) == null ? void 0 : b.props[l.key]) || [];
C.forEach((k, E) => {
Le(k) ? (w += k.value, P += k.rate ? String(k.rate) : "") : w += k, E < C.length - 1 && (w += `
`, P += `
`);
}), o.optionsValue = w, o.rateValue = P, o.showValueOptionsModal = !0;
} else
o.optionsValue = (O = (S = o.currentItem) == null ? void 0 : S.props[l.key]) == null ? void 0 : O.join(`
`), o.showOptionsModal = !0;
}, x = () => {
if (!o.optionsValue.trim()) {
fe.warn("请至少设置一个选项");
return;
}
if (!o.currentOptionItem)
return;
const l = o.optionsValue.split(`
`).filter((b) => b.trim());
if (!Kn(l, Lo(l))) {
fe.warn("选项有重复,请检查数据");
return;
}
o.currentItem.props || (o.currentItem.props = {}), o.currentItem.props[o.currentOptionItem.key] = l, o.showOptionsModal = !1;
}, f = () => {
if (!o.optionsValue.trim()) {
fe.warn("请至少设置一个选项");
return;
}
if (!o.currentOptionItem)
return;
const l = o.optionsValue.split(`
`).filter((S) => S.trim()), b = o.rateValue.split(`
`);
if (!Kn(l, Lo(l))) {
fe.warn("选项有重复,请检查数据");
return;
}
o.currentItem.props || (o.currentItem.props = {}), o.currentItem.props[o.currentOptionItem.key] = l.map((S, O) => ({
label: S,
value: S,
rate: b[O] ? String(b[O]).trim() : 0
})), o.showOptionsModal = !1, o.showValueOptionsModal = !1;
}, h = (l) => {
const {
key: b
} = l;
b === "increase" ? o.rateValue = o.optionsValue.split(`
`).map((S, O) => O + 1).join(`
`) : o.rateValue = o.rateValue.split(`
`).map((S) => !isNaN(S) && !isNaN(parseFloat(S)) ? b === "add1" ? Number(S) + 1 : Number(S) - 1 : S).join(`
`);
}, v = () => {
n("submit", o.painterItems.map((l) => l.props));
}, p = X(() => {
var l;
return (l = a.value) == null ? void 0 : l.getForm();
});
return q(() => p.value, (l) => {
Ss(l, o.currentItem);
}, {
deep: !0
}), () => {
const l = () => d.value.map((C) => m("div", {
class: "widget-list-container"
}, [m("div", {
class: "widget-list-title"
}, [C.title || "默认"]), m(qa, {
tag: "div",
list: C.children,
sort: !1,
group: {
name: "designer",
pull: "clone",
put: !1
},
clone: i,
handle: ".drag-handle",
class: "widget-list",
itemKey: "name"
}, {
item: ({
element: k
}) => m(te, {
class: "widget-item drag-handle",
onClick: () => r(k)
}, {
default: () => [k.icon ? m("span", {
role: "img",
class: "widget-icon"
}, [$(k.icon) ? k.icon() : k.icon]) : null, m("span", {
class: "widget-name"
}, [k.name])]
})
})])), b = () => m("div", {
class: "newbie-form-designer__widget-container"
}, [m("div", {
class: "widget-container"
}, [l()])]), S = () => m("div", {
class: "newbie-form-designer__painter-container"
}, [m(ga, {
labelCol: {
span: 24
},
wrapperCol: {
span: 24
},
model: o.submitForm,
labelAlign: "left",
class: "newbie-form"
}, {
default: () => [e.title ? m("div", {
class: "painter-title"
}, [e.title]) : null, o.painterItems.length ? null : m("div", {
class: "newbie-form-designer__help-wrapper"
}, [m("p", null, [m(Ud, {
style: {
marginRight: "4px"
}
}, null), he("请点击或者拖拽左侧组件至下面区域生成表单")])]), m(xt, null, {
default: () => [m(qa, H({
list: o.painterItems,
class: "painter-wrapper",
handle: ".painter-item",
itemKey: "key",
key: "key"
}, o.dragOptions, {
onStart: () => o.isDragging = !0,
onEnd: () => o.isDragging = !1,
onAdd: u
}), {
item: ({
element: C,
index: k
}) => {
var D;
const E = String(k + 1).padStart(2, "0") + ".";
return m("div", {
class: `painter-item ${((D = o.currentItem) == null ? void 0 : D.key) === C.key ? "active" : ""}`,
key: C.key,
onClick: () => s(k)
}, [m("div", {
class: "drag-handle"
}, [m(Vd, null, null)]), m("div", {
class: "op-container"
}, [m("div", {
class: "op-item",
onClick: to(() => g(k), ["stop"])
}, [m(fn, {
title: "删除"
}, {
default: () => [m(Lt, null, null)]
})])]), C.props.break ? m(xn, null, {
default: () => "分页栏"
}) : null, Yn({
formItemProps: {
slots: {
label: () => m("div", {
class: "item-label"
}, [m("span", {
class: "item-index"
}, [E]), m("span", {
class: "item-name"
}, [C.props.title])])
}
},
...C.props
}, o.submitForm, {
props: {}
})]);
}
})]
}), o.painterItems.length ? m("div", {
class: "newbie-form-designer__submit-wrapper"
}, [m(te, {
type: "primary",
onClick: v
}, {
default: () => [he("保存")]
})]) : null]
})]), O = () => m("div", {
class: "newbie-form-designer__props-container"
}, [o.currentItem ? [m("div", {
class: "widget-name"
}, [o.currentItem.icon ? m("span", {
role: "img",
class: "widget-icon"
}, [$(o.currentItem.icon) ? o.currentItem.icon() : o.currentItem.icon]) : null, o.currentItem.name]), m(Rc, {
ref: a,
form: () => Cs(o.currentItem),
cardWrapper: !1,
closable: !1,
data: o.propsFormData
}, {
options: ({
item: C
}) => m(Ka, {
label: C.title
}, {
default: () => m(te, {
type: "primary",
onClick: () => y(C)
}, {
default: () => "设置选项"
})
}),
rows: ({
item: C
}) => m(Ka, {
label: C.title
}, {
default: () => m(te, {
type: "primary",
onClick: () => y(C)
}, {
default: () => "设置行标题"
})
})
})] : m("div", {
class: "empty-props"
}, [m(dd, {
description: "未选择中填写项"
}, null)])]), w = () => m(dn, {
open: o.showOptionsModal,
"onUpdate:open": (C) => o.showOptionsModal = C,
title: "选项设置",
onOk: x
}, {
default: () => [m(No, {
message: "每行一个选项,且选项不能重复",
style: {
marginBottom: "10px"
}
}, null), m(na, {
value: o.optionsValue,
"onUpdate:value": (C) => o.optionsValue = C,
placeholder: `每行一个选项,如:
选项一
选项二`,
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)]
}), P = () => m(dn, {
open: o.showValueOptionsModal,
"onUpdate:open": (C) => o.showValueOptionsModal = C,
title: "选项设置",
onOk: f
}, {
default: () => [m(No, {
message: "每行一个选项,且选项不能重复",
style: {
marginBottom: "10px"
}
}, null), m(wn, {
gutter: 8
}, {
default: () => [m(nn, {
span: 14
}, {
default: () => [m("div", null, [he("选项")]), m(na, {
value: o.optionsValue,
"onUpdate:value": (C) => o.optionsValue = C,
placeholder: `每行一个选项,如:
选项一
选项二`,
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)]
}), m(nn, {
span: 10
}, {
default: () => [m(so, null, {
default: () => m("div", null, [m("a", {
class: "ant-dropdown-link"
}, [he("分值(不填代表0分)"), m(go, {
style: {
marginLeft: "4px",
fontSize: "12px"
}
}, null)])]),
overlay: () => m(uo, {
onClick: h
}, {
default: () => [m(Mn, {
key: "increase"
}, {
default: () => "分数从 1 开始顺序递增"
}), m(Mn, {
key: "add1"
}, {
default: () => "选项分数全部加 1"
}), m(Mn, {
key: "minus1"
}, {
default: () => "选项分数全部减 1"
})]
})
}), m(na, {
value: o.rateValue,
"onUpdate:value": (C) => o.rateValue = C,
placeholder: `每行一个对应分值,如:
1
2`,
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)]
})]
})]
});
return m("div", {
class: "newbie-form-designer",
style: {
height: we(e.height)
}
}, [b(), S(), O(), w(), P()]);
};
}
}), Os = Te(Es), pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
NewbieAddress: Kd,
NewbieButton: Wd,
NewbieEditor: ar,
NewbieForm: ms,
NewbieFormDesigner: Os,
NewbieList: ps,
NewbieModal: hs,
NewbiePassword: vs,
NewbieProvider: ys,
NewbieSearch: bs,
NewbieTable: Ji,
NewbieUploader: ws,
useAddressFullCode: Hd,
useTableActions: Gi,
useTableFile: Zi,
useTableImage: Lc
}, Symbol.toStringTag, { value: "Module" })), Ns = {
install(e) {
for (const n in pt) {
const a = pt[n];
e.use(a);
}
},
/**
* 用于配置一些全局的工具参数
* @param httpStatus
*/
config({ httpStatus: e }) {
e && Object.keys(e).length && md(e);
}
};
export {
Kd as NewbieAddress,
Wd as NewbieButton,
ar as NewbieEditor,
ms as NewbieForm,
Os as NewbieFormDesigner,
ps as NewbieList,
hs as NewbieModal,
vs as NewbiePassword,
ys as NewbieProvider,
bs as NewbieSearch,
Ji as NewbieTable,
ws as NewbieUploader,
Ns as default,
Hd as useAddressFullCode,
Gi as useTableActions,
Zi as useTableFile,
Lc as useTableImage
};
//# sourceMappingURL=jobsys-newbie.js.map