@robot-admin/naive-ui-components 0.10.3 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +111 -100
- package/LICENSE +21 -21
- package/README.md +463 -318
- package/README_EN.md +404 -0
- package/SECURITY.md +23 -0
- package/dist/C_ActionBar.cjs +1 -1
- package/dist/C_ActionBar.css +46 -48
- package/dist/C_ActionBar.d.cts +1 -1
- package/dist/C_ActionBar.js +1 -1
- package/dist/C_ActionBar2.cjs +1 -0
- package/dist/C_ActionBar2.js +1 -2
- package/dist/C_AntV.cjs +1 -1
- package/dist/C_AntV.css +3 -3
- package/dist/C_AntV.d.cts +1 -1
- package/dist/C_AntV.js +1 -1
- package/dist/C_AntV2.cjs +4 -0
- package/dist/C_AntV2.js +3 -4
- package/dist/C_AudioPlayer.cjs +1 -1
- package/dist/C_AudioPlayer.css +15 -7
- package/dist/C_AudioPlayer.d.cts +1 -1
- package/dist/C_AudioPlayer.js +1 -1
- package/dist/C_AudioPlayer2.cjs +1 -0
- package/dist/C_AudioPlayer2.js +1 -2
- package/dist/C_AvatarGroup.cjs +1 -1
- package/dist/C_AvatarGroup.css +15 -7
- package/dist/C_AvatarGroup.d.cts +1 -1
- package/dist/C_AvatarGroup2.cjs +1 -0
- package/dist/C_AvatarGroup2.js +1 -2
- package/dist/C_Barcode.cjs +1 -1
- package/dist/C_Barcode.css +0 -2
- package/dist/C_Barcode.d.cts +1 -1
- package/dist/C_Barcode2.cjs +1 -0
- package/dist/C_Barcode2.js +1 -2
- package/dist/C_Breadcrumb.cjs +1 -1
- package/dist/C_Breadcrumb.css +0 -2
- package/dist/C_Breadcrumb.d.cts +2 -2
- package/dist/C_Breadcrumb.d.ts +1 -2
- package/dist/C_Breadcrumb.js +1 -1
- package/dist/C_Breadcrumb2.cjs +1 -0
- package/dist/C_Breadcrumb2.js +1 -2
- package/dist/C_Captcha.cjs +1 -1
- package/dist/C_Captcha.css +46 -21
- package/dist/C_Captcha.d.cts +3 -2
- package/dist/C_Captcha.d.ts +3 -2
- package/dist/C_Captcha.js +1 -1
- package/dist/C_Captcha2.cjs +1 -0
- package/dist/C_Captcha2.js +1 -2
- package/dist/C_Cascade.cjs +1 -1
- package/dist/C_Cascade.css +0 -2
- package/dist/C_Cascade.d.cts +1 -1
- package/dist/C_Cascade.d.ts +1 -1
- package/dist/C_Cascade2.cjs +1 -0
- package/dist/C_Cascade2.js +1 -2
- package/dist/C_Chat.cjs +1 -1
- package/dist/C_Chat.css +0 -2
- package/dist/C_Chat.d.cts +1 -1
- package/dist/C_Chat.d.ts +1 -1
- package/dist/C_Chat.js +1 -1
- package/dist/C_Chat2.cjs +1 -0
- package/dist/C_Chat2.js +1 -2
- package/dist/C_City.cjs +1 -1
- package/dist/C_City.css +28 -30
- package/dist/C_City.d.cts +1 -1
- package/dist/C_City.d.ts +1 -1
- package/dist/C_City2.cjs +1 -0
- package/dist/C_City2.js +1 -2
- package/dist/C_Code.cjs +1 -1
- package/dist/C_Code.css +241 -4
- package/dist/C_Code.d.cts +1 -1
- package/dist/C_Code.d.ts +1 -1
- package/dist/C_Code.js +1 -1
- package/dist/C_Code2.cjs +1 -0
- package/dist/C_Code2.js +1 -2
- package/dist/C_CollapsePanel.cjs +1 -1
- package/dist/C_CollapsePanel.css +12 -6
- package/dist/C_CollapsePanel.d.cts +1 -1
- package/dist/C_CollapsePanel.js +1 -1
- package/dist/C_CollapsePanel2.cjs +1 -0
- package/dist/C_CollapsePanel2.js +1 -2
- package/dist/C_ContextMenu.cjs +1 -1
- package/dist/C_ContextMenu.css +16 -18
- package/dist/C_ContextMenu.d.cts +1 -1
- package/dist/C_ContextMenu.d.ts +1 -1
- package/dist/C_ContextMenu.js +1 -1
- package/dist/C_ContextMenu2.cjs +1 -0
- package/dist/C_ContextMenu2.js +1 -2
- package/dist/C_Cron.cjs +1 -1
- package/dist/C_Cron.css +18 -8
- package/dist/C_Cron.d.cts +1 -1
- package/dist/C_Cron.js +1 -1
- package/dist/C_Cron2.cjs +1 -0
- package/dist/C_Cron2.js +1 -2
- package/dist/C_Date.cjs +1 -1
- package/dist/C_Date.css +1 -0
- package/dist/C_Date.d.cts +2 -2
- package/dist/C_Date.d.ts +2 -2
- package/dist/C_Date2.cjs +1 -0
- package/dist/C_Date2.js +1 -2
- package/dist/C_Draggable.cjs +1 -1
- package/dist/C_Draggable.css +9 -5
- package/dist/C_Draggable.d.cts +1 -1
- package/dist/C_Draggable2.cjs +1 -0
- package/dist/C_Draggable2.js +1 -2
- package/dist/C_Editor.cjs +1 -1
- package/dist/C_Editor.css +80 -67
- package/dist/C_Editor.d.cts +1 -1
- package/dist/C_Editor.d.ts +1 -1
- package/dist/C_Editor2.cjs +1 -0
- package/dist/C_Editor2.js +1 -2
- package/dist/C_FilePreview.cjs +1 -1
- package/dist/C_FilePreview.css +0 -2
- package/dist/C_FilePreview.d.cts +1 -1
- package/dist/C_FilePreview.js +1 -1
- package/dist/C_FilePreview2.cjs +1 -0
- package/dist/C_FilePreview2.js +1 -2
- package/dist/C_Form.base.css +980 -0
- package/dist/C_Form.cjs +1 -1
- package/dist/C_Form.css +256 -155
- package/dist/C_Form.d.cts +2 -2
- package/dist/C_Form.d.ts +2 -2
- package/dist/C_Form.js +1 -1
- package/dist/C_Form2.cjs +1 -0
- package/dist/C_Form2.js +1 -2
- package/dist/C_FormSearch.cjs +1 -1
- package/dist/C_FormSearch.css +47 -47
- package/dist/C_FormSearch.d.cts +2 -2
- package/dist/C_FormSearch.d.ts +2 -2
- package/dist/C_FormSearch2.cjs +1 -0
- package/dist/C_FormSearch2.js +1 -2
- package/dist/C_FormulaEditor.cjs +1 -1
- package/dist/C_FormulaEditor.css +64 -38
- package/dist/C_FormulaEditor.d.cts +1 -1
- package/dist/C_FormulaEditor.js +1 -1
- package/dist/C_FormulaEditor2.cjs +2 -0
- package/dist/C_FormulaEditor2.js +2 -2
- package/dist/C_FullCalendar.cjs +1 -1
- package/dist/C_FullCalendar.css +0 -2
- package/dist/C_FullCalendar.d.cts +1 -1
- package/dist/C_FullCalendar2.cjs +1 -0
- package/dist/C_FullCalendar2.js +1 -2
- package/dist/C_GlobalSearch.cjs +1 -1
- package/dist/C_GlobalSearch.css +111 -113
- package/dist/C_GlobalSearch.d.cts +1 -1
- package/dist/C_GlobalSearch2.cjs +1 -0
- package/dist/C_GlobalSearch2.js +1 -2
- package/dist/C_Guide.cjs +1 -1
- package/dist/C_Guide.css +1 -0
- package/dist/C_Guide.d.cts +1 -1
- package/dist/C_Guide.d.ts +1 -1
- package/dist/C_Guide.js +1 -1
- package/dist/C_Guide2.cjs +1 -0
- package/dist/C_Guide2.js +1 -2
- package/dist/C_Icon.cjs +1 -1
- package/dist/C_Icon.css +58 -0
- package/dist/C_Icon.d.cts +1 -1
- package/dist/C_Icon.d.ts +1 -1
- package/dist/C_Icon2.cjs +1 -0
- package/dist/C_Icon2.js +1 -2
- package/dist/C_ImageCropper.cjs +1 -1
- package/dist/C_ImageCropper.css +0 -2
- package/dist/C_ImageCropper.d.cts +1 -1
- package/dist/C_ImageCropper.js +1 -1
- package/dist/C_ImageCropper2.cjs +1 -0
- package/dist/C_ImageCropper2.js +1 -2
- package/dist/C_Language.cjs +1 -1
- package/dist/C_Language.css +1 -0
- package/dist/C_Language.d.cts +1 -1
- package/dist/C_Language.d.ts +1 -1
- package/dist/C_Language.js +1 -1
- package/dist/C_Language2.cjs +1 -0
- package/dist/C_Language2.js +1 -2
- package/dist/C_Login.cjs +1 -1
- package/dist/C_Login.css +92 -76
- package/dist/C_Login.d.cts +1 -1
- package/dist/C_Login.d.ts +1 -1
- package/dist/C_Login.js +1 -1
- package/dist/C_Login2.cjs +1 -0
- package/dist/C_Login2.js +1 -2
- package/dist/C_Map.cjs +1 -1
- package/dist/C_Map.css +665 -5
- package/dist/C_Map.d.cts +1 -1
- package/dist/C_Map2.cjs +1 -0
- package/dist/C_Map2.js +1 -2
- package/dist/C_Markdown.cjs +1 -1
- package/dist/C_Markdown.css +940 -35
- package/dist/C_Markdown.d.cts +1 -1
- package/dist/C_Markdown.d.ts +1 -1
- package/dist/C_Markdown2.cjs +1 -0
- package/dist/C_Markdown2.js +1 -2
- package/dist/C_Menu.cjs +1 -1
- package/dist/C_Menu.css +1 -0
- package/dist/C_Menu.d.cts +3 -3
- package/dist/C_Menu.d.ts +3 -4
- package/dist/C_Menu.js +1 -1
- package/dist/C_Menu2.cjs +1 -0
- package/dist/C_Menu2.js +1 -2
- package/dist/C_NotificationCenter.cjs +1 -1
- package/dist/C_NotificationCenter.css +95 -47
- package/dist/C_NotificationCenter.d.cts +1 -1
- package/dist/C_NotificationCenter.js +1 -1
- package/dist/C_NotificationCenter2.cjs +1 -0
- package/dist/C_NotificationCenter2.js +1 -2
- package/dist/C_OrgChart.cjs +1 -1
- package/dist/C_OrgChart.css +6 -4
- package/dist/C_OrgChart.d.cts +1 -1
- package/dist/C_OrgChart.d.ts +1 -1
- package/dist/C_OrgChart2.cjs +1 -0
- package/dist/C_OrgChart2.js +1 -2
- package/dist/C_Progress.cjs +1 -1
- package/dist/C_Progress.css +1 -0
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_Progress2.cjs +1 -0
- package/dist/C_Progress2.js +1 -2
- package/dist/C_QRCode.cjs +1 -1
- package/dist/C_QRCode.css +8 -10
- package/dist/C_QRCode.d.cts +1 -1
- package/dist/C_QRCode2.cjs +1 -0
- package/dist/C_QRCode2.js +1 -2
- package/dist/C_Signature.cjs +1 -1
- package/dist/C_Signature.css +0 -2
- package/dist/C_Signature.d.cts +1 -1
- package/dist/C_Signature.js +1 -1
- package/dist/C_Signature2.cjs +1 -0
- package/dist/C_Signature2.js +1 -2
- package/dist/C_Skeleton.cjs +1 -1
- package/dist/C_Skeleton.css +0 -2
- package/dist/C_Skeleton.d.cts +1 -1
- package/dist/C_Skeleton.d.ts +1 -1
- package/dist/C_Skeleton2.cjs +1 -0
- package/dist/C_Skeleton2.js +1 -2
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +27 -11
- package/dist/C_SplitPane.d.cts +1 -1
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -0
- package/dist/C_SplitPane2.js +1 -2
- package/dist/C_Steps.cjs +1 -1
- package/dist/C_Steps.css +37 -39
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_Steps2.cjs +1 -0
- package/dist/C_Steps2.js +1 -2
- package/dist/C_Table.base.css +1588 -0
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +1202 -112
- package/dist/C_Table.d.cts +2 -2
- package/dist/C_Table.d.ts +11 -2
- package/dist/C_Table.js +1 -1
- package/dist/C_TagsView.cjs +1 -1
- package/dist/C_TagsView.css +44 -40
- package/dist/C_TagsView.d.cts +2 -2
- package/dist/C_TagsView.d.ts +2 -3
- package/dist/C_TagsView.js +1 -1
- package/dist/C_TagsView2.cjs +1 -0
- package/dist/C_TagsView2.js +1 -2
- package/dist/C_Theme.cjs +1 -1
- package/dist/C_Theme.css +1 -0
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_Theme.js +1 -1
- package/dist/C_Theme2.cjs +1 -0
- package/dist/C_Theme2.js +1 -2
- package/dist/C_Time.cjs +1 -1
- package/dist/C_Time.css +0 -2
- package/dist/C_Time.d.cts +2 -2
- package/dist/C_Time.d.ts +2 -2
- package/dist/C_Time2.cjs +1 -0
- package/dist/C_Time2.js +1 -2
- package/dist/C_Timeline.cjs +1 -1
- package/dist/C_Timeline.css +44 -46
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.js +1 -1
- package/dist/C_Timeline2.cjs +1 -0
- package/dist/C_Timeline2.js +1 -2
- package/dist/C_Transfer.cjs +1 -1
- package/dist/C_Transfer.css +21 -9
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.js +1 -1
- package/dist/C_Transfer2.cjs +1 -0
- package/dist/C_Transfer2.js +1 -2
- package/dist/C_Tree.cjs +1 -1
- package/dist/C_Tree.css +0 -2
- package/dist/C_Tree.d.cts +1 -1
- package/dist/C_Tree.js +1 -1
- package/dist/C_Tree2.cjs +1 -0
- package/dist/C_Tree2.js +1 -2
- package/dist/C_Upload.cjs +1 -1
- package/dist/C_Upload.css +17 -17
- package/dist/C_Upload.d.cts +1 -1
- package/dist/C_Upload.js +1 -1
- package/dist/C_Upload2.cjs +1 -0
- package/dist/C_Upload2.js +1 -25
- package/dist/C_VideoPlayer.cjs +1 -1
- package/dist/C_VideoPlayer.css +35 -24
- package/dist/C_VideoPlayer.d.cts +2 -2
- package/dist/C_VideoPlayer.d.ts +2 -2
- package/dist/C_VideoPlayer.js +1 -1
- package/dist/C_VideoPlayer2.cjs +3 -0
- package/dist/C_VideoPlayer2.js +3 -4
- package/dist/C_VtableGantt.cjs +1 -1
- package/dist/C_VtableGantt.css +15 -7
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +1 -1
- package/dist/C_VtableGantt.js +1 -1
- package/dist/C_VtableGantt2.cjs +1 -0
- package/dist/C_VtableGantt2.js +1 -2
- package/dist/C_WaterFall.cjs +1 -1
- package/dist/C_WaterFall.css +15 -17
- package/dist/C_WaterFall.d.cts +1 -1
- package/dist/C_WaterFall2.cjs +1 -0
- package/dist/C_WaterFall2.js +1 -2
- package/dist/C_WorkFlow.cjs +1 -1
- package/dist/C_WorkFlow.css +257 -197
- package/dist/C_WorkFlow.d.cts +1 -1
- package/dist/C_WorkFlow.js +1 -1
- package/dist/C_WorkFlow2.cjs +1 -0
- package/dist/C_WorkFlow2.js +1 -2
- package/dist/city.cjs +1 -0
- package/dist/city.js +1 -2
- package/dist/config.cjs +1 -0
- package/dist/config.d.cts +33 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.js +1 -0
- package/dist/constants.d.cts +272 -0
- package/dist/constants.d.ts +6 -7
- package/dist/constants2.d.cts +177 -0
- package/dist/constants2.d.ts +5 -6
- package/dist/constants3.d.cts +479 -0
- package/dist/constants3.d.ts +17 -13
- package/dist/constants4.d.cts +420 -0
- package/dist/constants4.d.ts +30 -40
- package/dist/constants5.d.cts +491 -0
- package/dist/constants5.d.ts +22 -6
- package/dist/data.cjs +1 -0
- package/dist/data.d.cts +67 -0
- package/dist/data.d.ts +13 -13
- package/dist/data.js +1 -0
- package/dist/export-helper.cjs +1 -0
- package/dist/helpers.cjs +1 -0
- package/dist/helpers.js +1 -0
- package/dist/html.cjs +1 -0
- package/dist/html.js +1 -0
- package/dist/images/marker-icon-2x.png +0 -0
- package/dist/images/marker-icon.png +0 -0
- package/dist/images/marker-shadow.png +0 -0
- package/dist/index.cjs +1 -2
- package/dist/index.d.cts +60 -99
- package/dist/index.d.ts +41 -83
- package/dist/index.js +1 -2
- package/dist/index.vue.d.cts +79 -0
- package/dist/index.vue.d.ts +3 -4
- package/dist/index10.vue.d.cts +47 -0
- package/dist/index10.vue.d.ts +80 -40
- package/dist/index11.vue.d.cts +88 -0
- package/dist/index11.vue.d.ts +68 -78
- package/dist/index12.vue.d.cts +79 -0
- package/dist/index12.vue.d.ts +49 -45
- package/dist/index13.vue.d.cts +64 -0
- package/dist/index13.vue.d.ts +99 -34
- package/dist/index14.vue.d.cts +106 -0
- package/dist/index14.vue.d.ts +82 -99
- package/dist/index15.vue.d.cts +91 -0
- package/dist/index15.vue.d.ts +25 -83
- package/dist/index16.vue.d.cts +34 -0
- package/dist/index16.vue.d.ts +113 -24
- package/dist/index17.vue.d.cts +124 -0
- package/dist/index17.vue.d.ts +76 -110
- package/dist/index18.vue.d.cts +83 -0
- package/dist/index18.vue.d.ts +67 -73
- package/dist/index19.vue.d.cts +101 -0
- package/dist/index19.vue.d.ts +93 -59
- package/dist/index2.vue.d.cts +82 -0
- package/dist/index2.vue.d.ts +1 -2
- package/dist/index20.vue.d.cts +54 -0
- package/dist/index20.vue.d.ts +40 -88
- package/dist/index21.vue.d.cts +103 -0
- package/dist/index21.vue.d.ts +89 -41
- package/dist/index22.vue.d.cts +45 -0
- package/dist/index22.vue.d.ts +37 -96
- package/dist/index23.vue.d.cts +19 -0
- package/dist/index23.vue.d.ts +8 -35
- package/dist/{index28.vue.d.ts → index24.vue.d.cts} +5 -6
- package/dist/index24.vue.d.ts +650 -86
- package/dist/index25.vue.d.cts +96 -0
- package/dist/index25.vue.d.ts +86 -10
- package/dist/index26.vue.d.cts +111 -0
- package/dist/index26.vue.d.ts +3 -4
- package/dist/index27.vue.d.cts +80 -0
- package/dist/index27.vue.d.ts +3 -4
- package/dist/index3.vue.d.cts +87 -0
- package/dist/index3.vue.d.ts +2 -3
- package/dist/index4.vue.d.cts +37 -0
- package/dist/index4.vue.d.ts +5 -6
- package/dist/index5.vue.d.cts +133 -0
- package/dist/index5.vue.d.ts +2 -3
- package/dist/index6.vue.d.cts +29 -0
- package/dist/index6.vue.d.ts +25 -38
- package/dist/index7.vue.d.cts +32 -0
- package/dist/index7.vue.d.ts +117 -23
- package/dist/index8.vue.d.cts +127 -0
- package/dist/index8.vue.d.ts +17 -111
- package/dist/index9.vue.d.cts +34 -0
- package/dist/index9.vue.d.ts +38 -26
- package/dist/{menuAdapter.d.ts → public.d.ts} +2 -3
- package/dist/resolver.cjs +1 -2
- package/dist/resolver.d.cts +6 -4
- package/dist/resolver.d.ts +6 -4
- package/dist/resolver.js +1 -2
- package/dist/storage.cjs +1 -0
- package/dist/storage.js +1 -2
- package/dist/style.css +9864 -7702
- package/dist/types.d.cts +107 -0
- package/dist/types.d.ts +58 -0
- package/dist/types2.d.cts +58 -0
- package/dist/useCalendarEvents.d.cts +150 -0
- package/dist/useCalendarEvents.d.ts +3 -4
- package/dist/useCollapsePanel.d.cts +133 -0
- package/dist/useCollapsePanel.d.ts +1 -2
- package/dist/useCropperCore.d.cts +104 -0
- package/dist/useCropperCore.d.ts +12 -10
- package/dist/useDraggableLayout.d.cts +196 -0
- package/dist/useDraggableLayout.d.ts +18 -16
- package/dist/useDynamicFormState.d.cts +749 -0
- package/dist/useDynamicFormState.d.ts +234 -112
- package/dist/useEdgeInteraction.d.cts +324 -0
- package/dist/useEdgeInteraction.d.ts +6 -7
- package/dist/useFullscreen.d.cts +165 -0
- package/dist/useFullscreen.d.ts +1 -2
- package/dist/useGlobalSearch.d.cts +110 -0
- package/dist/useGlobalSearch.d.ts +17 -9
- package/dist/useInfiniteScroll.d.cts +177 -0
- package/dist/useInfiniteScroll.d.ts +11 -3
- package/dist/useQRCode.d.cts +89 -0
- package/dist/useQRCode.d.ts +7 -5
- package/dist/useSearchState.d.cts +871 -0
- package/dist/useSearchState.d.ts +828 -28
- package/dist/useSignatureHistory.d.cts +197 -0
- package/dist/useSignatureHistory.d.ts +9 -4
- package/dist/useSplitResize.d.cts +157 -0
- package/dist/useSplitResize.d.ts +3 -4
- package/dist/useTableQuery.cjs +3 -0
- package/dist/{useModalEdit.d.ts → useTableQuery.d.cts} +624 -211
- package/dist/useTableQuery.d.ts +1721 -0
- package/dist/useTableQuery.js +3 -0
- package/dist/useTimeSelection.d.cts +116 -0
- package/dist/useTimeSelection.d.ts +19 -8
- package/dist/useTreeOperations.d.cts +185 -0
- package/dist/useTreeOperations.d.ts +14 -12
- package/dist/useWorkflowValidation.d.cts +1051 -0
- package/dist/useWorkflowValidation.d.ts +66 -67
- package/dist/verification.d.cts +58 -0
- package/dist/verification.d.ts +58 -0
- package/package.json +101 -69
- package/dist/C_ActionBar-BAcfOfRw.css.map +0 -1
- package/dist/C_ActionBar-DG2HW7t5.css.map +0 -1
- package/dist/C_ActionBar.js.map +0 -1
- package/dist/C_ActionBar2.js.map +0 -1
- package/dist/C_AntV-D_jTK8oZ.css.map +0 -1
- package/dist/C_AntV-DanTAq22.css.map +0 -1
- package/dist/C_AntV.js.map +0 -1
- package/dist/C_AntV2.js.map +0 -1
- package/dist/C_AudioPlayer-BnYIJXPD.css.map +0 -1
- package/dist/C_AudioPlayer-ldTy9Y34.css.map +0 -1
- package/dist/C_AudioPlayer.js.map +0 -1
- package/dist/C_AudioPlayer2.js.map +0 -1
- package/dist/C_AvatarGroup-B9d-GJ9c.css.map +0 -1
- package/dist/C_AvatarGroup-SIzxuuZr.css.map +0 -1
- package/dist/C_AvatarGroup.js.map +0 -1
- package/dist/C_AvatarGroup2.js.map +0 -1
- package/dist/C_Barcode-CAU2mFcx.css.map +0 -1
- package/dist/C_Barcode-D2oJaEg3.css.map +0 -1
- package/dist/C_Barcode.js.map +0 -1
- package/dist/C_Barcode2.js.map +0 -1
- package/dist/C_Breadcrumb-BiH0d9AI.css.map +0 -1
- package/dist/C_Breadcrumb-Bqqrl8nX.css.map +0 -1
- package/dist/C_Breadcrumb.js.map +0 -1
- package/dist/C_Breadcrumb2.js.map +0 -1
- package/dist/C_Captcha-B3yrtG7t.css.map +0 -1
- package/dist/C_Captcha-D4hDdWDu.css.map +0 -1
- package/dist/C_Captcha.js.map +0 -1
- package/dist/C_Captcha2.js.map +0 -1
- package/dist/C_Cascade-CmCrLVft.css.map +0 -1
- package/dist/C_Cascade-U6A5AJJb.css.map +0 -1
- package/dist/C_Cascade.js.map +0 -1
- package/dist/C_Cascade2.js.map +0 -1
- package/dist/C_Chat-CF1SU7mc.css.map +0 -1
- package/dist/C_Chat-DeUv6uuI.css.map +0 -1
- package/dist/C_Chat.js.map +0 -1
- package/dist/C_Chat2.js.map +0 -1
- package/dist/C_City-DdkX6u64.css.map +0 -1
- package/dist/C_City-iP-dIvui.css.map +0 -1
- package/dist/C_City.js.map +0 -1
- package/dist/C_City2.js.map +0 -1
- package/dist/C_Code-BWmJMNS7.css.map +0 -1
- package/dist/C_Code-k14vjgVl.css.map +0 -1
- package/dist/C_Code.js.map +0 -1
- package/dist/C_Code2.js.map +0 -1
- package/dist/C_CollapsePanel-BSKcWSmY.css.map +0 -1
- package/dist/C_CollapsePanel-DRvRq8tB.css.map +0 -1
- package/dist/C_CollapsePanel.js.map +0 -1
- package/dist/C_CollapsePanel2.js.map +0 -1
- package/dist/C_ContextMenu-Bn_uhJSo.css.map +0 -1
- package/dist/C_ContextMenu-C9iuxG2n.css.map +0 -1
- package/dist/C_ContextMenu.js.map +0 -1
- package/dist/C_ContextMenu2.js.map +0 -1
- package/dist/C_Cron-BIQ2By9v.css.map +0 -1
- package/dist/C_Cron-BNSAGD6A.css.map +0 -1
- package/dist/C_Cron.js.map +0 -1
- package/dist/C_Cron2.js.map +0 -1
- package/dist/C_Date.js.map +0 -1
- package/dist/C_Date2.js.map +0 -1
- package/dist/C_Draggable-BDAbk4s5.css.map +0 -1
- package/dist/C_Draggable-UhfDLXop.css.map +0 -1
- package/dist/C_Draggable.js.map +0 -1
- package/dist/C_Draggable2.js.map +0 -1
- package/dist/C_Editor-CZOaChru.css.map +0 -1
- package/dist/C_Editor-kJAQq5z6.css.map +0 -1
- package/dist/C_Editor.js.map +0 -1
- package/dist/C_Editor2.js.map +0 -1
- package/dist/C_FilePreview-Bs_omgJS.css.map +0 -1
- package/dist/C_FilePreview-DbwoyF2j.css.map +0 -1
- package/dist/C_FilePreview.js.map +0 -1
- package/dist/C_FilePreview2.js.map +0 -1
- package/dist/C_Form-B_2ql62V.css.map +0 -1
- package/dist/C_Form-CX-7xsz3.css.map +0 -1
- package/dist/C_Form.js.map +0 -1
- package/dist/C_Form2.js.map +0 -1
- package/dist/C_FormSearch-C3F8peAY.css.map +0 -1
- package/dist/C_FormSearch-qW56bJPo.css.map +0 -1
- package/dist/C_FormSearch.js.map +0 -1
- package/dist/C_FormSearch2.js.map +0 -1
- package/dist/C_FormulaEditor-ChOvDbsZ.css.map +0 -1
- package/dist/C_FormulaEditor-mfiIUDY4.css.map +0 -1
- package/dist/C_FormulaEditor.js.map +0 -1
- package/dist/C_FormulaEditor2.js.map +0 -1
- package/dist/C_FullCalendar-C2nsqrgS.css.map +0 -1
- package/dist/C_FullCalendar-DdFtXVhy.css.map +0 -1
- package/dist/C_FullCalendar.js.map +0 -1
- package/dist/C_FullCalendar2.js.map +0 -1
- package/dist/C_GlobalSearch-Dq4Wo01K.css.map +0 -1
- package/dist/C_GlobalSearch-RB7J43gu.css.map +0 -1
- package/dist/C_GlobalSearch.js.map +0 -1
- package/dist/C_GlobalSearch2.js.map +0 -1
- package/dist/C_Guide.js.map +0 -1
- package/dist/C_Guide2.js.map +0 -1
- package/dist/C_Icon.js.map +0 -1
- package/dist/C_Icon2.js.map +0 -1
- package/dist/C_ImageCropper-CdTX2nxU.css.map +0 -1
- package/dist/C_ImageCropper-ilOqPklJ.css.map +0 -1
- package/dist/C_ImageCropper.js.map +0 -1
- package/dist/C_ImageCropper2.js.map +0 -1
- package/dist/C_Language.js.map +0 -1
- package/dist/C_Language2.js.map +0 -1
- package/dist/C_Login-B3qYkLrN.css.map +0 -1
- package/dist/C_Login-xMI1_ojE.css.map +0 -1
- package/dist/C_Login.js.map +0 -1
- package/dist/C_Login2.js.map +0 -1
- package/dist/C_Map-CWMMN58_.css.map +0 -1
- package/dist/C_Map-xSR2H-9o.css.map +0 -1
- package/dist/C_Map.js.map +0 -1
- package/dist/C_Map2.js.map +0 -1
- package/dist/C_Markdown-C7lTVJ1S.css.map +0 -1
- package/dist/C_Markdown-CZDm_baQ.css.map +0 -1
- package/dist/C_Markdown.js.map +0 -1
- package/dist/C_Markdown2.js.map +0 -1
- package/dist/C_Menu.js.map +0 -1
- package/dist/C_Menu2.js.map +0 -1
- package/dist/C_NotificationCenter-D7GGGWg7.css.map +0 -1
- package/dist/C_NotificationCenter-SSmeHA45.css.map +0 -1
- package/dist/C_NotificationCenter.js.map +0 -1
- package/dist/C_NotificationCenter2.js.map +0 -1
- package/dist/C_OrgChart-ChZu346B.css.map +0 -1
- package/dist/C_OrgChart-DqBufOv5.css.map +0 -1
- package/dist/C_OrgChart.js.map +0 -1
- package/dist/C_OrgChart2.js.map +0 -1
- package/dist/C_Progress.js.map +0 -1
- package/dist/C_Progress2.js.map +0 -1
- package/dist/C_QRCode-B_1lHUdx.css.map +0 -1
- package/dist/C_QRCode-CuQRYu0s.css.map +0 -1
- package/dist/C_QRCode.js.map +0 -1
- package/dist/C_QRCode2.js.map +0 -1
- package/dist/C_Signature-Bp-RBpAl.css.map +0 -1
- package/dist/C_Signature-Cb2VW1ok.css.map +0 -1
- package/dist/C_Signature.js.map +0 -1
- package/dist/C_Signature2.js.map +0 -1
- package/dist/C_Skeleton-BNPbaut7.css.map +0 -1
- package/dist/C_Skeleton-Djsjw8XY.css.map +0 -1
- package/dist/C_Skeleton.js.map +0 -1
- package/dist/C_Skeleton2.js.map +0 -1
- package/dist/C_SplitPane-CgGWYsRE.css.map +0 -1
- package/dist/C_SplitPane-DGf6WEeR.css.map +0 -1
- package/dist/C_SplitPane.js.map +0 -1
- package/dist/C_SplitPane2.js.map +0 -1
- package/dist/C_Steps-27Exh7PM.css.map +0 -1
- package/dist/C_Steps-DU9ZsFrs.css.map +0 -1
- package/dist/C_Steps.js.map +0 -1
- package/dist/C_Steps2.js.map +0 -1
- package/dist/C_Table--kbQaaBv.css.map +0 -1
- package/dist/C_Table-D631kdXC.css.map +0 -1
- package/dist/C_Table.js.map +0 -1
- package/dist/C_Table2.js +0 -4
- package/dist/C_Table2.js.map +0 -1
- package/dist/C_TagsView-BN8vMRsY.css.map +0 -1
- package/dist/C_TagsView-s1dnSJAV.css.map +0 -1
- package/dist/C_TagsView.js.map +0 -1
- package/dist/C_TagsView2.js.map +0 -1
- package/dist/C_Theme.js.map +0 -1
- package/dist/C_Theme2.js.map +0 -1
- package/dist/C_Time-BQ9PGy8B.css.map +0 -1
- package/dist/C_Time-CO73krC6.css.map +0 -1
- package/dist/C_Time.js.map +0 -1
- package/dist/C_Time2.js.map +0 -1
- package/dist/C_Timeline-4rk0Dzgn.css.map +0 -1
- package/dist/C_Timeline-DdESmqwL.css.map +0 -1
- package/dist/C_Timeline.js.map +0 -1
- package/dist/C_Timeline2.js.map +0 -1
- package/dist/C_Transfer-B-vjvhjI.css.map +0 -1
- package/dist/C_Transfer-EzdHzZNv.css.map +0 -1
- package/dist/C_Transfer.js.map +0 -1
- package/dist/C_Transfer2.js.map +0 -1
- package/dist/C_Tree-CsXgGfhn.css.map +0 -1
- package/dist/C_Tree-P7eRpnOa.css.map +0 -1
- package/dist/C_Tree.js.map +0 -1
- package/dist/C_Tree2.js.map +0 -1
- package/dist/C_Upload-CHjiVVh7.css.map +0 -1
- package/dist/C_Upload-DE3OLsZD.css.map +0 -1
- package/dist/C_Upload.js.map +0 -1
- package/dist/C_Upload2.js.map +0 -1
- package/dist/C_VideoPlayer-CnaNOFtW.css.map +0 -1
- package/dist/C_VideoPlayer-cnP88zNV.css.map +0 -1
- package/dist/C_VideoPlayer.js.map +0 -1
- package/dist/C_VideoPlayer2.js.map +0 -1
- package/dist/C_VtableGantt-CZlJgvpC.css.map +0 -1
- package/dist/C_VtableGantt-DKfQkql0.css.map +0 -1
- package/dist/C_VtableGantt.js.map +0 -1
- package/dist/C_VtableGantt2.js.map +0 -1
- package/dist/C_WaterFall-BJ_39ext.css.map +0 -1
- package/dist/C_WaterFall-cYc1vntE.css.map +0 -1
- package/dist/C_WaterFall.js.map +0 -1
- package/dist/C_WaterFall2.js.map +0 -1
- package/dist/C_WorkFlow-BFzRGGhJ.css.map +0 -1
- package/dist/C_WorkFlow-DSyCOvRp.css.map +0 -1
- package/dist/C_WorkFlow.js.map +0 -1
- package/dist/C_WorkFlow2.js.map +0 -1
- package/dist/_shared.cjs +0 -1
- package/dist/_shared.d.cts +0 -2
- package/dist/_shared.d.ts +0 -2
- package/dist/_shared.js +0 -1
- package/dist/city.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/menuAdapter.js +0 -2
- package/dist/menuAdapter.js.map +0 -1
- package/dist/resolver.cjs.map +0 -1
- package/dist/resolver.js.map +0 -1
- package/dist/storage.js.map +0 -1
- /package/dist/{chunk.js → chunk.cjs} +0 -0
package/dist/C_WorkFlow.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as WorkflowProps, C as WorkflowApiResponse, D as WorkflowEmits, E as WorkflowEdge, M as WorkflowUtils, O as WorkflowHistory, S as ValidationErrorType, T as WorkflowData, _ as NodeType, a as ApprovalMode, b as User, c as Condition, d as Department, f as MenuPosition, g as NodeTemplate, h as NodeStatus, i as _default, j as WorkflowStats, k as WorkflowNode, l as ConditionNodeData, m as NodeData, n as useWorkflowPreview, o as ApprovalNodeData, p as NodeConfigFormData, r as useWorkflowNodes, s as BaseNodeData, t as useWorkflowValidation, u as CopyNodeData, v as Role, w as WorkflowConfig, x as ValidationError, y as StartNodeData } from "./useWorkflowValidation.
|
|
1
|
+
import { A as WorkflowProps, C as WorkflowApiResponse, D as WorkflowEmits, E as WorkflowEdge, M as WorkflowUtils, O as WorkflowHistory, S as ValidationErrorType, T as WorkflowData, _ as NodeType, a as ApprovalMode, b as User, c as Condition, d as Department, f as MenuPosition, g as NodeTemplate, h as NodeStatus, i as _default, j as WorkflowStats, k as WorkflowNode, l as ConditionNodeData, m as NodeData, n as useWorkflowPreview, o as ApprovalNodeData, p as NodeConfigFormData, r as useWorkflowNodes, s as BaseNodeData, t as useWorkflowValidation, u as CopyNodeData, v as Role, w as WorkflowConfig, x as ValidationError, y as StartNodeData } from "./useWorkflowValidation.cjs";
|
|
2
2
|
export { type ApprovalMode, type ApprovalNodeData, type BaseNodeData, _default as C_WorkFlow, type Condition, type ConditionNodeData, type CopyNodeData, type Department, type MenuPosition, type NodeConfigFormData, type NodeData, type NodeStatus, type NodeTemplate, type NodeType, type Role, type StartNodeData, type User, type ValidationError, type ValidationErrorType, type WorkflowApiResponse, type WorkflowConfig, type WorkflowData, type WorkflowEdge, type WorkflowEmits, type WorkflowHistory, type WorkflowNode, type WorkflowProps, type WorkflowStats, type WorkflowUtils, useWorkflowNodes, useWorkflowPreview, useWorkflowValidation };
|
package/dist/C_WorkFlow.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./C_WorkFlow2.js";export{r as C_WorkFlow,e as useWorkflowNodes,t as useWorkflowPreview,n as useWorkflowValidation};
|
|
1
|
+
import"./C_Icon2.js";import{i as e,n as t,r as n,t as r}from"./C_WorkFlow2.js";export{r as C_WorkFlow,e as useWorkflowNodes,t as useWorkflowPreview,n as useWorkflowValidation};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./config.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@vue-flow/core`);const o=[{type:`approval`,label:`审批人`,icon:`mdi:account-check`,iconClass:`approval-icon`},{type:`copy`,label:`抄送人`,icon:`mdi:email-outline`,iconClass:`copy-icon`},{type:`condition`,label:`条件分支`,icon:`mdi:source-branch`,iconClass:`condition-icon`}],s=[{value:`any`,label:`或签`,desc:`任意一人同意即可通过`},{value:`all`,label:`会签`,desc:`所有人都同意才能通过`},{value:`sequence`,label:`顺序审批`,desc:`按选择顺序依次审批`}],c=[{label:`申请金额`,value:`amount`},{label:`申请人部门`,value:`department`},{label:`申请类型`,value:`type`},{label:`紧急程度`,value:`priority`}],l=[{label:`等于`,value:`equals`},{label:`大于`,value:`greater_than`},{label:`小于`,value:`less_than`},{label:`包含`,value:`contains`},{label:`不等于`,value:`not_equals`}],u={start:`发起人`,approval:`审批人`,copy:`抄送人`,condition:`条件分支`},d={approval:`审批人设置`,copy:`抄送人设置`,condition:`条件分支设置`},f={approvers:`审批人`,conditions:`条件配置`,connection:`节点连接`,copyUsers:`抄送人`},p={required:`必填`,incomplete:`不完整`,warning:`警告`,error:`错误`},m={id:`start-1`,type:`start`,position:{x:150,y:100},data:{title:`发起人`,status:`active`,initiators:[]}},h=e=>{let t=Array.from(e.trim()).slice(0,2).join(``).toUpperCase()||`?`,n=`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80"><rect width="80" height="80" rx="40" fill="hsl(${Array.from(e).reduce((e,t)=>(e*31+(t.codePointAt(0)??0))%360,210)} 55% 46%)"/><text x="40" y="48" text-anchor="middle" font-family="sans-serif" font-size="28" fill="white">${t.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}</text></svg>`;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`},g=()=>`condition-${Date.now()}`,_=(e,t)=>`edge-${e}-${t}`,v=()=>({id:g(),name:``,field:``,operator:`equals`,value:``}),y={key:0,class:`max-h-60vh overflow-y-auto`},b={class:`config-section`},x={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},S={class:`border rounded-lg p-3 mb-4 max-h-50 overflow-y-auto`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},C={key:0,class:`rounded-lg p-4 mb-4 border`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},w={class:`mb-2 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},T={class:`flex flex-wrap gap-3`},E={class:`flex items-center gap-2`},ee={class:`font-medium text-sm`},D={class:`text-xs px-1.5 py-0.5 rounded`,style:{color:`var(--n-text-color-3)`,background:`var(--n-color-embedded)`}},O={key:0,class:`mt-4`},k={class:`flex flex-col gap-1`},A={class:`text-sm`},j={class:`text-xs`,style:{color:`var(--n-text-color-3)`}},M={class:`max-h-60vh overflow-y-auto`},N={class:`config-section`},te={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},P={class:`space-y-3`},F={class:`flex items-center gap-3 flex-nowrap min-h-10 p-2`},I=(0,r.defineComponent)({__name:`NodeConfigModal`,props:{show:{type:Boolean,default:!1},currentNode:{default:null},users:{default:()=>[]},departments:{default:()=>[]}},emits:[`update:show`,`save`,`cancel`],setup(n,{emit:a}){let o=n,u=a,f=e.r(),p=(0,r.ref)(``),m=(0,r.ref)([]),g=(0,r.ref)([]),_=(0,r.ref)(`any`),I=(0,r.ref)(!1),L=(0,r.ref)([]),R=(0,r.computed)({get:()=>o.show,set:e=>u(`update:show`,e)}),z=(0,r.computed)(()=>o.currentNode?.type===`start`?`发起人设置`:d[o.currentNode?.type]||`节点设置`),B=(0,r.computed)(()=>{let e=[],t=new Map;return o.departments?.forEach(e=>{t.has(e.id)||t.set(e.id,{key:`dept-${e.id}`,label:`${e.name} ${e.manager?`(负责人: ${e.manager})`:``}`,children:[],isLeaf:!1,disabled:!0})}),(o.users?.filter(e=>!p.value||e.name.includes(p.value)||e.department.includes(p.value))||[]).forEach(e=>{let n=o.departments?.find(t=>t.name===e.department);n&&t.has(n.id)&&t.get(n.id).children.push({key:e.id,label:`${e.name}${e.role?`(${e.role})`:``}`,isLeaf:!0,user:e})}),t.forEach(t=>{t.children.length>0&&e.push(t)}),e}),V=(0,r.computed)(()=>o.users?.filter(e=>m.value.includes(e.id))||[]),H=(0,r.computed)(()=>o.users?.filter(e=>g.value.includes(e.id))||[]),U=(0,r.computed)(()=>o.users?.filter(e=>m.value.includes(e.id))||[]),W=e=>{m.value=e.filter(e=>!e.startsWith(`dept-`))},G=e=>{g.value=e.filter(e=>!e.startsWith(`dept-`))},K=e=>{m.value=m.value.filter(t=>t!==e)},q=e=>{g.value=g.value.filter(t=>t!==e)},J=e=>{m.value=m.value.filter(t=>t!==e)},Y=()=>L.value.push(v()),X=e=>L.value.splice(e,1),Z=e=>{let{initiators:t}=e.data;m.value=t?t.map(e=>e.id):[]},Q=e=>{m.value=(e.data.approvers||[]).map(e=>e.id),_.value=e.data.approvalMode||`any`},ne=e=>{g.value=(e.data.copyUsers||[]).map(e=>e.id)},re=e=>{L.value=e.data.conditions||[]},ie=async()=>{if(m.value.length===0)return f.error(`请选择发起人`),!1;let e=U.value;return u(`save`,{initiators:e}),f.success(`已设置 ${e.length} 个发起人`),!0},ae=async()=>{if(m.value.length===0)return f.error(`请至少选择一个审批人`),!1;let e=V.value;return u(`save`,{approvers:e,approvalMode:_.value}),f.success(`已设置 ${e.length} 个审批人`),!0},oe=async()=>{let e=H.value;return u(`save`,{copyUsers:e}),f.success(`已设置 ${e.length} 个抄送人`),!0},se=async()=>{if(L.value.length===0)return f.error(`请至少添加一个条件分支`),!1;let e=L.value.filter(e=>e.name&&e.field&&e.operator&&e.value);return e.length===0?(f.error(`请完善条件配置`),!1):(u(`save`,{conditions:e}),f.success(`已设置 ${e.length} 个条件分支`),!0)},ce=async()=>{if(!o.currentNode)return!1;I.value=!0;try{let e={start:ie,approval:ae,copy:oe,condition:se}[o.currentNode.type];return e?await e():!1}catch(e){return f.error(`保存配置失败`,e),!1}finally{I.value=!1}},le=()=>{u(`cancel`)};(0,r.watch)(()=>o.currentNode,e=>{if(e){p.value=``;let t={start:Z,approval:Q,copy:ne,condition:re}[e.type];t&&t(e)}},{immediate:!0});let ue=(0,r.computed)(()=>[`start`,`approval`,`copy`].includes(o.currentNode?.type||``)),$=(0,r.computed)(()=>{let e=o.currentNode?.type;return e===`start`?{icon:`mdi:account-star`,title:`选择发起人`,checkedKeys:m.value,onSelect:W,selectedUsers:U.value,selectedLabel:`已选择发起人`,tagType:`primary`,onRemove:J}:e===`approval`?{icon:`mdi:account-check`,title:`选择审批人`,checkedKeys:m.value,onSelect:W,selectedUsers:V.value,selectedLabel:`已选择审批人`,tagType:`info`,onRemove:K}:e===`copy`?{icon:`mdi:email-outline`,title:`选择抄送人`,checkedKeys:g.value,onSelect:G,selectedUsers:H.value,selectedLabel:`已选择抄送人`,tagType:`success`,onRemove:q}:{icon:``,title:``,checkedKeys:[],onSelect:()=>{},selectedUsers:[],selectedLabel:``,tagType:`default`,onRemove:()=>{}}});return(e,n)=>((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{show:R.value,"onUpdate:show":n[2]||=e=>R.value=e,style:{width:`900px`},"mask-closable":!1,preset:`dialog`,title:z.value,"positive-text":`确定`,"negative-text":`取消`,loading:I.value,onPositiveClick:ce,onNegativeClick:le},{default:(0,r.withCtx)(()=>[(0,r.createCommentVNode)(` 公共选择面板 `),ue.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,y,[(0,r.createElementVNode)(`div`,b,[(0,r.createElementVNode)(`h4`,x,[$.value.icon?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(t.t),{key:0,name:$.value.icon,size:16},null,8,[`name`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createTextVNode)(` `+(0,r.toDisplayString)($.value.title),1)]),(0,r.createVNode)((0,r.unref)(i.NInput),{value:p.value,"onUpdate:value":n[0]||=e=>p.value=e,placeholder:`搜索用户姓名或部门`,clearable:``,class:`mb-4`},{prefix:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:magnify`,size:16})]),_:1},8,[`value`]),(0,r.createElementVNode)(`div`,S,[(0,r.createVNode)((0,r.unref)(i.NTree),{data:B.value,"checked-keys":$.value.checkedKeys,selectable:!1,checkable:``,cascade:``,"virtual-scroll":!0,style:{"max-height":`300px`},"onUpdate:checkedKeys":$.value.onSelect},null,8,[`data`,`checked-keys`,`onUpdate:checkedKeys`])]),$.value.selectedUsers.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,C,[(0,r.createElementVNode)(`h5`,w,(0,r.toDisplayString)($.value.selectedLabel)+` (`+(0,r.toDisplayString)($.value.selectedUsers.length)+`) `,1),(0,r.createElementVNode)(`div`,T,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)($.value.selectedUsers,e=>((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NTag),{key:e.id,closable:``,type:$.value.tagType,onClose:t=>$.value.onRemove(e.id)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)((0,r.unref)(i.NAvatar),{src:e.avatar,"fallback-src":(0,r.unref)(h)(e.name),size:`small`},null,8,[`src`,`fallback-src`]),(0,r.createElementVNode)(`span`,ee,(0,r.toDisplayString)(e.name),1),(0,r.createElementVNode)(`span`,D,(0,r.toDisplayString)(e.department),1)])]),_:2},1032,[`type`,`onClose`]))),128))])])):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 审批节点时附带审批模式 `),o.currentNode?.type===`approval`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,O,[n[3]||=(0,r.createElementVNode)(`h5`,{class:`mb-3 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},` 审批模式 `,-1),(0,r.createVNode)((0,r.unref)(i.NRadioGroup),{value:_.value,"onUpdate:value":n[1]||=e=>_.value=e},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(i.NSpace),{vertical:``},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(s),e=>((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NRadio),{key:e.value,value:e.value},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,k,[(0,r.createElementVNode)(`strong`,A,(0,r.toDisplayString)(e.label),1),(0,r.createElementVNode)(`span`,j,(0,r.toDisplayString)(e.desc),1)])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`])])):(0,r.createCommentVNode)(`v-if`,!0)])):o.currentNode?.type===`condition`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 条件节点配置 `),(0,r.createElementVNode)(`div`,M,[(0,r.createElementVNode)(`div`,N,[(0,r.createElementVNode)(`h4`,te,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:source-branch`,size:16}),n[4]||=(0,r.createTextVNode)(` 条件分支设置 `,-1)]),(0,r.createElementVNode)(`div`,P,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(L.value,(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.id,class:`condition-item`},[(0,r.createVNode)((0,r.unref)(i.NCard),{size:`small`,class:`border border-gray-200 hover:border-gray-300 transition-colors`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,F,[(0,r.createVNode)((0,r.unref)(i.NInput),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`分支名称`,style:{width:`150px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,r.createVNode)((0,r.unref)(i.NSelect),{value:e.field,"onUpdate:value":t=>e.field=t,placeholder:`选择字段`,options:(0,r.unref)(c),style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,r.createVNode)((0,r.unref)(i.NSelect),{value:e.operator,"onUpdate:value":t=>e.operator=t,placeholder:`操作符`,options:(0,r.unref)(l),style:{width:`100px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,r.createVNode)((0,r.unref)(i.NInput),{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`值`,style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,r.createVNode)((0,r.unref)(i.NButton),{quaternary:``,type:`error`,onClick:e=>X(n),class:`flex-shrink-0 ml-auto`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:delete`,size:16})]),_:1},8,[`onClick`])])]),_:2},1024)]))),128)),(0,r.createVNode)((0,r.unref)(i.NButton),{dashed:``,block:``,onClick:Y,class:`w-full`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:plus`,size:16})]),default:(0,r.withCtx)(()=>[n[5]||=(0,r.createTextVNode)(` 添加条件 `,-1)]),_:1})])])])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]),_:1},8,[`show`,`title`,`loading`]))}}),L={class:`start-node`},R={class:`node-content`},z={class:`node-info`},B={class:`node-text`},V={key:0,class:`initiator-name`},H={key:1,class:`placeholder-text`},U=(0,r.defineComponent)({__name:`StartNode`,props:{id:{},data:{}},setup(e){let n=e,i=(0,r.inject)(`showAddMenu`),a=(0,r.computed)(()=>{let{initiators:e}=n.data;return!e||!Array.isArray(e)||e.length===0?``:e.map(e=>e?.name||`未知用户`).join(`、`)}),o=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)};return(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,L,[(0,r.createCommentVNode)(` 主要内容区域 `),(0,r.createElementVNode)(`div`,R,[i[0]||=(0,r.createElementVNode)(`div`,{class:`node-icon`},`🚀`,-1),(0,r.createElementVNode)(`div`,z,[(0,r.createElementVNode)(`div`,B,(0,r.toDisplayString)(e.data.title),1),a.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(a.value),1)):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,H,`点击设置发起人`))])]),(0,r.createCommentVNode)(` 添加节点按钮 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:o,title:`添加下一个节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var W=n.t(U,[[`__scopeId`,`data-v-1f2325ac`]]);const G={class:`approval-node`},K={class:`node-card`},q={class:`node-header`},J={class:`node-icon`},Y={class:`node-title`},X={key:0,class:`node-badge`},Z={key:1,class:`approval-mode-badge`},Q={class:`node-content`},ne={key:0,class:`approvers-list`},re={class:`approver-info`},ie={class:`approver-avatar`},ae={class:`approver-details`},oe={class:`approver-name`},se={class:`approver-dept`},ce={class:`approver-role`},le={key:0,class:`more-count`},ue={key:1,class:`placeholder`},$=(0,r.defineComponent)({__name:`ApprovalNode`,props:{id:{},data:{}},setup(e){let n=e,a=(0,r.inject)(`showAddMenu`),o=(0,r.inject)(`deleteNode`),s=(0,r.computed)(()=>n.data.approvers??[]),c=(0,r.computed)(()=>s.value.length),l=(0,r.computed)(()=>s.value.slice(0,3)),u=(0,r.computed)(()=>Math.max(0,c.value-3)),d=e=>({any:`或签`,all:`会签`,sequence:`顺序`})[e]||``,f=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();a&&a({x:t.left+t.width/2,y:t.bottom+10},n.id)},p=e=>{e.stopPropagation(),o&&o(n.id)};return(n,a)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,r.createCommentVNode)(` 删除按钮 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:p,title:`删除节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:close`,size:12})]),(0,r.createElementVNode)(`div`,K,[(0,r.createElementVNode)(`div`,q,[(0,r.createElementVNode)(`div`,J,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:account`,size:12,color:`white`})]),(0,r.createElementVNode)(`span`,Y,(0,r.toDisplayString)(e.data.title),1),c.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,X,(0,r.toDisplayString)(c.value),1)):(0,r.createCommentVNode)(`v-if`,!0),e.data.approvalMode?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Z,(0,r.toDisplayString)(d(e.data.approvalMode)),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,Q,[c.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ne,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(l.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.id,class:`approver-tag`},[(0,r.createElementVNode)(`div`,re,[(0,r.createElementVNode)(`div`,ie,[(0,r.createVNode)((0,r.unref)(i.NAvatar),{src:e.avatar,"fallback-src":(0,r.unref)(h)(e.name),size:`small`},null,8,[`src`,`fallback-src`])]),(0,r.createElementVNode)(`div`,ae,[(0,r.createElementVNode)(`span`,oe,(0,r.toDisplayString)(e.name),1),(0,r.createElementVNode)(`span`,se,(0,r.toDisplayString)(e.department),1),(0,r.createElementVNode)(`span`,ce,(0,r.toDisplayString)(e.role),1)])])]))),128)),u.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,le,`+`+(0,r.toDisplayString)(u.value),1)):(0,r.createCommentVNode)(`v-if`,!0)])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ue,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:account-plus`,size:24,color:`#9ca3af`}),a[0]||=(0,r.createElementVNode)(`span`,null,`请设置审批人`,-1)]))])]),(0,r.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:f,title:`添加下一个节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var de=n.t($,[[`__scopeId`,`data-v-fa2d9ea3`]]);const fe={class:`copy-node`},pe={class:`node-card`},me={class:`node-header`},he={class:`node-title`},ge={key:0,class:`node-badge`},_e={class:`node-content`},ve={key:0,class:`copy-users-list`},ye={key:0,class:`more-count`},be={key:1,class:`placeholder`},xe=(0,r.defineComponent)({__name:`CopyNode`,props:{id:{},data:{}},setup(e){let n=e,i=(0,r.inject)(`showAddMenu`),a=(0,r.inject)(`deleteNode`),o=(0,r.computed)(()=>n.data.copyUsers??[]),s=(0,r.computed)(()=>o.value.length),c=(0,r.computed)(()=>o.value.slice(0,3)),l=(0,r.computed)(()=>Math.max(0,s.value-3)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,fe,[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,r.createCommentVNode)(` 删除按钮 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:close`,size:12})]),(0,r.createElementVNode)(`div`,pe,[(0,r.createElementVNode)(`div`,me,[i[0]||=(0,r.createElementVNode)(`div`,{class:`node-icon`},`📋`,-1),(0,r.createElementVNode)(`span`,he,(0,r.toDisplayString)(e.data.title),1),s.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ge,(0,r.toDisplayString)(s.value),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,_e,[s.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ve,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(c.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.id,class:`copy-user-tag`},(0,r.toDisplayString)(e.name),1))),128)),l.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ye,`+`+(0,r.toDisplayString)(l.value),1)):(0,r.createCommentVNode)(`v-if`,!0)])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,be,`请设置抄送人`))])]),(0,r.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Se=n.t(xe,[[`__scopeId`,`data-v-b4fabe4b`]]);const Ce={class:`condition-node`},we={class:`node-card`},Te={class:`node-header`},Ee={class:`node-title`},De={key:0,class:`node-badge`},Oe={class:`node-content`},ke={key:0,class:`conditions-list`},Ae={key:0,class:`more-count`},je={key:1,class:`placeholder`},Me=(0,r.defineComponent)({__name:`ConditionNode`,props:{id:{},data:{}},setup(e){let n=e,i=(0,r.inject)(`showAddMenu`),a=(0,r.inject)(`deleteNode`),o=(0,r.computed)(()=>n.data.conditions??[]),s=(0,r.computed)(()=>o.value.length),c=(0,r.computed)(()=>o.value.slice(0,2)),l=(0,r.computed)(()=>Math.max(0,s.value-2)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Ce,[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,r.createCommentVNode)(` 删除按钮 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:close`,size:12})]),(0,r.createElementVNode)(`div`,we,[(0,r.createElementVNode)(`div`,Te,[i[0]||=(0,r.createElementVNode)(`div`,{class:`node-icon`},`🔀`,-1),(0,r.createElementVNode)(`span`,Ee,(0,r.toDisplayString)(e.data.title),1),s.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,De,(0,r.toDisplayString)(s.value),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,Oe,[s.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ke,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(c.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.id,class:`condition-tag`},[i[1]||=(0,r.createElementVNode)(`span`,{class:`condition-icon`},`→`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.name||`条件`+(c.value.indexOf(e)+1)),1)]))),128)),l.value>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Ae,`+`+(0,r.toDisplayString)(l.value),1)):(0,r.createCommentVNode)(`v-if`,!0)])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,je,`请设置分支条件`))])]),(0,r.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Ne=n.t(Me,[[`__scopeId`,`data-v-12e84033`]]);const Pe={start:(0,r.markRaw)(W),approval:(0,r.markRaw)(de),copy:(0,r.markRaw)(Se),condition:(0,r.markRaw)(Ne)};function Fe(t,n,i){let a=e.r(),o=(0,r.ref)([{...m}]),s=(0,r.ref)([]),c=(0,r.ref)(!1),l=(0,r.ref)({x:0,y:0}),d=(0,r.ref)(!1),f=(0,r.ref)(null),p=(0,r.ref)(null),h=(0,r.computed)(()=>Pe),g=(0,r.computed)(()=>{let e={totalNodes:o.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0};return o.value.forEach(t=>{t.type===`approval`?e.approvalNodes++:t.type===`copy`?e.copyNodes++:t.type===`condition`&&e.conditionNodes++}),e}),v=()=>({nodes:o.value,edges:s.value,config:{version:`1.0`,createdAt:new Date().toISOString()}}),y=()=>{let e=v();n(`update:modelValue`,e),n(`change`,e)},b=(e=60,t=400)=>{(0,r.nextTick)(()=>{setTimeout(()=>{i.value?.fitView?.({padding:e,duration:t})},100)})},x=(e,t)=>{l.value={x:typeof e.x==`number`?e.x:0,y:typeof e.y==`number`?e.y:0},p.value=t||null,c.value=!0},S=()=>{c.value=!1},C=e=>{if(e===`start-1`){a.warning(`不能删除开始节点`);return}let t=o.value.findIndex(t=>t.id===e);if(t===-1)return;let n=s.value.filter(t=>t.target===e),r=s.value.filter(t=>t.source===e);o.value.splice(t,1),s.value=s.value.filter(t=>t.source!==e&&t.target!==e),n.forEach(e=>{r.forEach(t=>{s.value.push({id:_(e.source,t.target),source:e.source,target:t.target,animated:!0,type:`default`})})}),o.value.forEach((e,n)=>{n>=t&&(e.position.y-=180)}),y(),a.success(`节点已删除`),b()};(0,r.provide)(`showAddMenu`,x),(0,r.provide)(`deleteNode`,C);let w=()=>{let e=o.value.length-1,t=o.value[e];if(p.value){let n=o.value.findIndex(e=>e.id===p.value);n!==-1&&(e=n,t=o.value[e])}return{targetNodeIndex:e,targetNode:t}},T=(e,t)=>({id:`${e}-${Date.now()}`,type:e,position:{x:t?.position.x||150,y:(t?.position.y||130)+180},data:{title:u[e],status:`pending`,...e===`approval`&&{approvers:[],approvalMode:`any`},...e===`copy`&&{copyUsers:[]},...e===`condition`&&{conditions:[]}}}),E=(e,t)=>{let n=s.value.filter(t=>t.source===e.id);s.value=s.value.filter(t=>t.source!==e.id),s.value.push({id:_(e.id,t.id),source:e.id,target:t.id,animated:!0,type:`default`}),n.forEach(e=>{s.value.push({id:_(t.id,e.target),source:t.id,target:e.target,animated:!0,type:`default`})})};return(0,r.watch)(()=>t.modelValue,e=>{e&&e!==v()&&(o.value=e.nodes||[],s.value=e.edges||[])},{deep:!0}),(0,r.onMounted)(()=>{(0,r.nextTick)(()=>{setTimeout(()=>{i.value?.fitView?.({padding:80,includeHiddenNodes:!1,minZoom:.8,maxZoom:1.2,duration:600})},300)})}),{nodes:o,edges:s,showAddMenu:c,menuPosition:l,showNodeConfig:d,currentNode:f,nodeTypes:h,workflowStats:g,addNode:e=>{try{let{targetNodeIndex:t,targetNode:n}=w(),r=T(e,n);o.value.splice(t+1,0,r);for(let e=t+2;e<o.value.length;e++)o.value[e].position.y+=180;n&&E(n,r),c.value=!1,p.value=null,y(),b()}catch(e){a.error(`添加节点失败,请重试`,e)}},onNodeClick:e=>{let{node:t}=e;f.value=t,d.value=!0,n(`node-click`,t)},closeAddMenu:S,handleConfigSave:e=>{if(!f.value)return;let t=o.value.findIndex(e=>e.id===f.value.id);if(t!==-1){let n={...o.value[t],data:{...o.value[t].data,...e}};o.value.splice(t,1,n),f.value=n}y(),d.value=!1,a.success(`节点配置已保存`)},resetNodes:()=>{o.value=[{...m}],s.value=[],y(),b(80,600),a.success(`画布已清空`)},getCurrentWorkflowData:v,fitView:()=>{if(!i.value?.fitView){a.warning(`画布未准备就绪,请稍后重试`);return}(0,r.nextTick)(()=>{i.value.fitView({padding:50,includeHiddenNodes:!1,minZoom:.5,maxZoom:1.5,duration:800})}),a.success(`已适应窗口大小`)},deleteNode:C}}function Ie(t,n,i,a){let o=e.r(),s=(0,r.ref)([]),c=(0,r.ref)(!1),l=()=>{let e=[];t.value.forEach(t=>{if(t.type===`approval`&&(t.data.approvers||[]).length===0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`approvers`,message:`审批节点必须设置至少一个审批人,否则流程无法正常运行`,type:`required`}),t.type===`condition`){let n=t.data.conditions||[];if(n.length===0)e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`条件分支节点必须配置至少一个分支条件,否则无法进行条件判断`,type:`required`});else{let r=n.filter(e=>!e.name||!e.field||!e.operator||!e.value);r.length>0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`有 ${r.length} 个条件分支配置不完整,请完善所有必填字段`,type:`incomplete`})}}});let r=new Set;return n.value.forEach(e=>{r.add(e.source),r.add(e.target)}),t.value.forEach(t=>{t.type!==`start`&&!r.has(t.id)&&e.push({nodeId:t.id,nodeName:t.data.title,field:`connection`,message:`此节点未与其他节点连接,可能导致流程中断`,type:`warning`})}),e};return{validationErrors:s,showValidationErrors:c,validateWorkflow:l,validateCurrentWorkflow:()=>{let e=l();s.value=e,e.length===0?(o.success(`工作流验证通过!所有节点配置正确`),c.value=!1):(o.error(`发现 ${e.length} 个问题,请查看详细错误`),c.value=!0,a?.onValidateError?.(e))},jumpToErrorNode:e=>{let n=t.value.find(t=>t.id===e);!n||!i.value||(i.value.setCenter(n.position.x,n.position.y,{zoom:1.2,duration:800}),setTimeout(()=>{a?.onShowNodeConfig?.(n),c.value=!1},900),o.info(`已定位到节点:${n.data.title}`))},getFieldDisplayName:e=>f[e]||e,getErrorTypeText:e=>p[e]||e,resetValidation:()=>{s.value=[],c.value=!1}}}const Le={start:{label:`发起人`,icon:`mdi:play-circle`,colorClass:`start`},approval:{label:`审批节点`,icon:`mdi:account-check`,colorClass:`approval`},copy:{label:`抄送节点`,icon:`mdi:email-outline`,colorClass:`copy`},condition:{label:`条件分支`,icon:`mdi:source-branch`,colorClass:`condition`}},Re={any:`或签(任一审批人通过即可)`,all:`会签(所有审批人必须通过)`,sequence:`顺序审批(按顺序依次审批)`},ze={equals:`等于`,not_equals:`不等于`,greater_than:`大于`,less_than:`小于`,contains:`包含`};function Be(e,t){let n=(0,r.ref)(!1),i=(0,r.ref)([]),a=(0,r.ref)({totalNodes:0,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:0}),o={start:e=>{let t=e.initiators||[];return t.length>0?[{type:`users`,label:`发起人`,users:t}]:[{type:`text`,label:`发起人`,value:`所有人`}]},approval:e=>{let t=e.approvalMode||`any`,n=e.approvers||[],r=[{type:`mode`,label:`审批方式`,value:Re[t]||t,modeKey:t}];return n.length>0?r.push({type:`users`,label:`审批人`,users:n}):r.push({type:`warning`,label:`审批人`,value:`未设置`}),r},copy:e=>{let t=e.copyUsers||[];return t.length>0?[{type:`users`,label:`抄送人`,users:t}]:[{type:`text`,label:`抄送人`,value:`未设置`}]},condition:e=>{let t=e.conditions||[];return t.length===0?[{type:`warning`,label:`条件分支`,value:`未配置`}]:t.map((e,t)=>{let n=ze[e.operator]||e.operator;return{type:`text`,label:`分支 ${t+1}`,value:`${e.name||`未命名`} — ${e.field||`?`} ${n} ${e.value||`?`}`}})}},s=e=>{let t=o[e.type||`start`];return t?t(e.data):[]},c=()=>{let n=new Map;e.value.forEach(e=>n.set(e.id,e));let r=new Map,i=new Map;e.value.forEach(e=>{r.set(e.id,[]),i.set(e.id,0)}),t.value.forEach(e=>{r.get(e.source)?.push(e.target),i.set(e.target,(i.get(e.target)||0)+1)});let a=[];i.forEach((e,t)=>{e===0&&a.push(t)});let o=[],s=new Set;for(;a.length>0;){let e=a.shift();if(s.has(e))continue;s.add(e);let t=n.get(e);t&&o.push(t);let c=r.get(e)||[];for(let e of c){let t=(i.get(e)||1)-1;i.set(e,t),t<=0&&!s.has(e)&&a.push(e)}}return e.value.forEach(e=>{s.has(e.id)||o.push(e)}),o},l=()=>c().map((e,t)=>{let n=Le[e.type||`start`]||Le.start;return{order:t+1,node:e,nodeTypeLabel:n.label,icon:n.icon,colorClass:n.colorClass,details:s(e)}}),u=()=>{let n={totalNodes:e.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:t.value.length};return e.value.forEach(e=>{e.type===`approval`?n.approvalNodes++:e.type===`copy`?n.copyNodes++:e.type===`condition`&&n.conditionNodes++}),n};return{showPreview:n,previewSteps:i,previewStats:a,openPreview:()=>{i.value=l(),a.value=u(),n.value=!0},closePreview:()=>{n.value=!1}}}const Ve={class:`approval-workflow-container`},He={class:`floating-toolbar`},Ue={class:`add-menu-content`},We=[`onClick`],Ge={class:`menu-text`},Ke={key:0,class:`validation-success`},qe={class:`success-icon`},Je={key:1,class:`validation-errors`},Ye={class:`error-summary`},Xe={class:`error-icon`},Ze={class:`error-list`},Qe={class:`error-header`},$e={class:`error-number`},et={class:`error-info`},tt={class:`error-node`},nt={class:`error-field`},rt={class:`error-message`},it={class:`error-actions`},at={class:`validation-footer`},ot={class:`preview-stats`},st={class:`stat-item`},ct={class:`stat-value`},lt={class:`stat-item approval`},ut={class:`stat-value`},dt={class:`stat-item copy`},ft={class:`stat-value`},pt={class:`stat-item condition`},mt={class:`stat-value`},ht={class:`stat-item edge`},gt={class:`stat-value`},_t={class:`preview-timeline`},vt={class:`step-connector`},yt={class:`step-dot`},bt={key:0,class:`step-line`},xt={class:`step-content`},St={class:`step-header`},Ct={class:`step-order`},wt={class:`step-type-badge`},Tt={class:`step-title`},Et={key:0,class:`step-details`},Dt={class:`detail-label`},Ot={class:`warning-text`},kt={key:0,class:`preview-empty`},At={class:`preview-footer`},jt=(0,r.defineComponent)({name:`C_WorkFlow`,__name:`index`,props:{users:{default:()=>[]},roles:{default:()=>[]},departments:{default:()=>[]},modelValue:{},readonly:{type:Boolean,default:!1},theme:{default:`light`}},emits:[`update:modelValue`,`change`,`node-click`,`edge-click`,`save`,`validate-error`],setup(n,{expose:s,emit:c}){let l=n,u=c,d=e.r(),f=(0,r.ref)(),{nodes:p,edges:m,showAddMenu:h,menuPosition:g,showNodeConfig:_,currentNode:v,nodeTypes:y,workflowStats:b,addNode:x,onNodeClick:S,closeAddMenu:C,handleConfigSave:w,resetNodes:T,getCurrentWorkflowData:E,fitView:ee,deleteNode:D}=Fe(l,u,f),{validationErrors:O,showValidationErrors:k,validateWorkflow:A,validateCurrentWorkflow:j,jumpToErrorNode:M,getFieldDisplayName:N,getErrorTypeText:te,resetValidation:P}=Ie(p,m,f,{onShowNodeConfig:e=>{v.value=e,_.value=!0},onValidateError:e=>u(`validate-error`,e)}),{showPreview:F,previewSteps:L,previewStats:R,openPreview:z,closePreview:B}=Be(p,m),V=()=>{let e=A();if(e.length>0){d.error(`工作流验证失败: ${e[0].message}`),k.value=!0;return}u(`save`,E()),d.success(`工作流保存成功`)},H=()=>{z()},U=()=>{B(),V()},W=()=>{T(),P()};return s({validateWorkflow:A,getCurrentWorkflowData:E,saveWorkflow:V,previewWorkflow:H,deleteNode:D,stats:b}),(e,s)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Ve,[(0,r.createCommentVNode)(` 浮动工具栏 `),(0,r.createElementVNode)(`div`,He,[(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,type:`primary`,onClick:V},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,r.withCtx)(()=>[s[7]||=(0,r.createTextVNode)(` 保存 `,-1)]),_:1}),(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,onClick:H},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:eye`,size:16})]),default:(0,r.withCtx)(()=>[s[8]||=(0,r.createTextVNode)(` 预览 `,-1)]),_:1}),(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,onClick:(0,r.unref)(j),title:`检查工作流配置是否正确`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:check-circle`,size:16})]),default:(0,r.withCtx)(()=>[s[9]||=(0,r.createTextVNode)(` 验证流程 `,-1)]),_:1},8,[`onClick`]),s[10]||=(0,r.createElementVNode)(`div`,{class:`toolbar-divider`},null,-1),(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,onClick:(0,r.unref)(ee),title:`适应窗口`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:fit-to-screen`,size:16})]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,type:`error`,onClick:W,title:`清空画布`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:delete-sweep`,size:16})]),_:1})]),(0,r.createCommentVNode)(` Vue Flow 画布 `),(0,r.createVNode)((0,r.unref)(a.VueFlow),{ref_key:`vueFlowRef`,ref:f,nodes:(0,r.unref)(p),"onUpdate:nodes":s[0]||=e=>(0,r.isRef)(p)?p.value=e:null,edges:(0,r.unref)(m),"onUpdate:edges":s[1]||=e=>(0,r.isRef)(m)?m.value=e:null,"node-types":(0,r.unref)(y),class:`workflow-canvas`,"default-viewport":{zoom:1,x:0,y:0},"min-zoom":.5,"max-zoom":2,"fit-view-on-init":!0,"nodes-draggable":!0,"elements-selectable":!0,onNodeClick:(0,r.unref)(S),onPaneClick:(0,r.unref)(C)},null,8,[`nodes`,`edges`,`node-types`,`onNodeClick`,`onPaneClick`]),(0,r.createCommentVNode)(` 节点添加菜单 `),((0,r.openBlock)(),(0,r.createBlock)(r.Teleport,{to:`body`},[(0,r.withDirectives)((0,r.createElementVNode)(`div`,{class:`add-node-menu`,style:(0,r.normalizeStyle)({left:(0,r.unref)(g).x+`px`,top:(0,r.unref)(g).y+`px`})},[(0,r.createElementVNode)(`div`,Ue,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(o),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e.type,type:`button`,class:`add-menu-item`,onClick:t=>(0,r.unref)(x)(e.type)},[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`menu-icon`,e.iconClass])},[(0,r.createVNode)((0,r.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])],2),(0,r.createElementVNode)(`span`,Ge,(0,r.toDisplayString)(e.label),1)],8,We))),128))])],4),[[r.vShow,(0,r.unref)(h)]])])),(0,r.createCommentVNode)(` 节点配置弹窗 - 拆分到独立组件 `),(0,r.createVNode)(I,{show:(0,r.unref)(_),"onUpdate:show":s[2]||=e=>(0,r.isRef)(_)?_.value=e:null,"current-node":(0,r.unref)(v),users:n.users,departments:n.departments,onSave:(0,r.unref)(w),onCancel:s[3]||=e=>_.value=!1},null,8,[`show`,`current-node`,`users`,`departments`,`onSave`]),(0,r.createCommentVNode)(` 验证错误日志抽屉 `),(0,r.createVNode)((0,r.unref)(i.NDrawer),{show:(0,r.unref)(k),"onUpdate:show":s[5]||=e=>(0,r.isRef)(k)?k.value=e:null,width:450,placement:`right`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(i.NDrawerContent),{title:`流程验证结果`,closable:``},{footer:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,at,[(0,r.createVNode)((0,r.unref)(i.NButton),{onClick:s[4]||=e=>k.value=!1},{default:(0,r.withCtx)(()=>[...s[16]||=[(0,r.createTextVNode)(`关闭`,-1)]]),_:1}),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(j)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:refresh`,size:16})]),default:(0,r.withCtx)(()=>[s[17]||=(0,r.createTextVNode)(` 重新验证 `,-1)]),_:1},8,[`onClick`])])]),default:(0,r.withCtx)(()=>[(0,r.unref)(O).length===0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Ke,[(0,r.createElementVNode)(`div`,qe,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:check-circle`,size:32,color:`#52c41a`})]),s[11]||=(0,r.createElementVNode)(`h3`,null,`验证通过`,-1),s[12]||=(0,r.createElementVNode)(`p`,null,`工作流配置正确,所有节点都已正确设置!`,-1)])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Je,[(0,r.createElementVNode)(`div`,Ye,[(0,r.createElementVNode)(`div`,Xe,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:alert-circle`,size:24,color:`#ff4d4f`})]),(0,r.createElementVNode)(`h3`,null,`发现 `+(0,r.toDisplayString)((0,r.unref)(O).length)+` 个问题`,1),s[13]||=(0,r.createElementVNode)(`p`,null,`请修复以下问题后重新验证:`,-1)]),(0,r.createElementVNode)(`div`,Ze,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(O),(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.nodeId,class:`error-item`},[(0,r.createElementVNode)(`div`,Qe,[(0,r.createElementVNode)(`span`,$e,(0,r.toDisplayString)(n+1),1),(0,r.createElementVNode)(`div`,et,[(0,r.createElementVNode)(`strong`,tt,(0,r.toDisplayString)(e.nodeName),1),(0,r.createElementVNode)(`span`,nt,(0,r.toDisplayString)((0,r.unref)(N)(e.field)),1)]),(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`error-type`,e.type])},(0,r.toDisplayString)((0,r.unref)(te)(e.type)),3)]),(0,r.createElementVNode)(`div`,rt,(0,r.toDisplayString)(e.message),1),(0,r.createElementVNode)(`div`,it,[(0,r.createVNode)((0,r.unref)(i.NButton),{size:`small`,type:`primary`,onClick:t=>(0,r.unref)(M)(e.nodeId)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:target`,size:16})]),default:(0,r.withCtx)(()=>[s[14]||=(0,r.createTextVNode)(` 定位节点 `,-1)]),_:1},8,[`onClick`])])]))),128))]),s[15]||=(0,r.createElementVNode)(`div`,{class:`validation-tips`},[(0,r.createElementVNode)(`h4`,null,`💡 常见问题解决方案:`),(0,r.createElementVNode)(`ul`,null,[(0,r.createElementVNode)(`li`,null,[(0,r.createElementVNode)(`strong`,null,`审批人未设置:`),(0,r.createTextVNode)(`点击审批节点,在弹窗中选择审批人员 `)]),(0,r.createElementVNode)(`li`,null,[(0,r.createElementVNode)(`strong`,null,`条件分支未配置:`),(0,r.createTextVNode)(`点击条件节点,添加至少一个条件分支 `)]),(0,r.createElementVNode)(`li`,null,[(0,r.createElementVNode)(`strong`,null,`节点连接断开:`),(0,r.createTextVNode)(` 检查节点之间的连线是否正确 `)])])],-1)]))]),_:1})]),_:1},8,[`show`]),(0,r.createCommentVNode)(` 流程预览抽屉 `),(0,r.createVNode)((0,r.unref)(i.NDrawer),{show:(0,r.unref)(F),"onUpdate:show":s[6]||=e=>(0,r.isRef)(F)?F.value=e:null,width:520,placement:`right`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(i.NDrawerContent),{title:`流程预览`,closable:``},{footer:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,At,[(0,r.createVNode)((0,r.unref)(i.NButton),{onClick:(0,r.unref)(B)},{default:(0,r.withCtx)(()=>[...s[24]||=[(0,r.createTextVNode)(`关闭`,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:U},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,r.withCtx)(()=>[s[25]||=(0,r.createTextVNode)(` 确认并保存 `,-1)]),_:1})])]),default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,ot,[(0,r.createElementVNode)(`div`,st,[(0,r.createElementVNode)(`span`,ct,(0,r.toDisplayString)((0,r.unref)(R).totalNodes),1),s[18]||=(0,r.createElementVNode)(`span`,{class:`stat-label`},`总节点`,-1)]),(0,r.createElementVNode)(`div`,lt,[(0,r.createElementVNode)(`span`,ut,(0,r.toDisplayString)((0,r.unref)(R).approvalNodes),1),s[19]||=(0,r.createElementVNode)(`span`,{class:`stat-label`},`审批`,-1)]),(0,r.createElementVNode)(`div`,dt,[(0,r.createElementVNode)(`span`,ft,(0,r.toDisplayString)((0,r.unref)(R).copyNodes),1),s[20]||=(0,r.createElementVNode)(`span`,{class:`stat-label`},`抄送`,-1)]),(0,r.createElementVNode)(`div`,pt,[(0,r.createElementVNode)(`span`,mt,(0,r.toDisplayString)((0,r.unref)(R).conditionNodes),1),s[21]||=(0,r.createElementVNode)(`span`,{class:`stat-label`},`条件`,-1)]),(0,r.createElementVNode)(`div`,ht,[(0,r.createElementVNode)(`span`,gt,(0,r.toDisplayString)((0,r.unref)(R).totalEdges),1),s[22]||=(0,r.createElementVNode)(`span`,{class:`stat-label`},`连线`,-1)])]),(0,r.createElementVNode)(`div`,_t,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(L),(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.node.id,class:(0,r.normalizeClass)([`preview-step`,e.colorClass])},[(0,r.createCommentVNode)(` 时间线连接线 `),(0,r.createElementVNode)(`div`,vt,[(0,r.createElementVNode)(`div`,yt,[(0,r.createVNode)((0,r.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])]),n<(0,r.unref)(L).length-1?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,bt)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 步骤内容 `),(0,r.createElementVNode)(`div`,xt,[(0,r.createElementVNode)(`div`,St,[(0,r.createElementVNode)(`span`,Ct,`步骤 `+(0,r.toDisplayString)(e.order),1),(0,r.createElementVNode)(`span`,wt,(0,r.toDisplayString)(e.nodeTypeLabel),1)]),(0,r.createElementVNode)(`div`,Tt,(0,r.toDisplayString)(e.node.data.title),1),e.details.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Et,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.details,(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n,class:(0,r.normalizeClass)([`step-detail-item`,{"is-warning":e.type===`warning`}])},[(0,r.createElementVNode)(`span`,Dt,(0,r.toDisplayString)(e.label)+`:`,1),(0,r.createCommentVNode)(` 审批方式 badge `),e.type===`mode`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,{key:0,class:(0,r.normalizeClass)([`mode-badge`,e.modeKey])},(0,r.toDisplayString)(e.value),3)):e.type===`users`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 人员 tags `),((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.users,e=>((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NTag),{key:e.name,size:`small`,bordered:!1,round:``,class:`user-tag`},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:account`,size:12})]),default:(0,r.withCtx)(()=>[(0,r.createTextVNode)(` `+(0,r.toDisplayString)(e.name),1)]),_:2},1024))),128))],64)):e.type===`warning`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 警告文案 `),(0,r.createElementVNode)(`span`,Ot,` ⚠️ `+(0,r.toDisplayString)(e.value),1)],2112)):((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:3},[(0,r.createCommentVNode)(` 普通文本 `),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.value),1)],2112))],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)])],2))),128))]),(0,r.unref)(L).length===0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,kt,[(0,r.createVNode)((0,r.unref)(t.t),{name:`mdi:file-document-outline`,size:48,color:`#d1d5db`}),s[23]||=(0,r.createElementVNode)(`p`,null,`暂无流程节点`,-1)])):(0,r.createCommentVNode)(`v-if`,!0)]),_:1})]),_:1},8,[`show`])]))}});var Mt=n.t(jt,[[`__scopeId`,`data-v-696cf9bb`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Mt}});
|
package/dist/C_WorkFlow2.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{NAvatar as n,NButton as r,NCard as i,NDrawer as a,NDrawerContent as o,NInput as s,NModal as c,NRadio as l,NRadioGroup as u,NSelect as d,NSpace as f,NTag as p,NTree as m,useMessage as h}from"naive-ui";import{Fragment as g,Teleport as _,computed as v,createBlock as y,createCommentVNode as b,createElementBlock as x,createElementVNode as S,createTextVNode as C,createVNode as w,defineComponent as T,inject as E,isRef as D,markRaw as O,nextTick as k,normalizeClass as A,normalizeStyle as j,onMounted as M,openBlock as N,provide as P,ref as F,renderList as I,toDisplayString as L,unref as R,vShow as ee,watch as z,withCtx as B,withDirectives as te}from"vue";import{VueFlow as ne}from"@vue-flow/core";const V=[{type:`approval`,label:`审批人`,icon:`mdi:account-check`,iconClass:`approval-icon`},{type:`copy`,label:`抄送人`,icon:`mdi:email-outline`,iconClass:`copy-icon`},{type:`condition`,label:`条件分支`,icon:`mdi:source-branch`,iconClass:`condition-icon`}],re=[{value:`any`,label:`或签`,desc:`任意一人同意即可通过`},{value:`all`,label:`会签`,desc:`所有人都同意才能通过`},{value:`sequence`,label:`顺序审批`,desc:`按选择顺序依次审批`}],ie=[{label:`申请金额`,value:`amount`},{label:`申请人部门`,value:`department`},{label:`申请类型`,value:`type`},{label:`紧急程度`,value:`priority`}],H=[{label:`等于`,value:`equals`},{label:`大于`,value:`greater_than`},{label:`小于`,value:`less_than`},{label:`包含`,value:`contains`},{label:`不等于`,value:`not_equals`}],U={start:`发起人`,approval:`审批人`,copy:`抄送人`,condition:`条件分支`},ae={approval:`审批人设置`,copy:`抄送人设置`,condition:`条件分支设置`},W={approvers:`审批人`,conditions:`条件配置`,connection:`节点连接`,copyUsers:`抄送人`},G={required:`必填`,incomplete:`不完整`,warning:`警告`,error:`错误`},K={id:`start-1`,type:`start`,position:{x:150,y:100},data:{title:`发起人`,status:`active`,initiators:[]}},q=e=>`https://ui-avatars.com/api/?name=${encodeURIComponent(e)}&background=random`,oe=()=>`condition-${Date.now()}`,J=(e,t)=>`edge-${e}-${t}`,se=()=>({id:oe(),name:``,field:``,operator:`equals`,value:``}),ce={key:0,class:`max-h-60vh overflow-y-auto`},Y={class:`config-section`},X={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},Z={class:`border rounded-lg p-3 mb-4 max-h-50 overflow-y-auto`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},le={key:0,class:`rounded-lg p-4 mb-4 border`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},ue={class:`mb-2 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},Q={class:`flex flex-wrap gap-3`},de={class:`flex items-center gap-2`},fe={class:`font-medium text-sm`},pe={class:`text-xs px-1.5 py-0.5 rounded`,style:{color:`var(--n-text-color-3)`,background:`var(--n-color-embedded)`}},me={key:0,class:`mt-4`},he={class:`flex flex-col gap-1`},ge={class:`text-sm`},_e={class:`text-xs`,style:{color:`var(--n-text-color-3)`}},ve={class:`max-h-60vh overflow-y-auto`},ye={class:`config-section`},be={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},xe={class:`space-y-3`},Se={class:`flex items-center gap-3 flex-nowrap min-h-10 p-2`},Ce=T({__name:`NodeConfigModal`,props:{show:{type:Boolean,default:!1},currentNode:{default:null},users:{default:()=>[]},departments:{default:()=>[]}},emits:[`update:show`,`save`,`cancel`],setup(t,{emit:a}){let o=t,_=a,T=h(),E=F(``),D=F([]),O=F([]),k=F(`any`),A=F(!1),j=F([]),M=v({get:()=>o.show,set:e=>_(`update:show`,e)}),P=v(()=>o.currentNode?.type===`start`?`发起人设置`:ae[o.currentNode?.type]||`节点设置`),ee=v(()=>{let e=[],t=new Map;return o.departments?.forEach(e=>{t.has(e.id)||t.set(e.id,{key:`dept-${e.id}`,label:`${e.name} ${e.manager?`(负责人: ${e.manager})`:``}`,children:[],isLeaf:!1,disabled:!0})}),(o.users?.filter(e=>!E.value||e.name.includes(E.value)||e.department.includes(E.value))||[]).forEach(e=>{let n=o.departments?.find(t=>t.name===e.department);n&&t.has(n.id)&&t.get(n.id).children.push({key:e.id,label:`${e.name}${e.role?`(${e.role})`:``}`,isLeaf:!0,user:e})}),t.forEach(t=>{t.children.length>0&&e.push(t)}),e}),te=v(()=>o.users?.filter(e=>D.value.includes(e.id))||[]),ne=v(()=>o.users?.filter(e=>O.value.includes(e.id))||[]),V=v(()=>o.users?.filter(e=>D.value.includes(e.id))||[]),U=e=>{D.value=e.filter(e=>!e.startsWith(`dept-`))},W=e=>{O.value=e.filter(e=>!e.startsWith(`dept-`))},G=e=>{D.value=D.value.filter(t=>t!==e)},K=e=>{O.value=O.value.filter(t=>t!==e)},oe=e=>{D.value=D.value.filter(t=>t!==e)},J=()=>j.value.push(se()),Ce=e=>j.value.splice(e,1),we=e=>{let{initiators:t}=e.data;D.value=t?t.map(e=>e.id):[]},Te=e=>{D.value=(e.data.approvers||[]).map(e=>e.id),k.value=e.data.approvalMode||`any`},Ee=e=>{O.value=(e.data.copyUsers||[]).map(e=>e.id)},De=e=>{j.value=e.data.conditions||[]},Oe=async()=>{if(D.value.length===0)return T.error(`请选择发起人`),!1;let e=V.value;return _(`save`,{initiators:e}),T.success(`已设置 ${e.length} 个发起人`),!0},ke=async()=>{if(D.value.length===0)return T.error(`请至少选择一个审批人`),!1;let e=te.value;return _(`save`,{approvers:e,approvalMode:k.value}),T.success(`已设置 ${e.length} 个审批人`),!0},Ae=async()=>{let e=ne.value;return _(`save`,{copyUsers:e}),T.success(`已设置 ${e.length} 个抄送人`),!0},je=async()=>{if(j.value.length===0)return T.error(`请至少添加一个条件分支`),!1;let e=j.value.filter(e=>e.name&&e.field&&e.operator&&e.value);return e.length===0?(T.error(`请完善条件配置`),!1):(_(`save`,{conditions:e}),T.success(`已设置 ${e.length} 个条件分支`),!0)},Me=async()=>{if(!o.currentNode)return!1;A.value=!0;try{let e={start:Oe,approval:ke,copy:Ae,condition:je}[o.currentNode.type];return e?await e():!1}catch(e){return T.error(`保存配置失败`),console.error(`Save node config error:`,e),!1}finally{A.value=!1}},Ne=()=>{_(`cancel`)};z(()=>o.currentNode,e=>{if(e){E.value=``;let t={start:we,approval:Te,copy:Ee,condition:De}[e.type];t&&t(e)}},{immediate:!0});let Pe=v(()=>[`start`,`approval`,`copy`].includes(o.currentNode?.type||``)),$=v(()=>{let e=o.currentNode?.type;return e===`start`?{icon:`mdi:account-star`,title:`选择发起人`,checkedKeys:D.value,onSelect:U,selectedUsers:V.value,selectedLabel:`已选择发起人`,tagType:`primary`,onRemove:oe}:e===`approval`?{icon:`mdi:account-check`,title:`选择审批人`,checkedKeys:D.value,onSelect:U,selectedUsers:te.value,selectedLabel:`已选择审批人`,tagType:`info`,onRemove:G}:e===`copy`?{icon:`mdi:email-outline`,title:`选择抄送人`,checkedKeys:O.value,onSelect:W,selectedUsers:ne.value,selectedLabel:`已选择抄送人`,tagType:`success`,onRemove:K}:{icon:``,title:``,checkedKeys:[],onSelect:e=>{},selectedUsers:[],selectedLabel:``,tagType:`default`,onRemove:e=>{}}});return(t,a)=>(N(),y(R(c),{show:M.value,"onUpdate:show":a[2]||=e=>M.value=e,style:{width:`900px`},"mask-closable":!1,preset:`dialog`,title:P.value,"positive-text":`确定`,"negative-text":`取消`,loading:A.value,onPositiveClick:Me,onNegativeClick:Ne},{default:B(()=>[b(` 公共选择面板 `),Pe.value?(N(),x(`div`,ce,[S(`div`,Y,[S(`h4`,X,[$.value.icon?(N(),y(R(e),{key:0,name:$.value.icon,size:16},null,8,[`name`])):b(`v-if`,!0),C(` `+L($.value.title),1)]),w(R(s),{value:E.value,"onUpdate:value":a[0]||=e=>E.value=e,placeholder:`搜索用户姓名或部门`,clearable:``,class:`mb-4`},{prefix:B(()=>[w(R(e),{name:`mdi:magnify`,size:16})]),_:1},8,[`value`]),S(`div`,Z,[w(R(m),{data:ee.value,"checked-keys":$.value.checkedKeys,selectable:!1,checkable:``,cascade:``,"virtual-scroll":!0,style:{"max-height":`300px`},"onUpdate:checkedKeys":$.value.onSelect},null,8,[`data`,`checked-keys`,`onUpdate:checkedKeys`])]),$.value.selectedUsers.length>0?(N(),x(`div`,le,[S(`h5`,ue,L($.value.selectedLabel)+` (`+L($.value.selectedUsers.length)+`) `,1),S(`div`,Q,[(N(!0),x(g,null,I($.value.selectedUsers,e=>(N(),y(R(p),{key:e.id,closable:``,type:$.value.tagType,onClose:t=>$.value.onRemove(e.id)},{default:B(()=>[S(`div`,de,[w(R(n),{src:e.avatar,"fallback-src":R(q)(e.name),size:`small`},null,8,[`src`,`fallback-src`]),S(`span`,fe,L(e.name),1),S(`span`,pe,L(e.department),1)])]),_:2},1032,[`type`,`onClose`]))),128))])])):b(`v-if`,!0)]),b(` 审批节点时附带审批模式 `),o.currentNode?.type===`approval`?(N(),x(`div`,me,[a[3]||=S(`h5`,{class:`mb-3 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},` 审批模式 `,-1),w(R(u),{value:k.value,"onUpdate:value":a[1]||=e=>k.value=e},{default:B(()=>[w(R(f),{vertical:``},{default:B(()=>[(N(!0),x(g,null,I(R(re),e=>(N(),y(R(l),{key:e.value,value:e.value},{default:B(()=>[S(`div`,he,[S(`strong`,ge,L(e.label),1),S(`span`,_e,L(e.desc),1)])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`])])):b(`v-if`,!0)])):o.currentNode?.type===`condition`?(N(),x(g,{key:1},[b(` 条件节点配置 `),S(`div`,ve,[S(`div`,ye,[S(`h4`,be,[w(R(e),{name:`mdi:source-branch`,size:16}),a[4]||=C(` 条件分支设置 `,-1)]),S(`div`,xe,[(N(!0),x(g,null,I(j.value,(t,n)=>(N(),x(`div`,{key:t.id,class:`condition-item`},[w(R(i),{size:`small`,class:`border border-gray-200 hover:border-gray-300 transition-colors`},{default:B(()=>[S(`div`,Se,[w(R(s),{value:t.name,"onUpdate:value":e=>t.name=e,placeholder:`分支名称`,style:{width:`150px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),w(R(d),{value:t.field,"onUpdate:value":e=>t.field=e,placeholder:`选择字段`,options:R(ie),style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),w(R(d),{value:t.operator,"onUpdate:value":e=>t.operator=e,placeholder:`操作符`,options:R(H),style:{width:`100px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),w(R(s),{value:t.value,"onUpdate:value":e=>t.value=e,placeholder:`值`,style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),w(R(r),{quaternary:``,type:`error`,onClick:e=>Ce(n),class:`flex-shrink-0 ml-auto`},{icon:B(()=>[w(R(e),{name:`mdi:delete`,size:16})]),_:2},1032,[`onClick`])])]),_:2},1024)]))),128)),w(R(r),{dashed:``,block:``,onClick:J,class:`w-full`},{icon:B(()=>[w(R(e),{name:`mdi:plus`,size:16})]),default:B(()=>[a[5]||=C(` 添加条件 `,-1)]),_:1,__:[5]})])])])],2112)):b(`v-if`,!0)]),_:1},8,[`show`,`title`,`loading`]))}}),we={class:`start-node`},Te={class:`node-content`},Ee={class:`node-info`},De={class:`node-text`},Oe={key:0,class:`initiator-name`},ke={key:1,class:`placeholder-text`};var Ae=t(T({__name:`StartNode`,props:{id:{},data:{}},setup(t){let n=t,r=E(`showAddMenu`),i=v(()=>{let{initiators:e}=n.data;return!e||!Array.isArray(e)||e.length===0?``:e.map(e=>e?.name||`未知用户`).join(`、`)}),a=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)};return(t,n)=>(N(),x(`div`,we,[b(` 主要内容区域 `),S(`div`,Te,[n[0]||=S(`div`,{class:`node-icon`},`🚀`,-1),S(`div`,Ee,[S(`div`,De,L(t.data.title),1),i.value?(N(),x(`div`,Oe,L(i.value),1)):(N(),x(`div`,ke,`点击设置发起人`))])]),b(` 添加节点按钮 `),S(`div`,{class:`add-node-btn`,onClick:a,title:`添加下一个节点`},[w(R(e),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-8dfd664b`]]);const je={class:`approval-node`},Me={class:`node-header`},Ne={class:`node-icon`},Pe={class:`node-title`},$={key:0,class:`node-badge`},Fe={key:1,class:`approval-mode-badge`},Ie={class:`node-content`},Le={key:0,class:`approvers-list`},Re={class:`approver-info`},ze={class:`approver-avatar`},Be={class:`approver-details`},Ve={class:`approver-name`},He={class:`approver-dept`},Ue={class:`approver-role`},We={key:0,class:`more-count`},Ge={key:1,class:`placeholder`};var Ke=t(T({__name:`ApprovalNode`,props:{id:{},data:{}},setup(t){let r=t,i=E(`showAddMenu`),a=E(`deleteNode`),o=v(()=>r.data.approvers??[]),s=v(()=>o.value.length),c=v(()=>o.value.slice(0,3)),l=v(()=>Math.max(0,s.value-3)),u=e=>({any:`或签`,all:`会签`,sequence:`顺序`})[e]||``,d=e=>`https://ui-avatars.com/api/?name=${encodeURIComponent(e)}&background=random`,f=()=>{},p=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},r.id)},m=e=>{e.stopPropagation(),a&&a(r.id)};return(t,r)=>(N(),x(`div`,je,[S(`div`,{class:A([`status-indicator`,t.data.status])},null,2),b(` 删除按钮 `),S(`div`,{class:`delete-btn`,onClick:m,title:`删除节点`},[w(R(e),{name:`mdi:close`,size:12})]),S(`div`,{class:`node-card`,onClick:f},[S(`div`,Me,[S(`div`,Ne,[w(R(e),{name:`mdi:account`,size:12,color:`white`})]),S(`span`,Pe,L(t.data.title),1),s.value>0?(N(),x(`div`,$,L(s.value),1)):b(`v-if`,!0),t.data.approvalMode?(N(),x(`div`,Fe,L(u(t.data.approvalMode)),1)):b(`v-if`,!0)]),S(`div`,Ie,[s.value>0?(N(),x(`div`,Le,[(N(!0),x(g,null,I(c.value,e=>(N(),x(`div`,{key:e.id,class:`approver-tag`},[S(`div`,Re,[S(`div`,ze,[w(R(n),{src:e.avatar,"fallback-src":d(e.name),size:`small`},null,8,[`src`,`fallback-src`])]),S(`div`,Be,[S(`span`,Ve,L(e.name),1),S(`span`,He,L(e.department),1),S(`span`,Ue,L(e.role),1)])])]))),128)),l.value>0?(N(),x(`div`,We,`+`+L(l.value),1)):b(`v-if`,!0)])):(N(),x(`div`,Ge,[w(R(e),{name:`mdi:account-plus`,size:24,color:`#9ca3af`}),r[0]||=S(`span`,null,`请设置审批人`,-1)]))])]),S(`div`,{class:`add-node-btn`,onClick:p,title:`添加下一个节点`},[w(R(e),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-f7fd7107`]]);const qe={class:`copy-node`},Je={class:`node-header`},Ye={class:`node-title`},Xe={key:0,class:`node-badge`},Ze={class:`node-content`},Qe={key:0,class:`copy-users-list`},$e={key:0,class:`more-count`},et={key:1,class:`placeholder`};var tt=t(T({__name:`CopyNode`,props:{id:{},data:{}},setup(t){let n=t,r=E(`showAddMenu`),i=E(`deleteNode`),a=v(()=>n.data.copyUsers??[]),o=v(()=>a.value.length),s=v(()=>a.value.slice(0,3)),c=v(()=>Math.max(0,o.value-3)),l=()=>{},u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),i&&i(n.id)};return(t,n)=>(N(),x(`div`,qe,[S(`div`,{class:A([`status-indicator`,t.data.status])},null,2),b(` 删除按钮 `),S(`div`,{class:`delete-btn`,onClick:d,title:`删除节点`},[w(R(e),{name:`mdi:close`,size:12})]),S(`div`,{class:`node-card`,onClick:l},[S(`div`,Je,[n[0]||=S(`div`,{class:`node-icon`},`📋`,-1),S(`span`,Ye,L(t.data.title),1),o.value>0?(N(),x(`div`,Xe,L(o.value),1)):b(`v-if`,!0)]),S(`div`,Ze,[o.value>0?(N(),x(`div`,Qe,[(N(!0),x(g,null,I(s.value,e=>(N(),x(`div`,{key:e.id,class:`copy-user-tag`},L(e.name),1))),128)),c.value>0?(N(),x(`div`,$e,`+`+L(c.value),1)):b(`v-if`,!0)])):(N(),x(`div`,et,`请设置抄送人`))])]),S(`div`,{class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[w(R(e),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-6ae0b500`]]);const nt={class:`condition-node`},rt={class:`node-card`},it={class:`node-header`},at={class:`node-title`},ot={key:0,class:`node-badge`},st={class:`node-content`},ct={key:0,class:`conditions-list`},lt={key:0,class:`more-count`},ut={key:1,class:`placeholder`};var dt=t(T({__name:`ConditionNode`,props:{id:{},data:{}},setup(t){let n=t,r=E(`showAddMenu`),i=E(`deleteNode`),a=v(()=>n.data.conditions??[]),o=v(()=>a.value.length),s=v(()=>a.value.slice(0,2)),c=v(()=>Math.max(0,o.value-2)),l=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},u=e=>{e.stopPropagation(),i&&i(n.id)};return(t,n)=>(N(),x(`div`,nt,[S(`div`,{class:A([`status-indicator`,t.data.status])},null,2),b(` 删除按钮 `),S(`div`,{class:`delete-btn`,onClick:u,title:`删除节点`},[w(R(e),{name:`mdi:close`,size:12})]),S(`div`,rt,[S(`div`,it,[n[0]||=S(`div`,{class:`node-icon`},`🔀`,-1),S(`span`,at,L(t.data.title),1),o.value>0?(N(),x(`div`,ot,L(o.value),1)):b(`v-if`,!0)]),S(`div`,st,[o.value>0?(N(),x(`div`,ct,[(N(!0),x(g,null,I(s.value,e=>(N(),x(`div`,{key:e.id,class:`condition-tag`},[n[1]||=S(`span`,{class:`condition-icon`},`→`,-1),S(`span`,null,L(e.name||`条件`+(s.value.indexOf(e)+1)),1)]))),128)),c.value>0?(N(),x(`div`,lt,`+`+L(c.value),1)):b(`v-if`,!0)])):(N(),x(`div`,ut,`请设置分支条件`))])]),S(`div`,{class:`add-node-btn`,onClick:l,title:`添加下一个节点`},[w(R(e),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-60e87967`]]);const ft={start:O(Ae),approval:O(Ke),copy:O(tt),condition:O(dt)};function pt(e,t,n){let r=h(),i=F([{...K}]),a=F([]),o=F(!1),s=F({x:0,y:0}),c=F(!1),l=F(null),u=F(null),d=v(()=>ft),f=v(()=>{let e={totalNodes:i.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0};return i.value.forEach(t=>{t.type===`approval`?e.approvalNodes++:t.type===`copy`?e.copyNodes++:t.type===`condition`&&e.conditionNodes++}),e}),p=()=>({nodes:i.value,edges:a.value,config:{version:`1.0`,createdAt:new Date().toISOString()}}),m=()=>{let e=p();t(`update:modelValue`,e),t(`change`,e)},g=(e=60,t=400)=>{k(()=>{setTimeout(()=>{n.value?.fitView?.({padding:e,duration:t})},100)})},_=(e,t)=>{s.value={x:typeof e.x==`number`?e.x:0,y:typeof e.y==`number`?e.y:0},u.value=t||null,o.value=!0},y=()=>{o.value=!1},b=e=>{if(e===`start-1`){r.warning(`不能删除开始节点`);return}let t=i.value.findIndex(t=>t.id===e);if(t===-1)return;let n=a.value.filter(t=>t.target===e),o=a.value.filter(t=>t.source===e);i.value.splice(t,1),a.value=a.value.filter(t=>t.source!==e&&t.target!==e),n.forEach(e=>{o.forEach(t=>{a.value.push({id:J(e.source,t.target),source:e.source,target:t.target,animated:!0,type:`default`})})}),i.value.forEach((e,n)=>{n>=t&&(e.position.y-=180)}),m(),r.success(`节点已删除`),g()};P(`showAddMenu`,_),P(`deleteNode`,b);let x=()=>{let e=i.value.length-1,t=i.value[e];if(u.value){let n=i.value.findIndex(e=>e.id===u.value);n!==-1&&(e=n,t=i.value[e])}return{targetNodeIndex:e,targetNode:t}},S=(e,t)=>({id:`${e}-${Date.now()}`,type:e,position:{x:t?.position.x||150,y:(t?.position.y||130)+180},data:{title:U[e],status:`pending`,...e===`approval`&&{approvers:[],approvalMode:`any`},...e===`copy`&&{copyUsers:[]},...e===`condition`&&{conditions:[]}}}),C=(e,t)=>{let n=a.value.filter(t=>t.source===e.id);a.value=a.value.filter(t=>t.source!==e.id),a.value.push({id:J(e.id,t.id),source:e.id,target:t.id,animated:!0,type:`default`}),n.forEach(e=>{a.value.push({id:J(t.id,e.target),source:t.id,target:e.target,animated:!0,type:`default`})})};return z(()=>e.modelValue,e=>{e&&e!==p()&&(i.value=e.nodes||[],a.value=e.edges||[])},{deep:!0}),M(()=>{k(()=>{setTimeout(()=>{n.value?.fitView?.({padding:80,includeHiddenNodes:!1,minZoom:.8,maxZoom:1.2,duration:600})},300)})}),{nodes:i,edges:a,showAddMenu:o,menuPosition:s,showNodeConfig:c,currentNode:l,nodeTypes:d,workflowStats:f,addNode:e=>{try{let{targetNodeIndex:t,targetNode:n}=x(),r=S(e,n);i.value.splice(t+1,0,r);for(let e=t+2;e<i.value.length;e++)i.value[e].position.y+=180;n&&C(n,r),o.value=!1,u.value=null,m(),g()}catch(e){console.error(`Error adding node:`,e),r.error(`添加节点失败,请重试`)}},onNodeClick:e=>{let{node:n}=e;l.value=n,c.value=!0,t(`node-click`,n)},closeAddMenu:y,handleConfigSave:e=>{if(!l.value)return;let t=i.value.findIndex(e=>e.id===l.value.id);if(t!==-1){let n={...i.value[t],data:{...i.value[t].data,...e}};i.value.splice(t,1,n),l.value=n}m(),c.value=!1,r.success(`节点配置已保存`)},resetNodes:()=>{i.value=[{...K}],a.value=[],m(),g(80,600),r.success(`画布已清空`)},getCurrentWorkflowData:p,fitView:()=>{if(!n.value?.fitView){r.warning(`画布未准备就绪,请稍后重试`);return}k(()=>{n.value.fitView({padding:50,includeHiddenNodes:!1,minZoom:.5,maxZoom:1.5,duration:800})}),r.success(`已适应窗口大小`)},deleteNode:b}}function mt(e,t,n,r){let i=h(),a=F([]),o=F(!1),s=()=>{let n=[];e.value.forEach(e=>{if(e.type===`approval`&&(e.data.approvers||[]).length===0&&n.push({nodeId:e.id,nodeName:e.data.title,field:`approvers`,message:`审批节点必须设置至少一个审批人,否则流程无法正常运行`,type:`required`}),e.type===`condition`){let t=e.data.conditions||[];if(t.length===0)n.push({nodeId:e.id,nodeName:e.data.title,field:`conditions`,message:`条件分支节点必须配置至少一个分支条件,否则无法进行条件判断`,type:`required`});else{let r=t.filter(e=>!e.name||!e.field||!e.operator||!e.value);r.length>0&&n.push({nodeId:e.id,nodeName:e.data.title,field:`conditions`,message:`有 ${r.length} 个条件分支配置不完整,请完善所有必填字段`,type:`incomplete`})}}});let r=new Set;return t.value.forEach(e=>{r.add(e.source),r.add(e.target)}),e.value.forEach(e=>{e.type!==`start`&&!r.has(e.id)&&n.push({nodeId:e.id,nodeName:e.data.title,field:`connection`,message:`此节点未与其他节点连接,可能导致流程中断`,type:`warning`})}),n};return{validationErrors:a,showValidationErrors:o,validateWorkflow:s,validateCurrentWorkflow:()=>{let e=s();a.value=e,e.length===0?(i.success(`工作流验证通过!所有节点配置正确`),o.value=!1):(i.error(`发现 ${e.length} 个问题,请查看详细错误`),o.value=!0,r?.onValidateError?.(e))},jumpToErrorNode:t=>{let a=e.value.find(e=>e.id===t);!a||!n.value||(n.value.setCenter(a.position.x,a.position.y,{zoom:1.2,duration:800}),setTimeout(()=>{r?.onShowNodeConfig?.(a),o.value=!1},900),i.info(`已定位到节点:${a.data.title}`))},getFieldDisplayName:e=>W[e]||e,getErrorTypeText:e=>G[e]||e,resetValidation:()=>{a.value=[],o.value=!1}}}const ht={start:{label:`发起人`,icon:`mdi:play-circle`,colorClass:`start`},approval:{label:`审批节点`,icon:`mdi:account-check`,colorClass:`approval`},copy:{label:`抄送节点`,icon:`mdi:email-outline`,colorClass:`copy`},condition:{label:`条件分支`,icon:`mdi:source-branch`,colorClass:`condition`}},gt={any:`或签(任一审批人通过即可)`,all:`会签(所有审批人必须通过)`,sequence:`顺序审批(按顺序依次审批)`},_t={equals:`等于`,not_equals:`不等于`,greater_than:`大于`,less_than:`小于`,contains:`包含`};function vt(e,t){let n=F(!1),r=F([]),i=F({totalNodes:0,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:0}),a={start:e=>{let t=e.initiators||[];return t.length>0?[{type:`users`,label:`发起人`,users:t}]:[{type:`text`,label:`发起人`,value:`所有人`}]},approval:e=>{let t=e.approvalMode||`any`,n=e.approvers||[],r=[{type:`mode`,label:`审批方式`,value:gt[t]||t,modeKey:t}];return n.length>0?r.push({type:`users`,label:`审批人`,users:n}):r.push({type:`warning`,label:`审批人`,value:`未设置`}),r},copy:e=>{let t=e.copyUsers||[];return t.length>0?[{type:`users`,label:`抄送人`,users:t}]:[{type:`text`,label:`抄送人`,value:`未设置`}]},condition:e=>{let t=e.conditions||[];return t.length===0?[{type:`warning`,label:`条件分支`,value:`未配置`}]:t.map((e,t)=>{let n=_t[e.operator]||e.operator;return{type:`text`,label:`分支 ${t+1}`,value:`${e.name||`未命名`} — ${e.field||`?`} ${n} ${e.value||`?`}`}})}},o=e=>{let t=a[e.type||`start`];return t?t(e.data):[]},s=()=>{let n=new Map;e.value.forEach(e=>n.set(e.id,e));let r=new Map,i=new Map;e.value.forEach(e=>{r.set(e.id,[]),i.set(e.id,0)}),t.value.forEach(e=>{r.get(e.source)?.push(e.target),i.set(e.target,(i.get(e.target)||0)+1)});let a=[];i.forEach((e,t)=>{e===0&&a.push(t)});let o=[],s=new Set;for(;a.length>0;){let e=a.shift();if(s.has(e))continue;s.add(e);let t=n.get(e);t&&o.push(t);let c=r.get(e)||[];for(let e of c){let t=(i.get(e)||1)-1;i.set(e,t),t<=0&&!s.has(e)&&a.push(e)}}return e.value.forEach(e=>{s.has(e.id)||o.push(e)}),o},c=()=>s().map((e,t)=>{let n=ht[e.type||`start`]||ht.start;return{order:t+1,node:e,nodeTypeLabel:n.label,icon:n.icon,colorClass:n.colorClass,details:o(e)}}),l=()=>{let n={totalNodes:e.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:t.value.length};return e.value.forEach(e=>{e.type===`approval`?n.approvalNodes++:e.type===`copy`?n.copyNodes++:e.type===`condition`&&n.conditionNodes++}),n};return{showPreview:n,previewSteps:r,previewStats:i,openPreview:()=>{r.value=c(),i.value=l(),n.value=!0},closePreview:()=>{n.value=!1}}}const yt={class:`approval-workflow-container`},bt={class:`floating-toolbar`},xt={class:`add-menu-content`},St=[`onClick`],Ct={class:`menu-text`},wt={key:0,class:`validation-success`},Tt={class:`success-icon`},Et={key:1,class:`validation-errors`},Dt={class:`error-summary`},Ot={class:`error-icon`},kt={class:`error-list`},At={class:`error-header`},jt={class:`error-number`},Mt={class:`error-info`},Nt={class:`error-node`},Pt={class:`error-field`},Ft={class:`error-message`},It={class:`error-actions`},Lt={class:`validation-footer`},Rt={class:`preview-stats`},zt={class:`stat-item`},Bt={class:`stat-value`},Vt={class:`stat-item approval`},Ht={class:`stat-value`},Ut={class:`stat-item copy`},Wt={class:`stat-value`},Gt={class:`stat-item condition`},Kt={class:`stat-value`},qt={class:`stat-item edge`},Jt={class:`stat-value`},Yt={class:`preview-timeline`},Xt={class:`step-connector`},Zt={class:`step-dot`},Qt={key:0,class:`step-line`},$t={class:`step-content`},en={class:`step-header`},tn={class:`step-order`},nn={class:`step-type-badge`},rn={class:`step-title`},an={key:0,class:`step-details`},on={class:`detail-label`},sn={class:`warning-text`},cn={key:0,class:`preview-empty`},ln={class:`preview-footer`};var un=t(T({name:`C_WorkFlow`,__name:`index`,props:{users:{default:()=>[]},roles:{default:()=>[]},departments:{default:()=>[]},modelValue:{},readonly:{type:Boolean,default:!1},theme:{default:`light`}},emits:[`update:modelValue`,`change`,`node-click`,`edge-click`,`save`,`validate-error`],setup(t,{expose:n,emit:i}){let s=t,c=i,l=h(),u=F(),{nodes:d,edges:f,showAddMenu:m,menuPosition:v,showNodeConfig:T,currentNode:E,nodeTypes:O,workflowStats:k,addNode:M,onNodeClick:P,closeAddMenu:z,handleConfigSave:re,resetNodes:ie,getCurrentWorkflowData:H,fitView:U,deleteNode:ae}=pt(s,c,u),{validationErrors:W,showValidationErrors:G,validateWorkflow:K,validateCurrentWorkflow:q,jumpToErrorNode:oe,getFieldDisplayName:J,getErrorTypeText:se,resetValidation:ce}=mt(d,f,u,{onShowNodeConfig:e=>{E.value=e,T.value=!0},onValidateError:e=>c(`validate-error`,e)}),{showPreview:Y,previewSteps:X,previewStats:Z,openPreview:le,closePreview:ue}=vt(d,f),Q=()=>{let e=K();if(e.length>0){l.error(`工作流验证失败: ${e[0].message}`),G.value=!0;return}c(`save`,H()),l.success(`工作流保存成功`)},de=()=>{le()},fe=()=>{ue(),Q()},pe=()=>{ie(),ce()};return n({validateWorkflow:K,getCurrentWorkflowData:H,saveWorkflow:Q,previewWorkflow:de,deleteNode:ae,stats:k}),(t,n)=>(N(),x(`div`,yt,[b(` 浮动工具栏 `),S(`div`,bt,[w(R(r),{size:`small`,type:`primary`,onClick:Q},{icon:B(()=>[w(R(e),{name:`mdi:content-save`,size:16})]),default:B(()=>[n[7]||=C(` 保存 `,-1)]),_:1,__:[7]}),w(R(r),{size:`small`,onClick:de},{icon:B(()=>[w(R(e),{name:`mdi:eye`,size:16})]),default:B(()=>[n[8]||=C(` 预览 `,-1)]),_:1,__:[8]}),w(R(r),{size:`small`,onClick:R(q),title:`检查工作流配置是否正确`},{icon:B(()=>[w(R(e),{name:`mdi:check-circle`,size:16})]),default:B(()=>[n[9]||=C(` 验证流程 `,-1)]),_:1,__:[9]},8,[`onClick`]),n[10]||=S(`div`,{class:`toolbar-divider`},null,-1),w(R(r),{size:`small`,onClick:R(U),title:`适应窗口`},{icon:B(()=>[w(R(e),{name:`mdi:fit-to-screen`,size:16})]),_:1},8,[`onClick`]),w(R(r),{size:`small`,type:`error`,onClick:pe,title:`清空画布`},{icon:B(()=>[w(R(e),{name:`mdi:delete-sweep`,size:16})]),_:1})]),b(` Vue Flow 画布 `),w(R(ne),{ref_key:`vueFlowRef`,ref:u,nodes:R(d),"onUpdate:nodes":n[0]||=e=>D(d)?d.value=e:null,edges:R(f),"onUpdate:edges":n[1]||=e=>D(f)?f.value=e:null,"node-types":R(O),class:`workflow-canvas`,"default-viewport":{zoom:1,x:0,y:0},"min-zoom":.5,"max-zoom":2,"fit-view-on-init":!0,"nodes-draggable":!0,"elements-selectable":!0,onNodeClick:R(P),onPaneClick:R(z)},null,8,[`nodes`,`edges`,`node-types`,`onNodeClick`,`onPaneClick`]),b(` 节点添加菜单 `),(N(),y(_,{to:`body`},[te(S(`div`,{class:`add-node-menu`,style:j({left:R(v).x+`px`,top:R(v).y+`px`})},[S(`div`,xt,[(N(!0),x(g,null,I(R(V),t=>(N(),x(`div`,{key:t.type,class:`add-menu-item`,onClick:e=>R(M)(t.type)},[S(`div`,{class:A([`menu-icon`,t.iconClass])},[w(R(e),{name:t.icon,size:16},null,8,[`name`])],2),S(`span`,Ct,L(t.label),1)],8,St))),128))])],4),[[ee,R(m)]])])),b(` 节点配置弹窗 - 拆分到独立组件 `),w(Ce,{show:R(T),"onUpdate:show":n[2]||=e=>D(T)?T.value=e:null,"current-node":R(E),users:t.users,departments:t.departments,onSave:R(re),onCancel:n[3]||=e=>T.value=!1},null,8,[`show`,`current-node`,`users`,`departments`,`onSave`]),b(` 验证错误日志抽屉 `),w(R(a),{show:R(G),"onUpdate:show":n[5]||=e=>D(G)?G.value=e:null,width:450,placement:`right`},{default:B(()=>[w(R(o),{title:`流程验证结果`,closable:``},{footer:B(()=>[S(`div`,Lt,[w(R(r),{onClick:n[4]||=e=>G.value=!1},{default:B(()=>n[16]||=[C(`关闭`,-1)]),_:1,__:[16]}),w(R(r),{type:`primary`,onClick:R(q)},{icon:B(()=>[w(R(e),{name:`mdi:refresh`,size:16})]),default:B(()=>[n[17]||=C(` 重新验证 `,-1)]),_:1,__:[17]},8,[`onClick`])])]),default:B(()=>[R(W).length===0?(N(),x(`div`,wt,[S(`div`,Tt,[w(R(e),{name:`mdi:check-circle`,size:32,color:`#52c41a`})]),n[11]||=S(`h3`,null,`验证通过`,-1),n[12]||=S(`p`,null,`工作流配置正确,所有节点都已正确设置!`,-1)])):(N(),x(`div`,Et,[S(`div`,Dt,[S(`div`,Ot,[w(R(e),{name:`mdi:alert-circle`,size:24,color:`#ff4d4f`})]),S(`h3`,null,`发现 `+L(R(W).length)+` 个问题`,1),n[13]||=S(`p`,null,`请修复以下问题后重新验证:`,-1)]),S(`div`,kt,[(N(!0),x(g,null,I(R(W),(t,i)=>(N(),x(`div`,{key:t.nodeId,class:`error-item`},[S(`div`,At,[S(`span`,jt,L(i+1),1),S(`div`,Mt,[S(`strong`,Nt,L(t.nodeName),1),S(`span`,Pt,L(R(J)(t.field)),1)]),S(`div`,{class:A([`error-type`,t.type])},L(R(se)(t.type)),3)]),S(`div`,Ft,L(t.message),1),S(`div`,It,[w(R(r),{size:`small`,type:`primary`,onClick:e=>R(oe)(t.nodeId)},{icon:B(()=>[w(R(e),{name:`mdi:target`,size:16})]),default:B(()=>[n[14]||=C(` 定位节点 `,-1)]),_:2,__:[14]},1032,[`onClick`])])]))),128))]),n[15]||=S(`div`,{class:`validation-tips`},[S(`h4`,null,`💡 常见问题解决方案:`),S(`ul`,null,[S(`li`,null,[S(`strong`,null,`审批人未设置:`),C(`点击审批节点,在弹窗中选择审批人员 `)]),S(`li`,null,[S(`strong`,null,`条件分支未配置:`),C(`点击条件节点,添加至少一个条件分支 `)]),S(`li`,null,[S(`strong`,null,`节点连接断开:`),C(` 检查节点之间的连线是否正确 `)])])],-1)]))]),_:1})]),_:1},8,[`show`]),b(` 流程预览抽屉 `),w(R(a),{show:R(Y),"onUpdate:show":n[6]||=e=>D(Y)?Y.value=e:null,width:520,placement:`right`},{default:B(()=>[w(R(o),{title:`流程预览`,closable:``},{footer:B(()=>[S(`div`,ln,[w(R(r),{onClick:R(ue)},{default:B(()=>n[24]||=[C(`关闭`,-1)]),_:1,__:[24]},8,[`onClick`]),w(R(r),{type:`primary`,onClick:fe},{icon:B(()=>[w(R(e),{name:`mdi:content-save`,size:16})]),default:B(()=>[n[25]||=C(` 确认并保存 `,-1)]),_:1,__:[25]})])]),default:B(()=>[S(`div`,Rt,[S(`div`,zt,[S(`span`,Bt,L(R(Z).totalNodes),1),n[18]||=S(`span`,{class:`stat-label`},`总节点`,-1)]),S(`div`,Vt,[S(`span`,Ht,L(R(Z).approvalNodes),1),n[19]||=S(`span`,{class:`stat-label`},`审批`,-1)]),S(`div`,Ut,[S(`span`,Wt,L(R(Z).copyNodes),1),n[20]||=S(`span`,{class:`stat-label`},`抄送`,-1)]),S(`div`,Gt,[S(`span`,Kt,L(R(Z).conditionNodes),1),n[21]||=S(`span`,{class:`stat-label`},`条件`,-1)]),S(`div`,qt,[S(`span`,Jt,L(R(Z).totalEdges),1),n[22]||=S(`span`,{class:`stat-label`},`连线`,-1)])]),S(`div`,Yt,[(N(!0),x(g,null,I(R(X),(t,n)=>(N(),x(`div`,{key:t.node.id,class:A([`preview-step`,t.colorClass])},[b(` 时间线连接线 `),S(`div`,Xt,[S(`div`,Zt,[w(R(e),{name:t.icon,size:16},null,8,[`name`])]),n<R(X).length-1?(N(),x(`div`,Qt)):b(`v-if`,!0)]),b(` 步骤内容 `),S(`div`,$t,[S(`div`,en,[S(`span`,tn,`步骤 `+L(t.order),1),S(`span`,nn,L(t.nodeTypeLabel),1)]),S(`div`,rn,L(t.node.data.title),1),t.details.length>0?(N(),x(`div`,an,[(N(!0),x(g,null,I(t.details,(t,n)=>(N(),x(`div`,{key:n,class:A([`step-detail-item`,{"is-warning":t.type===`warning`}])},[S(`span`,on,L(t.label)+`:`,1),b(` 审批方式 badge `),t.type===`mode`?(N(),x(`span`,{key:0,class:A([`mode-badge`,t.modeKey])},L(t.value),3)):t.type===`users`?(N(),x(g,{key:1},[b(` 人员 tags `),(N(!0),x(g,null,I(t.users,t=>(N(),y(R(p),{key:t.name,size:`small`,bordered:!1,round:``,class:`user-tag`},{icon:B(()=>[w(R(e),{name:`mdi:account`,size:12})]),default:B(()=>[C(` `+L(t.name),1)]),_:2},1024))),128))],64)):t.type===`warning`?(N(),x(g,{key:2},[b(` 警告文案 `),S(`span`,sn,` ⚠️ `+L(t.value),1)],2112)):(N(),x(g,{key:3},[b(` 普通文本 `),S(`span`,null,L(t.value),1)],2112))],2))),128))])):b(`v-if`,!0)])],2))),128))]),R(X).length===0?(N(),x(`div`,cn,[w(R(e),{name:`mdi:file-document-outline`,size:48,color:`#d1d5db`}),n[23]||=S(`p`,null,`暂无流程节点`,-1)])):b(`v-if`,!0)]),_:1})]),_:1},8,[`show`])]))}}),[[`__scopeId`,`data-v-6ed6dbc9`]]);export{pt as i,vt as n,mt as r,un as t};
|
|
2
|
-
//# sourceMappingURL=C_WorkFlow2.js.map
|
|
1
|
+
import{r as e}from"./config.js";import{t}from"./C_Icon2.js";import{t as n}from"./export-helper.js";import{Fragment as r,Teleport as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,inject as p,isRef as m,markRaw as h,nextTick as g,normalizeClass as _,normalizeStyle as v,onMounted as y,openBlock as b,provide as x,ref as S,renderList as C,toDisplayString as w,unref as T,vShow as E,watch as D,withCtx as O,withDirectives as ee}from"vue";import{NAvatar as k,NButton as A,NCard as j,NDrawer as M,NDrawerContent as N,NInput as P,NModal as F,NRadio as te,NRadioGroup as ne,NSelect as I,NSpace as re,NTag as ie,NTree as ae}from"naive-ui";import{VueFlow as L}from"@vue-flow/core";const R=[{type:`approval`,label:`审批人`,icon:`mdi:account-check`,iconClass:`approval-icon`},{type:`copy`,label:`抄送人`,icon:`mdi:email-outline`,iconClass:`copy-icon`},{type:`condition`,label:`条件分支`,icon:`mdi:source-branch`,iconClass:`condition-icon`}],oe=[{value:`any`,label:`或签`,desc:`任意一人同意即可通过`},{value:`all`,label:`会签`,desc:`所有人都同意才能通过`},{value:`sequence`,label:`顺序审批`,desc:`按选择顺序依次审批`}],se=[{label:`申请金额`,value:`amount`},{label:`申请人部门`,value:`department`},{label:`申请类型`,value:`type`},{label:`紧急程度`,value:`priority`}],z=[{label:`等于`,value:`equals`},{label:`大于`,value:`greater_than`},{label:`小于`,value:`less_than`},{label:`包含`,value:`contains`},{label:`不等于`,value:`not_equals`}],B={start:`发起人`,approval:`审批人`,copy:`抄送人`,condition:`条件分支`},ce={approval:`审批人设置`,copy:`抄送人设置`,condition:`条件分支设置`},V={approvers:`审批人`,conditions:`条件配置`,connection:`节点连接`,copyUsers:`抄送人`},H={required:`必填`,incomplete:`不完整`,warning:`警告`,error:`错误`},U={id:`start-1`,type:`start`,position:{x:150,y:100},data:{title:`发起人`,status:`active`,initiators:[]}},W=e=>{let t=Array.from(e.trim()).slice(0,2).join(``).toUpperCase()||`?`,n=`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80"><rect width="80" height="80" rx="40" fill="hsl(${Array.from(e).reduce((e,t)=>(e*31+(t.codePointAt(0)??0))%360,210)} 55% 46%)"/><text x="40" y="48" text-anchor="middle" font-family="sans-serif" font-size="28" fill="white">${t.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}</text></svg>`;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`},G=()=>`condition-${Date.now()}`,K=(e,t)=>`edge-${e}-${t}`,le=()=>({id:G(),name:``,field:``,operator:`equals`,value:``}),ue={key:0,class:`max-h-60vh overflow-y-auto`},q={class:`config-section`},J={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},Y={class:`border rounded-lg p-3 mb-4 max-h-50 overflow-y-auto`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},de={key:0,class:`rounded-lg p-4 mb-4 border`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},X={class:`mb-2 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},Z={class:`flex flex-wrap gap-3`},Q={class:`flex items-center gap-2`},fe={class:`font-medium text-sm`},pe={class:`text-xs px-1.5 py-0.5 rounded`,style:{color:`var(--n-text-color-3)`,background:`var(--n-color-embedded)`}},me={key:0,class:`mt-4`},he={class:`flex flex-col gap-1`},ge={class:`text-sm`},_e={class:`text-xs`,style:{color:`var(--n-text-color-3)`}},ve={class:`max-h-60vh overflow-y-auto`},ye={class:`config-section`},be={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},xe={class:`space-y-3`},Se={class:`flex items-center gap-3 flex-nowrap min-h-10 p-2`},Ce=f({__name:`NodeConfigModal`,props:{show:{type:Boolean,default:!1},currentNode:{default:null},users:{default:()=>[]},departments:{default:()=>[]}},emits:[`update:show`,`save`,`cancel`],setup(n,{emit:i}){let f=n,p=i,m=e(),h=S(``),g=S([]),_=S([]),v=S(`any`),y=S(!1),x=S([]),E=a({get:()=>f.show,set:e=>p(`update:show`,e)}),ee=a(()=>f.currentNode?.type===`start`?`发起人设置`:ce[f.currentNode?.type]||`节点设置`),M=a(()=>{let e=[],t=new Map;return f.departments?.forEach(e=>{t.has(e.id)||t.set(e.id,{key:`dept-${e.id}`,label:`${e.name} ${e.manager?`(负责人: ${e.manager})`:``}`,children:[],isLeaf:!1,disabled:!0})}),(f.users?.filter(e=>!h.value||e.name.includes(h.value)||e.department.includes(h.value))||[]).forEach(e=>{let n=f.departments?.find(t=>t.name===e.department);n&&t.has(n.id)&&t.get(n.id).children.push({key:e.id,label:`${e.name}${e.role?`(${e.role})`:``}`,isLeaf:!0,user:e})}),t.forEach(t=>{t.children.length>0&&e.push(t)}),e}),N=a(()=>f.users?.filter(e=>g.value.includes(e.id))||[]),L=a(()=>f.users?.filter(e=>_.value.includes(e.id))||[]),R=a(()=>f.users?.filter(e=>g.value.includes(e.id))||[]),B=e=>{g.value=e.filter(e=>!e.startsWith(`dept-`))},V=e=>{_.value=e.filter(e=>!e.startsWith(`dept-`))},H=e=>{g.value=g.value.filter(t=>t!==e)},U=e=>{_.value=_.value.filter(t=>t!==e)},G=e=>{g.value=g.value.filter(t=>t!==e)},K=()=>x.value.push(le()),Ce=e=>x.value.splice(e,1),we=e=>{let{initiators:t}=e.data;g.value=t?t.map(e=>e.id):[]},Te=e=>{g.value=(e.data.approvers||[]).map(e=>e.id),v.value=e.data.approvalMode||`any`},Ee=e=>{_.value=(e.data.copyUsers||[]).map(e=>e.id)},De=e=>{x.value=e.data.conditions||[]},Oe=async()=>{if(g.value.length===0)return m.error(`请选择发起人`),!1;let e=R.value;return p(`save`,{initiators:e}),m.success(`已设置 ${e.length} 个发起人`),!0},ke=async()=>{if(g.value.length===0)return m.error(`请至少选择一个审批人`),!1;let e=N.value;return p(`save`,{approvers:e,approvalMode:v.value}),m.success(`已设置 ${e.length} 个审批人`),!0},Ae=async()=>{let e=L.value;return p(`save`,{copyUsers:e}),m.success(`已设置 ${e.length} 个抄送人`),!0},je=async()=>{if(x.value.length===0)return m.error(`请至少添加一个条件分支`),!1;let e=x.value.filter(e=>e.name&&e.field&&e.operator&&e.value);return e.length===0?(m.error(`请完善条件配置`),!1):(p(`save`,{conditions:e}),m.success(`已设置 ${e.length} 个条件分支`),!0)},Me=async()=>{if(!f.currentNode)return!1;y.value=!0;try{let e={start:Oe,approval:ke,copy:Ae,condition:je}[f.currentNode.type];return e?await e():!1}catch(e){return m.error(`保存配置失败`,e),!1}finally{y.value=!1}},Ne=()=>{p(`cancel`)};D(()=>f.currentNode,e=>{if(e){h.value=``;let t={start:we,approval:Te,copy:Ee,condition:De}[e.type];t&&t(e)}},{immediate:!0});let Pe=a(()=>[`start`,`approval`,`copy`].includes(f.currentNode?.type||``)),$=a(()=>{let e=f.currentNode?.type;return e===`start`?{icon:`mdi:account-star`,title:`选择发起人`,checkedKeys:g.value,onSelect:B,selectedUsers:R.value,selectedLabel:`已选择发起人`,tagType:`primary`,onRemove:G}:e===`approval`?{icon:`mdi:account-check`,title:`选择审批人`,checkedKeys:g.value,onSelect:B,selectedUsers:N.value,selectedLabel:`已选择审批人`,tagType:`info`,onRemove:H}:e===`copy`?{icon:`mdi:email-outline`,title:`选择抄送人`,checkedKeys:_.value,onSelect:V,selectedUsers:L.value,selectedLabel:`已选择抄送人`,tagType:`success`,onRemove:U}:{icon:``,title:``,checkedKeys:[],onSelect:()=>{},selectedUsers:[],selectedLabel:``,tagType:`default`,onRemove:()=>{}}});return(e,n)=>(b(),o(T(F),{show:E.value,"onUpdate:show":n[2]||=e=>E.value=e,style:{width:`900px`},"mask-closable":!1,preset:`dialog`,title:ee.value,"positive-text":`确定`,"negative-text":`取消`,loading:y.value,onPositiveClick:Me,onNegativeClick:Ne},{default:O(()=>[s(` 公共选择面板 `),Pe.value?(b(),c(`div`,ue,[l(`div`,q,[l(`h4`,J,[$.value.icon?(b(),o(T(t),{key:0,name:$.value.icon,size:16},null,8,[`name`])):s(`v-if`,!0),u(` `+w($.value.title),1)]),d(T(P),{value:h.value,"onUpdate:value":n[0]||=e=>h.value=e,placeholder:`搜索用户姓名或部门`,clearable:``,class:`mb-4`},{prefix:O(()=>[d(T(t),{name:`mdi:magnify`,size:16})]),_:1},8,[`value`]),l(`div`,Y,[d(T(ae),{data:M.value,"checked-keys":$.value.checkedKeys,selectable:!1,checkable:``,cascade:``,"virtual-scroll":!0,style:{"max-height":`300px`},"onUpdate:checkedKeys":$.value.onSelect},null,8,[`data`,`checked-keys`,`onUpdate:checkedKeys`])]),$.value.selectedUsers.length>0?(b(),c(`div`,de,[l(`h5`,X,w($.value.selectedLabel)+` (`+w($.value.selectedUsers.length)+`) `,1),l(`div`,Z,[(b(!0),c(r,null,C($.value.selectedUsers,e=>(b(),o(T(ie),{key:e.id,closable:``,type:$.value.tagType,onClose:t=>$.value.onRemove(e.id)},{default:O(()=>[l(`div`,Q,[d(T(k),{src:e.avatar,"fallback-src":T(W)(e.name),size:`small`},null,8,[`src`,`fallback-src`]),l(`span`,fe,w(e.name),1),l(`span`,pe,w(e.department),1)])]),_:2},1032,[`type`,`onClose`]))),128))])])):s(`v-if`,!0)]),s(` 审批节点时附带审批模式 `),f.currentNode?.type===`approval`?(b(),c(`div`,me,[n[3]||=l(`h5`,{class:`mb-3 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},` 审批模式 `,-1),d(T(ne),{value:v.value,"onUpdate:value":n[1]||=e=>v.value=e},{default:O(()=>[d(T(re),{vertical:``},{default:O(()=>[(b(!0),c(r,null,C(T(oe),e=>(b(),o(T(te),{key:e.value,value:e.value},{default:O(()=>[l(`div`,he,[l(`strong`,ge,w(e.label),1),l(`span`,_e,w(e.desc),1)])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`])])):s(`v-if`,!0)])):f.currentNode?.type===`condition`?(b(),c(r,{key:1},[s(` 条件节点配置 `),l(`div`,ve,[l(`div`,ye,[l(`h4`,be,[d(T(t),{name:`mdi:source-branch`,size:16}),n[4]||=u(` 条件分支设置 `,-1)]),l(`div`,xe,[(b(!0),c(r,null,C(x.value,(e,n)=>(b(),c(`div`,{key:e.id,class:`condition-item`},[d(T(j),{size:`small`,class:`border border-gray-200 hover:border-gray-300 transition-colors`},{default:O(()=>[l(`div`,Se,[d(T(P),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`分支名称`,style:{width:`150px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),d(T(I),{value:e.field,"onUpdate:value":t=>e.field=t,placeholder:`选择字段`,options:T(se),style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),d(T(I),{value:e.operator,"onUpdate:value":t=>e.operator=t,placeholder:`操作符`,options:T(z),style:{width:`100px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),d(T(P),{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`值`,style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),d(T(A),{quaternary:``,type:`error`,onClick:e=>Ce(n),class:`flex-shrink-0 ml-auto`},{icon:O(()=>[d(T(t),{name:`mdi:delete`,size:16})]),_:1},8,[`onClick`])])]),_:2},1024)]))),128)),d(T(A),{dashed:``,block:``,onClick:K,class:`w-full`},{icon:O(()=>[d(T(t),{name:`mdi:plus`,size:16})]),default:O(()=>[n[5]||=u(` 添加条件 `,-1)]),_:1})])])])],2112)):s(`v-if`,!0)]),_:1},8,[`show`,`title`,`loading`]))}}),we={class:`start-node`},Te={class:`node-content`},Ee={class:`node-info`},De={class:`node-text`},Oe={key:0,class:`initiator-name`},ke={key:1,class:`placeholder-text`};var Ae=n(f({__name:`StartNode`,props:{id:{},data:{}},setup(e){let n=e,r=p(`showAddMenu`),i=a(()=>{let{initiators:e}=n.data;return!e||!Array.isArray(e)||e.length===0?``:e.map(e=>e?.name||`未知用户`).join(`、`)}),o=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)};return(n,r)=>(b(),c(`div`,we,[s(` 主要内容区域 `),l(`div`,Te,[r[0]||=l(`div`,{class:`node-icon`},`🚀`,-1),l(`div`,Ee,[l(`div`,De,w(e.data.title),1),i.value?(b(),c(`div`,Oe,w(i.value),1)):(b(),c(`div`,ke,`点击设置发起人`))])]),s(` 添加节点按钮 `),l(`button`,{type:`button`,class:`add-node-btn`,onClick:o,title:`添加下一个节点`},[d(T(t),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-1f2325ac`]]);const je={class:`approval-node`},Me={class:`node-card`},Ne={class:`node-header`},Pe={class:`node-icon`},$={class:`node-title`},Fe={key:0,class:`node-badge`},Ie={key:1,class:`approval-mode-badge`},Le={class:`node-content`},Re={key:0,class:`approvers-list`},ze={class:`approver-info`},Be={class:`approver-avatar`},Ve={class:`approver-details`},He={class:`approver-name`},Ue={class:`approver-dept`},We={class:`approver-role`},Ge={key:0,class:`more-count`},Ke={key:1,class:`placeholder`};var qe=n(f({__name:`ApprovalNode`,props:{id:{},data:{}},setup(e){let n=e,i=p(`showAddMenu`),o=p(`deleteNode`),u=a(()=>n.data.approvers??[]),f=a(()=>u.value.length),m=a(()=>u.value.slice(0,3)),h=a(()=>Math.max(0,f.value-3)),g=e=>({any:`或签`,all:`会签`,sequence:`顺序`})[e]||``,v=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)},y=e=>{e.stopPropagation(),o&&o(n.id)};return(n,i)=>(b(),c(`div`,je,[l(`div`,{class:_([`status-indicator`,e.data.status])},null,2),s(` 删除按钮 `),l(`button`,{type:`button`,class:`delete-btn`,onClick:y,title:`删除节点`},[d(T(t),{name:`mdi:close`,size:12})]),l(`div`,Me,[l(`div`,Ne,[l(`div`,Pe,[d(T(t),{name:`mdi:account`,size:12,color:`white`})]),l(`span`,$,w(e.data.title),1),f.value>0?(b(),c(`div`,Fe,w(f.value),1)):s(`v-if`,!0),e.data.approvalMode?(b(),c(`div`,Ie,w(g(e.data.approvalMode)),1)):s(`v-if`,!0)]),l(`div`,Le,[f.value>0?(b(),c(`div`,Re,[(b(!0),c(r,null,C(m.value,e=>(b(),c(`div`,{key:e.id,class:`approver-tag`},[l(`div`,ze,[l(`div`,Be,[d(T(k),{src:e.avatar,"fallback-src":T(W)(e.name),size:`small`},null,8,[`src`,`fallback-src`])]),l(`div`,Ve,[l(`span`,He,w(e.name),1),l(`span`,Ue,w(e.department),1),l(`span`,We,w(e.role),1)])])]))),128)),h.value>0?(b(),c(`div`,Ge,`+`+w(h.value),1)):s(`v-if`,!0)])):(b(),c(`div`,Ke,[d(T(t),{name:`mdi:account-plus`,size:24,color:`#9ca3af`}),i[0]||=l(`span`,null,`请设置审批人`,-1)]))])]),l(`button`,{type:`button`,class:`add-node-btn`,onClick:v,title:`添加下一个节点`},[d(T(t),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-fa2d9ea3`]]);const Je={class:`copy-node`},Ye={class:`node-card`},Xe={class:`node-header`},Ze={class:`node-title`},Qe={key:0,class:`node-badge`},$e={class:`node-content`},et={key:0,class:`copy-users-list`},tt={key:0,class:`more-count`},nt={key:1,class:`placeholder`};var rt=n(f({__name:`CopyNode`,props:{id:{},data:{}},setup(e){let n=e,i=p(`showAddMenu`),o=p(`deleteNode`),u=a(()=>n.data.copyUsers??[]),f=a(()=>u.value.length),m=a(()=>u.value.slice(0,3)),h=a(()=>Math.max(0,f.value-3)),g=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)},v=e=>{e.stopPropagation(),o&&o(n.id)};return(n,i)=>(b(),c(`div`,Je,[l(`div`,{class:_([`status-indicator`,e.data.status])},null,2),s(` 删除按钮 `),l(`button`,{type:`button`,class:`delete-btn`,onClick:v,title:`删除节点`},[d(T(t),{name:`mdi:close`,size:12})]),l(`div`,Ye,[l(`div`,Xe,[i[0]||=l(`div`,{class:`node-icon`},`📋`,-1),l(`span`,Ze,w(e.data.title),1),f.value>0?(b(),c(`div`,Qe,w(f.value),1)):s(`v-if`,!0)]),l(`div`,$e,[f.value>0?(b(),c(`div`,et,[(b(!0),c(r,null,C(m.value,e=>(b(),c(`div`,{key:e.id,class:`copy-user-tag`},w(e.name),1))),128)),h.value>0?(b(),c(`div`,tt,`+`+w(h.value),1)):s(`v-if`,!0)])):(b(),c(`div`,nt,`请设置抄送人`))])]),l(`button`,{type:`button`,class:`add-node-btn`,onClick:g,title:`添加下一个节点`},[d(T(t),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-b4fabe4b`]]);const it={class:`condition-node`},at={class:`node-card`},ot={class:`node-header`},st={class:`node-title`},ct={key:0,class:`node-badge`},lt={class:`node-content`},ut={key:0,class:`conditions-list`},dt={key:0,class:`more-count`},ft={key:1,class:`placeholder`};var pt=n(f({__name:`ConditionNode`,props:{id:{},data:{}},setup(e){let n=e,i=p(`showAddMenu`),o=p(`deleteNode`),u=a(()=>n.data.conditions??[]),f=a(()=>u.value.length),m=a(()=>u.value.slice(0,2)),h=a(()=>Math.max(0,f.value-2)),g=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i&&i({x:t.left+t.width/2,y:t.bottom+10},n.id)},v=e=>{e.stopPropagation(),o&&o(n.id)};return(n,i)=>(b(),c(`div`,it,[l(`div`,{class:_([`status-indicator`,e.data.status])},null,2),s(` 删除按钮 `),l(`button`,{type:`button`,class:`delete-btn`,onClick:v,title:`删除节点`},[d(T(t),{name:`mdi:close`,size:12})]),l(`div`,at,[l(`div`,ot,[i[0]||=l(`div`,{class:`node-icon`},`🔀`,-1),l(`span`,st,w(e.data.title),1),f.value>0?(b(),c(`div`,ct,w(f.value),1)):s(`v-if`,!0)]),l(`div`,lt,[f.value>0?(b(),c(`div`,ut,[(b(!0),c(r,null,C(m.value,e=>(b(),c(`div`,{key:e.id,class:`condition-tag`},[i[1]||=l(`span`,{class:`condition-icon`},`→`,-1),l(`span`,null,w(e.name||`条件`+(m.value.indexOf(e)+1)),1)]))),128)),h.value>0?(b(),c(`div`,dt,`+`+w(h.value),1)):s(`v-if`,!0)])):(b(),c(`div`,ft,`请设置分支条件`))])]),l(`button`,{type:`button`,class:`add-node-btn`,onClick:g,title:`添加下一个节点`},[d(T(t),{name:`mdi:plus`,size:16})])]))}}),[[`__scopeId`,`data-v-12e84033`]]);const mt={start:h(Ae),approval:h(qe),copy:h(rt),condition:h(pt)};function ht(t,n,r){let i=e(),o=S([{...U}]),s=S([]),c=S(!1),l=S({x:0,y:0}),u=S(!1),d=S(null),f=S(null),p=a(()=>mt),m=a(()=>{let e={totalNodes:o.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0};return o.value.forEach(t=>{t.type===`approval`?e.approvalNodes++:t.type===`copy`?e.copyNodes++:t.type===`condition`&&e.conditionNodes++}),e}),h=()=>({nodes:o.value,edges:s.value,config:{version:`1.0`,createdAt:new Date().toISOString()}}),_=()=>{let e=h();n(`update:modelValue`,e),n(`change`,e)},v=(e=60,t=400)=>{g(()=>{setTimeout(()=>{r.value?.fitView?.({padding:e,duration:t})},100)})},b=(e,t)=>{l.value={x:typeof e.x==`number`?e.x:0,y:typeof e.y==`number`?e.y:0},f.value=t||null,c.value=!0},C=()=>{c.value=!1},w=e=>{if(e===`start-1`){i.warning(`不能删除开始节点`);return}let t=o.value.findIndex(t=>t.id===e);if(t===-1)return;let n=s.value.filter(t=>t.target===e),r=s.value.filter(t=>t.source===e);o.value.splice(t,1),s.value=s.value.filter(t=>t.source!==e&&t.target!==e),n.forEach(e=>{r.forEach(t=>{s.value.push({id:K(e.source,t.target),source:e.source,target:t.target,animated:!0,type:`default`})})}),o.value.forEach((e,n)=>{n>=t&&(e.position.y-=180)}),_(),i.success(`节点已删除`),v()};x(`showAddMenu`,b),x(`deleteNode`,w);let T=()=>{let e=o.value.length-1,t=o.value[e];if(f.value){let n=o.value.findIndex(e=>e.id===f.value);n!==-1&&(e=n,t=o.value[e])}return{targetNodeIndex:e,targetNode:t}},E=(e,t)=>({id:`${e}-${Date.now()}`,type:e,position:{x:t?.position.x||150,y:(t?.position.y||130)+180},data:{title:B[e],status:`pending`,...e===`approval`&&{approvers:[],approvalMode:`any`},...e===`copy`&&{copyUsers:[]},...e===`condition`&&{conditions:[]}}}),O=(e,t)=>{let n=s.value.filter(t=>t.source===e.id);s.value=s.value.filter(t=>t.source!==e.id),s.value.push({id:K(e.id,t.id),source:e.id,target:t.id,animated:!0,type:`default`}),n.forEach(e=>{s.value.push({id:K(t.id,e.target),source:t.id,target:e.target,animated:!0,type:`default`})})};return D(()=>t.modelValue,e=>{e&&e!==h()&&(o.value=e.nodes||[],s.value=e.edges||[])},{deep:!0}),y(()=>{g(()=>{setTimeout(()=>{r.value?.fitView?.({padding:80,includeHiddenNodes:!1,minZoom:.8,maxZoom:1.2,duration:600})},300)})}),{nodes:o,edges:s,showAddMenu:c,menuPosition:l,showNodeConfig:u,currentNode:d,nodeTypes:p,workflowStats:m,addNode:e=>{try{let{targetNodeIndex:t,targetNode:n}=T(),r=E(e,n);o.value.splice(t+1,0,r);for(let e=t+2;e<o.value.length;e++)o.value[e].position.y+=180;n&&O(n,r),c.value=!1,f.value=null,_(),v()}catch(e){i.error(`添加节点失败,请重试`,e)}},onNodeClick:e=>{let{node:t}=e;d.value=t,u.value=!0,n(`node-click`,t)},closeAddMenu:C,handleConfigSave:e=>{if(!d.value)return;let t=o.value.findIndex(e=>e.id===d.value.id);if(t!==-1){let n={...o.value[t],data:{...o.value[t].data,...e}};o.value.splice(t,1,n),d.value=n}_(),u.value=!1,i.success(`节点配置已保存`)},resetNodes:()=>{o.value=[{...U}],s.value=[],_(),v(80,600),i.success(`画布已清空`)},getCurrentWorkflowData:h,fitView:()=>{if(!r.value?.fitView){i.warning(`画布未准备就绪,请稍后重试`);return}g(()=>{r.value.fitView({padding:50,includeHiddenNodes:!1,minZoom:.5,maxZoom:1.5,duration:800})}),i.success(`已适应窗口大小`)},deleteNode:w}}function gt(t,n,r,i){let a=e(),o=S([]),s=S(!1),c=()=>{let e=[];t.value.forEach(t=>{if(t.type===`approval`&&(t.data.approvers||[]).length===0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`approvers`,message:`审批节点必须设置至少一个审批人,否则流程无法正常运行`,type:`required`}),t.type===`condition`){let n=t.data.conditions||[];if(n.length===0)e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`条件分支节点必须配置至少一个分支条件,否则无法进行条件判断`,type:`required`});else{let r=n.filter(e=>!e.name||!e.field||!e.operator||!e.value);r.length>0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`有 ${r.length} 个条件分支配置不完整,请完善所有必填字段`,type:`incomplete`})}}});let r=new Set;return n.value.forEach(e=>{r.add(e.source),r.add(e.target)}),t.value.forEach(t=>{t.type!==`start`&&!r.has(t.id)&&e.push({nodeId:t.id,nodeName:t.data.title,field:`connection`,message:`此节点未与其他节点连接,可能导致流程中断`,type:`warning`})}),e};return{validationErrors:o,showValidationErrors:s,validateWorkflow:c,validateCurrentWorkflow:()=>{let e=c();o.value=e,e.length===0?(a.success(`工作流验证通过!所有节点配置正确`),s.value=!1):(a.error(`发现 ${e.length} 个问题,请查看详细错误`),s.value=!0,i?.onValidateError?.(e))},jumpToErrorNode:e=>{let n=t.value.find(t=>t.id===e);!n||!r.value||(r.value.setCenter(n.position.x,n.position.y,{zoom:1.2,duration:800}),setTimeout(()=>{i?.onShowNodeConfig?.(n),s.value=!1},900),a.info(`已定位到节点:${n.data.title}`))},getFieldDisplayName:e=>V[e]||e,getErrorTypeText:e=>H[e]||e,resetValidation:()=>{o.value=[],s.value=!1}}}const _t={start:{label:`发起人`,icon:`mdi:play-circle`,colorClass:`start`},approval:{label:`审批节点`,icon:`mdi:account-check`,colorClass:`approval`},copy:{label:`抄送节点`,icon:`mdi:email-outline`,colorClass:`copy`},condition:{label:`条件分支`,icon:`mdi:source-branch`,colorClass:`condition`}},vt={any:`或签(任一审批人通过即可)`,all:`会签(所有审批人必须通过)`,sequence:`顺序审批(按顺序依次审批)`},yt={equals:`等于`,not_equals:`不等于`,greater_than:`大于`,less_than:`小于`,contains:`包含`};function bt(e,t){let n=S(!1),r=S([]),i=S({totalNodes:0,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:0}),a={start:e=>{let t=e.initiators||[];return t.length>0?[{type:`users`,label:`发起人`,users:t}]:[{type:`text`,label:`发起人`,value:`所有人`}]},approval:e=>{let t=e.approvalMode||`any`,n=e.approvers||[],r=[{type:`mode`,label:`审批方式`,value:vt[t]||t,modeKey:t}];return n.length>0?r.push({type:`users`,label:`审批人`,users:n}):r.push({type:`warning`,label:`审批人`,value:`未设置`}),r},copy:e=>{let t=e.copyUsers||[];return t.length>0?[{type:`users`,label:`抄送人`,users:t}]:[{type:`text`,label:`抄送人`,value:`未设置`}]},condition:e=>{let t=e.conditions||[];return t.length===0?[{type:`warning`,label:`条件分支`,value:`未配置`}]:t.map((e,t)=>{let n=yt[e.operator]||e.operator;return{type:`text`,label:`分支 ${t+1}`,value:`${e.name||`未命名`} — ${e.field||`?`} ${n} ${e.value||`?`}`}})}},o=e=>{let t=a[e.type||`start`];return t?t(e.data):[]},s=()=>{let n=new Map;e.value.forEach(e=>n.set(e.id,e));let r=new Map,i=new Map;e.value.forEach(e=>{r.set(e.id,[]),i.set(e.id,0)}),t.value.forEach(e=>{r.get(e.source)?.push(e.target),i.set(e.target,(i.get(e.target)||0)+1)});let a=[];i.forEach((e,t)=>{e===0&&a.push(t)});let o=[],s=new Set;for(;a.length>0;){let e=a.shift();if(s.has(e))continue;s.add(e);let t=n.get(e);t&&o.push(t);let c=r.get(e)||[];for(let e of c){let t=(i.get(e)||1)-1;i.set(e,t),t<=0&&!s.has(e)&&a.push(e)}}return e.value.forEach(e=>{s.has(e.id)||o.push(e)}),o},c=()=>s().map((e,t)=>{let n=_t[e.type||`start`]||_t.start;return{order:t+1,node:e,nodeTypeLabel:n.label,icon:n.icon,colorClass:n.colorClass,details:o(e)}}),l=()=>{let n={totalNodes:e.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:t.value.length};return e.value.forEach(e=>{e.type===`approval`?n.approvalNodes++:e.type===`copy`?n.copyNodes++:e.type===`condition`&&n.conditionNodes++}),n};return{showPreview:n,previewSteps:r,previewStats:i,openPreview:()=>{r.value=c(),i.value=l(),n.value=!0},closePreview:()=>{n.value=!1}}}const xt={class:`approval-workflow-container`},St={class:`floating-toolbar`},Ct={class:`add-menu-content`},wt=[`onClick`],Tt={class:`menu-text`},Et={key:0,class:`validation-success`},Dt={class:`success-icon`},Ot={key:1,class:`validation-errors`},kt={class:`error-summary`},At={class:`error-icon`},jt={class:`error-list`},Mt={class:`error-header`},Nt={class:`error-number`},Pt={class:`error-info`},Ft={class:`error-node`},It={class:`error-field`},Lt={class:`error-message`},Rt={class:`error-actions`},zt={class:`validation-footer`},Bt={class:`preview-stats`},Vt={class:`stat-item`},Ht={class:`stat-value`},Ut={class:`stat-item approval`},Wt={class:`stat-value`},Gt={class:`stat-item copy`},Kt={class:`stat-value`},qt={class:`stat-item condition`},Jt={class:`stat-value`},Yt={class:`stat-item edge`},Xt={class:`stat-value`},Zt={class:`preview-timeline`},Qt={class:`step-connector`},$t={class:`step-dot`},en={key:0,class:`step-line`},tn={class:`step-content`},nn={class:`step-header`},rn={class:`step-order`},an={class:`step-type-badge`},on={class:`step-title`},sn={key:0,class:`step-details`},cn={class:`detail-label`},ln={class:`warning-text`},un={key:0,class:`preview-empty`},dn={class:`preview-footer`};var fn=n(f({name:`C_WorkFlow`,__name:`index`,props:{users:{default:()=>[]},roles:{default:()=>[]},departments:{default:()=>[]},modelValue:{},readonly:{type:Boolean,default:!1},theme:{default:`light`}},emits:[`update:modelValue`,`change`,`node-click`,`edge-click`,`save`,`validate-error`],setup(n,{expose:a,emit:f}){let p=n,h=f,g=e(),y=S(),{nodes:x,edges:D,showAddMenu:k,menuPosition:j,showNodeConfig:P,currentNode:F,nodeTypes:te,workflowStats:ne,addNode:I,onNodeClick:re,closeAddMenu:ae,handleConfigSave:oe,resetNodes:se,getCurrentWorkflowData:z,fitView:B,deleteNode:ce}=ht(p,h,y),{validationErrors:V,showValidationErrors:H,validateWorkflow:U,validateCurrentWorkflow:W,jumpToErrorNode:G,getFieldDisplayName:K,getErrorTypeText:le,resetValidation:ue}=gt(x,D,y,{onShowNodeConfig:e=>{F.value=e,P.value=!0},onValidateError:e=>h(`validate-error`,e)}),{showPreview:q,previewSteps:J,previewStats:Y,openPreview:de,closePreview:X}=bt(x,D),Z=()=>{let e=U();if(e.length>0){g.error(`工作流验证失败: ${e[0].message}`),H.value=!0;return}h(`save`,z()),g.success(`工作流保存成功`)},Q=()=>{de()},fe=()=>{X(),Z()},pe=()=>{se(),ue()};return a({validateWorkflow:U,getCurrentWorkflowData:z,saveWorkflow:Z,previewWorkflow:Q,deleteNode:ce,stats:ne}),(e,a)=>(b(),c(`div`,xt,[s(` 浮动工具栏 `),l(`div`,St,[d(T(A),{size:`small`,type:`primary`,onClick:Z},{icon:O(()=>[d(T(t),{name:`mdi:content-save`,size:16})]),default:O(()=>[a[7]||=u(` 保存 `,-1)]),_:1}),d(T(A),{size:`small`,onClick:Q},{icon:O(()=>[d(T(t),{name:`mdi:eye`,size:16})]),default:O(()=>[a[8]||=u(` 预览 `,-1)]),_:1}),d(T(A),{size:`small`,onClick:T(W),title:`检查工作流配置是否正确`},{icon:O(()=>[d(T(t),{name:`mdi:check-circle`,size:16})]),default:O(()=>[a[9]||=u(` 验证流程 `,-1)]),_:1},8,[`onClick`]),a[10]||=l(`div`,{class:`toolbar-divider`},null,-1),d(T(A),{size:`small`,onClick:T(B),title:`适应窗口`},{icon:O(()=>[d(T(t),{name:`mdi:fit-to-screen`,size:16})]),_:1},8,[`onClick`]),d(T(A),{size:`small`,type:`error`,onClick:pe,title:`清空画布`},{icon:O(()=>[d(T(t),{name:`mdi:delete-sweep`,size:16})]),_:1})]),s(` Vue Flow 画布 `),d(T(L),{ref_key:`vueFlowRef`,ref:y,nodes:T(x),"onUpdate:nodes":a[0]||=e=>m(x)?x.value=e:null,edges:T(D),"onUpdate:edges":a[1]||=e=>m(D)?D.value=e:null,"node-types":T(te),class:`workflow-canvas`,"default-viewport":{zoom:1,x:0,y:0},"min-zoom":.5,"max-zoom":2,"fit-view-on-init":!0,"nodes-draggable":!0,"elements-selectable":!0,onNodeClick:T(re),onPaneClick:T(ae)},null,8,[`nodes`,`edges`,`node-types`,`onNodeClick`,`onPaneClick`]),s(` 节点添加菜单 `),(b(),o(i,{to:`body`},[ee(l(`div`,{class:`add-node-menu`,style:v({left:T(j).x+`px`,top:T(j).y+`px`})},[l(`div`,Ct,[(b(!0),c(r,null,C(T(R),e=>(b(),c(`button`,{key:e.type,type:`button`,class:`add-menu-item`,onClick:t=>T(I)(e.type)},[l(`div`,{class:_([`menu-icon`,e.iconClass])},[d(T(t),{name:e.icon,size:16},null,8,[`name`])],2),l(`span`,Tt,w(e.label),1)],8,wt))),128))])],4),[[E,T(k)]])])),s(` 节点配置弹窗 - 拆分到独立组件 `),d(Ce,{show:T(P),"onUpdate:show":a[2]||=e=>m(P)?P.value=e:null,"current-node":T(F),users:n.users,departments:n.departments,onSave:T(oe),onCancel:a[3]||=e=>P.value=!1},null,8,[`show`,`current-node`,`users`,`departments`,`onSave`]),s(` 验证错误日志抽屉 `),d(T(M),{show:T(H),"onUpdate:show":a[5]||=e=>m(H)?H.value=e:null,width:450,placement:`right`},{default:O(()=>[d(T(N),{title:`流程验证结果`,closable:``},{footer:O(()=>[l(`div`,zt,[d(T(A),{onClick:a[4]||=e=>H.value=!1},{default:O(()=>[...a[16]||=[u(`关闭`,-1)]]),_:1}),d(T(A),{type:`primary`,onClick:T(W)},{icon:O(()=>[d(T(t),{name:`mdi:refresh`,size:16})]),default:O(()=>[a[17]||=u(` 重新验证 `,-1)]),_:1},8,[`onClick`])])]),default:O(()=>[T(V).length===0?(b(),c(`div`,Et,[l(`div`,Dt,[d(T(t),{name:`mdi:check-circle`,size:32,color:`#52c41a`})]),a[11]||=l(`h3`,null,`验证通过`,-1),a[12]||=l(`p`,null,`工作流配置正确,所有节点都已正确设置!`,-1)])):(b(),c(`div`,Ot,[l(`div`,kt,[l(`div`,At,[d(T(t),{name:`mdi:alert-circle`,size:24,color:`#ff4d4f`})]),l(`h3`,null,`发现 `+w(T(V).length)+` 个问题`,1),a[13]||=l(`p`,null,`请修复以下问题后重新验证:`,-1)]),l(`div`,jt,[(b(!0),c(r,null,C(T(V),(e,n)=>(b(),c(`div`,{key:e.nodeId,class:`error-item`},[l(`div`,Mt,[l(`span`,Nt,w(n+1),1),l(`div`,Pt,[l(`strong`,Ft,w(e.nodeName),1),l(`span`,It,w(T(K)(e.field)),1)]),l(`div`,{class:_([`error-type`,e.type])},w(T(le)(e.type)),3)]),l(`div`,Lt,w(e.message),1),l(`div`,Rt,[d(T(A),{size:`small`,type:`primary`,onClick:t=>T(G)(e.nodeId)},{icon:O(()=>[d(T(t),{name:`mdi:target`,size:16})]),default:O(()=>[a[14]||=u(` 定位节点 `,-1)]),_:1},8,[`onClick`])])]))),128))]),a[15]||=l(`div`,{class:`validation-tips`},[l(`h4`,null,`💡 常见问题解决方案:`),l(`ul`,null,[l(`li`,null,[l(`strong`,null,`审批人未设置:`),u(`点击审批节点,在弹窗中选择审批人员 `)]),l(`li`,null,[l(`strong`,null,`条件分支未配置:`),u(`点击条件节点,添加至少一个条件分支 `)]),l(`li`,null,[l(`strong`,null,`节点连接断开:`),u(` 检查节点之间的连线是否正确 `)])])],-1)]))]),_:1})]),_:1},8,[`show`]),s(` 流程预览抽屉 `),d(T(M),{show:T(q),"onUpdate:show":a[6]||=e=>m(q)?q.value=e:null,width:520,placement:`right`},{default:O(()=>[d(T(N),{title:`流程预览`,closable:``},{footer:O(()=>[l(`div`,dn,[d(T(A),{onClick:T(X)},{default:O(()=>[...a[24]||=[u(`关闭`,-1)]]),_:1},8,[`onClick`]),d(T(A),{type:`primary`,onClick:fe},{icon:O(()=>[d(T(t),{name:`mdi:content-save`,size:16})]),default:O(()=>[a[25]||=u(` 确认并保存 `,-1)]),_:1})])]),default:O(()=>[l(`div`,Bt,[l(`div`,Vt,[l(`span`,Ht,w(T(Y).totalNodes),1),a[18]||=l(`span`,{class:`stat-label`},`总节点`,-1)]),l(`div`,Ut,[l(`span`,Wt,w(T(Y).approvalNodes),1),a[19]||=l(`span`,{class:`stat-label`},`审批`,-1)]),l(`div`,Gt,[l(`span`,Kt,w(T(Y).copyNodes),1),a[20]||=l(`span`,{class:`stat-label`},`抄送`,-1)]),l(`div`,qt,[l(`span`,Jt,w(T(Y).conditionNodes),1),a[21]||=l(`span`,{class:`stat-label`},`条件`,-1)]),l(`div`,Yt,[l(`span`,Xt,w(T(Y).totalEdges),1),a[22]||=l(`span`,{class:`stat-label`},`连线`,-1)])]),l(`div`,Zt,[(b(!0),c(r,null,C(T(J),(e,n)=>(b(),c(`div`,{key:e.node.id,class:_([`preview-step`,e.colorClass])},[s(` 时间线连接线 `),l(`div`,Qt,[l(`div`,$t,[d(T(t),{name:e.icon,size:16},null,8,[`name`])]),n<T(J).length-1?(b(),c(`div`,en)):s(`v-if`,!0)]),s(` 步骤内容 `),l(`div`,tn,[l(`div`,nn,[l(`span`,rn,`步骤 `+w(e.order),1),l(`span`,an,w(e.nodeTypeLabel),1)]),l(`div`,on,w(e.node.data.title),1),e.details.length>0?(b(),c(`div`,sn,[(b(!0),c(r,null,C(e.details,(e,n)=>(b(),c(`div`,{key:n,class:_([`step-detail-item`,{"is-warning":e.type===`warning`}])},[l(`span`,cn,w(e.label)+`:`,1),s(` 审批方式 badge `),e.type===`mode`?(b(),c(`span`,{key:0,class:_([`mode-badge`,e.modeKey])},w(e.value),3)):e.type===`users`?(b(),c(r,{key:1},[s(` 人员 tags `),(b(!0),c(r,null,C(e.users,e=>(b(),o(T(ie),{key:e.name,size:`small`,bordered:!1,round:``,class:`user-tag`},{icon:O(()=>[d(T(t),{name:`mdi:account`,size:12})]),default:O(()=>[u(` `+w(e.name),1)]),_:2},1024))),128))],64)):e.type===`warning`?(b(),c(r,{key:2},[s(` 警告文案 `),l(`span`,ln,` ⚠️ `+w(e.value),1)],2112)):(b(),c(r,{key:3},[s(` 普通文本 `),l(`span`,null,w(e.value),1)],2112))],2))),128))])):s(`v-if`,!0)])],2))),128))]),T(J).length===0?(b(),c(`div`,un,[d(T(t),{name:`mdi:file-document-outline`,size:48,color:`#d1d5db`}),a[23]||=l(`p`,null,`暂无流程节点`,-1)])):s(`v-if`,!0)]),_:1})]),_:1},8,[`show`])]))}}),[[`__scopeId`,`data-v-696cf9bb`]]);export{ht as i,bt as n,gt as r,fn as t};
|
package/dist/city.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={A:[{id:56,spell:`aba`,name:`阿坝`},{id:57,spell:`akesu`,name:`阿克苏`},{id:58,spell:`alashanmeng`,name:`阿拉善盟`},{id:59,spell:`aletai`,name:`阿勒泰`},{id:60,spell:`ali`,name:`阿里`},{id:61,spell:`ankang`,name:`安康`},{id:62,spell:`anqing`,name:`安庆`},{id:63,spell:`anshan`,name:`鞍山`},{id:64,spell:`anshun`,name:`安顺`},{id:65,spell:`anyang`,name:`安阳`},{id:338,spell:`acheng`,name:`阿城`},{id:339,spell:`anfu`,name:`安福`},{id:340,spell:`anji`,name:`安吉`},{id:341,spell:`anning`,name:`安宁`},{id:342,spell:`anqiu`,name:`安丘`},{id:343,spell:`anxi`,name:`安溪`},{id:344,spell:`anyi`,name:`安义`},{id:345,spell:`anyuan`,name:`安远`}],B:[{id:1,spell:`beijing`,name:`北京`},{id:66,spell:`baicheng`,name:`白城`},{id:67,spell:`baise`,name:`百色`},{id:68,spell:`baishan`,name:`白山`},{id:69,spell:`baiyin`,name:`白银`},{id:70,spell:`bangbu`,name:`蚌埠`},{id:71,spell:`baoding`,name:`保定`},{id:72,spell:`baoji`,name:`宝鸡`},{id:73,spell:`baoshan`,name:`保山`},{id:74,spell:`baotou`,name:`包头`},{id:75,spell:`bayannaoer`,name:`巴彦淖尔`},{id:76,spell:`bayinguoleng`,name:`巴音郭楞`},{id:77,spell:`bazhong`,name:`巴中`},{id:78,spell:`beihai`,name:`北海`},{id:79,spell:`benxi`,name:`本溪`},{id:80,spell:`bijie`,name:`毕节`},{id:81,spell:`binzhou`,name:`滨州`},{id:82,spell:`boertala`,name:`博尔塔拉`},{id:83,spell:`bozhou`,name:`亳州`},{id:346,spell:`baoying`,name:`宝应`},{id:347,spell:`bayan`,name:`巴彦`},{id:348,spell:`binhai`,name:`滨海`},{id:349,spell:`binxian`,name:`宾县`},{id:350,spell:`binyang`,name:`宾阳`},{id:351,spell:`bishan`,name:`璧山`},{id:352,spell:`boai`,name:`博爱`},{id:353,spell:`boluo`,name:`博罗`},{id:354,spell:`boxing`,name:`博兴`}],C:[{id:2,spell:`chongqing`,name:`重庆`},{id:5,spell:`changchun`,name:`长春`},{id:6,spell:`changsha`,name:`长沙`},{id:7,spell:`changzhou`,name:`常州`},{id:8,spell:`chengdu`,name:`成都`},{id:84,spell:`cangzhou`,name:`沧州`},{id:85,spell:`changde`,name:`常德`},{id:86,spell:`changdu`,name:`昌都`},{id:87,spell:`changji`,name:`昌吉`},{id:88,spell:`changzhi`,name:`长治`},{id:89,spell:`chaohu`,name:`巢湖`},{id:90,spell:`chaoyang`,name:`朝阳`},{id:91,spell:`chaozhou`,name:`潮州`},{id:92,spell:`chengde`,name:`承德`},{id:93,spell:`chenzhou`,name:`郴州`},{id:94,spell:`chifeng`,name:`赤峰`},{id:95,spell:`chizhou`,name:`池州`},{id:96,spell:`chongzuo`,name:`崇左`},{id:97,spell:`chuxiong`,name:`楚雄`},{id:98,spell:`chuzhou`,name:`滁州`},{id:355,spell:`cangnan`,name:`苍南`},{id:356,spell:`cangshan`,name:`苍山`},{id:357,spell:`caoxian`,name:`曹县`},{id:358,spell:`changdao`,name:`长岛`},{id:359,spell:`changfeng`,name:`长丰`},{id:360,spell:`changhai`,name:`长海`},{id:361,spell:`changle`,name:`长乐`},{id:362,spell:`changle`,name:`昌乐`},{id:363,spell:`changshan`,name:`常山`},{id:364,spell:`changshu`,name:`常熟`},{id:365,spell:`changtai`,name:`长泰`},{id:366,spell:`changting`,name:`长汀`},{id:367,spell:`changxing`,name:`长兴`},{id:368,spell:`changyi`,name:`昌邑`},{id:369,spell:`chaoan`,name:`潮安`},{id:370,spell:`chenggong`,name:`呈贡`},{id:371,spell:`chengkou`,name:`城口`},{id:372,spell:`chengwu`,name:`成武`},{id:373,spell:`chiping`,name:`茌平`},{id:374,spell:`chongren`,name:`崇仁`},{id:375,spell:`chongyi`,name:`崇义`},{id:376,spell:`chongzhou`,name:`崇州`},{id:377,spell:`chunan`,name:`淳安`},{id:378,spell:`cixi`,name:`慈溪`},{id:379,spell:`conghua`,name:`从化`},{id:380,spell:`congyang`,name:`枞阳`}],D:[{id:9,spell:`dalian`,name:`大连`},{id:10,spell:`dongguan`,name:`东莞`},{id:99,spell:`dali`,name:`大理`},{id:100,spell:`dandong`,name:`丹东`},{id:101,spell:`daqing`,name:`大庆`},{id:102,spell:`datong`,name:`大同`},{id:103,spell:`daxinganling`,name:`大兴安岭`},{id:104,spell:`dazhou`,name:`达州`},{id:105,spell:`dehong`,name:`德宏`},{id:106,spell:`deyang`,name:`德阳`},{id:107,spell:`dezhou`,name:`德州`},{id:108,spell:`dingxi`,name:`定西`},{id:109,spell:`diqing`,name:`迪庆`},{id:110,spell:`dongying`,name:`东营`},{id:381,spell:`dafeng`,name:`大丰`},{id:382,spell:`daishan`,name:`岱山`},{id:383,spell:`dangshan`,name:`砀山`},{id:384,spell:`dangtu`,name:`当涂`},{id:385,spell:`danxian`,name:`单县`},{id:386,spell:`danyang`,name:`丹阳`},{id:387,spell:`dapu`,name:`大埔`},{id:388,spell:`datian`,name:`大田`},{id:389,spell:`dayi`,name:`大邑`},{id:390,spell:`dayu`,name:`大余`},{id:391,spell:`dazu`,name:`大足`},{id:392,spell:`dean`,name:`德安`},{id:393,spell:`dehua`,name:`德化`},{id:394,spell:`dehui`,name:`德惠`},{id:395,spell:`dengfeng`,name:`登封`},{id:396,spell:`deqing`,name:`德清`},{id:397,spell:`deqing`,name:`德庆`},{id:398,spell:`dexing`,name:`德兴`},{id:399,spell:`dianbai`,name:`电白`},{id:400,spell:`dianjiang`,name:`垫江`},{id:401,spell:`dingnan`,name:`定南`},{id:402,spell:`dingtao`,name:`定陶`},{id:403,spell:`dingyuan`,name:`定远`},{id:404,spell:`donga`,name:`东阿`},{id:405,spell:`donghai`,name:`东海`},{id:406,spell:`dongming`,name:`东明`},{id:407,spell:`dongping`,name:`东平`},{id:408,spell:`dongshan`,name:`东山`},{id:409,spell:`dongtai`,name:`东台`},{id:410,spell:`dongtou`,name:`洞头`},{id:411,spell:`dongxiang`,name:`东乡`},{id:412,spell:`dongyang`,name:`东阳`},{id:413,spell:`dongyuan`,name:`东源`},{id:414,spell:`dongzhi`,name:`东至`},{id:415,spell:`duchang`,name:`都昌`},{id:416,spell:`dujiangyan`,name:`都江堰`}],E:[{id:111,spell:`eerduosi`,name:`鄂尔多斯`},{id:112,spell:`enshi`,name:`恩施`},{id:113,spell:`ezhou`,name:`鄂州`},{id:417,spell:`enping`,name:`恩平`}],F:[{id:11,spell:`foshan`,name:`佛山`},{id:12,spell:`fuzhou`,name:`福州`},{id:114,spell:`fangchenggang`,name:`防城港`},{id:115,spell:`fushun`,name:`抚顺`},{id:116,spell:`fuxin`,name:`阜新`},{id:117,spell:`fuyang`,name:`阜阳`},{id:118,spell:`fuzhou`,name:`抚州`},{id:418,spell:`faku`,name:`法库`},{id:419,spell:`fanchang`,name:`繁昌`},{id:420,spell:`fangzheng`,name:`方正`},{id:421,spell:`feicheng`,name:`肥城`},{id:422,spell:`feidong`,name:`肥东`},{id:423,spell:`feixi`,name:`肥西`},{id:424,spell:`feixian`,name:`费县`},{id:425,spell:`fengcheng`,name:`丰城`},{id:426,spell:`fengdu`,name:`丰都`},{id:427,spell:`fenghua`,name:`奉化`},{id:428,spell:`fengjie`,name:`奉节`},{id:429,spell:`fengkai`,name:`封开`},{id:430,spell:`fengshun`,name:`丰顺`},{id:431,spell:`fengtai`,name:`凤台`},{id:432,spell:`fengxian`,name:`丰县`},{id:433,spell:`fengxin`,name:`奉新`},{id:434,spell:`fengyang`,name:`凤阳`},{id:435,spell:`fenyi`,name:`分宜`},{id:436,spell:`fogang`,name:`佛冈`},{id:437,spell:`fuan`,name:`福安`},{id:438,spell:`fuding`,name:`福鼎`},{id:439,spell:`fuliang`,name:`浮梁`},{id:440,spell:`fumin`,name:`富民`},{id:441,spell:`funan`,name:`阜南`},{id:442,spell:`funing`,name:`阜宁`},{id:443,spell:`fuqing`,name:`福清`},{id:444,spell:`fuyang`,name:`富阳`}],G:[{id:13,spell:`guangzhou`,name:`广州`},{id:14,spell:`guiyang`,name:`贵阳`},{id:119,spell:`gannan`,name:`甘南`},{id:120,spell:`ganzhou`,name:`赣州`},{id:121,spell:`ganzi`,name:`甘孜`},{id:122,spell:`guangan`,name:`广安`},{id:123,spell:`guangyuan`,name:`广元`},{id:124,spell:`guigang`,name:`贵港`},{id:125,spell:`guilin`,name:`桂林`},{id:126,spell:`guoluo`,name:`果洛`},{id:127,spell:`guyuan`,name:`固原`},{id:445,spell:`ganxian`,name:`赣县`},{id:446,spell:`ganyu`,name:`赣榆`},{id:447,spell:`gaoan`,name:`高安`},{id:448,spell:`gaocheng`,name:`藁城`},{id:449,spell:`gaochun`,name:`高淳`},{id:450,spell:`gaolan`,name:`皋兰`},{id:451,spell:`gaoling`,name:`高陵`},{id:452,spell:`gaomi`,name:`高密`},{id:453,spell:`gaoqing`,name:`高青`},{id:454,spell:`gaotang`,name:`高唐`},{id:455,spell:`gaoyao`,name:`高要`},{id:456,spell:`gaoyi`,name:`高邑`},{id:457,spell:`gaoyou`,name:`高邮`},{id:458,spell:`gaozhou`,name:`高州`},{id:459,spell:`gongyi`,name:`巩义`},{id:460,spell:`guangchang`,name:`广昌`},{id:461,spell:`guangde`,name:`广德`},{id:462,spell:`guangfeng`,name:`广丰`},{id:463,spell:`guangning`,name:`广宁`},{id:464,spell:`guangrao`,name:`广饶`},{id:465,spell:`guangze`,name:`光泽`},{id:466,spell:`guannan`,name:`灌南`},{id:467,spell:`guanxian`,name:`冠县`},{id:468,spell:`guanyun`,name:`灌云`},{id:469,spell:`guixi`,name:`贵溪`},{id:470,spell:`gutian`,name:`古田`},{id:471,spell:`guzhen`,name:`固镇`}],H:[{id:15,spell:`haerbin`,name:`哈尔滨`},{id:16,spell:`haikou`,name:`海口`},{id:17,spell:`handan`,name:`邯郸`},{id:18,spell:`hangzhou`,name:`杭州`},{id:19,spell:`hefei`,name:`合肥`},{id:20,spell:`huizhou`,name:`惠州`},{id:128,spell:`haibei`,name:`海北`},{id:129,spell:`haidong`,name:`海东`},{id:130,spell:`hainan`,name:`海南`},{id:131,spell:`haixi`,name:`海西`},{id:132,spell:`hami`,name:`哈密`},{id:133,spell:`hanzhong`,name:`汉中`},{id:134,spell:`hebi`,name:`鹤壁`},{id:135,spell:`hechi`,name:`河池`},{id:136,spell:`hegang`,name:`鹤岗`},{id:137,spell:`heihe`,name:`黑河`},{id:138,spell:`hengshui`,name:`衡水`},{id:139,spell:`hengyang`,name:`衡阳`},{id:140,spell:`hetiandi`,name:`和田地`},{id:141,spell:`heyuan`,name:`河源`},{id:142,spell:`heze`,name:`菏泽`},{id:143,spell:`hezhou`,name:`贺州`},{id:144,spell:`honghe`,name:`红河`},{id:145,spell:`huaian`,name:`淮安`},{id:146,spell:`huaibei`,name:`淮北`},{id:147,spell:`huaihua`,name:`怀化`},{id:148,spell:`huainan`,name:`淮南`},{id:149,spell:`huanggang`,name:`黄冈`},{id:150,spell:`huangnan`,name:`黄南`},{id:151,spell:`huangshan`,name:`黄山`},{id:152,spell:`huangshi`,name:`黄石`},{id:153,spell:`huhehaote`,name:`呼和浩特`},{id:154,spell:`huludao`,name:`葫芦岛`},{id:155,spell:`hulunbeier`,name:`呼伦贝尔`},{id:156,spell:`huzhou`,name:`湖州`},{id:472,spell:`haian`,name:`海安`},{id:473,spell:`haifeng`,name:`海丰`},{id:474,spell:`haimen`,name:`海门`},{id:475,spell:`haining`,name:`海宁`},{id:476,spell:`haiyan`,name:`海盐`},{id:477,spell:`haiyang`,name:`海阳`},{id:478,spell:`hanshan`,name:`含山`},{id:479,spell:`hechuan`,name:`合川`},{id:480,spell:`hengfeng`,name:`横峰`},{id:481,spell:`hengxian`,name:`横县`},{id:482,spell:`heping`,name:`和平`},{id:483,spell:`heshan`,name:`鹤山`},{id:484,spell:`hexian`,name:`和县`},{id:485,spell:`hongze`,name:`洪泽`},{id:486,spell:`huaan`,name:`华安`},{id:487,spell:`huadian`,name:`桦甸`},{id:488,spell:`huaiji`,name:`怀集`},{id:489,spell:`huaining`,name:`怀宁`},{id:490,spell:`huaiyuan`,name:`怀远`},{id:491,spell:`huantai`,name:`桓台`},{id:492,spell:`huazhou`,name:`化州`},{id:493,spell:`huian`,name:`惠安`},{id:494,spell:`huichang`,name:`会昌`},{id:495,spell:`huidong`,name:`惠东`},{id:496,spell:`huilai`,name:`惠来`},{id:497,spell:`huimin`,name:`惠民`},{id:498,spell:`hukou`,name:`湖口`},{id:499,spell:`hulan`,name:`呼兰`},{id:500,spell:`huoqiu`,name:`霍邱`},{id:501,spell:`huoshan`,name:`霍山`},{id:502,spell:`huxian`,name:`户县`}],J:[{id:21,spell:`jiaozuo`,name:`焦作`},{id:22,spell:`jiaxing`,name:`嘉兴`},{id:23,spell:`jilin`,name:`吉林`},{id:24,spell:`jinan`,name:`济南`},{id:157,spell:`jiamusi`,name:`佳木斯`},{id:158,spell:`jiangmen`,name:`江门`},{id:159,spell:`jian`,name:`吉安`},{id:160,spell:`jiayuguan`,name:`嘉峪关`},{id:161,spell:`jieyang`,name:`揭阳`},{id:162,spell:`jinchang`,name:`金昌`},{id:163,spell:`jincheng`,name:`晋城`},{id:164,spell:`jingdezhen`,name:`景德镇`},{id:165,spell:`jingmen`,name:`荆门`},{id:166,spell:`jingzhou`,name:`荆州`},{id:167,spell:`jinhua`,name:`金华`},{id:168,spell:`jining`,name:`济宁`},{id:169,spell:`jinzhong`,name:`晋中`},{id:170,spell:`jinzhou`,name:`锦州`},{id:171,spell:`jiujiang`,name:`九江`},{id:172,spell:`jiuquan`,name:`酒泉`},{id:173,spell:`jixi`,name:`鸡西`},{id:503,spell:`jiande`,name:`建德`},{id:504,spell:`jiangdu`,name:`江都`},{id:505,spell:`jiangjin`,name:`江津`},{id:506,spell:`jiangle`,name:`将乐`},{id:507,spell:`jiangshan`,name:`江山`},{id:508,spell:`jiangyan`,name:`姜堰`},{id:509,spell:`jiangyin`,name:`江阴`},{id:510,spell:`jianhu`,name:`建湖`},{id:511,spell:`jianning`,name:`建宁`},{id:512,spell:`jianou`,name:`建瓯`},{id:513,spell:`jianyang`,name:`建阳`},{id:514,spell:`jian`,name:`吉安`},{id:515,spell:`jiaohe`,name:`蛟河`},{id:516,spell:`jiaoling`,name:`蕉岭`},{id:517,spell:`jiaonan`,name:`胶南`},{id:518,spell:`jiaozhou`,name:`胶州`},{id:519,spell:`jiashan`,name:`嘉善`},{id:520,spell:`jiaxiang`,name:`嘉祥`},{id:521,spell:`jiedong`,name:`揭东`},{id:522,spell:`jieshou`,name:`界首`},{id:523,spell:`jiexi`,name:`揭西`},{id:524,spell:`jimo`,name:`即墨`},{id:525,spell:`jingan`,name:`靖安`},{id:526,spell:`jingde`,name:`旌德`},{id:527,spell:`jinggangshan`,name:`井冈山`},{id:528,spell:`jingjiang`,name:`靖江`},{id:529,spell:`jingning`,name:`景宁`},{id:530,spell:`jingxian`,name:`泾县`},{id:531,spell:`jingxing`,name:`井陉`},{id:532,spell:`jinhu`,name:`金湖`},{id:533,spell:`jinjiang`,name:`晋江`},{id:534,spell:`jinmen`,name:`金门`},{id:535,spell:`jinning`,name:`晋宁`},{id:536,spell:`jintan`,name:`金坛`},{id:537,spell:`jintang`,name:`金堂`},{id:538,spell:`jinxian`,name:`进贤`},{id:539,spell:`jinxi`,name:`金溪`},{id:540,spell:`jinxiang`,name:`金乡`},{id:541,spell:`jinyun`,name:`缙云`},{id:542,spell:`jinzhai`,name:`金寨`},{id:543,spell:`jinzhou`,name:`晋州`},{id:544,spell:`jishui`,name:`吉水`},{id:545,spell:`jiujiang`,name:`九江`},{id:546,spell:`jiutai`,name:`九台`},{id:547,spell:`jixi`,name:`绩溪`},{id:548,spell:`jiyang`,name:`济阳`},{id:549,spell:`jiyuan`,name:`济源`},{id:550,spell:`juancheng`,name:`鄄城`},{id:551,spell:`junan`,name:`莒南`},{id:552,spell:`jurong`,name:`句容`},{id:553,spell:`juxian`,name:`莒县`},{id:554,spell:`juye`,name:`巨野`}],K:[{id:25,spell:`kunming`,name:`昆明`},{id:174,spell:`kaifeng`,name:`开封`},{id:175,spell:`kashidi`,name:`喀什地`},{id:176,spell:`kelamayi`,name:`克拉玛依`},{id:177,spell:`kezile`,name:`克孜勒`},{id:555,spell:`kaihua`,name:`开化`},{id:556,spell:`kaiping`,name:`开平`},{id:557,spell:`kaixian`,name:`开县`},{id:558,spell:`kaiyang`,name:`开阳`},{id:559,spell:`kangping`,name:`康平`},{id:560,spell:`kenli`,name:`垦利`},{id:561,spell:`kunshan`,name:`昆山`}],L:[{id:26,spell:`lanzhou`,name:`兰州`},{id:27,spell:`liuzhou`,name:`柳州`},{id:28,spell:`luoyang`,name:`洛阳`},{id:178,spell:`laibin`,name:`来宾`},{id:179,spell:`laiwu`,name:`莱芜`},{id:180,spell:`langfang`,name:`廊坊`},{id:181,spell:`lasa`,name:`拉萨`},{id:182,spell:`leshan`,name:`乐山`},{id:183,spell:`liangshan`,name:`凉山`},{id:184,spell:`lianyungang`,name:`连云港`},{id:185,spell:`liaocheng`,name:`聊城`},{id:186,spell:`liaoyang`,name:`辽阳`},{id:187,spell:`liaoyuan`,name:`辽源`},{id:188,spell:`lijiang`,name:`丽江`},{id:189,spell:`lincang`,name:`临沧`},{id:190,spell:`linfen`,name:`临汾`},{id:191,spell:`linxia`,name:`临夏`},{id:192,spell:`linyi`,name:`临沂`},{id:193,spell:`linzhi`,name:`林芝`},{id:194,spell:`lishui`,name:`丽水`},{id:195,spell:`liuan`,name:`六安`},{id:196,spell:`liupanshui`,name:`六盘水`},{id:197,spell:`longnan`,name:`陇南`},{id:198,spell:`longyan`,name:`龙岩`},{id:199,spell:`loudi`,name:`娄底`},{id:200,spell:`luohe`,name:`漯河`},{id:201,spell:`luzhou`,name:`泸州`},{id:202,spell:`lvliang`,name:`吕梁`},{id:562,spell:`laian`,name:`来安`},{id:563,spell:`laixi`,name:`莱西`},{id:564,spell:`laiyang`,name:`莱阳`},{id:565,spell:`laizhou`,name:`莱州`},{id:566,spell:`langxi`,name:`郎溪`},{id:567,spell:`lantian`,name:`蓝田`},{id:568,spell:`lanxi`,name:`兰溪`},{id:569,spell:`lean`,name:`乐安`},{id:570,spell:`lechang`,name:`乐昌`},{id:571,spell:`leizhou`,name:`雷州`},{id:572,spell:`leling`,name:`乐陵`},{id:573,spell:`leping`,name:`乐平`},{id:574,spell:`leqing`,name:`乐清`},{id:575,spell:`leting`,name:`乐亭`},{id:576,spell:`liancheng`,name:`连城`},{id:577,spell:`liangping`,name:`梁平`},{id:578,spell:`liangshan`,name:`梁山`},{id:579,spell:`lianhua`,name:`莲花`},{id:580,spell:`lianjiang`,name:`连江`},{id:581,spell:`lianjiang`,name:`廉江`},{id:582,spell:`liannan`,name:`连南`},{id:583,spell:`lianping`,name:`连平`},{id:584,spell:`lianshan`,name:`连山`},{id:585,spell:`lianshui`,name:`涟水`},{id:586,spell:`lianzhou`,name:`连州`},{id:587,spell:`liaozhong`,name:`辽中`},{id:588,spell:`lichuan`,name:`黎川`},{id:589,spell:`lijin`,name:`利津`},{id:590,spell:`linan`,name:`临安`},{id:591,spell:`lingbi`,name:`灵璧`},{id:592,spell:`lingshou`,name:`灵寿`},{id:593,spell:`lingxian`,name:`陵县`},{id:594,spell:`linhai`,name:`临海`},{id:595,spell:`linqing`,name:`临清`},{id:596,spell:`linquan`,name:`临泉`},{id:597,spell:`linqu`,name:`临朐`},{id:598,spell:`linshu`,name:`临沭`},{id:599,spell:`linyi`,name:`临邑`},{id:600,spell:`lishui`,name:`溧水`},{id:601,spell:`liucheng`,name:`柳城`},{id:602,spell:`liujiang`,name:`柳江`},{id:603,spell:`liuyang`,name:`浏阳`},{id:604,spell:`lixin`,name:`利辛`},{id:605,spell:`liyang`,name:`溧阳`},{id:606,spell:`longan`,name:`隆安`},{id:607,spell:`longchuan`,name:`龙川`},{id:608,spell:`longhai`,name:`龙海`},{id:609,spell:`longkou`,name:`龙口`},{id:610,spell:`longmen`,name:`龙门`},{id:611,spell:`longnan`,name:`龙南`},{id:612,spell:`longquan`,name:`龙泉`},{id:613,spell:`longyou`,name:`龙游`},{id:614,spell:`luancheng`,name:`栾城`},{id:615,spell:`luanchuan`,name:`栾川`},{id:616,spell:`luannan`,name:`滦南`},{id:617,spell:`luanxian`,name:`滦县`},{id:618,spell:`lufeng`,name:`陆丰`},{id:619,spell:`luhe`,name:`陆河`},{id:620,spell:`lujiang`,name:`庐江`},{id:621,spell:`luoding`,name:`罗定`},{id:622,spell:`luoning`,name:`洛宁`},{id:623,spell:`luoyuan`,name:`罗源`},{id:624,spell:`luquan`,name:`鹿泉`},{id:625,spell:`luquan`,name:`禄劝`},{id:626,spell:`luxi`,name:`芦溪`},{id:627,spell:`luzhai`,name:`鹿寨`}],M:[{id:203,spell:`maanshan`,name:`马鞍山`},{id:204,spell:`maoming`,name:`茂名`},{id:205,spell:`meishan`,name:`眉山`},{id:206,spell:`meizhou`,name:`梅州`},{id:207,spell:`mianyang`,name:`绵阳`},{id:208,spell:`mudanjiang`,name:`牡丹江`},{id:628,spell:`mashan`,name:`马山`},{id:629,spell:`meixian`,name:`梅县`},{id:630,spell:`mengcheng`,name:`蒙城`},{id:631,spell:`mengjin`,name:`孟津`},{id:632,spell:`mengyin`,name:`蒙阴`},{id:633,spell:`mengzhou`,name:`孟州`},{id:634,spell:`mingguang`,name:`明光`},{id:635,spell:`mingxi`,name:`明溪`},{id:636,spell:`minhou`,name:`闽侯`},{id:637,spell:`minqing`,name:`闽清`},{id:638,spell:`mulan`,name:`木兰`}],N:[{id:29,spell:`nanchang`,name:`南昌`},{id:30,spell:`nanjing`,name:`南京`},{id:31,spell:`nanning`,name:`南宁`},{id:32,spell:`nantong`,name:`南通`},{id:33,spell:`ningbo`,name:`宁波`},{id:209,spell:`nanchong`,name:`南充`},{id:210,spell:`nanping`,name:`南平`},{id:211,spell:`nanyang`,name:`南阳`},{id:212,spell:`naqu`,name:`那曲`},{id:213,spell:`neijiang`,name:`内江`},{id:214,spell:`ningde`,name:`宁德`},{id:215,spell:`nujiang`,name:`怒江`},{id:639,spell:`nanan`,name:`南安`},{id:640,spell:`nanao`,name:`南澳`},{id:641,spell:`nancheng`,name:`南城`},{id:642,spell:`nanchuan`,name:`南川`},{id:643,spell:`nanfeng`,name:`南丰`},{id:644,spell:`nanjing`,name:`南靖`},{id:645,spell:`nankang`,name:`南康`},{id:646,spell:`nanling`,name:`南陵`},{id:647,spell:`nanxiong`,name:`南雄`},{id:648,spell:`ningdu`,name:`宁都`},{id:649,spell:`ningguo`,name:`宁国`},{id:650,spell:`ninghai`,name:`宁海`},{id:651,spell:`ninghua`,name:`宁化`},{id:652,spell:`ningjin`,name:`宁津`},{id:653,spell:`ningxiang`,name:`宁乡`},{id:654,spell:`ningyang`,name:`宁阳`},{id:655,spell:`nongan`,name:`农安`}],P:[{id:216,spell:`panjin`,name:`盘锦`},{id:217,spell:`panzhihua`,name:`攀枝花`},{id:218,spell:`pingdingshan`,name:`平顶山`},{id:219,spell:`pingliang`,name:`平凉`},{id:220,spell:`pingxiang`,name:`萍乡`},{id:221,spell:`puer`,name:`普洱`},{id:222,spell:`putian`,name:`莆田`},{id:223,spell:`puyang`,name:`濮阳`},{id:656,spell:`panan`,name:`磐安`},{id:657,spell:`panshi`,name:`磐石`},{id:658,spell:`peixian`,name:`沛县`},{id:659,spell:`penglai`,name:`蓬莱`},{id:660,spell:`pengshui`,name:`彭水`},{id:661,spell:`pengze`,name:`彭泽`},{id:662,spell:`pengzhou`,name:`彭州`},{id:663,spell:`pingdu`,name:`平度`},{id:664,spell:`pinghe`,name:`平和`},{id:665,spell:`pinghu`,name:`平湖`},{id:666,spell:`pingnan`,name:`屏南`},{id:667,spell:`pingshan`,name:`平山`},{id:668,spell:`pingtan`,name:`平潭`},{id:669,spell:`pingyang`,name:`平阳`},{id:670,spell:`pingyin`,name:`平阴`},{id:671,spell:`pingyi`,name:`平邑`},{id:672,spell:`pingyuan`,name:`平原`},{id:673,spell:`pingyuan`,name:`平远`},{id:674,spell:`pixian`,name:`郫县`},{id:675,spell:`pizhou`,name:`邳州`},{id:676,spell:`poyang`,name:`鄱阳`},{id:677,spell:`pucheng`,name:`浦城`},{id:678,spell:`pujiang`,name:`浦江`},{id:679,spell:`pujiang`,name:`蒲江`},{id:680,spell:`pulandian`,name:`普兰店`},{id:681,spell:`puning`,name:`普宁`}],Q:[{id:34,spell:`qingdao`,name:`青岛`},{id:35,spell:`quanzhou`,name:`泉州`},{id:224,spell:`qiandong`,name:`黔东`},{id:225,spell:`qiannan`,name:`黔南`},{id:226,spell:`qianxinan`,name:`黔西南`},{id:227,spell:`qingyang`,name:`庆阳`},{id:228,spell:`qingyuan`,name:`清远`},{id:229,spell:`qinhuangdao`,name:`秦皇岛`},{id:230,spell:`qinzhou`,name:`钦州`},{id:231,spell:`qiqihaer`,name:`齐齐哈尔`},{id:232,spell:`qitaihe`,name:`七台河`},{id:233,spell:`qujing`,name:`曲靖`},{id:234,spell:`quzhou`,name:`衢州`},{id:682,spell:`qianan`,name:`迁安`},{id:683,spell:`qianshan`,name:`潜山`},{id:684,spell:`qianshan`,name:`铅山`},{id:685,spell:`qianxi`,name:`迁西`},{id:686,spell:`qidong`,name:`启东`},{id:687,spell:`qihe`,name:`齐河`},{id:688,spell:`qijiang`,name:`綦江`},{id:689,spell:`qimen`,name:`祁门`},{id:690,spell:`qingliu`,name:`清流`},{id:691,spell:`qingtian`,name:`青田`},{id:692,spell:`qingxin`,name:`清新`},{id:693,spell:`qingyang`,name:`青阳`},{id:694,spell:`qingyuan`,name:`庆元`},{id:695,spell:`qingyun`,name:`庆云`},{id:696,spell:`qingzhen`,name:`清镇`},{id:697,spell:`qingzhou`,name:`青州`},{id:698,spell:`qinyang`,name:`沁阳`},{id:699,spell:`qionglai`,name:`邛崃`},{id:700,spell:`qixia`,name:`栖霞`},{id:701,spell:`quanjiao`,name:`全椒`},{id:702,spell:`quannan`,name:`全南`},{id:703,spell:`qufu`,name:`曲阜`},{id:704,spell:`qujiang`,name:`曲江`}],R:[{id:235,spell:`rikaze`,name:`日喀则`},{id:236,spell:`rizhao`,name:`日照`},{id:705,spell:`raoping`,name:`饶平`},{id:706,spell:`renhua`,name:`仁化`},{id:707,spell:`rongan`,name:`融安`},{id:708,spell:`rongchang`,name:`荣昌`},{id:709,spell:`rongcheng`,name:`荣成`},{id:710,spell:`rongshui`,name:`融水`},{id:711,spell:`rudong`,name:`如东`},{id:712,spell:`rugao`,name:`如皋`},{id:713,spell:`ruian`,name:`瑞安`},{id:714,spell:`ruichang`,name:`瑞昌`},{id:715,spell:`ruijin`,name:`瑞金`},{id:716,spell:`rushan`,name:`乳山`},{id:717,spell:`ruyang`,name:`汝阳`},{id:718,spell:`ruyuan`,name:`乳源`}],S:[{id:3,spell:`shanghai`,name:`上海`},{id:36,spell:`shenyang`,name:`沈阳`},{id:37,spell:`shenzhen`,name:`深圳`},{id:38,spell:`shijiazhuang`,name:`石家庄`},{id:39,spell:`suzhou`,name:`苏州`},{id:237,spell:`sanmenxia`,name:`三门峡`},{id:238,spell:`sanming`,name:`三明`},{id:239,spell:`sanya`,name:`三亚`},{id:240,spell:`shangluo`,name:`商洛`},{id:241,spell:`shangqiu`,name:`商丘`},{id:242,spell:`shangrao`,name:`上饶`},{id:243,spell:`shannan`,name:`山南`},{id:244,spell:`shantou`,name:`汕头`},{id:245,spell:`shanwei`,name:`汕尾`},{id:246,spell:`shaoguan`,name:`韶关`},{id:247,spell:`shaoxing`,name:`绍兴`},{id:248,spell:`shaoyang`,name:`邵阳`},{id:249,spell:`shiyan`,name:`十堰`},{id:250,spell:`shizuishan`,name:`石嘴山`},{id:251,spell:`shuangyashan`,name:`双鸭山`},{id:252,spell:`shuozhou`,name:`朔州`},{id:253,spell:`siping`,name:`四平`},{id:254,spell:`songyuan`,name:`松原`},{id:255,spell:`suihua`,name:`绥化`},{id:256,spell:`suining`,name:`遂宁`},{id:257,spell:`suizhou`,name:`随州`},{id:258,spell:`suqian`,name:`宿迁`},{id:259,spell:`suzhou`,name:`宿州`},{id:719,spell:`sanjiang`,name:`三江`},{id:720,spell:`sanmen`,name:`三门`},{id:721,spell:`saoan`,name:`诏安`},{id:722,spell:`shanggao`,name:`上高`},{id:723,spell:`shanghang`,name:`上杭`},{id:724,spell:`shanghe`,name:`商河`},{id:725,spell:`shangli`,name:`上栗`},{id:726,spell:`shanglin`,name:`上林`},{id:727,spell:`shangrao`,name:`上饶`},{id:728,spell:`shangyou`,name:`上犹`},{id:729,spell:`shangyu`,name:`上虞`},{id:730,spell:`shangzhi`,name:`尚志`},{id:731,spell:`shaowu`,name:`邵武`},{id:732,spell:`shaoxing`,name:`绍兴`},{id:733,spell:`shaxian`,name:`沙县`},{id:734,spell:`shengsi`,name:`嵊泗`},{id:735,spell:`shengzhou`,name:`嵊州`},{id:736,spell:`shenxian`,name:`莘县`},{id:737,spell:`shenze`,name:`深泽`},{id:738,spell:`shexian`,name:`歙县`},{id:739,spell:`sheyang`,name:`射阳`},{id:740,spell:`shicheng`,name:`石城`},{id:741,spell:`shilin`,name:`石林`},{id:742,spell:`shishi`,name:`石狮`},{id:743,spell:`shitai`,name:`石台`},{id:744,spell:`shixing`,name:`始兴`},{id:745,spell:`shizhu`,name:`石柱`},{id:746,spell:`shouguang`,name:`寿光`},{id:747,spell:`shouning`,name:`寿宁`},{id:748,spell:`shouxian`,name:`寿县`},{id:749,spell:`shuangcheng`,name:`双城`},{id:750,spell:`shuangliu`,name:`双流`},{id:751,spell:`shucheng`,name:`舒城`},{id:752,spell:`shulan`,name:`舒兰`},{id:753,spell:`shunchang`,name:`顺昌`},{id:754,spell:`shuyang`,name:`沭阳`},{id:755,spell:`sihong`,name:`泗洪`},{id:756,spell:`sihui`,name:`四会`},{id:757,spell:`sishui`,name:`泗水`},{id:758,spell:`sixian`,name:`泗县`},{id:759,spell:`siyang`,name:`泗阳`},{id:760,spell:`songming`,name:`嵩明`},{id:761,spell:`songxi`,name:`松溪`},{id:762,spell:`songxian`,name:`嵩县`},{id:763,spell:`songyang`,name:`松阳`},{id:764,spell:`suichang`,name:`遂昌`},{id:765,spell:`suichuan`,name:`遂川`},{id:766,spell:`suining`,name:`睢宁`},{id:767,spell:`suixi`,name:`濉溪`},{id:768,spell:`suixi`,name:`遂溪`},{id:769,spell:`susong`,name:`宿松`},{id:770,spell:`suyu`,name:`宿豫`}],T:[{id:4,spell:`tianjin`,name:`天津`},{id:40,spell:`taizhou`,name:`台州`},{id:41,spell:`tangshan`,name:`唐山`},{id:260,spell:`tachengdi`,name:`塔城地`},{id:261,spell:`taian`,name:`泰安`},{id:262,spell:`taiyuan`,name:`太原`},{id:263,spell:`taizhou`,name:`泰州`},{id:264,spell:`tianshui`,name:`天水`},{id:265,spell:`tieling`,name:`铁岭`},{id:266,spell:`tongchuan`,name:`铜川`},{id:267,spell:`tonghua`,name:`通化`},{id:268,spell:`tongliao`,name:`通辽`},{id:269,spell:`tongling`,name:`铜陵`},{id:270,spell:`tongren`,name:`铜仁`},{id:271,spell:`tulufan`,name:`吐鲁番`},{id:771,spell:`taicang`,name:`太仓`},{id:772,spell:`taihe`,name:`太和`},{id:773,spell:`taihe`,name:`泰和`},{id:774,spell:`taihu`,name:`太湖`},{id:775,spell:`taining`,name:`泰宁`},{id:776,spell:`taishan`,name:`台山`},{id:777,spell:`taishun`,name:`泰顺`},{id:778,spell:`taixing`,name:`泰兴`},{id:779,spell:`tancheng`,name:`郯城`},{id:780,spell:`tanghai`,name:`唐海`},{id:781,spell:`tengzhou`,name:`滕州`},{id:782,spell:`tianchang`,name:`天长`},{id:783,spell:`tiantai`,name:`天台`},{id:784,spell:`tongcheng`,name:`桐城`},{id:785,spell:`tonggu`,name:`铜鼓`},{id:786,spell:`tonghe`,name:`通河`},{id:787,spell:`tongliang`,name:`铜梁`},{id:788,spell:`tongling`,name:`铜陵`},{id:789,spell:`tonglu`,name:`桐庐`},{id:790,spell:`tongnan`,name:`潼南`},{id:791,spell:`tongshan`,name:`铜山`},{id:792,spell:`tongxiang`,name:`桐乡`},{id:793,spell:`tongzhou`,name:`通州`}],W:[{id:42,spell:`weifang`,name:`潍坊`},{id:43,spell:`weihai`,name:`威海`},{id:44,spell:`wuhan`,name:`武汉`},{id:45,spell:`wuxi`,name:`无锡`},{id:272,spell:`weinan`,name:`渭南`},{id:273,spell:`wenshan`,name:`文山`},{id:274,spell:`wenzhou`,name:`温州`},{id:275,spell:`wuhai`,name:`乌海`},{id:276,spell:`wuhu`,name:`芜湖`},{id:277,spell:`wulanchabu`,name:`乌兰察布`},{id:278,spell:`wulumuqi`,name:`乌鲁木齐`},{id:279,spell:`wuwei`,name:`武威`},{id:280,spell:`wuzhong`,name:`吴忠`},{id:281,spell:`wuzhou`,name:`梧州`},{id:794,spell:`wafangdian`,name:`瓦房店`},{id:795,spell:`wanan`,name:`万安`},{id:796,spell:`wangcheng`,name:`望城`},{id:797,spell:`wangjiang`,name:`望江`},{id:798,spell:`wannian`,name:`万年`},{id:799,spell:`wanzai`,name:`万载`},{id:800,spell:`weishan`,name:`微山`},{id:801,spell:`wencheng`,name:`文成`},{id:802,spell:`wendeng`,name:`文登`},{id:803,spell:`wengyuan`,name:`翁源`},{id:804,spell:`wenling`,name:`温岭`},{id:805,spell:`wenshang`,name:`汶上`},{id:806,spell:`wenxian`,name:`温县`},{id:807,spell:`woyang`,name:`涡阳`},{id:808,spell:`wuchang`,name:`五常`},{id:809,spell:`wucheng`,name:`武城`},{id:810,spell:`wuchuan`,name:`吴川`},{id:811,spell:`wudi`,name:`无棣`},{id:812,spell:`wuhe`,name:`五河`},{id:813,spell:`wuhu`,name:`芜湖`},{id:814,spell:`wuhua`,name:`五华`},{id:815,spell:`wuji`,name:`无极`},{id:816,spell:`wujiang`,name:`吴江`},{id:817,spell:`wulian`,name:`五莲`},{id:818,spell:`wulong`,name:`武隆`},{id:819,spell:`wuming`,name:`武鸣`},{id:820,spell:`wuning`,name:`武宁`},{id:821,spell:`wuping`,name:`武平`},{id:822,spell:`wushan`,name:`巫山`},{id:823,spell:`wuwei`,name:`无为`},{id:824,spell:`wuxi`,name:`巫溪`},{id:825,spell:`wuyi`,name:`武义`},{id:826,spell:`wuyishan`,name:`武夷山`},{id:827,spell:`wuyuan`,name:`婺源`},{id:828,spell:`wuzhi`,name:`武陟`}],X:[{id:46,spell:`xiamen`,name:`厦门`},{id:47,spell:`xian`,name:`西安`},{id:48,spell:`xuchang`,name:`许昌`},{id:49,spell:`xuzhou`,name:`徐州`},{id:282,spell:`xiangfan`,name:`襄樊`},{id:283,spell:`xiangtan`,name:`湘潭`},{id:284,spell:`xiangxi`,name:`湘西`},{id:285,spell:`xianning`,name:`咸宁`},{id:286,spell:`xianyang`,name:`咸阳`},{id:287,spell:`xiaogan`,name:`孝感`},{id:288,spell:`xilinguolemeng`,name:`锡林郭勒盟`},{id:289,spell:`xinganmeng`,name:`兴安盟`},{id:290,spell:`xingtai`,name:`邢台`},{id:291,spell:`xining`,name:`西宁`},{id:292,spell:`xinxiang`,name:`新乡`},{id:293,spell:`xinyang`,name:`信阳`},{id:294,spell:`xinyu`,name:`新余`},{id:295,spell:`xinzhou`,name:`忻州`},{id:296,spell:`xishuangbanna`,name:`西双版纳`},{id:297,spell:`xuancheng`,name:`宣城`},{id:829,spell:`xiajiang`,name:`峡江`},{id:830,spell:`xiajin`,name:`夏津`},{id:831,spell:`xiangshan`,name:`象山`},{id:832,spell:`xiangshui`,name:`响水`},{id:833,spell:`xianju`,name:`仙居`},{id:834,spell:`xianyou`,name:`仙游`},{id:835,spell:`xiaoxian`,name:`萧县`},{id:836,spell:`xiapu`,name:`霞浦`},{id:837,spell:`xifeng`,name:`息烽`},{id:838,spell:`xinan`,name:`新安`},{id:839,spell:`xinchang`,name:`新昌`},{id:840,spell:`xinfeng`,name:`信丰`},{id:841,spell:`xinfeng`,name:`新丰`},{id:842,spell:`xingan`,name:`新干`},{id:843,spell:`xingguo`,name:`兴国`},{id:844,spell:`xinghua`,name:`兴化`},{id:845,spell:`xingning`,name:`兴宁`},{id:846,spell:`xingtang`,name:`行唐`},{id:847,spell:`xingyang`,name:`荥阳`},{id:848,spell:`xingzi`,name:`星子`},{id:849,spell:`xinji`,name:`辛集`},{id:850,spell:`xinjian`,name:`新建`},{id:851,spell:`xinjin`,name:`新津`},{id:852,spell:`xinle`,name:`新乐`},{id:853,spell:`xinmin`,name:`新民`},{id:854,spell:`xinmi`,name:`新密`},{id:855,spell:`xintai`,name:`新泰`},{id:856,spell:`xinxing`,name:`新兴`},{id:857,spell:`xinyi`,name:`新沂`},{id:858,spell:`xinyi`,name:`信宜`},{id:859,spell:`xinzheng`,name:`新郑`},{id:860,spell:`xiuning`,name:`休宁`},{id:861,spell:`xiushan`,name:`秀山`},{id:862,spell:`xiushui`,name:`修水`},{id:863,spell:`xiuwen`,name:`修文`},{id:864,spell:`xiuwu`,name:`修武`},{id:865,spell:`xundian`,name:`寻甸`},{id:866,spell:`xunwu`,name:`寻乌`},{id:867,spell:`xuwen`,name:`徐闻`},{id:868,spell:`xuyi`,name:`盱眙`}],Y:[{id:50,spell:`yangzhou`,name:`扬州`},{id:51,spell:`yantai`,name:`烟台`},{id:298,spell:`yaan`,name:`雅安`},{id:299,spell:`yanan`,name:`延安`},{id:300,spell:`yanbian`,name:`延边`},{id:301,spell:`yancheng`,name:`盐城`},{id:302,spell:`yangjiang`,name:`阳江`},{id:303,spell:`yangquan`,name:`阳泉`},{id:304,spell:`yibin`,name:`宜宾`},{id:305,spell:`yichang`,name:`宜昌`},{id:306,spell:`yichun`,name:`伊春`},{id:307,spell:`yichun`,name:`宜春`},{id:308,spell:`yilihasake`,name:`伊犁哈萨克`},{id:309,spell:`yinchuan`,name:`银川`},{id:310,spell:`yingkou`,name:`营口`},{id:311,spell:`yingtan`,name:`鹰潭`},{id:312,spell:`yiyang`,name:`益阳`},{id:313,spell:`yongzhou`,name:`永州`},{id:314,spell:`yueyang`,name:`岳阳`},{id:315,spell:`yulin`,name:`玉林`},{id:316,spell:`yulin`,name:`榆林`},{id:317,spell:`yuncheng`,name:`运城`},{id:318,spell:`yunfu`,name:`云浮`},{id:319,spell:`yushu`,name:`玉树`},{id:320,spell:`yuxi`,name:`玉溪`},{id:869,spell:`yangchun`,name:`阳春`},{id:870,spell:`yangdong`,name:`阳东`},{id:871,spell:`yanggu`,name:`阳谷`},{id:872,spell:`yangshan`,name:`阳山`},{id:873,spell:`yangxin`,name:`阳信`},{id:874,spell:`yangxi`,name:`阳西`},{id:875,spell:`yangzhong`,name:`扬中`},{id:876,spell:`yanshi`,name:`偃师`},{id:877,spell:`yanshou`,name:`延寿`},{id:878,spell:`yanzhou`,name:`兖州`},{id:879,spell:`yichuan`,name:`伊川`},{id:880,spell:`yifeng`,name:`宜丰`},{id:881,spell:`yihuang`,name:`宜黄`},{id:882,spell:`yilan`,name:`依兰`},{id:883,spell:`yiliang`,name:`宜良`},{id:884,spell:`yinan`,name:`沂南`},{id:885,spell:`yingde`,name:`英德`},{id:886,spell:`yingshang`,name:`颍上`},{id:887,spell:`yishui`,name:`沂水`},{id:888,spell:`yiwu`,name:`义乌`},{id:889,spell:`yixian`,name:`黟县`},{id:890,spell:`yixing`,name:`宜兴`},{id:891,spell:`yiyang`,name:`弋阳`},{id:892,spell:`yiyang`,name:`宜阳`},{id:893,spell:`yiyuan`,name:`沂源`},{id:894,spell:`yizheng`,name:`仪征`},{id:895,spell:`yongan`,name:`永安`},{id:896,spell:`yongchuan`,name:`永川`},{id:897,spell:`yongchun`,name:`永春`},{id:898,spell:`yongdeng`,name:`永登`},{id:899,spell:`yongding`,name:`永定`},{id:900,spell:`yongfeng`,name:`永丰`},{id:901,spell:`yongji`,name:`永吉`},{id:902,spell:`yongjia`,name:`永嘉`},{id:903,spell:`yongkang`,name:`永康`},{id:904,spell:`yongning`,name:`邕宁`},{id:905,spell:`yongtai`,name:`永泰`},{id:906,spell:`yongxin`,name:`永新`},{id:907,spell:`yongxiu`,name:`永修`},{id:908,spell:`youxi`,name:`尤溪`},{id:909,spell:`youyang`,name:`酉阳`},{id:910,spell:`yuanshi`,name:`元氏`},{id:911,spell:`yucheng`,name:`禹城`},{id:912,spell:`yudu`,name:`于都`},{id:913,spell:`yuexi`,name:`岳西`},{id:914,spell:`yugan`,name:`余干`},{id:915,spell:`yuhuan`,name:`玉环`},{id:916,spell:`yujiang`,name:`余江`},{id:917,spell:`yunan`,name:`郁南`},{id:918,spell:`yunan`,name:`云安`},{id:919,spell:`yuncheng`,name:`郓城`},{id:920,spell:`yunhe`,name:`云和`},{id:921,spell:`yunxiao`,name:`云霄`},{id:922,spell:`yunyang`,name:`云阳`},{id:923,spell:`yushan`,name:`玉山`},{id:924,spell:`yushu`,name:`榆树`},{id:925,spell:`yutai`,name:`鱼台`},{id:926,spell:`yutian`,name:`玉田`},{id:927,spell:`yuyao`,name:`余姚`},{id:928,spell:`yuzhong`,name:`榆中`}],Z:[{id:52,spell:`zhangzhou`,name:`漳州`},{id:53,spell:`zhengzhou`,name:`郑州`},{id:54,spell:`zhongshan`,name:`中山`},{id:55,spell:`zhuhai`,name:`珠海`},{id:321,spell:`zaozhuang`,name:`枣庄`},{id:322,spell:`zhangjiajie`,name:`张家界`},{id:323,spell:`zhangjiakou`,name:`张家口`},{id:324,spell:`zhangye`,name:`张掖`},{id:325,spell:`zhanjiang`,name:`湛江`},{id:326,spell:`zhaoqing`,name:`肇庆`},{id:327,spell:`zhaotong`,name:`昭通`},{id:328,spell:`zhenjiang`,name:`镇江`},{id:329,spell:`zhongwei`,name:`中卫`},{id:330,spell:`zhoukou`,name:`周口`},{id:331,spell:`zhoushan`,name:`舟山`},{id:332,spell:`zhumadian`,name:`驻马店`},{id:333,spell:`zhuzhou`,name:`株洲`},{id:334,spell:`zibo`,name:`淄博`},{id:335,spell:`zigong`,name:`自贡`},{id:336,spell:`ziyang`,name:`资阳`},{id:337,spell:`zunyi`,name:`遵义`},{id:929,spell:`zanhuang`,name:`赞皇`},{id:930,spell:`zengcheng`,name:`增城`},{id:931,spell:`zhangjiagang`,name:`张家港`},{id:932,spell:`zhangping`,name:`漳平`},{id:933,spell:`zhangpu`,name:`漳浦`},{id:934,spell:`zhangqiu`,name:`章丘`},{id:935,spell:`zhangshu`,name:`樟树`},{id:936,spell:`zhanhua`,name:`沾化`},{id:937,spell:`zhaoxian`,name:`赵县`},{id:938,spell:`zhaoyuan`,name:`招远`},{id:939,spell:`zhengding`,name:`正定`},{id:940,spell:`zhenghe`,name:`政和`},{id:941,spell:`zherong`,name:`柘荣`},{id:942,spell:`zhongmou`,name:`中牟`},{id:943,spell:`zhongxian`,name:`忠县`},{id:944,spell:`zhouning`,name:`周宁`},{id:945,spell:`zhouzhi`,name:`周至`},{id:946,spell:`zhuanghe`,name:`庄河`},{id:947,spell:`zhucheng`,name:`诸城`},{id:948,spell:`zhuji`,name:`诸暨`},{id:949,spell:`zijin`,name:`紫金`},{id:950,spell:`zixi`,name:`资溪`},{id:951,spell:`zoucheng`,name:`邹城`},{id:952,spell:`zouping`,name:`邹平`},{id:953,spell:`zunhua`,name:`遵化`}]},t={cities:e};Object.defineProperty(exports,`cities`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return t}});
|
package/dist/city.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
var e={A:[{id:56,spell:`aba`,name:`阿坝`},{id:57,spell:`akesu`,name:`阿克苏`},{id:58,spell:`alashanmeng`,name:`阿拉善盟`},{id:59,spell:`aletai`,name:`阿勒泰`},{id:60,spell:`ali`,name:`阿里`},{id:61,spell:`ankang`,name:`安康`},{id:62,spell:`anqing`,name:`安庆`},{id:63,spell:`anshan`,name:`鞍山`},{id:64,spell:`anshun`,name:`安顺`},{id:65,spell:`anyang`,name:`安阳`},{id:338,spell:`acheng`,name:`阿城`},{id:339,spell:`anfu`,name:`安福`},{id:340,spell:`anji`,name:`安吉`},{id:341,spell:`anning`,name:`安宁`},{id:342,spell:`anqiu`,name:`安丘`},{id:343,spell:`anxi`,name:`安溪`},{id:344,spell:`anyi`,name:`安义`},{id:345,spell:`anyuan`,name:`安远`}],B:[{id:1,spell:`beijing`,name:`北京`},{id:66,spell:`baicheng`,name:`白城`},{id:67,spell:`baise`,name:`百色`},{id:68,spell:`baishan`,name:`白山`},{id:69,spell:`baiyin`,name:`白银`},{id:70,spell:`bangbu`,name:`蚌埠`},{id:71,spell:`baoding`,name:`保定`},{id:72,spell:`baoji`,name:`宝鸡`},{id:73,spell:`baoshan`,name:`保山`},{id:74,spell:`baotou`,name:`包头`},{id:75,spell:`bayannaoer`,name:`巴彦淖尔`},{id:76,spell:`bayinguoleng`,name:`巴音郭楞`},{id:77,spell:`bazhong`,name:`巴中`},{id:78,spell:`beihai`,name:`北海`},{id:79,spell:`benxi`,name:`本溪`},{id:80,spell:`bijie`,name:`毕节`},{id:81,spell:`binzhou`,name:`滨州`},{id:82,spell:`boertala`,name:`博尔塔拉`},{id:83,spell:`bozhou`,name:`亳州`},{id:346,spell:`baoying`,name:`宝应`},{id:347,spell:`bayan`,name:`巴彦`},{id:348,spell:`binhai`,name:`滨海`},{id:349,spell:`binxian`,name:`宾县`},{id:350,spell:`binyang`,name:`宾阳`},{id:351,spell:`bishan`,name:`璧山`},{id:352,spell:`boai`,name:`博爱`},{id:353,spell:`boluo`,name:`博罗`},{id:354,spell:`boxing`,name:`博兴`}],C:[{id:2,spell:`chongqing`,name:`重庆`},{id:5,spell:`changchun`,name:`长春`},{id:6,spell:`changsha`,name:`长沙`},{id:7,spell:`changzhou`,name:`常州`},{id:8,spell:`chengdu`,name:`成都`},{id:84,spell:`cangzhou`,name:`沧州`},{id:85,spell:`changde`,name:`常德`},{id:86,spell:`changdu`,name:`昌都`},{id:87,spell:`changji`,name:`昌吉`},{id:88,spell:`changzhi`,name:`长治`},{id:89,spell:`chaohu`,name:`巢湖`},{id:90,spell:`chaoyang`,name:`朝阳`},{id:91,spell:`chaozhou`,name:`潮州`},{id:92,spell:`chengde`,name:`承德`},{id:93,spell:`chenzhou`,name:`郴州`},{id:94,spell:`chifeng`,name:`赤峰`},{id:95,spell:`chizhou`,name:`池州`},{id:96,spell:`chongzuo`,name:`崇左`},{id:97,spell:`chuxiong`,name:`楚雄`},{id:98,spell:`chuzhou`,name:`滁州`},{id:355,spell:`cangnan`,name:`苍南`},{id:356,spell:`cangshan`,name:`苍山`},{id:357,spell:`caoxian`,name:`曹县`},{id:358,spell:`changdao`,name:`长岛`},{id:359,spell:`changfeng`,name:`长丰`},{id:360,spell:`changhai`,name:`长海`},{id:361,spell:`changle`,name:`长乐`},{id:362,spell:`changle`,name:`昌乐`},{id:363,spell:`changshan`,name:`常山`},{id:364,spell:`changshu`,name:`常熟`},{id:365,spell:`changtai`,name:`长泰`},{id:366,spell:`changting`,name:`长汀`},{id:367,spell:`changxing`,name:`长兴`},{id:368,spell:`changyi`,name:`昌邑`},{id:369,spell:`chaoan`,name:`潮安`},{id:370,spell:`chenggong`,name:`呈贡`},{id:371,spell:`chengkou`,name:`城口`},{id:372,spell:`chengwu`,name:`成武`},{id:373,spell:`chiping`,name:`茌平`},{id:374,spell:`chongren`,name:`崇仁`},{id:375,spell:`chongyi`,name:`崇义`},{id:376,spell:`chongzhou`,name:`崇州`},{id:377,spell:`chunan`,name:`淳安`},{id:378,spell:`cixi`,name:`慈溪`},{id:379,spell:`conghua`,name:`从化`},{id:380,spell:`congyang`,name:`枞阳`}],D:[{id:9,spell:`dalian`,name:`大连`},{id:10,spell:`dongguan`,name:`东莞`},{id:99,spell:`dali`,name:`大理`},{id:100,spell:`dandong`,name:`丹东`},{id:101,spell:`daqing`,name:`大庆`},{id:102,spell:`datong`,name:`大同`},{id:103,spell:`daxinganling`,name:`大兴安岭`},{id:104,spell:`dazhou`,name:`达州`},{id:105,spell:`dehong`,name:`德宏`},{id:106,spell:`deyang`,name:`德阳`},{id:107,spell:`dezhou`,name:`德州`},{id:108,spell:`dingxi`,name:`定西`},{id:109,spell:`diqing`,name:`迪庆`},{id:110,spell:`dongying`,name:`东营`},{id:381,spell:`dafeng`,name:`大丰`},{id:382,spell:`daishan`,name:`岱山`},{id:383,spell:`dangshan`,name:`砀山`},{id:384,spell:`dangtu`,name:`当涂`},{id:385,spell:`danxian`,name:`单县`},{id:386,spell:`danyang`,name:`丹阳`},{id:387,spell:`dapu`,name:`大埔`},{id:388,spell:`datian`,name:`大田`},{id:389,spell:`dayi`,name:`大邑`},{id:390,spell:`dayu`,name:`大余`},{id:391,spell:`dazu`,name:`大足`},{id:392,spell:`dean`,name:`德安`},{id:393,spell:`dehua`,name:`德化`},{id:394,spell:`dehui`,name:`德惠`},{id:395,spell:`dengfeng`,name:`登封`},{id:396,spell:`deqing`,name:`德清`},{id:397,spell:`deqing`,name:`德庆`},{id:398,spell:`dexing`,name:`德兴`},{id:399,spell:`dianbai`,name:`电白`},{id:400,spell:`dianjiang`,name:`垫江`},{id:401,spell:`dingnan`,name:`定南`},{id:402,spell:`dingtao`,name:`定陶`},{id:403,spell:`dingyuan`,name:`定远`},{id:404,spell:`donga`,name:`东阿`},{id:405,spell:`donghai`,name:`东海`},{id:406,spell:`dongming`,name:`东明`},{id:407,spell:`dongping`,name:`东平`},{id:408,spell:`dongshan`,name:`东山`},{id:409,spell:`dongtai`,name:`东台`},{id:410,spell:`dongtou`,name:`洞头`},{id:411,spell:`dongxiang`,name:`东乡`},{id:412,spell:`dongyang`,name:`东阳`},{id:413,spell:`dongyuan`,name:`东源`},{id:414,spell:`dongzhi`,name:`东至`},{id:415,spell:`duchang`,name:`都昌`},{id:416,spell:`dujiangyan`,name:`都江堰`}],E:[{id:111,spell:`eerduosi`,name:`鄂尔多斯`},{id:112,spell:`enshi`,name:`恩施`},{id:113,spell:`ezhou`,name:`鄂州`},{id:417,spell:`enping`,name:`恩平`}],F:[{id:11,spell:`foshan`,name:`佛山`},{id:12,spell:`fuzhou`,name:`福州`},{id:114,spell:`fangchenggang`,name:`防城港`},{id:115,spell:`fushun`,name:`抚顺`},{id:116,spell:`fuxin`,name:`阜新`},{id:117,spell:`fuyang`,name:`阜阳`},{id:118,spell:`fuzhou`,name:`抚州`},{id:418,spell:`faku`,name:`法库`},{id:419,spell:`fanchang`,name:`繁昌`},{id:420,spell:`fangzheng`,name:`方正`},{id:421,spell:`feicheng`,name:`肥城`},{id:422,spell:`feidong`,name:`肥东`},{id:423,spell:`feixi`,name:`肥西`},{id:424,spell:`feixian`,name:`费县`},{id:425,spell:`fengcheng`,name:`丰城`},{id:426,spell:`fengdu`,name:`丰都`},{id:427,spell:`fenghua`,name:`奉化`},{id:428,spell:`fengjie`,name:`奉节`},{id:429,spell:`fengkai`,name:`封开`},{id:430,spell:`fengshun`,name:`丰顺`},{id:431,spell:`fengtai`,name:`凤台`},{id:432,spell:`fengxian`,name:`丰县`},{id:433,spell:`fengxin`,name:`奉新`},{id:434,spell:`fengyang`,name:`凤阳`},{id:435,spell:`fenyi`,name:`分宜`},{id:436,spell:`fogang`,name:`佛冈`},{id:437,spell:`fuan`,name:`福安`},{id:438,spell:`fuding`,name:`福鼎`},{id:439,spell:`fuliang`,name:`浮梁`},{id:440,spell:`fumin`,name:`富民`},{id:441,spell:`funan`,name:`阜南`},{id:442,spell:`funing`,name:`阜宁`},{id:443,spell:`fuqing`,name:`福清`},{id:444,spell:`fuyang`,name:`富阳`}],G:[{id:13,spell:`guangzhou`,name:`广州`},{id:14,spell:`guiyang`,name:`贵阳`},{id:119,spell:`gannan`,name:`甘南`},{id:120,spell:`ganzhou`,name:`赣州`},{id:121,spell:`ganzi`,name:`甘孜`},{id:122,spell:`guangan`,name:`广安`},{id:123,spell:`guangyuan`,name:`广元`},{id:124,spell:`guigang`,name:`贵港`},{id:125,spell:`guilin`,name:`桂林`},{id:126,spell:`guoluo`,name:`果洛`},{id:127,spell:`guyuan`,name:`固原`},{id:445,spell:`ganxian`,name:`赣县`},{id:446,spell:`ganyu`,name:`赣榆`},{id:447,spell:`gaoan`,name:`高安`},{id:448,spell:`gaocheng`,name:`藁城`},{id:449,spell:`gaochun`,name:`高淳`},{id:450,spell:`gaolan`,name:`皋兰`},{id:451,spell:`gaoling`,name:`高陵`},{id:452,spell:`gaomi`,name:`高密`},{id:453,spell:`gaoqing`,name:`高青`},{id:454,spell:`gaotang`,name:`高唐`},{id:455,spell:`gaoyao`,name:`高要`},{id:456,spell:`gaoyi`,name:`高邑`},{id:457,spell:`gaoyou`,name:`高邮`},{id:458,spell:`gaozhou`,name:`高州`},{id:459,spell:`gongyi`,name:`巩义`},{id:460,spell:`guangchang`,name:`广昌`},{id:461,spell:`guangde`,name:`广德`},{id:462,spell:`guangfeng`,name:`广丰`},{id:463,spell:`guangning`,name:`广宁`},{id:464,spell:`guangrao`,name:`广饶`},{id:465,spell:`guangze`,name:`光泽`},{id:466,spell:`guannan`,name:`灌南`},{id:467,spell:`guanxian`,name:`冠县`},{id:468,spell:`guanyun`,name:`灌云`},{id:469,spell:`guixi`,name:`贵溪`},{id:470,spell:`gutian`,name:`古田`},{id:471,spell:`guzhen`,name:`固镇`}],H:[{id:15,spell:`haerbin`,name:`哈尔滨`},{id:16,spell:`haikou`,name:`海口`},{id:17,spell:`handan`,name:`邯郸`},{id:18,spell:`hangzhou`,name:`杭州`},{id:19,spell:`hefei`,name:`合肥`},{id:20,spell:`huizhou`,name:`惠州`},{id:128,spell:`haibei`,name:`海北`},{id:129,spell:`haidong`,name:`海东`},{id:130,spell:`hainan`,name:`海南`},{id:131,spell:`haixi`,name:`海西`},{id:132,spell:`hami`,name:`哈密`},{id:133,spell:`hanzhong`,name:`汉中`},{id:134,spell:`hebi`,name:`鹤壁`},{id:135,spell:`hechi`,name:`河池`},{id:136,spell:`hegang`,name:`鹤岗`},{id:137,spell:`heihe`,name:`黑河`},{id:138,spell:`hengshui`,name:`衡水`},{id:139,spell:`hengyang`,name:`衡阳`},{id:140,spell:`hetiandi`,name:`和田地`},{id:141,spell:`heyuan`,name:`河源`},{id:142,spell:`heze`,name:`菏泽`},{id:143,spell:`hezhou`,name:`贺州`},{id:144,spell:`honghe`,name:`红河`},{id:145,spell:`huaian`,name:`淮安`},{id:146,spell:`huaibei`,name:`淮北`},{id:147,spell:`huaihua`,name:`怀化`},{id:148,spell:`huainan`,name:`淮南`},{id:149,spell:`huanggang`,name:`黄冈`},{id:150,spell:`huangnan`,name:`黄南`},{id:151,spell:`huangshan`,name:`黄山`},{id:152,spell:`huangshi`,name:`黄石`},{id:153,spell:`huhehaote`,name:`呼和浩特`},{id:154,spell:`huludao`,name:`葫芦岛`},{id:155,spell:`hulunbeier`,name:`呼伦贝尔`},{id:156,spell:`huzhou`,name:`湖州`},{id:472,spell:`haian`,name:`海安`},{id:473,spell:`haifeng`,name:`海丰`},{id:474,spell:`haimen`,name:`海门`},{id:475,spell:`haining`,name:`海宁`},{id:476,spell:`haiyan`,name:`海盐`},{id:477,spell:`haiyang`,name:`海阳`},{id:478,spell:`hanshan`,name:`含山`},{id:479,spell:`hechuan`,name:`合川`},{id:480,spell:`hengfeng`,name:`横峰`},{id:481,spell:`hengxian`,name:`横县`},{id:482,spell:`heping`,name:`和平`},{id:483,spell:`heshan`,name:`鹤山`},{id:484,spell:`hexian`,name:`和县`},{id:485,spell:`hongze`,name:`洪泽`},{id:486,spell:`huaan`,name:`华安`},{id:487,spell:`huadian`,name:`桦甸`},{id:488,spell:`huaiji`,name:`怀集`},{id:489,spell:`huaining`,name:`怀宁`},{id:490,spell:`huaiyuan`,name:`怀远`},{id:491,spell:`huantai`,name:`桓台`},{id:492,spell:`huazhou`,name:`化州`},{id:493,spell:`huian`,name:`惠安`},{id:494,spell:`huichang`,name:`会昌`},{id:495,spell:`huidong`,name:`惠东`},{id:496,spell:`huilai`,name:`惠来`},{id:497,spell:`huimin`,name:`惠民`},{id:498,spell:`hukou`,name:`湖口`},{id:499,spell:`hulan`,name:`呼兰`},{id:500,spell:`huoqiu`,name:`霍邱`},{id:501,spell:`huoshan`,name:`霍山`},{id:502,spell:`huxian`,name:`户县`}],J:[{id:21,spell:`jiaozuo`,name:`焦作`},{id:22,spell:`jiaxing`,name:`嘉兴`},{id:23,spell:`jilin`,name:`吉林`},{id:24,spell:`jinan`,name:`济南`},{id:157,spell:`jiamusi`,name:`佳木斯`},{id:158,spell:`jiangmen`,name:`江门`},{id:159,spell:`jian`,name:`吉安`},{id:160,spell:`jiayuguan`,name:`嘉峪关`},{id:161,spell:`jieyang`,name:`揭阳`},{id:162,spell:`jinchang`,name:`金昌`},{id:163,spell:`jincheng`,name:`晋城`},{id:164,spell:`jingdezhen`,name:`景德镇`},{id:165,spell:`jingmen`,name:`荆门`},{id:166,spell:`jingzhou`,name:`荆州`},{id:167,spell:`jinhua`,name:`金华`},{id:168,spell:`jining`,name:`济宁`},{id:169,spell:`jinzhong`,name:`晋中`},{id:170,spell:`jinzhou`,name:`锦州`},{id:171,spell:`jiujiang`,name:`九江`},{id:172,spell:`jiuquan`,name:`酒泉`},{id:173,spell:`jixi`,name:`鸡西`},{id:503,spell:`jiande`,name:`建德`},{id:504,spell:`jiangdu`,name:`江都`},{id:505,spell:`jiangjin`,name:`江津`},{id:506,spell:`jiangle`,name:`将乐`},{id:507,spell:`jiangshan`,name:`江山`},{id:508,spell:`jiangyan`,name:`姜堰`},{id:509,spell:`jiangyin`,name:`江阴`},{id:510,spell:`jianhu`,name:`建湖`},{id:511,spell:`jianning`,name:`建宁`},{id:512,spell:`jianou`,name:`建瓯`},{id:513,spell:`jianyang`,name:`建阳`},{id:514,spell:`jian`,name:`吉安`},{id:515,spell:`jiaohe`,name:`蛟河`},{id:516,spell:`jiaoling`,name:`蕉岭`},{id:517,spell:`jiaonan`,name:`胶南`},{id:518,spell:`jiaozhou`,name:`胶州`},{id:519,spell:`jiashan`,name:`嘉善`},{id:520,spell:`jiaxiang`,name:`嘉祥`},{id:521,spell:`jiedong`,name:`揭东`},{id:522,spell:`jieshou`,name:`界首`},{id:523,spell:`jiexi`,name:`揭西`},{id:524,spell:`jimo`,name:`即墨`},{id:525,spell:`jingan`,name:`靖安`},{id:526,spell:`jingde`,name:`旌德`},{id:527,spell:`jinggangshan`,name:`井冈山`},{id:528,spell:`jingjiang`,name:`靖江`},{id:529,spell:`jingning`,name:`景宁`},{id:530,spell:`jingxian`,name:`泾县`},{id:531,spell:`jingxing`,name:`井陉`},{id:532,spell:`jinhu`,name:`金湖`},{id:533,spell:`jinjiang`,name:`晋江`},{id:534,spell:`jinmen`,name:`金门`},{id:535,spell:`jinning`,name:`晋宁`},{id:536,spell:`jintan`,name:`金坛`},{id:537,spell:`jintang`,name:`金堂`},{id:538,spell:`jinxian`,name:`进贤`},{id:539,spell:`jinxi`,name:`金溪`},{id:540,spell:`jinxiang`,name:`金乡`},{id:541,spell:`jinyun`,name:`缙云`},{id:542,spell:`jinzhai`,name:`金寨`},{id:543,spell:`jinzhou`,name:`晋州`},{id:544,spell:`jishui`,name:`吉水`},{id:545,spell:`jiujiang`,name:`九江`},{id:546,spell:`jiutai`,name:`九台`},{id:547,spell:`jixi`,name:`绩溪`},{id:548,spell:`jiyang`,name:`济阳`},{id:549,spell:`jiyuan`,name:`济源`},{id:550,spell:`juancheng`,name:`鄄城`},{id:551,spell:`junan`,name:`莒南`},{id:552,spell:`jurong`,name:`句容`},{id:553,spell:`juxian`,name:`莒县`},{id:554,spell:`juye`,name:`巨野`}],K:[{id:25,spell:`kunming`,name:`昆明`},{id:174,spell:`kaifeng`,name:`开封`},{id:175,spell:`kashidi`,name:`喀什地`},{id:176,spell:`kelamayi`,name:`克拉玛依`},{id:177,spell:`kezile`,name:`克孜勒`},{id:555,spell:`kaihua`,name:`开化`},{id:556,spell:`kaiping`,name:`开平`},{id:557,spell:`kaixian`,name:`开县`},{id:558,spell:`kaiyang`,name:`开阳`},{id:559,spell:`kangping`,name:`康平`},{id:560,spell:`kenli`,name:`垦利`},{id:561,spell:`kunshan`,name:`昆山`}],L:[{id:26,spell:`lanzhou`,name:`兰州`},{id:27,spell:`liuzhou`,name:`柳州`},{id:28,spell:`luoyang`,name:`洛阳`},{id:178,spell:`laibin`,name:`来宾`},{id:179,spell:`laiwu`,name:`莱芜`},{id:180,spell:`langfang`,name:`廊坊`},{id:181,spell:`lasa`,name:`拉萨`},{id:182,spell:`leshan`,name:`乐山`},{id:183,spell:`liangshan`,name:`凉山`},{id:184,spell:`lianyungang`,name:`连云港`},{id:185,spell:`liaocheng`,name:`聊城`},{id:186,spell:`liaoyang`,name:`辽阳`},{id:187,spell:`liaoyuan`,name:`辽源`},{id:188,spell:`lijiang`,name:`丽江`},{id:189,spell:`lincang`,name:`临沧`},{id:190,spell:`linfen`,name:`临汾`},{id:191,spell:`linxia`,name:`临夏`},{id:192,spell:`linyi`,name:`临沂`},{id:193,spell:`linzhi`,name:`林芝`},{id:194,spell:`lishui`,name:`丽水`},{id:195,spell:`liuan`,name:`六安`},{id:196,spell:`liupanshui`,name:`六盘水`},{id:197,spell:`longnan`,name:`陇南`},{id:198,spell:`longyan`,name:`龙岩`},{id:199,spell:`loudi`,name:`娄底`},{id:200,spell:`luohe`,name:`漯河`},{id:201,spell:`luzhou`,name:`泸州`},{id:202,spell:`lvliang`,name:`吕梁`},{id:562,spell:`laian`,name:`来安`},{id:563,spell:`laixi`,name:`莱西`},{id:564,spell:`laiyang`,name:`莱阳`},{id:565,spell:`laizhou`,name:`莱州`},{id:566,spell:`langxi`,name:`郎溪`},{id:567,spell:`lantian`,name:`蓝田`},{id:568,spell:`lanxi`,name:`兰溪`},{id:569,spell:`lean`,name:`乐安`},{id:570,spell:`lechang`,name:`乐昌`},{id:571,spell:`leizhou`,name:`雷州`},{id:572,spell:`leling`,name:`乐陵`},{id:573,spell:`leping`,name:`乐平`},{id:574,spell:`leqing`,name:`乐清`},{id:575,spell:`leting`,name:`乐亭`},{id:576,spell:`liancheng`,name:`连城`},{id:577,spell:`liangping`,name:`梁平`},{id:578,spell:`liangshan`,name:`梁山`},{id:579,spell:`lianhua`,name:`莲花`},{id:580,spell:`lianjiang`,name:`连江`},{id:581,spell:`lianjiang`,name:`廉江`},{id:582,spell:`liannan`,name:`连南`},{id:583,spell:`lianping`,name:`连平`},{id:584,spell:`lianshan`,name:`连山`},{id:585,spell:`lianshui`,name:`涟水`},{id:586,spell:`lianzhou`,name:`连州`},{id:587,spell:`liaozhong`,name:`辽中`},{id:588,spell:`lichuan`,name:`黎川`},{id:589,spell:`lijin`,name:`利津`},{id:590,spell:`linan`,name:`临安`},{id:591,spell:`lingbi`,name:`灵璧`},{id:592,spell:`lingshou`,name:`灵寿`},{id:593,spell:`lingxian`,name:`陵县`},{id:594,spell:`linhai`,name:`临海`},{id:595,spell:`linqing`,name:`临清`},{id:596,spell:`linquan`,name:`临泉`},{id:597,spell:`linqu`,name:`临朐`},{id:598,spell:`linshu`,name:`临沭`},{id:599,spell:`linyi`,name:`临邑`},{id:600,spell:`lishui`,name:`溧水`},{id:601,spell:`liucheng`,name:`柳城`},{id:602,spell:`liujiang`,name:`柳江`},{id:603,spell:`liuyang`,name:`浏阳`},{id:604,spell:`lixin`,name:`利辛`},{id:605,spell:`liyang`,name:`溧阳`},{id:606,spell:`longan`,name:`隆安`},{id:607,spell:`longchuan`,name:`龙川`},{id:608,spell:`longhai`,name:`龙海`},{id:609,spell:`longkou`,name:`龙口`},{id:610,spell:`longmen`,name:`龙门`},{id:611,spell:`longnan`,name:`龙南`},{id:612,spell:`longquan`,name:`龙泉`},{id:613,spell:`longyou`,name:`龙游`},{id:614,spell:`luancheng`,name:`栾城`},{id:615,spell:`luanchuan`,name:`栾川`},{id:616,spell:`luannan`,name:`滦南`},{id:617,spell:`luanxian`,name:`滦县`},{id:618,spell:`lufeng`,name:`陆丰`},{id:619,spell:`luhe`,name:`陆河`},{id:620,spell:`lujiang`,name:`庐江`},{id:621,spell:`luoding`,name:`罗定`},{id:622,spell:`luoning`,name:`洛宁`},{id:623,spell:`luoyuan`,name:`罗源`},{id:624,spell:`luquan`,name:`鹿泉`},{id:625,spell:`luquan`,name:`禄劝`},{id:626,spell:`luxi`,name:`芦溪`},{id:627,spell:`luzhai`,name:`鹿寨`}],M:[{id:203,spell:`maanshan`,name:`马鞍山`},{id:204,spell:`maoming`,name:`茂名`},{id:205,spell:`meishan`,name:`眉山`},{id:206,spell:`meizhou`,name:`梅州`},{id:207,spell:`mianyang`,name:`绵阳`},{id:208,spell:`mudanjiang`,name:`牡丹江`},{id:628,spell:`mashan`,name:`马山`},{id:629,spell:`meixian`,name:`梅县`},{id:630,spell:`mengcheng`,name:`蒙城`},{id:631,spell:`mengjin`,name:`孟津`},{id:632,spell:`mengyin`,name:`蒙阴`},{id:633,spell:`mengzhou`,name:`孟州`},{id:634,spell:`mingguang`,name:`明光`},{id:635,spell:`mingxi`,name:`明溪`},{id:636,spell:`minhou`,name:`闽侯`},{id:637,spell:`minqing`,name:`闽清`},{id:638,spell:`mulan`,name:`木兰`}],N:[{id:29,spell:`nanchang`,name:`南昌`},{id:30,spell:`nanjing`,name:`南京`},{id:31,spell:`nanning`,name:`南宁`},{id:32,spell:`nantong`,name:`南通`},{id:33,spell:`ningbo`,name:`宁波`},{id:209,spell:`nanchong`,name:`南充`},{id:210,spell:`nanping`,name:`南平`},{id:211,spell:`nanyang`,name:`南阳`},{id:212,spell:`naqu`,name:`那曲`},{id:213,spell:`neijiang`,name:`内江`},{id:214,spell:`ningde`,name:`宁德`},{id:215,spell:`nujiang`,name:`怒江`},{id:639,spell:`nanan`,name:`南安`},{id:640,spell:`nanao`,name:`南澳`},{id:641,spell:`nancheng`,name:`南城`},{id:642,spell:`nanchuan`,name:`南川`},{id:643,spell:`nanfeng`,name:`南丰`},{id:644,spell:`nanjing`,name:`南靖`},{id:645,spell:`nankang`,name:`南康`},{id:646,spell:`nanling`,name:`南陵`},{id:647,spell:`nanxiong`,name:`南雄`},{id:648,spell:`ningdu`,name:`宁都`},{id:649,spell:`ningguo`,name:`宁国`},{id:650,spell:`ninghai`,name:`宁海`},{id:651,spell:`ninghua`,name:`宁化`},{id:652,spell:`ningjin`,name:`宁津`},{id:653,spell:`ningxiang`,name:`宁乡`},{id:654,spell:`ningyang`,name:`宁阳`},{id:655,spell:`nongan`,name:`农安`}],P:[{id:216,spell:`panjin`,name:`盘锦`},{id:217,spell:`panzhihua`,name:`攀枝花`},{id:218,spell:`pingdingshan`,name:`平顶山`},{id:219,spell:`pingliang`,name:`平凉`},{id:220,spell:`pingxiang`,name:`萍乡`},{id:221,spell:`puer`,name:`普洱`},{id:222,spell:`putian`,name:`莆田`},{id:223,spell:`puyang`,name:`濮阳`},{id:656,spell:`panan`,name:`磐安`},{id:657,spell:`panshi`,name:`磐石`},{id:658,spell:`peixian`,name:`沛县`},{id:659,spell:`penglai`,name:`蓬莱`},{id:660,spell:`pengshui`,name:`彭水`},{id:661,spell:`pengze`,name:`彭泽`},{id:662,spell:`pengzhou`,name:`彭州`},{id:663,spell:`pingdu`,name:`平度`},{id:664,spell:`pinghe`,name:`平和`},{id:665,spell:`pinghu`,name:`平湖`},{id:666,spell:`pingnan`,name:`屏南`},{id:667,spell:`pingshan`,name:`平山`},{id:668,spell:`pingtan`,name:`平潭`},{id:669,spell:`pingyang`,name:`平阳`},{id:670,spell:`pingyin`,name:`平阴`},{id:671,spell:`pingyi`,name:`平邑`},{id:672,spell:`pingyuan`,name:`平原`},{id:673,spell:`pingyuan`,name:`平远`},{id:674,spell:`pixian`,name:`郫县`},{id:675,spell:`pizhou`,name:`邳州`},{id:676,spell:`poyang`,name:`鄱阳`},{id:677,spell:`pucheng`,name:`浦城`},{id:678,spell:`pujiang`,name:`浦江`},{id:679,spell:`pujiang`,name:`蒲江`},{id:680,spell:`pulandian`,name:`普兰店`},{id:681,spell:`puning`,name:`普宁`}],Q:[{id:34,spell:`qingdao`,name:`青岛`},{id:35,spell:`quanzhou`,name:`泉州`},{id:224,spell:`qiandong`,name:`黔东`},{id:225,spell:`qiannan`,name:`黔南`},{id:226,spell:`qianxinan`,name:`黔西南`},{id:227,spell:`qingyang`,name:`庆阳`},{id:228,spell:`qingyuan`,name:`清远`},{id:229,spell:`qinhuangdao`,name:`秦皇岛`},{id:230,spell:`qinzhou`,name:`钦州`},{id:231,spell:`qiqihaer`,name:`齐齐哈尔`},{id:232,spell:`qitaihe`,name:`七台河`},{id:233,spell:`qujing`,name:`曲靖`},{id:234,spell:`quzhou`,name:`衢州`},{id:682,spell:`qianan`,name:`迁安`},{id:683,spell:`qianshan`,name:`潜山`},{id:684,spell:`qianshan`,name:`铅山`},{id:685,spell:`qianxi`,name:`迁西`},{id:686,spell:`qidong`,name:`启东`},{id:687,spell:`qihe`,name:`齐河`},{id:688,spell:`qijiang`,name:`綦江`},{id:689,spell:`qimen`,name:`祁门`},{id:690,spell:`qingliu`,name:`清流`},{id:691,spell:`qingtian`,name:`青田`},{id:692,spell:`qingxin`,name:`清新`},{id:693,spell:`qingyang`,name:`青阳`},{id:694,spell:`qingyuan`,name:`庆元`},{id:695,spell:`qingyun`,name:`庆云`},{id:696,spell:`qingzhen`,name:`清镇`},{id:697,spell:`qingzhou`,name:`青州`},{id:698,spell:`qinyang`,name:`沁阳`},{id:699,spell:`qionglai`,name:`邛崃`},{id:700,spell:`qixia`,name:`栖霞`},{id:701,spell:`quanjiao`,name:`全椒`},{id:702,spell:`quannan`,name:`全南`},{id:703,spell:`qufu`,name:`曲阜`},{id:704,spell:`qujiang`,name:`曲江`}],R:[{id:235,spell:`rikaze`,name:`日喀则`},{id:236,spell:`rizhao`,name:`日照`},{id:705,spell:`raoping`,name:`饶平`},{id:706,spell:`renhua`,name:`仁化`},{id:707,spell:`rongan`,name:`融安`},{id:708,spell:`rongchang`,name:`荣昌`},{id:709,spell:`rongcheng`,name:`荣成`},{id:710,spell:`rongshui`,name:`融水`},{id:711,spell:`rudong`,name:`如东`},{id:712,spell:`rugao`,name:`如皋`},{id:713,spell:`ruian`,name:`瑞安`},{id:714,spell:`ruichang`,name:`瑞昌`},{id:715,spell:`ruijin`,name:`瑞金`},{id:716,spell:`rushan`,name:`乳山`},{id:717,spell:`ruyang`,name:`汝阳`},{id:718,spell:`ruyuan`,name:`乳源`}],S:[{id:3,spell:`shanghai`,name:`上海`},{id:36,spell:`shenyang`,name:`沈阳`},{id:37,spell:`shenzhen`,name:`深圳`},{id:38,spell:`shijiazhuang`,name:`石家庄`},{id:39,spell:`suzhou`,name:`苏州`},{id:237,spell:`sanmenxia`,name:`三门峡`},{id:238,spell:`sanming`,name:`三明`},{id:239,spell:`sanya`,name:`三亚`},{id:240,spell:`shangluo`,name:`商洛`},{id:241,spell:`shangqiu`,name:`商丘`},{id:242,spell:`shangrao`,name:`上饶`},{id:243,spell:`shannan`,name:`山南`},{id:244,spell:`shantou`,name:`汕头`},{id:245,spell:`shanwei`,name:`汕尾`},{id:246,spell:`shaoguan`,name:`韶关`},{id:247,spell:`shaoxing`,name:`绍兴`},{id:248,spell:`shaoyang`,name:`邵阳`},{id:249,spell:`shiyan`,name:`十堰`},{id:250,spell:`shizuishan`,name:`石嘴山`},{id:251,spell:`shuangyashan`,name:`双鸭山`},{id:252,spell:`shuozhou`,name:`朔州`},{id:253,spell:`siping`,name:`四平`},{id:254,spell:`songyuan`,name:`松原`},{id:255,spell:`suihua`,name:`绥化`},{id:256,spell:`suining`,name:`遂宁`},{id:257,spell:`suizhou`,name:`随州`},{id:258,spell:`suqian`,name:`宿迁`},{id:259,spell:`suzhou`,name:`宿州`},{id:719,spell:`sanjiang`,name:`三江`},{id:720,spell:`sanmen`,name:`三门`},{id:721,spell:`saoan`,name:`诏安`},{id:722,spell:`shanggao`,name:`上高`},{id:723,spell:`shanghang`,name:`上杭`},{id:724,spell:`shanghe`,name:`商河`},{id:725,spell:`shangli`,name:`上栗`},{id:726,spell:`shanglin`,name:`上林`},{id:727,spell:`shangrao`,name:`上饶`},{id:728,spell:`shangyou`,name:`上犹`},{id:729,spell:`shangyu`,name:`上虞`},{id:730,spell:`shangzhi`,name:`尚志`},{id:731,spell:`shaowu`,name:`邵武`},{id:732,spell:`shaoxing`,name:`绍兴`},{id:733,spell:`shaxian`,name:`沙县`},{id:734,spell:`shengsi`,name:`嵊泗`},{id:735,spell:`shengzhou`,name:`嵊州`},{id:736,spell:`shenxian`,name:`莘县`},{id:737,spell:`shenze`,name:`深泽`},{id:738,spell:`shexian`,name:`歙县`},{id:739,spell:`sheyang`,name:`射阳`},{id:740,spell:`shicheng`,name:`石城`},{id:741,spell:`shilin`,name:`石林`},{id:742,spell:`shishi`,name:`石狮`},{id:743,spell:`shitai`,name:`石台`},{id:744,spell:`shixing`,name:`始兴`},{id:745,spell:`shizhu`,name:`石柱`},{id:746,spell:`shouguang`,name:`寿光`},{id:747,spell:`shouning`,name:`寿宁`},{id:748,spell:`shouxian`,name:`寿县`},{id:749,spell:`shuangcheng`,name:`双城`},{id:750,spell:`shuangliu`,name:`双流`},{id:751,spell:`shucheng`,name:`舒城`},{id:752,spell:`shulan`,name:`舒兰`},{id:753,spell:`shunchang`,name:`顺昌`},{id:754,spell:`shuyang`,name:`沭阳`},{id:755,spell:`sihong`,name:`泗洪`},{id:756,spell:`sihui`,name:`四会`},{id:757,spell:`sishui`,name:`泗水`},{id:758,spell:`sixian`,name:`泗县`},{id:759,spell:`siyang`,name:`泗阳`},{id:760,spell:`songming`,name:`嵩明`},{id:761,spell:`songxi`,name:`松溪`},{id:762,spell:`songxian`,name:`嵩县`},{id:763,spell:`songyang`,name:`松阳`},{id:764,spell:`suichang`,name:`遂昌`},{id:765,spell:`suichuan`,name:`遂川`},{id:766,spell:`suining`,name:`睢宁`},{id:767,spell:`suixi`,name:`濉溪`},{id:768,spell:`suixi`,name:`遂溪`},{id:769,spell:`susong`,name:`宿松`},{id:770,spell:`suyu`,name:`宿豫`}],T:[{id:4,spell:`tianjin`,name:`天津`},{id:40,spell:`taizhou`,name:`台州`},{id:41,spell:`tangshan`,name:`唐山`},{id:260,spell:`tachengdi`,name:`塔城地`},{id:261,spell:`taian`,name:`泰安`},{id:262,spell:`taiyuan`,name:`太原`},{id:263,spell:`taizhou`,name:`泰州`},{id:264,spell:`tianshui`,name:`天水`},{id:265,spell:`tieling`,name:`铁岭`},{id:266,spell:`tongchuan`,name:`铜川`},{id:267,spell:`tonghua`,name:`通化`},{id:268,spell:`tongliao`,name:`通辽`},{id:269,spell:`tongling`,name:`铜陵`},{id:270,spell:`tongren`,name:`铜仁`},{id:271,spell:`tulufan`,name:`吐鲁番`},{id:771,spell:`taicang`,name:`太仓`},{id:772,spell:`taihe`,name:`太和`},{id:773,spell:`taihe`,name:`泰和`},{id:774,spell:`taihu`,name:`太湖`},{id:775,spell:`taining`,name:`泰宁`},{id:776,spell:`taishan`,name:`台山`},{id:777,spell:`taishun`,name:`泰顺`},{id:778,spell:`taixing`,name:`泰兴`},{id:779,spell:`tancheng`,name:`郯城`},{id:780,spell:`tanghai`,name:`唐海`},{id:781,spell:`tengzhou`,name:`滕州`},{id:782,spell:`tianchang`,name:`天长`},{id:783,spell:`tiantai`,name:`天台`},{id:784,spell:`tongcheng`,name:`桐城`},{id:785,spell:`tonggu`,name:`铜鼓`},{id:786,spell:`tonghe`,name:`通河`},{id:787,spell:`tongliang`,name:`铜梁`},{id:788,spell:`tongling`,name:`铜陵`},{id:789,spell:`tonglu`,name:`桐庐`},{id:790,spell:`tongnan`,name:`潼南`},{id:791,spell:`tongshan`,name:`铜山`},{id:792,spell:`tongxiang`,name:`桐乡`},{id:793,spell:`tongzhou`,name:`通州`}],W:[{id:42,spell:`weifang`,name:`潍坊`},{id:43,spell:`weihai`,name:`威海`},{id:44,spell:`wuhan`,name:`武汉`},{id:45,spell:`wuxi`,name:`无锡`},{id:272,spell:`weinan`,name:`渭南`},{id:273,spell:`wenshan`,name:`文山`},{id:274,spell:`wenzhou`,name:`温州`},{id:275,spell:`wuhai`,name:`乌海`},{id:276,spell:`wuhu`,name:`芜湖`},{id:277,spell:`wulanchabu`,name:`乌兰察布`},{id:278,spell:`wulumuqi`,name:`乌鲁木齐`},{id:279,spell:`wuwei`,name:`武威`},{id:280,spell:`wuzhong`,name:`吴忠`},{id:281,spell:`wuzhou`,name:`梧州`},{id:794,spell:`wafangdian`,name:`瓦房店`},{id:795,spell:`wanan`,name:`万安`},{id:796,spell:`wangcheng`,name:`望城`},{id:797,spell:`wangjiang`,name:`望江`},{id:798,spell:`wannian`,name:`万年`},{id:799,spell:`wanzai`,name:`万载`},{id:800,spell:`weishan`,name:`微山`},{id:801,spell:`wencheng`,name:`文成`},{id:802,spell:`wendeng`,name:`文登`},{id:803,spell:`wengyuan`,name:`翁源`},{id:804,spell:`wenling`,name:`温岭`},{id:805,spell:`wenshang`,name:`汶上`},{id:806,spell:`wenxian`,name:`温县`},{id:807,spell:`woyang`,name:`涡阳`},{id:808,spell:`wuchang`,name:`五常`},{id:809,spell:`wucheng`,name:`武城`},{id:810,spell:`wuchuan`,name:`吴川`},{id:811,spell:`wudi`,name:`无棣`},{id:812,spell:`wuhe`,name:`五河`},{id:813,spell:`wuhu`,name:`芜湖`},{id:814,spell:`wuhua`,name:`五华`},{id:815,spell:`wuji`,name:`无极`},{id:816,spell:`wujiang`,name:`吴江`},{id:817,spell:`wulian`,name:`五莲`},{id:818,spell:`wulong`,name:`武隆`},{id:819,spell:`wuming`,name:`武鸣`},{id:820,spell:`wuning`,name:`武宁`},{id:821,spell:`wuping`,name:`武平`},{id:822,spell:`wushan`,name:`巫山`},{id:823,spell:`wuwei`,name:`无为`},{id:824,spell:`wuxi`,name:`巫溪`},{id:825,spell:`wuyi`,name:`武义`},{id:826,spell:`wuyishan`,name:`武夷山`},{id:827,spell:`wuyuan`,name:`婺源`},{id:828,spell:`wuzhi`,name:`武陟`}],X:[{id:46,spell:`xiamen`,name:`厦门`},{id:47,spell:`xian`,name:`西安`},{id:48,spell:`xuchang`,name:`许昌`},{id:49,spell:`xuzhou`,name:`徐州`},{id:282,spell:`xiangfan`,name:`襄樊`},{id:283,spell:`xiangtan`,name:`湘潭`},{id:284,spell:`xiangxi`,name:`湘西`},{id:285,spell:`xianning`,name:`咸宁`},{id:286,spell:`xianyang`,name:`咸阳`},{id:287,spell:`xiaogan`,name:`孝感`},{id:288,spell:`xilinguolemeng`,name:`锡林郭勒盟`},{id:289,spell:`xinganmeng`,name:`兴安盟`},{id:290,spell:`xingtai`,name:`邢台`},{id:291,spell:`xining`,name:`西宁`},{id:292,spell:`xinxiang`,name:`新乡`},{id:293,spell:`xinyang`,name:`信阳`},{id:294,spell:`xinyu`,name:`新余`},{id:295,spell:`xinzhou`,name:`忻州`},{id:296,spell:`xishuangbanna`,name:`西双版纳`},{id:297,spell:`xuancheng`,name:`宣城`},{id:829,spell:`xiajiang`,name:`峡江`},{id:830,spell:`xiajin`,name:`夏津`},{id:831,spell:`xiangshan`,name:`象山`},{id:832,spell:`xiangshui`,name:`响水`},{id:833,spell:`xianju`,name:`仙居`},{id:834,spell:`xianyou`,name:`仙游`},{id:835,spell:`xiaoxian`,name:`萧县`},{id:836,spell:`xiapu`,name:`霞浦`},{id:837,spell:`xifeng`,name:`息烽`},{id:838,spell:`xinan`,name:`新安`},{id:839,spell:`xinchang`,name:`新昌`},{id:840,spell:`xinfeng`,name:`信丰`},{id:841,spell:`xinfeng`,name:`新丰`},{id:842,spell:`xingan`,name:`新干`},{id:843,spell:`xingguo`,name:`兴国`},{id:844,spell:`xinghua`,name:`兴化`},{id:845,spell:`xingning`,name:`兴宁`},{id:846,spell:`xingtang`,name:`行唐`},{id:847,spell:`xingyang`,name:`荥阳`},{id:848,spell:`xingzi`,name:`星子`},{id:849,spell:`xinji`,name:`辛集`},{id:850,spell:`xinjian`,name:`新建`},{id:851,spell:`xinjin`,name:`新津`},{id:852,spell:`xinle`,name:`新乐`},{id:853,spell:`xinmin`,name:`新民`},{id:854,spell:`xinmi`,name:`新密`},{id:855,spell:`xintai`,name:`新泰`},{id:856,spell:`xinxing`,name:`新兴`},{id:857,spell:`xinyi`,name:`新沂`},{id:858,spell:`xinyi`,name:`信宜`},{id:859,spell:`xinzheng`,name:`新郑`},{id:860,spell:`xiuning`,name:`休宁`},{id:861,spell:`xiushan`,name:`秀山`},{id:862,spell:`xiushui`,name:`修水`},{id:863,spell:`xiuwen`,name:`修文`},{id:864,spell:`xiuwu`,name:`修武`},{id:865,spell:`xundian`,name:`寻甸`},{id:866,spell:`xunwu`,name:`寻乌`},{id:867,spell:`xuwen`,name:`徐闻`},{id:868,spell:`xuyi`,name:`盱眙`}],Y:[{id:50,spell:`yangzhou`,name:`扬州`},{id:51,spell:`yantai`,name:`烟台`},{id:298,spell:`yaan`,name:`雅安`},{id:299,spell:`yanan`,name:`延安`},{id:300,spell:`yanbian`,name:`延边`},{id:301,spell:`yancheng`,name:`盐城`},{id:302,spell:`yangjiang`,name:`阳江`},{id:303,spell:`yangquan`,name:`阳泉`},{id:304,spell:`yibin`,name:`宜宾`},{id:305,spell:`yichang`,name:`宜昌`},{id:306,spell:`yichun`,name:`伊春`},{id:307,spell:`yichun`,name:`宜春`},{id:308,spell:`yilihasake`,name:`伊犁哈萨克`},{id:309,spell:`yinchuan`,name:`银川`},{id:310,spell:`yingkou`,name:`营口`},{id:311,spell:`yingtan`,name:`鹰潭`},{id:312,spell:`yiyang`,name:`益阳`},{id:313,spell:`yongzhou`,name:`永州`},{id:314,spell:`yueyang`,name:`岳阳`},{id:315,spell:`yulin`,name:`玉林`},{id:316,spell:`yulin`,name:`榆林`},{id:317,spell:`yuncheng`,name:`运城`},{id:318,spell:`yunfu`,name:`云浮`},{id:319,spell:`yushu`,name:`玉树`},{id:320,spell:`yuxi`,name:`玉溪`},{id:869,spell:`yangchun`,name:`阳春`},{id:870,spell:`yangdong`,name:`阳东`},{id:871,spell:`yanggu`,name:`阳谷`},{id:872,spell:`yangshan`,name:`阳山`},{id:873,spell:`yangxin`,name:`阳信`},{id:874,spell:`yangxi`,name:`阳西`},{id:875,spell:`yangzhong`,name:`扬中`},{id:876,spell:`yanshi`,name:`偃师`},{id:877,spell:`yanshou`,name:`延寿`},{id:878,spell:`yanzhou`,name:`兖州`},{id:879,spell:`yichuan`,name:`伊川`},{id:880,spell:`yifeng`,name:`宜丰`},{id:881,spell:`yihuang`,name:`宜黄`},{id:882,spell:`yilan`,name:`依兰`},{id:883,spell:`yiliang`,name:`宜良`},{id:884,spell:`yinan`,name:`沂南`},{id:885,spell:`yingde`,name:`英德`},{id:886,spell:`yingshang`,name:`颍上`},{id:887,spell:`yishui`,name:`沂水`},{id:888,spell:`yiwu`,name:`义乌`},{id:889,spell:`yixian`,name:`黟县`},{id:890,spell:`yixing`,name:`宜兴`},{id:891,spell:`yiyang`,name:`弋阳`},{id:892,spell:`yiyang`,name:`宜阳`},{id:893,spell:`yiyuan`,name:`沂源`},{id:894,spell:`yizheng`,name:`仪征`},{id:895,spell:`yongan`,name:`永安`},{id:896,spell:`yongchuan`,name:`永川`},{id:897,spell:`yongchun`,name:`永春`},{id:898,spell:`yongdeng`,name:`永登`},{id:899,spell:`yongding`,name:`永定`},{id:900,spell:`yongfeng`,name:`永丰`},{id:901,spell:`yongji`,name:`永吉`},{id:902,spell:`yongjia`,name:`永嘉`},{id:903,spell:`yongkang`,name:`永康`},{id:904,spell:`yongning`,name:`邕宁`},{id:905,spell:`yongtai`,name:`永泰`},{id:906,spell:`yongxin`,name:`永新`},{id:907,spell:`yongxiu`,name:`永修`},{id:908,spell:`youxi`,name:`尤溪`},{id:909,spell:`youyang`,name:`酉阳`},{id:910,spell:`yuanshi`,name:`元氏`},{id:911,spell:`yucheng`,name:`禹城`},{id:912,spell:`yudu`,name:`于都`},{id:913,spell:`yuexi`,name:`岳西`},{id:914,spell:`yugan`,name:`余干`},{id:915,spell:`yuhuan`,name:`玉环`},{id:916,spell:`yujiang`,name:`余江`},{id:917,spell:`yunan`,name:`郁南`},{id:918,spell:`yunan`,name:`云安`},{id:919,spell:`yuncheng`,name:`郓城`},{id:920,spell:`yunhe`,name:`云和`},{id:921,spell:`yunxiao`,name:`云霄`},{id:922,spell:`yunyang`,name:`云阳`},{id:923,spell:`yushan`,name:`玉山`},{id:924,spell:`yushu`,name:`榆树`},{id:925,spell:`yutai`,name:`鱼台`},{id:926,spell:`yutian`,name:`玉田`},{id:927,spell:`yuyao`,name:`余姚`},{id:928,spell:`yuzhong`,name:`榆中`}],Z:[{id:52,spell:`zhangzhou`,name:`漳州`},{id:53,spell:`zhengzhou`,name:`郑州`},{id:54,spell:`zhongshan`,name:`中山`},{id:55,spell:`zhuhai`,name:`珠海`},{id:321,spell:`zaozhuang`,name:`枣庄`},{id:322,spell:`zhangjiajie`,name:`张家界`},{id:323,spell:`zhangjiakou`,name:`张家口`},{id:324,spell:`zhangye`,name:`张掖`},{id:325,spell:`zhanjiang`,name:`湛江`},{id:326,spell:`zhaoqing`,name:`肇庆`},{id:327,spell:`zhaotong`,name:`昭通`},{id:328,spell:`zhenjiang`,name:`镇江`},{id:329,spell:`zhongwei`,name:`中卫`},{id:330,spell:`zhoukou`,name:`周口`},{id:331,spell:`zhoushan`,name:`舟山`},{id:332,spell:`zhumadian`,name:`驻马店`},{id:333,spell:`zhuzhou`,name:`株洲`},{id:334,spell:`zibo`,name:`淄博`},{id:335,spell:`zigong`,name:`自贡`},{id:336,spell:`ziyang`,name:`资阳`},{id:337,spell:`zunyi`,name:`遵义`},{id:929,spell:`zanhuang`,name:`赞皇`},{id:930,spell:`zengcheng`,name:`增城`},{id:931,spell:`zhangjiagang`,name:`张家港`},{id:932,spell:`zhangping`,name:`漳平`},{id:933,spell:`zhangpu`,name:`漳浦`},{id:934,spell:`zhangqiu`,name:`章丘`},{id:935,spell:`zhangshu`,name:`樟树`},{id:936,spell:`zhanhua`,name:`沾化`},{id:937,spell:`zhaoxian`,name:`赵县`},{id:938,spell:`zhaoyuan`,name:`招远`},{id:939,spell:`zhengding`,name:`正定`},{id:940,spell:`zhenghe`,name:`政和`},{id:941,spell:`zherong`,name:`柘荣`},{id:942,spell:`zhongmou`,name:`中牟`},{id:943,spell:`zhongxian`,name:`忠县`},{id:944,spell:`zhouning`,name:`周宁`},{id:945,spell:`zhouzhi`,name:`周至`},{id:946,spell:`zhuanghe`,name:`庄河`},{id:947,spell:`zhucheng`,name:`诸城`},{id:948,spell:`zhuji`,name:`诸暨`},{id:949,spell:`zijin`,name:`紫金`},{id:950,spell:`zixi`,name:`资溪`},{id:951,spell:`zoucheng`,name:`邹城`},{id:952,spell:`zouping`,name:`邹平`},{id:953,spell:`zunhua`,name:`遵化`}]},t={cities:e};export{e as cities,t as default};
|
|
2
|
-
//# sourceMappingURL=city.js.map
|
|
1
|
+
var e={A:[{id:56,spell:`aba`,name:`阿坝`},{id:57,spell:`akesu`,name:`阿克苏`},{id:58,spell:`alashanmeng`,name:`阿拉善盟`},{id:59,spell:`aletai`,name:`阿勒泰`},{id:60,spell:`ali`,name:`阿里`},{id:61,spell:`ankang`,name:`安康`},{id:62,spell:`anqing`,name:`安庆`},{id:63,spell:`anshan`,name:`鞍山`},{id:64,spell:`anshun`,name:`安顺`},{id:65,spell:`anyang`,name:`安阳`},{id:338,spell:`acheng`,name:`阿城`},{id:339,spell:`anfu`,name:`安福`},{id:340,spell:`anji`,name:`安吉`},{id:341,spell:`anning`,name:`安宁`},{id:342,spell:`anqiu`,name:`安丘`},{id:343,spell:`anxi`,name:`安溪`},{id:344,spell:`anyi`,name:`安义`},{id:345,spell:`anyuan`,name:`安远`}],B:[{id:1,spell:`beijing`,name:`北京`},{id:66,spell:`baicheng`,name:`白城`},{id:67,spell:`baise`,name:`百色`},{id:68,spell:`baishan`,name:`白山`},{id:69,spell:`baiyin`,name:`白银`},{id:70,spell:`bangbu`,name:`蚌埠`},{id:71,spell:`baoding`,name:`保定`},{id:72,spell:`baoji`,name:`宝鸡`},{id:73,spell:`baoshan`,name:`保山`},{id:74,spell:`baotou`,name:`包头`},{id:75,spell:`bayannaoer`,name:`巴彦淖尔`},{id:76,spell:`bayinguoleng`,name:`巴音郭楞`},{id:77,spell:`bazhong`,name:`巴中`},{id:78,spell:`beihai`,name:`北海`},{id:79,spell:`benxi`,name:`本溪`},{id:80,spell:`bijie`,name:`毕节`},{id:81,spell:`binzhou`,name:`滨州`},{id:82,spell:`boertala`,name:`博尔塔拉`},{id:83,spell:`bozhou`,name:`亳州`},{id:346,spell:`baoying`,name:`宝应`},{id:347,spell:`bayan`,name:`巴彦`},{id:348,spell:`binhai`,name:`滨海`},{id:349,spell:`binxian`,name:`宾县`},{id:350,spell:`binyang`,name:`宾阳`},{id:351,spell:`bishan`,name:`璧山`},{id:352,spell:`boai`,name:`博爱`},{id:353,spell:`boluo`,name:`博罗`},{id:354,spell:`boxing`,name:`博兴`}],C:[{id:2,spell:`chongqing`,name:`重庆`},{id:5,spell:`changchun`,name:`长春`},{id:6,spell:`changsha`,name:`长沙`},{id:7,spell:`changzhou`,name:`常州`},{id:8,spell:`chengdu`,name:`成都`},{id:84,spell:`cangzhou`,name:`沧州`},{id:85,spell:`changde`,name:`常德`},{id:86,spell:`changdu`,name:`昌都`},{id:87,spell:`changji`,name:`昌吉`},{id:88,spell:`changzhi`,name:`长治`},{id:89,spell:`chaohu`,name:`巢湖`},{id:90,spell:`chaoyang`,name:`朝阳`},{id:91,spell:`chaozhou`,name:`潮州`},{id:92,spell:`chengde`,name:`承德`},{id:93,spell:`chenzhou`,name:`郴州`},{id:94,spell:`chifeng`,name:`赤峰`},{id:95,spell:`chizhou`,name:`池州`},{id:96,spell:`chongzuo`,name:`崇左`},{id:97,spell:`chuxiong`,name:`楚雄`},{id:98,spell:`chuzhou`,name:`滁州`},{id:355,spell:`cangnan`,name:`苍南`},{id:356,spell:`cangshan`,name:`苍山`},{id:357,spell:`caoxian`,name:`曹县`},{id:358,spell:`changdao`,name:`长岛`},{id:359,spell:`changfeng`,name:`长丰`},{id:360,spell:`changhai`,name:`长海`},{id:361,spell:`changle`,name:`长乐`},{id:362,spell:`changle`,name:`昌乐`},{id:363,spell:`changshan`,name:`常山`},{id:364,spell:`changshu`,name:`常熟`},{id:365,spell:`changtai`,name:`长泰`},{id:366,spell:`changting`,name:`长汀`},{id:367,spell:`changxing`,name:`长兴`},{id:368,spell:`changyi`,name:`昌邑`},{id:369,spell:`chaoan`,name:`潮安`},{id:370,spell:`chenggong`,name:`呈贡`},{id:371,spell:`chengkou`,name:`城口`},{id:372,spell:`chengwu`,name:`成武`},{id:373,spell:`chiping`,name:`茌平`},{id:374,spell:`chongren`,name:`崇仁`},{id:375,spell:`chongyi`,name:`崇义`},{id:376,spell:`chongzhou`,name:`崇州`},{id:377,spell:`chunan`,name:`淳安`},{id:378,spell:`cixi`,name:`慈溪`},{id:379,spell:`conghua`,name:`从化`},{id:380,spell:`congyang`,name:`枞阳`}],D:[{id:9,spell:`dalian`,name:`大连`},{id:10,spell:`dongguan`,name:`东莞`},{id:99,spell:`dali`,name:`大理`},{id:100,spell:`dandong`,name:`丹东`},{id:101,spell:`daqing`,name:`大庆`},{id:102,spell:`datong`,name:`大同`},{id:103,spell:`daxinganling`,name:`大兴安岭`},{id:104,spell:`dazhou`,name:`达州`},{id:105,spell:`dehong`,name:`德宏`},{id:106,spell:`deyang`,name:`德阳`},{id:107,spell:`dezhou`,name:`德州`},{id:108,spell:`dingxi`,name:`定西`},{id:109,spell:`diqing`,name:`迪庆`},{id:110,spell:`dongying`,name:`东营`},{id:381,spell:`dafeng`,name:`大丰`},{id:382,spell:`daishan`,name:`岱山`},{id:383,spell:`dangshan`,name:`砀山`},{id:384,spell:`dangtu`,name:`当涂`},{id:385,spell:`danxian`,name:`单县`},{id:386,spell:`danyang`,name:`丹阳`},{id:387,spell:`dapu`,name:`大埔`},{id:388,spell:`datian`,name:`大田`},{id:389,spell:`dayi`,name:`大邑`},{id:390,spell:`dayu`,name:`大余`},{id:391,spell:`dazu`,name:`大足`},{id:392,spell:`dean`,name:`德安`},{id:393,spell:`dehua`,name:`德化`},{id:394,spell:`dehui`,name:`德惠`},{id:395,spell:`dengfeng`,name:`登封`},{id:396,spell:`deqing`,name:`德清`},{id:397,spell:`deqing`,name:`德庆`},{id:398,spell:`dexing`,name:`德兴`},{id:399,spell:`dianbai`,name:`电白`},{id:400,spell:`dianjiang`,name:`垫江`},{id:401,spell:`dingnan`,name:`定南`},{id:402,spell:`dingtao`,name:`定陶`},{id:403,spell:`dingyuan`,name:`定远`},{id:404,spell:`donga`,name:`东阿`},{id:405,spell:`donghai`,name:`东海`},{id:406,spell:`dongming`,name:`东明`},{id:407,spell:`dongping`,name:`东平`},{id:408,spell:`dongshan`,name:`东山`},{id:409,spell:`dongtai`,name:`东台`},{id:410,spell:`dongtou`,name:`洞头`},{id:411,spell:`dongxiang`,name:`东乡`},{id:412,spell:`dongyang`,name:`东阳`},{id:413,spell:`dongyuan`,name:`东源`},{id:414,spell:`dongzhi`,name:`东至`},{id:415,spell:`duchang`,name:`都昌`},{id:416,spell:`dujiangyan`,name:`都江堰`}],E:[{id:111,spell:`eerduosi`,name:`鄂尔多斯`},{id:112,spell:`enshi`,name:`恩施`},{id:113,spell:`ezhou`,name:`鄂州`},{id:417,spell:`enping`,name:`恩平`}],F:[{id:11,spell:`foshan`,name:`佛山`},{id:12,spell:`fuzhou`,name:`福州`},{id:114,spell:`fangchenggang`,name:`防城港`},{id:115,spell:`fushun`,name:`抚顺`},{id:116,spell:`fuxin`,name:`阜新`},{id:117,spell:`fuyang`,name:`阜阳`},{id:118,spell:`fuzhou`,name:`抚州`},{id:418,spell:`faku`,name:`法库`},{id:419,spell:`fanchang`,name:`繁昌`},{id:420,spell:`fangzheng`,name:`方正`},{id:421,spell:`feicheng`,name:`肥城`},{id:422,spell:`feidong`,name:`肥东`},{id:423,spell:`feixi`,name:`肥西`},{id:424,spell:`feixian`,name:`费县`},{id:425,spell:`fengcheng`,name:`丰城`},{id:426,spell:`fengdu`,name:`丰都`},{id:427,spell:`fenghua`,name:`奉化`},{id:428,spell:`fengjie`,name:`奉节`},{id:429,spell:`fengkai`,name:`封开`},{id:430,spell:`fengshun`,name:`丰顺`},{id:431,spell:`fengtai`,name:`凤台`},{id:432,spell:`fengxian`,name:`丰县`},{id:433,spell:`fengxin`,name:`奉新`},{id:434,spell:`fengyang`,name:`凤阳`},{id:435,spell:`fenyi`,name:`分宜`},{id:436,spell:`fogang`,name:`佛冈`},{id:437,spell:`fuan`,name:`福安`},{id:438,spell:`fuding`,name:`福鼎`},{id:439,spell:`fuliang`,name:`浮梁`},{id:440,spell:`fumin`,name:`富民`},{id:441,spell:`funan`,name:`阜南`},{id:442,spell:`funing`,name:`阜宁`},{id:443,spell:`fuqing`,name:`福清`},{id:444,spell:`fuyang`,name:`富阳`}],G:[{id:13,spell:`guangzhou`,name:`广州`},{id:14,spell:`guiyang`,name:`贵阳`},{id:119,spell:`gannan`,name:`甘南`},{id:120,spell:`ganzhou`,name:`赣州`},{id:121,spell:`ganzi`,name:`甘孜`},{id:122,spell:`guangan`,name:`广安`},{id:123,spell:`guangyuan`,name:`广元`},{id:124,spell:`guigang`,name:`贵港`},{id:125,spell:`guilin`,name:`桂林`},{id:126,spell:`guoluo`,name:`果洛`},{id:127,spell:`guyuan`,name:`固原`},{id:445,spell:`ganxian`,name:`赣县`},{id:446,spell:`ganyu`,name:`赣榆`},{id:447,spell:`gaoan`,name:`高安`},{id:448,spell:`gaocheng`,name:`藁城`},{id:449,spell:`gaochun`,name:`高淳`},{id:450,spell:`gaolan`,name:`皋兰`},{id:451,spell:`gaoling`,name:`高陵`},{id:452,spell:`gaomi`,name:`高密`},{id:453,spell:`gaoqing`,name:`高青`},{id:454,spell:`gaotang`,name:`高唐`},{id:455,spell:`gaoyao`,name:`高要`},{id:456,spell:`gaoyi`,name:`高邑`},{id:457,spell:`gaoyou`,name:`高邮`},{id:458,spell:`gaozhou`,name:`高州`},{id:459,spell:`gongyi`,name:`巩义`},{id:460,spell:`guangchang`,name:`广昌`},{id:461,spell:`guangde`,name:`广德`},{id:462,spell:`guangfeng`,name:`广丰`},{id:463,spell:`guangning`,name:`广宁`},{id:464,spell:`guangrao`,name:`广饶`},{id:465,spell:`guangze`,name:`光泽`},{id:466,spell:`guannan`,name:`灌南`},{id:467,spell:`guanxian`,name:`冠县`},{id:468,spell:`guanyun`,name:`灌云`},{id:469,spell:`guixi`,name:`贵溪`},{id:470,spell:`gutian`,name:`古田`},{id:471,spell:`guzhen`,name:`固镇`}],H:[{id:15,spell:`haerbin`,name:`哈尔滨`},{id:16,spell:`haikou`,name:`海口`},{id:17,spell:`handan`,name:`邯郸`},{id:18,spell:`hangzhou`,name:`杭州`},{id:19,spell:`hefei`,name:`合肥`},{id:20,spell:`huizhou`,name:`惠州`},{id:128,spell:`haibei`,name:`海北`},{id:129,spell:`haidong`,name:`海东`},{id:130,spell:`hainan`,name:`海南`},{id:131,spell:`haixi`,name:`海西`},{id:132,spell:`hami`,name:`哈密`},{id:133,spell:`hanzhong`,name:`汉中`},{id:134,spell:`hebi`,name:`鹤壁`},{id:135,spell:`hechi`,name:`河池`},{id:136,spell:`hegang`,name:`鹤岗`},{id:137,spell:`heihe`,name:`黑河`},{id:138,spell:`hengshui`,name:`衡水`},{id:139,spell:`hengyang`,name:`衡阳`},{id:140,spell:`hetiandi`,name:`和田地`},{id:141,spell:`heyuan`,name:`河源`},{id:142,spell:`heze`,name:`菏泽`},{id:143,spell:`hezhou`,name:`贺州`},{id:144,spell:`honghe`,name:`红河`},{id:145,spell:`huaian`,name:`淮安`},{id:146,spell:`huaibei`,name:`淮北`},{id:147,spell:`huaihua`,name:`怀化`},{id:148,spell:`huainan`,name:`淮南`},{id:149,spell:`huanggang`,name:`黄冈`},{id:150,spell:`huangnan`,name:`黄南`},{id:151,spell:`huangshan`,name:`黄山`},{id:152,spell:`huangshi`,name:`黄石`},{id:153,spell:`huhehaote`,name:`呼和浩特`},{id:154,spell:`huludao`,name:`葫芦岛`},{id:155,spell:`hulunbeier`,name:`呼伦贝尔`},{id:156,spell:`huzhou`,name:`湖州`},{id:472,spell:`haian`,name:`海安`},{id:473,spell:`haifeng`,name:`海丰`},{id:474,spell:`haimen`,name:`海门`},{id:475,spell:`haining`,name:`海宁`},{id:476,spell:`haiyan`,name:`海盐`},{id:477,spell:`haiyang`,name:`海阳`},{id:478,spell:`hanshan`,name:`含山`},{id:479,spell:`hechuan`,name:`合川`},{id:480,spell:`hengfeng`,name:`横峰`},{id:481,spell:`hengxian`,name:`横县`},{id:482,spell:`heping`,name:`和平`},{id:483,spell:`heshan`,name:`鹤山`},{id:484,spell:`hexian`,name:`和县`},{id:485,spell:`hongze`,name:`洪泽`},{id:486,spell:`huaan`,name:`华安`},{id:487,spell:`huadian`,name:`桦甸`},{id:488,spell:`huaiji`,name:`怀集`},{id:489,spell:`huaining`,name:`怀宁`},{id:490,spell:`huaiyuan`,name:`怀远`},{id:491,spell:`huantai`,name:`桓台`},{id:492,spell:`huazhou`,name:`化州`},{id:493,spell:`huian`,name:`惠安`},{id:494,spell:`huichang`,name:`会昌`},{id:495,spell:`huidong`,name:`惠东`},{id:496,spell:`huilai`,name:`惠来`},{id:497,spell:`huimin`,name:`惠民`},{id:498,spell:`hukou`,name:`湖口`},{id:499,spell:`hulan`,name:`呼兰`},{id:500,spell:`huoqiu`,name:`霍邱`},{id:501,spell:`huoshan`,name:`霍山`},{id:502,spell:`huxian`,name:`户县`}],J:[{id:21,spell:`jiaozuo`,name:`焦作`},{id:22,spell:`jiaxing`,name:`嘉兴`},{id:23,spell:`jilin`,name:`吉林`},{id:24,spell:`jinan`,name:`济南`},{id:157,spell:`jiamusi`,name:`佳木斯`},{id:158,spell:`jiangmen`,name:`江门`},{id:159,spell:`jian`,name:`吉安`},{id:160,spell:`jiayuguan`,name:`嘉峪关`},{id:161,spell:`jieyang`,name:`揭阳`},{id:162,spell:`jinchang`,name:`金昌`},{id:163,spell:`jincheng`,name:`晋城`},{id:164,spell:`jingdezhen`,name:`景德镇`},{id:165,spell:`jingmen`,name:`荆门`},{id:166,spell:`jingzhou`,name:`荆州`},{id:167,spell:`jinhua`,name:`金华`},{id:168,spell:`jining`,name:`济宁`},{id:169,spell:`jinzhong`,name:`晋中`},{id:170,spell:`jinzhou`,name:`锦州`},{id:171,spell:`jiujiang`,name:`九江`},{id:172,spell:`jiuquan`,name:`酒泉`},{id:173,spell:`jixi`,name:`鸡西`},{id:503,spell:`jiande`,name:`建德`},{id:504,spell:`jiangdu`,name:`江都`},{id:505,spell:`jiangjin`,name:`江津`},{id:506,spell:`jiangle`,name:`将乐`},{id:507,spell:`jiangshan`,name:`江山`},{id:508,spell:`jiangyan`,name:`姜堰`},{id:509,spell:`jiangyin`,name:`江阴`},{id:510,spell:`jianhu`,name:`建湖`},{id:511,spell:`jianning`,name:`建宁`},{id:512,spell:`jianou`,name:`建瓯`},{id:513,spell:`jianyang`,name:`建阳`},{id:514,spell:`jian`,name:`吉安`},{id:515,spell:`jiaohe`,name:`蛟河`},{id:516,spell:`jiaoling`,name:`蕉岭`},{id:517,spell:`jiaonan`,name:`胶南`},{id:518,spell:`jiaozhou`,name:`胶州`},{id:519,spell:`jiashan`,name:`嘉善`},{id:520,spell:`jiaxiang`,name:`嘉祥`},{id:521,spell:`jiedong`,name:`揭东`},{id:522,spell:`jieshou`,name:`界首`},{id:523,spell:`jiexi`,name:`揭西`},{id:524,spell:`jimo`,name:`即墨`},{id:525,spell:`jingan`,name:`靖安`},{id:526,spell:`jingde`,name:`旌德`},{id:527,spell:`jinggangshan`,name:`井冈山`},{id:528,spell:`jingjiang`,name:`靖江`},{id:529,spell:`jingning`,name:`景宁`},{id:530,spell:`jingxian`,name:`泾县`},{id:531,spell:`jingxing`,name:`井陉`},{id:532,spell:`jinhu`,name:`金湖`},{id:533,spell:`jinjiang`,name:`晋江`},{id:534,spell:`jinmen`,name:`金门`},{id:535,spell:`jinning`,name:`晋宁`},{id:536,spell:`jintan`,name:`金坛`},{id:537,spell:`jintang`,name:`金堂`},{id:538,spell:`jinxian`,name:`进贤`},{id:539,spell:`jinxi`,name:`金溪`},{id:540,spell:`jinxiang`,name:`金乡`},{id:541,spell:`jinyun`,name:`缙云`},{id:542,spell:`jinzhai`,name:`金寨`},{id:543,spell:`jinzhou`,name:`晋州`},{id:544,spell:`jishui`,name:`吉水`},{id:545,spell:`jiujiang`,name:`九江`},{id:546,spell:`jiutai`,name:`九台`},{id:547,spell:`jixi`,name:`绩溪`},{id:548,spell:`jiyang`,name:`济阳`},{id:549,spell:`jiyuan`,name:`济源`},{id:550,spell:`juancheng`,name:`鄄城`},{id:551,spell:`junan`,name:`莒南`},{id:552,spell:`jurong`,name:`句容`},{id:553,spell:`juxian`,name:`莒县`},{id:554,spell:`juye`,name:`巨野`}],K:[{id:25,spell:`kunming`,name:`昆明`},{id:174,spell:`kaifeng`,name:`开封`},{id:175,spell:`kashidi`,name:`喀什地`},{id:176,spell:`kelamayi`,name:`克拉玛依`},{id:177,spell:`kezile`,name:`克孜勒`},{id:555,spell:`kaihua`,name:`开化`},{id:556,spell:`kaiping`,name:`开平`},{id:557,spell:`kaixian`,name:`开县`},{id:558,spell:`kaiyang`,name:`开阳`},{id:559,spell:`kangping`,name:`康平`},{id:560,spell:`kenli`,name:`垦利`},{id:561,spell:`kunshan`,name:`昆山`}],L:[{id:26,spell:`lanzhou`,name:`兰州`},{id:27,spell:`liuzhou`,name:`柳州`},{id:28,spell:`luoyang`,name:`洛阳`},{id:178,spell:`laibin`,name:`来宾`},{id:179,spell:`laiwu`,name:`莱芜`},{id:180,spell:`langfang`,name:`廊坊`},{id:181,spell:`lasa`,name:`拉萨`},{id:182,spell:`leshan`,name:`乐山`},{id:183,spell:`liangshan`,name:`凉山`},{id:184,spell:`lianyungang`,name:`连云港`},{id:185,spell:`liaocheng`,name:`聊城`},{id:186,spell:`liaoyang`,name:`辽阳`},{id:187,spell:`liaoyuan`,name:`辽源`},{id:188,spell:`lijiang`,name:`丽江`},{id:189,spell:`lincang`,name:`临沧`},{id:190,spell:`linfen`,name:`临汾`},{id:191,spell:`linxia`,name:`临夏`},{id:192,spell:`linyi`,name:`临沂`},{id:193,spell:`linzhi`,name:`林芝`},{id:194,spell:`lishui`,name:`丽水`},{id:195,spell:`liuan`,name:`六安`},{id:196,spell:`liupanshui`,name:`六盘水`},{id:197,spell:`longnan`,name:`陇南`},{id:198,spell:`longyan`,name:`龙岩`},{id:199,spell:`loudi`,name:`娄底`},{id:200,spell:`luohe`,name:`漯河`},{id:201,spell:`luzhou`,name:`泸州`},{id:202,spell:`lvliang`,name:`吕梁`},{id:562,spell:`laian`,name:`来安`},{id:563,spell:`laixi`,name:`莱西`},{id:564,spell:`laiyang`,name:`莱阳`},{id:565,spell:`laizhou`,name:`莱州`},{id:566,spell:`langxi`,name:`郎溪`},{id:567,spell:`lantian`,name:`蓝田`},{id:568,spell:`lanxi`,name:`兰溪`},{id:569,spell:`lean`,name:`乐安`},{id:570,spell:`lechang`,name:`乐昌`},{id:571,spell:`leizhou`,name:`雷州`},{id:572,spell:`leling`,name:`乐陵`},{id:573,spell:`leping`,name:`乐平`},{id:574,spell:`leqing`,name:`乐清`},{id:575,spell:`leting`,name:`乐亭`},{id:576,spell:`liancheng`,name:`连城`},{id:577,spell:`liangping`,name:`梁平`},{id:578,spell:`liangshan`,name:`梁山`},{id:579,spell:`lianhua`,name:`莲花`},{id:580,spell:`lianjiang`,name:`连江`},{id:581,spell:`lianjiang`,name:`廉江`},{id:582,spell:`liannan`,name:`连南`},{id:583,spell:`lianping`,name:`连平`},{id:584,spell:`lianshan`,name:`连山`},{id:585,spell:`lianshui`,name:`涟水`},{id:586,spell:`lianzhou`,name:`连州`},{id:587,spell:`liaozhong`,name:`辽中`},{id:588,spell:`lichuan`,name:`黎川`},{id:589,spell:`lijin`,name:`利津`},{id:590,spell:`linan`,name:`临安`},{id:591,spell:`lingbi`,name:`灵璧`},{id:592,spell:`lingshou`,name:`灵寿`},{id:593,spell:`lingxian`,name:`陵县`},{id:594,spell:`linhai`,name:`临海`},{id:595,spell:`linqing`,name:`临清`},{id:596,spell:`linquan`,name:`临泉`},{id:597,spell:`linqu`,name:`临朐`},{id:598,spell:`linshu`,name:`临沭`},{id:599,spell:`linyi`,name:`临邑`},{id:600,spell:`lishui`,name:`溧水`},{id:601,spell:`liucheng`,name:`柳城`},{id:602,spell:`liujiang`,name:`柳江`},{id:603,spell:`liuyang`,name:`浏阳`},{id:604,spell:`lixin`,name:`利辛`},{id:605,spell:`liyang`,name:`溧阳`},{id:606,spell:`longan`,name:`隆安`},{id:607,spell:`longchuan`,name:`龙川`},{id:608,spell:`longhai`,name:`龙海`},{id:609,spell:`longkou`,name:`龙口`},{id:610,spell:`longmen`,name:`龙门`},{id:611,spell:`longnan`,name:`龙南`},{id:612,spell:`longquan`,name:`龙泉`},{id:613,spell:`longyou`,name:`龙游`},{id:614,spell:`luancheng`,name:`栾城`},{id:615,spell:`luanchuan`,name:`栾川`},{id:616,spell:`luannan`,name:`滦南`},{id:617,spell:`luanxian`,name:`滦县`},{id:618,spell:`lufeng`,name:`陆丰`},{id:619,spell:`luhe`,name:`陆河`},{id:620,spell:`lujiang`,name:`庐江`},{id:621,spell:`luoding`,name:`罗定`},{id:622,spell:`luoning`,name:`洛宁`},{id:623,spell:`luoyuan`,name:`罗源`},{id:624,spell:`luquan`,name:`鹿泉`},{id:625,spell:`luquan`,name:`禄劝`},{id:626,spell:`luxi`,name:`芦溪`},{id:627,spell:`luzhai`,name:`鹿寨`}],M:[{id:203,spell:`maanshan`,name:`马鞍山`},{id:204,spell:`maoming`,name:`茂名`},{id:205,spell:`meishan`,name:`眉山`},{id:206,spell:`meizhou`,name:`梅州`},{id:207,spell:`mianyang`,name:`绵阳`},{id:208,spell:`mudanjiang`,name:`牡丹江`},{id:628,spell:`mashan`,name:`马山`},{id:629,spell:`meixian`,name:`梅县`},{id:630,spell:`mengcheng`,name:`蒙城`},{id:631,spell:`mengjin`,name:`孟津`},{id:632,spell:`mengyin`,name:`蒙阴`},{id:633,spell:`mengzhou`,name:`孟州`},{id:634,spell:`mingguang`,name:`明光`},{id:635,spell:`mingxi`,name:`明溪`},{id:636,spell:`minhou`,name:`闽侯`},{id:637,spell:`minqing`,name:`闽清`},{id:638,spell:`mulan`,name:`木兰`}],N:[{id:29,spell:`nanchang`,name:`南昌`},{id:30,spell:`nanjing`,name:`南京`},{id:31,spell:`nanning`,name:`南宁`},{id:32,spell:`nantong`,name:`南通`},{id:33,spell:`ningbo`,name:`宁波`},{id:209,spell:`nanchong`,name:`南充`},{id:210,spell:`nanping`,name:`南平`},{id:211,spell:`nanyang`,name:`南阳`},{id:212,spell:`naqu`,name:`那曲`},{id:213,spell:`neijiang`,name:`内江`},{id:214,spell:`ningde`,name:`宁德`},{id:215,spell:`nujiang`,name:`怒江`},{id:639,spell:`nanan`,name:`南安`},{id:640,spell:`nanao`,name:`南澳`},{id:641,spell:`nancheng`,name:`南城`},{id:642,spell:`nanchuan`,name:`南川`},{id:643,spell:`nanfeng`,name:`南丰`},{id:644,spell:`nanjing`,name:`南靖`},{id:645,spell:`nankang`,name:`南康`},{id:646,spell:`nanling`,name:`南陵`},{id:647,spell:`nanxiong`,name:`南雄`},{id:648,spell:`ningdu`,name:`宁都`},{id:649,spell:`ningguo`,name:`宁国`},{id:650,spell:`ninghai`,name:`宁海`},{id:651,spell:`ninghua`,name:`宁化`},{id:652,spell:`ningjin`,name:`宁津`},{id:653,spell:`ningxiang`,name:`宁乡`},{id:654,spell:`ningyang`,name:`宁阳`},{id:655,spell:`nongan`,name:`农安`}],P:[{id:216,spell:`panjin`,name:`盘锦`},{id:217,spell:`panzhihua`,name:`攀枝花`},{id:218,spell:`pingdingshan`,name:`平顶山`},{id:219,spell:`pingliang`,name:`平凉`},{id:220,spell:`pingxiang`,name:`萍乡`},{id:221,spell:`puer`,name:`普洱`},{id:222,spell:`putian`,name:`莆田`},{id:223,spell:`puyang`,name:`濮阳`},{id:656,spell:`panan`,name:`磐安`},{id:657,spell:`panshi`,name:`磐石`},{id:658,spell:`peixian`,name:`沛县`},{id:659,spell:`penglai`,name:`蓬莱`},{id:660,spell:`pengshui`,name:`彭水`},{id:661,spell:`pengze`,name:`彭泽`},{id:662,spell:`pengzhou`,name:`彭州`},{id:663,spell:`pingdu`,name:`平度`},{id:664,spell:`pinghe`,name:`平和`},{id:665,spell:`pinghu`,name:`平湖`},{id:666,spell:`pingnan`,name:`屏南`},{id:667,spell:`pingshan`,name:`平山`},{id:668,spell:`pingtan`,name:`平潭`},{id:669,spell:`pingyang`,name:`平阳`},{id:670,spell:`pingyin`,name:`平阴`},{id:671,spell:`pingyi`,name:`平邑`},{id:672,spell:`pingyuan`,name:`平原`},{id:673,spell:`pingyuan`,name:`平远`},{id:674,spell:`pixian`,name:`郫县`},{id:675,spell:`pizhou`,name:`邳州`},{id:676,spell:`poyang`,name:`鄱阳`},{id:677,spell:`pucheng`,name:`浦城`},{id:678,spell:`pujiang`,name:`浦江`},{id:679,spell:`pujiang`,name:`蒲江`},{id:680,spell:`pulandian`,name:`普兰店`},{id:681,spell:`puning`,name:`普宁`}],Q:[{id:34,spell:`qingdao`,name:`青岛`},{id:35,spell:`quanzhou`,name:`泉州`},{id:224,spell:`qiandong`,name:`黔东`},{id:225,spell:`qiannan`,name:`黔南`},{id:226,spell:`qianxinan`,name:`黔西南`},{id:227,spell:`qingyang`,name:`庆阳`},{id:228,spell:`qingyuan`,name:`清远`},{id:229,spell:`qinhuangdao`,name:`秦皇岛`},{id:230,spell:`qinzhou`,name:`钦州`},{id:231,spell:`qiqihaer`,name:`齐齐哈尔`},{id:232,spell:`qitaihe`,name:`七台河`},{id:233,spell:`qujing`,name:`曲靖`},{id:234,spell:`quzhou`,name:`衢州`},{id:682,spell:`qianan`,name:`迁安`},{id:683,spell:`qianshan`,name:`潜山`},{id:684,spell:`qianshan`,name:`铅山`},{id:685,spell:`qianxi`,name:`迁西`},{id:686,spell:`qidong`,name:`启东`},{id:687,spell:`qihe`,name:`齐河`},{id:688,spell:`qijiang`,name:`綦江`},{id:689,spell:`qimen`,name:`祁门`},{id:690,spell:`qingliu`,name:`清流`},{id:691,spell:`qingtian`,name:`青田`},{id:692,spell:`qingxin`,name:`清新`},{id:693,spell:`qingyang`,name:`青阳`},{id:694,spell:`qingyuan`,name:`庆元`},{id:695,spell:`qingyun`,name:`庆云`},{id:696,spell:`qingzhen`,name:`清镇`},{id:697,spell:`qingzhou`,name:`青州`},{id:698,spell:`qinyang`,name:`沁阳`},{id:699,spell:`qionglai`,name:`邛崃`},{id:700,spell:`qixia`,name:`栖霞`},{id:701,spell:`quanjiao`,name:`全椒`},{id:702,spell:`quannan`,name:`全南`},{id:703,spell:`qufu`,name:`曲阜`},{id:704,spell:`qujiang`,name:`曲江`}],R:[{id:235,spell:`rikaze`,name:`日喀则`},{id:236,spell:`rizhao`,name:`日照`},{id:705,spell:`raoping`,name:`饶平`},{id:706,spell:`renhua`,name:`仁化`},{id:707,spell:`rongan`,name:`融安`},{id:708,spell:`rongchang`,name:`荣昌`},{id:709,spell:`rongcheng`,name:`荣成`},{id:710,spell:`rongshui`,name:`融水`},{id:711,spell:`rudong`,name:`如东`},{id:712,spell:`rugao`,name:`如皋`},{id:713,spell:`ruian`,name:`瑞安`},{id:714,spell:`ruichang`,name:`瑞昌`},{id:715,spell:`ruijin`,name:`瑞金`},{id:716,spell:`rushan`,name:`乳山`},{id:717,spell:`ruyang`,name:`汝阳`},{id:718,spell:`ruyuan`,name:`乳源`}],S:[{id:3,spell:`shanghai`,name:`上海`},{id:36,spell:`shenyang`,name:`沈阳`},{id:37,spell:`shenzhen`,name:`深圳`},{id:38,spell:`shijiazhuang`,name:`石家庄`},{id:39,spell:`suzhou`,name:`苏州`},{id:237,spell:`sanmenxia`,name:`三门峡`},{id:238,spell:`sanming`,name:`三明`},{id:239,spell:`sanya`,name:`三亚`},{id:240,spell:`shangluo`,name:`商洛`},{id:241,spell:`shangqiu`,name:`商丘`},{id:242,spell:`shangrao`,name:`上饶`},{id:243,spell:`shannan`,name:`山南`},{id:244,spell:`shantou`,name:`汕头`},{id:245,spell:`shanwei`,name:`汕尾`},{id:246,spell:`shaoguan`,name:`韶关`},{id:247,spell:`shaoxing`,name:`绍兴`},{id:248,spell:`shaoyang`,name:`邵阳`},{id:249,spell:`shiyan`,name:`十堰`},{id:250,spell:`shizuishan`,name:`石嘴山`},{id:251,spell:`shuangyashan`,name:`双鸭山`},{id:252,spell:`shuozhou`,name:`朔州`},{id:253,spell:`siping`,name:`四平`},{id:254,spell:`songyuan`,name:`松原`},{id:255,spell:`suihua`,name:`绥化`},{id:256,spell:`suining`,name:`遂宁`},{id:257,spell:`suizhou`,name:`随州`},{id:258,spell:`suqian`,name:`宿迁`},{id:259,spell:`suzhou`,name:`宿州`},{id:719,spell:`sanjiang`,name:`三江`},{id:720,spell:`sanmen`,name:`三门`},{id:721,spell:`saoan`,name:`诏安`},{id:722,spell:`shanggao`,name:`上高`},{id:723,spell:`shanghang`,name:`上杭`},{id:724,spell:`shanghe`,name:`商河`},{id:725,spell:`shangli`,name:`上栗`},{id:726,spell:`shanglin`,name:`上林`},{id:727,spell:`shangrao`,name:`上饶`},{id:728,spell:`shangyou`,name:`上犹`},{id:729,spell:`shangyu`,name:`上虞`},{id:730,spell:`shangzhi`,name:`尚志`},{id:731,spell:`shaowu`,name:`邵武`},{id:732,spell:`shaoxing`,name:`绍兴`},{id:733,spell:`shaxian`,name:`沙县`},{id:734,spell:`shengsi`,name:`嵊泗`},{id:735,spell:`shengzhou`,name:`嵊州`},{id:736,spell:`shenxian`,name:`莘县`},{id:737,spell:`shenze`,name:`深泽`},{id:738,spell:`shexian`,name:`歙县`},{id:739,spell:`sheyang`,name:`射阳`},{id:740,spell:`shicheng`,name:`石城`},{id:741,spell:`shilin`,name:`石林`},{id:742,spell:`shishi`,name:`石狮`},{id:743,spell:`shitai`,name:`石台`},{id:744,spell:`shixing`,name:`始兴`},{id:745,spell:`shizhu`,name:`石柱`},{id:746,spell:`shouguang`,name:`寿光`},{id:747,spell:`shouning`,name:`寿宁`},{id:748,spell:`shouxian`,name:`寿县`},{id:749,spell:`shuangcheng`,name:`双城`},{id:750,spell:`shuangliu`,name:`双流`},{id:751,spell:`shucheng`,name:`舒城`},{id:752,spell:`shulan`,name:`舒兰`},{id:753,spell:`shunchang`,name:`顺昌`},{id:754,spell:`shuyang`,name:`沭阳`},{id:755,spell:`sihong`,name:`泗洪`},{id:756,spell:`sihui`,name:`四会`},{id:757,spell:`sishui`,name:`泗水`},{id:758,spell:`sixian`,name:`泗县`},{id:759,spell:`siyang`,name:`泗阳`},{id:760,spell:`songming`,name:`嵩明`},{id:761,spell:`songxi`,name:`松溪`},{id:762,spell:`songxian`,name:`嵩县`},{id:763,spell:`songyang`,name:`松阳`},{id:764,spell:`suichang`,name:`遂昌`},{id:765,spell:`suichuan`,name:`遂川`},{id:766,spell:`suining`,name:`睢宁`},{id:767,spell:`suixi`,name:`濉溪`},{id:768,spell:`suixi`,name:`遂溪`},{id:769,spell:`susong`,name:`宿松`},{id:770,spell:`suyu`,name:`宿豫`}],T:[{id:4,spell:`tianjin`,name:`天津`},{id:40,spell:`taizhou`,name:`台州`},{id:41,spell:`tangshan`,name:`唐山`},{id:260,spell:`tachengdi`,name:`塔城地`},{id:261,spell:`taian`,name:`泰安`},{id:262,spell:`taiyuan`,name:`太原`},{id:263,spell:`taizhou`,name:`泰州`},{id:264,spell:`tianshui`,name:`天水`},{id:265,spell:`tieling`,name:`铁岭`},{id:266,spell:`tongchuan`,name:`铜川`},{id:267,spell:`tonghua`,name:`通化`},{id:268,spell:`tongliao`,name:`通辽`},{id:269,spell:`tongling`,name:`铜陵`},{id:270,spell:`tongren`,name:`铜仁`},{id:271,spell:`tulufan`,name:`吐鲁番`},{id:771,spell:`taicang`,name:`太仓`},{id:772,spell:`taihe`,name:`太和`},{id:773,spell:`taihe`,name:`泰和`},{id:774,spell:`taihu`,name:`太湖`},{id:775,spell:`taining`,name:`泰宁`},{id:776,spell:`taishan`,name:`台山`},{id:777,spell:`taishun`,name:`泰顺`},{id:778,spell:`taixing`,name:`泰兴`},{id:779,spell:`tancheng`,name:`郯城`},{id:780,spell:`tanghai`,name:`唐海`},{id:781,spell:`tengzhou`,name:`滕州`},{id:782,spell:`tianchang`,name:`天长`},{id:783,spell:`tiantai`,name:`天台`},{id:784,spell:`tongcheng`,name:`桐城`},{id:785,spell:`tonggu`,name:`铜鼓`},{id:786,spell:`tonghe`,name:`通河`},{id:787,spell:`tongliang`,name:`铜梁`},{id:788,spell:`tongling`,name:`铜陵`},{id:789,spell:`tonglu`,name:`桐庐`},{id:790,spell:`tongnan`,name:`潼南`},{id:791,spell:`tongshan`,name:`铜山`},{id:792,spell:`tongxiang`,name:`桐乡`},{id:793,spell:`tongzhou`,name:`通州`}],W:[{id:42,spell:`weifang`,name:`潍坊`},{id:43,spell:`weihai`,name:`威海`},{id:44,spell:`wuhan`,name:`武汉`},{id:45,spell:`wuxi`,name:`无锡`},{id:272,spell:`weinan`,name:`渭南`},{id:273,spell:`wenshan`,name:`文山`},{id:274,spell:`wenzhou`,name:`温州`},{id:275,spell:`wuhai`,name:`乌海`},{id:276,spell:`wuhu`,name:`芜湖`},{id:277,spell:`wulanchabu`,name:`乌兰察布`},{id:278,spell:`wulumuqi`,name:`乌鲁木齐`},{id:279,spell:`wuwei`,name:`武威`},{id:280,spell:`wuzhong`,name:`吴忠`},{id:281,spell:`wuzhou`,name:`梧州`},{id:794,spell:`wafangdian`,name:`瓦房店`},{id:795,spell:`wanan`,name:`万安`},{id:796,spell:`wangcheng`,name:`望城`},{id:797,spell:`wangjiang`,name:`望江`},{id:798,spell:`wannian`,name:`万年`},{id:799,spell:`wanzai`,name:`万载`},{id:800,spell:`weishan`,name:`微山`},{id:801,spell:`wencheng`,name:`文成`},{id:802,spell:`wendeng`,name:`文登`},{id:803,spell:`wengyuan`,name:`翁源`},{id:804,spell:`wenling`,name:`温岭`},{id:805,spell:`wenshang`,name:`汶上`},{id:806,spell:`wenxian`,name:`温县`},{id:807,spell:`woyang`,name:`涡阳`},{id:808,spell:`wuchang`,name:`五常`},{id:809,spell:`wucheng`,name:`武城`},{id:810,spell:`wuchuan`,name:`吴川`},{id:811,spell:`wudi`,name:`无棣`},{id:812,spell:`wuhe`,name:`五河`},{id:813,spell:`wuhu`,name:`芜湖`},{id:814,spell:`wuhua`,name:`五华`},{id:815,spell:`wuji`,name:`无极`},{id:816,spell:`wujiang`,name:`吴江`},{id:817,spell:`wulian`,name:`五莲`},{id:818,spell:`wulong`,name:`武隆`},{id:819,spell:`wuming`,name:`武鸣`},{id:820,spell:`wuning`,name:`武宁`},{id:821,spell:`wuping`,name:`武平`},{id:822,spell:`wushan`,name:`巫山`},{id:823,spell:`wuwei`,name:`无为`},{id:824,spell:`wuxi`,name:`巫溪`},{id:825,spell:`wuyi`,name:`武义`},{id:826,spell:`wuyishan`,name:`武夷山`},{id:827,spell:`wuyuan`,name:`婺源`},{id:828,spell:`wuzhi`,name:`武陟`}],X:[{id:46,spell:`xiamen`,name:`厦门`},{id:47,spell:`xian`,name:`西安`},{id:48,spell:`xuchang`,name:`许昌`},{id:49,spell:`xuzhou`,name:`徐州`},{id:282,spell:`xiangfan`,name:`襄樊`},{id:283,spell:`xiangtan`,name:`湘潭`},{id:284,spell:`xiangxi`,name:`湘西`},{id:285,spell:`xianning`,name:`咸宁`},{id:286,spell:`xianyang`,name:`咸阳`},{id:287,spell:`xiaogan`,name:`孝感`},{id:288,spell:`xilinguolemeng`,name:`锡林郭勒盟`},{id:289,spell:`xinganmeng`,name:`兴安盟`},{id:290,spell:`xingtai`,name:`邢台`},{id:291,spell:`xining`,name:`西宁`},{id:292,spell:`xinxiang`,name:`新乡`},{id:293,spell:`xinyang`,name:`信阳`},{id:294,spell:`xinyu`,name:`新余`},{id:295,spell:`xinzhou`,name:`忻州`},{id:296,spell:`xishuangbanna`,name:`西双版纳`},{id:297,spell:`xuancheng`,name:`宣城`},{id:829,spell:`xiajiang`,name:`峡江`},{id:830,spell:`xiajin`,name:`夏津`},{id:831,spell:`xiangshan`,name:`象山`},{id:832,spell:`xiangshui`,name:`响水`},{id:833,spell:`xianju`,name:`仙居`},{id:834,spell:`xianyou`,name:`仙游`},{id:835,spell:`xiaoxian`,name:`萧县`},{id:836,spell:`xiapu`,name:`霞浦`},{id:837,spell:`xifeng`,name:`息烽`},{id:838,spell:`xinan`,name:`新安`},{id:839,spell:`xinchang`,name:`新昌`},{id:840,spell:`xinfeng`,name:`信丰`},{id:841,spell:`xinfeng`,name:`新丰`},{id:842,spell:`xingan`,name:`新干`},{id:843,spell:`xingguo`,name:`兴国`},{id:844,spell:`xinghua`,name:`兴化`},{id:845,spell:`xingning`,name:`兴宁`},{id:846,spell:`xingtang`,name:`行唐`},{id:847,spell:`xingyang`,name:`荥阳`},{id:848,spell:`xingzi`,name:`星子`},{id:849,spell:`xinji`,name:`辛集`},{id:850,spell:`xinjian`,name:`新建`},{id:851,spell:`xinjin`,name:`新津`},{id:852,spell:`xinle`,name:`新乐`},{id:853,spell:`xinmin`,name:`新民`},{id:854,spell:`xinmi`,name:`新密`},{id:855,spell:`xintai`,name:`新泰`},{id:856,spell:`xinxing`,name:`新兴`},{id:857,spell:`xinyi`,name:`新沂`},{id:858,spell:`xinyi`,name:`信宜`},{id:859,spell:`xinzheng`,name:`新郑`},{id:860,spell:`xiuning`,name:`休宁`},{id:861,spell:`xiushan`,name:`秀山`},{id:862,spell:`xiushui`,name:`修水`},{id:863,spell:`xiuwen`,name:`修文`},{id:864,spell:`xiuwu`,name:`修武`},{id:865,spell:`xundian`,name:`寻甸`},{id:866,spell:`xunwu`,name:`寻乌`},{id:867,spell:`xuwen`,name:`徐闻`},{id:868,spell:`xuyi`,name:`盱眙`}],Y:[{id:50,spell:`yangzhou`,name:`扬州`},{id:51,spell:`yantai`,name:`烟台`},{id:298,spell:`yaan`,name:`雅安`},{id:299,spell:`yanan`,name:`延安`},{id:300,spell:`yanbian`,name:`延边`},{id:301,spell:`yancheng`,name:`盐城`},{id:302,spell:`yangjiang`,name:`阳江`},{id:303,spell:`yangquan`,name:`阳泉`},{id:304,spell:`yibin`,name:`宜宾`},{id:305,spell:`yichang`,name:`宜昌`},{id:306,spell:`yichun`,name:`伊春`},{id:307,spell:`yichun`,name:`宜春`},{id:308,spell:`yilihasake`,name:`伊犁哈萨克`},{id:309,spell:`yinchuan`,name:`银川`},{id:310,spell:`yingkou`,name:`营口`},{id:311,spell:`yingtan`,name:`鹰潭`},{id:312,spell:`yiyang`,name:`益阳`},{id:313,spell:`yongzhou`,name:`永州`},{id:314,spell:`yueyang`,name:`岳阳`},{id:315,spell:`yulin`,name:`玉林`},{id:316,spell:`yulin`,name:`榆林`},{id:317,spell:`yuncheng`,name:`运城`},{id:318,spell:`yunfu`,name:`云浮`},{id:319,spell:`yushu`,name:`玉树`},{id:320,spell:`yuxi`,name:`玉溪`},{id:869,spell:`yangchun`,name:`阳春`},{id:870,spell:`yangdong`,name:`阳东`},{id:871,spell:`yanggu`,name:`阳谷`},{id:872,spell:`yangshan`,name:`阳山`},{id:873,spell:`yangxin`,name:`阳信`},{id:874,spell:`yangxi`,name:`阳西`},{id:875,spell:`yangzhong`,name:`扬中`},{id:876,spell:`yanshi`,name:`偃师`},{id:877,spell:`yanshou`,name:`延寿`},{id:878,spell:`yanzhou`,name:`兖州`},{id:879,spell:`yichuan`,name:`伊川`},{id:880,spell:`yifeng`,name:`宜丰`},{id:881,spell:`yihuang`,name:`宜黄`},{id:882,spell:`yilan`,name:`依兰`},{id:883,spell:`yiliang`,name:`宜良`},{id:884,spell:`yinan`,name:`沂南`},{id:885,spell:`yingde`,name:`英德`},{id:886,spell:`yingshang`,name:`颍上`},{id:887,spell:`yishui`,name:`沂水`},{id:888,spell:`yiwu`,name:`义乌`},{id:889,spell:`yixian`,name:`黟县`},{id:890,spell:`yixing`,name:`宜兴`},{id:891,spell:`yiyang`,name:`弋阳`},{id:892,spell:`yiyang`,name:`宜阳`},{id:893,spell:`yiyuan`,name:`沂源`},{id:894,spell:`yizheng`,name:`仪征`},{id:895,spell:`yongan`,name:`永安`},{id:896,spell:`yongchuan`,name:`永川`},{id:897,spell:`yongchun`,name:`永春`},{id:898,spell:`yongdeng`,name:`永登`},{id:899,spell:`yongding`,name:`永定`},{id:900,spell:`yongfeng`,name:`永丰`},{id:901,spell:`yongji`,name:`永吉`},{id:902,spell:`yongjia`,name:`永嘉`},{id:903,spell:`yongkang`,name:`永康`},{id:904,spell:`yongning`,name:`邕宁`},{id:905,spell:`yongtai`,name:`永泰`},{id:906,spell:`yongxin`,name:`永新`},{id:907,spell:`yongxiu`,name:`永修`},{id:908,spell:`youxi`,name:`尤溪`},{id:909,spell:`youyang`,name:`酉阳`},{id:910,spell:`yuanshi`,name:`元氏`},{id:911,spell:`yucheng`,name:`禹城`},{id:912,spell:`yudu`,name:`于都`},{id:913,spell:`yuexi`,name:`岳西`},{id:914,spell:`yugan`,name:`余干`},{id:915,spell:`yuhuan`,name:`玉环`},{id:916,spell:`yujiang`,name:`余江`},{id:917,spell:`yunan`,name:`郁南`},{id:918,spell:`yunan`,name:`云安`},{id:919,spell:`yuncheng`,name:`郓城`},{id:920,spell:`yunhe`,name:`云和`},{id:921,spell:`yunxiao`,name:`云霄`},{id:922,spell:`yunyang`,name:`云阳`},{id:923,spell:`yushan`,name:`玉山`},{id:924,spell:`yushu`,name:`榆树`},{id:925,spell:`yutai`,name:`鱼台`},{id:926,spell:`yutian`,name:`玉田`},{id:927,spell:`yuyao`,name:`余姚`},{id:928,spell:`yuzhong`,name:`榆中`}],Z:[{id:52,spell:`zhangzhou`,name:`漳州`},{id:53,spell:`zhengzhou`,name:`郑州`},{id:54,spell:`zhongshan`,name:`中山`},{id:55,spell:`zhuhai`,name:`珠海`},{id:321,spell:`zaozhuang`,name:`枣庄`},{id:322,spell:`zhangjiajie`,name:`张家界`},{id:323,spell:`zhangjiakou`,name:`张家口`},{id:324,spell:`zhangye`,name:`张掖`},{id:325,spell:`zhanjiang`,name:`湛江`},{id:326,spell:`zhaoqing`,name:`肇庆`},{id:327,spell:`zhaotong`,name:`昭通`},{id:328,spell:`zhenjiang`,name:`镇江`},{id:329,spell:`zhongwei`,name:`中卫`},{id:330,spell:`zhoukou`,name:`周口`},{id:331,spell:`zhoushan`,name:`舟山`},{id:332,spell:`zhumadian`,name:`驻马店`},{id:333,spell:`zhuzhou`,name:`株洲`},{id:334,spell:`zibo`,name:`淄博`},{id:335,spell:`zigong`,name:`自贡`},{id:336,spell:`ziyang`,name:`资阳`},{id:337,spell:`zunyi`,name:`遵义`},{id:929,spell:`zanhuang`,name:`赞皇`},{id:930,spell:`zengcheng`,name:`增城`},{id:931,spell:`zhangjiagang`,name:`张家港`},{id:932,spell:`zhangping`,name:`漳平`},{id:933,spell:`zhangpu`,name:`漳浦`},{id:934,spell:`zhangqiu`,name:`章丘`},{id:935,spell:`zhangshu`,name:`樟树`},{id:936,spell:`zhanhua`,name:`沾化`},{id:937,spell:`zhaoxian`,name:`赵县`},{id:938,spell:`zhaoyuan`,name:`招远`},{id:939,spell:`zhengding`,name:`正定`},{id:940,spell:`zhenghe`,name:`政和`},{id:941,spell:`zherong`,name:`柘荣`},{id:942,spell:`zhongmou`,name:`中牟`},{id:943,spell:`zhongxian`,name:`忠县`},{id:944,spell:`zhouning`,name:`周宁`},{id:945,spell:`zhouzhi`,name:`周至`},{id:946,spell:`zhuanghe`,name:`庄河`},{id:947,spell:`zhucheng`,name:`诸城`},{id:948,spell:`zhuji`,name:`诸暨`},{id:949,spell:`zijin`,name:`紫金`},{id:950,spell:`zixi`,name:`资溪`},{id:951,spell:`zoucheng`,name:`邹城`},{id:952,spell:`zouping`,name:`邹平`},{id:953,spell:`zunhua`,name:`遵化`}]},t={cities:e};export{e as cities,t as default};
|
package/dist/config.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk.cjs`);let e=require(`vue`),t=require(`naive-ui`);const n=Symbol(`robot-component-feedback`),r=Symbol(`robot-component-locale`),i={"common.confirm":`确定`,"common.cancel":`取消`,"common.save":`保存`,"common.submit":`提交`,"common.reset":`重置`,"common.retry":`重试`,"common.edit":`编辑`,"common.detail":`详情`,"common.delete":`删除`,"common.select":`选择`,"common.print":`打印`,"table.loadFailed":`数据加载失败`,"table.deleteTitle":`确认删除`,"table.deleteContent":`确定要删除这条记录吗?`,"table.deleteSuccess":`删除成功`,"table.deleteFailed":`删除失败`,"table.detailFailed":`获取详情失败`,"table.moreActions":`更多操作`,"table.actionFailed":`{action}失败`,"table.cancelSelection":`取消选择`,"table.columnSettings":`列设置`,"table.export":`导出`,"table.settings":`表格设置`,"table.selectedCount":`已选择 {count} 项`,"table.addRow":`增行`,"table.insertRow":`插行`,"table.deleteRow":`删除行`,"table.copyRow":`复制行`,"table.moveUp":`上移`,"table.moveDown":`下移`,"table.addRowSuccess":`添加行成功`,"table.insertRowSuccess":`插入行成功`,"table.deleteRowSuccess":`删除行成功`,"table.copyRowSuccess":`复制行成功`,"table.moveUpSuccess":`行已上移`,"table.moveDownSuccess":`行已下移`,"table.selectRowFirst":`请先选择一行数据`,"table.selectDeleteRowFirst":`请先选择要删除的行`,"table.selectCopyRowFirst":`请先选择要复制的行`,"table.firstRow":`已经是第一行`,"table.lastRow":`已经是最后一行`,"table.deleteRowContent":`确定要删除选中的行吗?此操作不可撤销。`,"table.confirmDeleteRow":`确认删除`,"table.printTargetMissing":`打印元素未找到`,"table.downloadTargetMissing":`下载元素未找到`,"table.invalidRowKeys":`表格存在 {count} 个缺失或重复的行键`,"form.required":`{label}不能为空`,"search.valueRequired":`请输入搜索内容,或选择筛选条件`,"search.failed":`搜索失败`,"captcha.trigger":`点击进行人机验证`,"captcha.verifying":`正在验证…`,"captcha.success":`验证成功`,"captcha.failed":`验证失败,请重试`,"captcha.reset":`重新验证`,"captcha.puzzleFailed":`拼图验证失败`,"captcha.verifyFailed":`服务端验证失败`,"captcha.loadFailed":`验证码加载失败`},a={"common.confirm":`Confirm`,"common.cancel":`Cancel`,"common.save":`Save`,"common.submit":`Submit`,"common.reset":`Reset`,"common.retry":`Retry`,"common.edit":`Edit`,"common.detail":`Details`,"common.delete":`Delete`,"common.select":`Select`,"common.print":`Print`,"table.loadFailed":`Failed to load data`,"table.deleteTitle":`Confirm deletion`,"table.deleteContent":`Are you sure you want to delete this record?`,"table.deleteSuccess":`Deleted successfully`,"table.deleteFailed":`Delete failed`,"table.detailFailed":`Failed to load details`,"table.moreActions":`More actions`,"table.actionFailed":`{action} failed`,"table.cancelSelection":`Clear selection`,"table.columnSettings":`Column settings`,"table.export":`Export`,"table.settings":`Table settings`,"table.selectedCount":`{count} selected`,"table.addRow":`Add row`,"table.insertRow":`Insert row`,"table.deleteRow":`Delete row`,"table.copyRow":`Copy row`,"table.moveUp":`Move up`,"table.moveDown":`Move down`,"table.addRowSuccess":`Row added`,"table.insertRowSuccess":`Row inserted`,"table.deleteRowSuccess":`Row deleted`,"table.copyRowSuccess":`Row copied`,"table.moveUpSuccess":`Row moved up`,"table.moveDownSuccess":`Row moved down`,"table.selectRowFirst":`Select a row first`,"table.selectDeleteRowFirst":`Select a row to delete first`,"table.selectCopyRowFirst":`Select a row to copy first`,"table.firstRow":`This is already the first row`,"table.lastRow":`This is already the last row`,"table.deleteRowContent":`Are you sure you want to delete the selected row? This cannot be undone.`,"table.confirmDeleteRow":`Delete row`,"table.printTargetMissing":`Print target was not found`,"table.downloadTargetMissing":`Download target was not found`,"table.invalidRowKeys":`{count} table row keys are missing or duplicated`,"form.required":`{label} is required`,"search.valueRequired":`Enter a search term or choose a filter`,"search.failed":`Search failed`,"captcha.trigger":`Click to verify`,"captcha.verifying":`Verifying…`,"captcha.success":`Verified`,"captcha.failed":`Verification failed. Try again.`,"captcha.reset":`Verify again`,"captcha.puzzleFailed":`Puzzle verification failed`,"captcha.verifyFailed":`Server verification failed`,"captcha.loadFailed":`Failed to load captcha`},o=(e,t)=>t?e.replace(/\{([^{}]+)\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?String(t[n]):e):e;function s(t){let n=(0,e.getCurrentInstance)()?(0,e.inject)(r,{}):{};return{t:(r,s)=>{let c=(0,e.toValue)(t)??{},l=c.t??n.t;if(l)return l(r,s);let u=(c.locale??n.locale??`zh-CN`)===`en-US`?a:i;return o(c.messages?.[r]??n.messages?.[r]??u[r]??r,s)}}}function c(r){let i=(0,e.getCurrentInstance)(),a=i?(0,e.inject)(n,{}):{},o=null,s=null;if(i){try{o=(0,t.useMessage)()}catch{o=null}try{s=(0,t.useDialog)()}catch{s=null}}let c=()=>(0,e.toValue)(r)??a,l=(e,t,n)=>{let r=c()[e];r?r(t,n):o?.[e](t)};return{success:e=>l(`success`,e),error:(e,t)=>l(`error`,e,t),warning:e=>l(`warning`,e),info:e=>l(`info`,e),confirm:async e=>{let t=c().confirm;return t?await t(e)!==!1:s?new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))},i=e.type??`warning`;s[i]({title:e.title,content:e.content,positiveText:e.positiveText,negativeText:e.negativeText,onPositiveClick:()=>r(!0),onNegativeClick:()=>r(!1),onClose:()=>r(!1)})}):typeof window<`u`&&typeof window.confirm==`function`?window.confirm(`${e.title}\n${e.content}`):!1}}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
|