UNPKG

jobsys-newbie

Version:

Enhanced component based on ant-design-vue

9,188 lines 422 kB
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