workdesktop-ai 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/api-button/index.mjs +1 -1
  2. package/dist/auto-complete/index.mjs +1 -1
  3. package/dist/checkbox-list/index.mjs +1 -1
  4. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs} +2 -2
  5. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs.map} +1 -1
  6. package/dist/chunks/{AutoComplete-C6Nxatvt.mjs → AutoComplete-DqyhsqiS.mjs} +2 -2
  7. package/dist/chunks/{AutoComplete-C6Nxatvt.mjs.map → AutoComplete-DqyhsqiS.mjs.map} +1 -1
  8. package/dist/chunks/{CheckboxList-5AEx33r5.mjs → CheckboxList-RxJGe-LQ.mjs} +2 -2
  9. package/dist/chunks/{CheckboxList-5AEx33r5.mjs.map → CheckboxList-RxJGe-LQ.mjs.map} +1 -1
  10. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs} +2 -2
  11. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs.map} +1 -1
  12. package/dist/chunks/{DataForm-C6VLTSOm.mjs → DataForm-DYMderSS.mjs} +8 -7
  13. package/dist/chunks/{DataForm-C6VLTSOm.mjs.map → DataForm-DYMderSS.mjs.map} +1 -1
  14. package/dist/chunks/{DataGrid-Dd7n5JM7.mjs → DataGrid-DWAhwLVk.mjs} +3 -3
  15. package/dist/chunks/{DataGrid-Dd7n5JM7.mjs.map → DataGrid-DWAhwLVk.mjs.map} +1 -1
  16. package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs} +2 -2
  17. package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs.map → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs.map} +1 -1
  18. package/dist/chunks/{Drawer-ucXKUecL.mjs → Drawer-BzdohcBg.mjs} +96 -90
  19. package/dist/chunks/Drawer-BzdohcBg.mjs.map +1 -0
  20. package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs} +2 -2
  21. package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs.map → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs.map} +1 -1
  22. package/dist/chunks/{EditableGrid-CDeeVkaX.mjs → EditableGrid-e3wwCaem.mjs} +6 -5
  23. package/dist/chunks/{EditableGrid-CDeeVkaX.mjs.map → EditableGrid-e3wwCaem.mjs.map} +1 -1
  24. package/dist/chunks/Guide-AWaWvQoq.mjs +347 -0
  25. package/dist/chunks/Guide-AWaWvQoq.mjs.map +1 -0
  26. package/dist/chunks/Iframe-DcFFi0S9.mjs +128 -0
  27. package/dist/chunks/Iframe-DcFFi0S9.mjs.map +1 -0
  28. package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs → ImageUpload-BK7tbU2o.mjs} +5 -4
  29. package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs.map → ImageUpload-BK7tbU2o.mjs.map} +1 -1
  30. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs} +2 -2
  31. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs.map} +1 -1
  32. package/dist/chunks/{RadioList-BUWcP_Pk.mjs → RadioList-DuEeHumw.mjs} +2 -2
  33. package/dist/chunks/{RadioList-BUWcP_Pk.mjs.map → RadioList-DuEeHumw.mjs.map} +1 -1
  34. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs +63 -0
  35. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs.map +1 -0
  36. package/dist/chunks/{Select-uvFy7_NU.mjs → Select-MD3taMJo.mjs} +2 -2
  37. package/dist/chunks/{Select-uvFy7_NU.mjs.map → Select-MD3taMJo.mjs.map} +1 -1
  38. package/dist/chunks/{Station-BTP0SbBg.mjs → Station-2m9uznh3.mjs} +2 -2
  39. package/dist/chunks/{Station-BTP0SbBg.mjs.map → Station-2m9uznh3.mjs.map} +1 -1
  40. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs} +2 -2
  41. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs.map} +1 -1
  42. package/dist/chunks/Tips-B_18E4mc.mjs +71 -0
  43. package/dist/chunks/Tips-B_18E4mc.mjs.map +1 -0
  44. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs} +5 -4
  45. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs.map} +1 -1
  46. package/dist/chunks/{Viewer-CjLSQTrw.mjs → Viewer-FSV6xObc.mjs} +2 -2
  47. package/dist/chunks/{Viewer-CjLSQTrw.mjs.map → Viewer-FSV6xObc.mjs.map} +1 -1
  48. package/dist/chunks/config-B6nWG5dv.mjs +1378 -0
  49. package/dist/chunks/config-B6nWG5dv.mjs.map +1 -0
  50. package/dist/chunks/http-BKKP0gEJ.mjs +2774 -0
  51. package/dist/chunks/http-BKKP0gEJ.mjs.map +1 -0
  52. package/dist/chunks/{useApiAction-DxVQWWxv.mjs → useApiAction-71XPKjlQ.mjs} +2 -2
  53. package/dist/chunks/{useApiAction-DxVQWWxv.mjs.map → useApiAction-71XPKjlQ.mjs.map} +1 -1
  54. package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs → useColumnSettings-CbiWd27-.mjs} +22 -21
  55. package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs.map → useColumnSettings-CbiWd27-.mjs.map} +1 -1
  56. package/dist/chunks/useConfig-CPioiLWJ.mjs +23 -0
  57. package/dist/chunks/useConfig-CPioiLWJ.mjs.map +1 -0
  58. package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs → useOptionsLoader-D4Jh4f1F.mjs} +2 -2
  59. package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs.map → useOptionsLoader-D4Jh4f1F.mjs.map} +1 -1
  60. package/dist/confirm-button/index.mjs +1 -1
  61. package/dist/data-form/index.mjs +1 -1
  62. package/dist/data-grid/index.mjs +1 -1
  63. package/dist/dialog-button/index.mjs +1 -1
  64. package/dist/drawer/index.mjs +1 -1
  65. package/dist/drawer/style.css +1 -1
  66. package/dist/drawer-button/index.mjs +1 -1
  67. package/dist/editable-grid/index.mjs +1 -1
  68. package/dist/guide/index.mjs +7 -0
  69. package/dist/guide/index.mjs.map +1 -0
  70. package/dist/guide/style.css +1 -0
  71. package/dist/iframe/index.mjs +1 -1
  72. package/dist/iframe/style.css +1 -1
  73. package/dist/image-upload/index.mjs +1 -1
  74. package/dist/index.esm.js +194 -189
  75. package/dist/index.esm.js.map +1 -1
  76. package/dist/index.umd.js +25 -21
  77. package/dist/index.umd.js.map +1 -1
  78. package/dist/prompt-button/index.mjs +1 -1
  79. package/dist/radio-list/index.mjs +1 -1
  80. package/dist/requester/index.mjs +1 -1
  81. package/dist/select/index.mjs +1 -1
  82. package/dist/station/index.mjs +1 -1
  83. package/dist/station/style.css +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/switch/index.mjs +1 -1
  86. package/dist/tips/index.mjs +1 -1
  87. package/dist/tips/style.css +1 -1
  88. package/dist/types/src/components/buttons/ApiButton.vue.d.ts +3 -3
  89. package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +5 -5
  90. package/dist/types/src/components/buttons/DialogButton.vue.d.ts +3 -3
  91. package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +4 -4
  92. package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +6 -6
  93. package/dist/types/src/components/buttons/PromptButton.vue.d.ts +5 -5
  94. package/dist/types/src/components/buttons/RouteButton.vue.d.ts +1 -1
  95. package/dist/types/src/components/buttons/TipsButton.vue.d.ts +1 -1
  96. package/dist/types/src/components/containers/Drawer.vue.d.ts +4 -4
  97. package/dist/types/src/components/containers/Iframe.vue.d.ts +42 -0
  98. package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +5 -5
  99. package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +7 -7
  100. package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +1 -1
  101. package/dist/types/src/components/form/FormItem.vue.d.ts +1 -1
  102. package/dist/types/src/components/form/SearchItem.vue.d.ts +1 -1
  103. package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +10 -10
  104. package/dist/types/src/components/guide/Guide.vue.d.ts +116 -0
  105. package/dist/types/src/components/index.d.ts +2 -1
  106. package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +6 -6
  107. package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +6 -6
  108. package/dist/types/src/components/inputs/RadioList.vue.d.ts +6 -6
  109. package/dist/types/src/components/inputs/Select.vue.d.ts +6 -6
  110. package/dist/types/src/components/inputs/Switch.vue.d.ts +9 -9
  111. package/dist/types/src/components/styles/Path.vue.d.ts +1 -1
  112. package/dist/types/src/components/styles/Tips.vue.d.ts +17 -0
  113. package/dist/types/src/components/upload/ImageUpload.vue.d.ts +5 -5
  114. package/dist/types/src/components/upload/Upload.vue.d.ts +5 -5
  115. package/dist/types/src/entries/guide.d.ts +9 -0
  116. package/dist/upload/index.mjs +1 -1
  117. package/dist/viewer/index.mjs +1 -1
  118. package/package.json +1 -1
  119. package/dist/chunks/Drawer-ucXKUecL.mjs.map +0 -1
  120. package/dist/chunks/Iframe-CeSiMnvR.mjs +0 -65
  121. package/dist/chunks/Iframe-CeSiMnvR.mjs.map +0 -1
  122. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs +0 -80
  123. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map +0 -1
  124. package/dist/chunks/Tips-IWCZcR1K.mjs +0 -63
  125. package/dist/chunks/Tips-IWCZcR1K.mjs.map +0 -1
  126. package/dist/chunks/http-C06mNpwY.mjs +0 -4141
  127. package/dist/chunks/http-C06mNpwY.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { _ as o } from "../chunks/ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs";
2
+ import { _ as o } from "../chunks/ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs";
3
3
  export {
4
4
  o as WdApiButton,
5
5
  o as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as e } from "../chunks/AutoComplete-C6Nxatvt.mjs";
2
+ import { W as e } from "../chunks/AutoComplete-DqyhsqiS.mjs";
3
3
  export {
4
4
  e as WdAutoComplete,
5
5
  e as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as r } from "../chunks/CheckboxList-5AEx33r5.mjs";
2
+ import { W as r } from "../chunks/CheckboxList-RxJGe-LQ.mjs";
3
3
  export {
4
4
  r as WdCheckboxList,
5
5
  r as default
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as k, resolveComponent as r, openBlock as s, createBlock as l, withCtx as o, createVNode as y, mergeProps as d, unref as f, renderSlot as c, createTextVNode as u, toDisplayString as g } from "vue";
2
- import { u as A } from "./useApiAction-DxVQWWxv.mjs";
2
+ import { u as A } from "./useApiAction-71XPKjlQ.mjs";
3
3
  import { t as B, b as L, a as _, h as R, f as C } from "./props-DAytpx7D.mjs";
4
4
  const T = /* @__PURE__ */ k({
5
5
  name: "WdApiButton",
@@ -77,4 +77,4 @@ const T = /* @__PURE__ */ k({
77
77
  export {
78
78
  T as _
79
79
  };
80
- //# sourceMappingURL=ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map
80
+ //# sourceMappingURL=ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs","sources":["../../src/components/buttons/ApiButton.vue"],"sourcesContent":["<template>\r\n <el-tooltip\r\n v-if=\"tips\"\r\n :content=\"tips\"\r\n :effect=\"tipsType\"\r\n :placement=\"placement\"\r\n >\r\n <el-button v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n </el-tooltip>\r\n <el-button v-else v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { useApiAction } from './useApiAction'\r\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdApiButton', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n ...apiProps,\r\n ...buttonTextProp,\r\n ...tipsProp,\r\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\r\n buttonLoading: { type: Boolean, default: true },\r\n /** 页面级 loading(全局遮罩 ElLoading) */\r\n pageLoading: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'click',\r\n 'apiBefore',\r\n 'apiSuccess',\r\n 'apiFail',\r\n 'apiException',\r\n 'apiAfter'\r\n])\r\n\r\nconst { loading, doRequest } = useApiAction({\r\n getApi: () => props.api,\r\n getMethod: () => props.apiMethod,\r\n getParam: () => props.apiParam,\r\n getFilter: () => props.filter,\r\n getHeadRefresh: () => props.headRefreshDatagrid,\r\n emit,\r\n buttonLoading: () => props.buttonLoading,\r\n getReqOptions: () => ({ showLoading: props.pageLoading })\r\n})\r\n\r\nasync function onClick(event: MouseEvent) {\r\n emit('click', event)\r\n await doRequest()\r\n}\r\n</script>\r\n"],"names":["props","__props","emit","__emit","loading","doRequest","useApiAction","onClick","event","tips","_createBlock","_component_el_tooltip","tipsType","placement","_createVNode","_component_el_button","_mergeProps","_ctx","_unref","_renderSlot","label","$attrs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,UAAMA,IAAQC,GAYRC,IAAOC,GASP,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAcC,EAAa;AAAA,MAC1C,QAAQ,MAAMN,EAAM;AAAA,MACpB,WAAW,MAAMA,EAAM;AAAA,MACvB,UAAU,MAAMA,EAAM;AAAA,MACtB,WAAW,MAAMA,EAAM;AAAA,MACvB,gBAAgB,MAAMA,EAAM;AAAA,MAC5B,MAAAE;AAAA,MACA,eAAe,MAAMF,EAAM;AAAA,MAC3B,eAAe,OAAO,EAAE,aAAaA,EAAM,YAAA;AAAA,IAAY,CACxD;AAED,mBAAeO,EAAQC,GAAmB;AACxC,MAAAN,EAAK,SAASM,CAAK,GACnB,MAAMH,EAAA;AAAA,IACR;;;aAvDUI,EAAAA,aADRC,EASaC,GAAA;AAAA;QAPV,SAASF,EAAAA;AAAAA,QACT,QAAQG,EAAAA;AAAAA,QACR,WAAWC,EAAAA;AAAAA,MAAAA;mBAEZ,MAEY;AAAA,UAFZC,EAEYC,GAFZC,EAEYC,EAAA,QAFa;AAAA,YAAG,SAASC,EAAAd,CAAA;AAAA,YAAU,SAAAG;AAAA,UAAA;uBAC7C,MAAwB;AAAA,cAAxBY,EAAwBF,yBAAxB,MAAwB;AAAA,oBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;yDAGlBV,EAEYK,GAFZC,EAEY,EAAA,KAAA,EAAA,GAFcK,EAAAA,QAAM;AAAA,QAAG,SAASH,EAAAd,CAAA;AAAA,QAAU,SAAAG;AAAA,MAAA;mBACpD,MAAwB;AAAA,UAAxBY,EAAwBF,yBAAxB,MAAwB;AAAA,gBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs","sources":["../../src/components/buttons/ApiButton.vue"],"sourcesContent":["<template>\r\n <el-tooltip\r\n v-if=\"tips\"\r\n :content=\"tips\"\r\n :effect=\"tipsType\"\r\n :placement=\"placement\"\r\n >\r\n <el-button v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n </el-tooltip>\r\n <el-button v-else v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { useApiAction } from './useApiAction'\r\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdApiButton', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n ...apiProps,\r\n ...buttonTextProp,\r\n ...tipsProp,\r\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\r\n buttonLoading: { type: Boolean, default: true },\r\n /** 页面级 loading(全局遮罩 ElLoading) */\r\n pageLoading: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'click',\r\n 'apiBefore',\r\n 'apiSuccess',\r\n 'apiFail',\r\n 'apiException',\r\n 'apiAfter'\r\n])\r\n\r\nconst { loading, doRequest } = useApiAction({\r\n getApi: () => props.api,\r\n getMethod: () => props.apiMethod,\r\n getParam: () => props.apiParam,\r\n getFilter: () => props.filter,\r\n getHeadRefresh: () => props.headRefreshDatagrid,\r\n emit,\r\n buttonLoading: () => props.buttonLoading,\r\n getReqOptions: () => ({ showLoading: props.pageLoading })\r\n})\r\n\r\nasync function onClick(event: MouseEvent) {\r\n emit('click', event)\r\n await doRequest()\r\n}\r\n</script>\r\n"],"names":["props","__props","emit","__emit","loading","doRequest","useApiAction","onClick","event","tips","_createBlock","_component_el_tooltip","tipsType","placement","_createVNode","_component_el_button","_mergeProps","_ctx","_unref","_renderSlot","label","$attrs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,UAAMA,IAAQC,GAYRC,IAAOC,GASP,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAcC,EAAa;AAAA,MAC1C,QAAQ,MAAMN,EAAM;AAAA,MACpB,WAAW,MAAMA,EAAM;AAAA,MACvB,UAAU,MAAMA,EAAM;AAAA,MACtB,WAAW,MAAMA,EAAM;AAAA,MACvB,gBAAgB,MAAMA,EAAM;AAAA,MAC5B,MAAAE;AAAA,MACA,eAAe,MAAMF,EAAM;AAAA,MAC3B,eAAe,OAAO,EAAE,aAAaA,EAAM,YAAA;AAAA,IAAY,CACxD;AAED,mBAAeO,EAAQC,GAAmB;AACxC,MAAAN,EAAK,SAASM,CAAK,GACnB,MAAMH,EAAA;AAAA,IACR;;;aAvDUI,EAAAA,aADRC,EASaC,GAAA;AAAA;QAPV,SAASF,EAAAA;AAAAA,QACT,QAAQG,EAAAA;AAAAA,QACR,WAAWC,EAAAA;AAAAA,MAAAA;mBAEZ,MAEY;AAAA,UAFZC,EAEYC,GAFZC,EAEYC,EAAA,QAFa;AAAA,YAAG,SAASC,EAAAd,CAAA;AAAA,YAAU,SAAAG;AAAA,UAAA;uBAC7C,MAAwB;AAAA,cAAxBY,EAAwBF,yBAAxB,MAAwB;AAAA,oBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;yDAGlBV,EAEYK,GAFZC,EAEY,EAAA,KAAA,EAAA,GAFcK,EAAAA,QAAM;AAAA,QAAG,SAASH,EAAAd,CAAA;AAAA,QAAU,SAAAG;AAAA,MAAA;mBACpD,MAAwB;AAAA,UAAxBY,EAAwBF,yBAAxB,MAAwB;AAAA,gBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as h, toRefs as S, computed as w, resolveComponent as K, resolveDirective as V, withDirectives as C, openBlock as P, createElementBlock as k, createVNode as x, mergeProps as D, withCtx as _, renderSlot as A, createElementVNode as b, toDisplayString as B, unref as L } from "vue";
2
- import { u as W } from "./useOptionsLoader-DEVCYhrp.mjs";
2
+ import { u as W } from "./useOptionsLoader-D4Jh4f1F.mjs";
3
3
  import { o as E } from "./props-DAytpx7D.mjs";
4
4
  import { _ as M } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
5
5
  const N = { class: "wd-auto-complete" }, O = /* @__PURE__ */ h({
@@ -77,4 +77,4 @@ const N = { class: "wd-auto-complete" }, O = /* @__PURE__ */ h({
77
77
  export {
78
78
  U as W
79
79
  };
80
- //# sourceMappingURL=AutoComplete-C6Nxatvt.mjs.map
80
+ //# sourceMappingURL=AutoComplete-DqyhsqiS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoComplete-C6Nxatvt.mjs","sources":["../../src/components/inputs/AutoComplete.vue"],"sourcesContent":["<template>\n <div v-loading=\"loading\" class=\"wd-auto-complete\">\n <el-autocomplete\n v-model=\"inner\"\n :fetch-suggestions=\"fetchSuggestions\"\n :value-key=\"labelKey\"\n v-bind=\"$attrs\"\n @select=\"onSelect\"\n @change=\"onChange\"\n >\n <template #default=\"{ item }\">\n <slot :option=\"item.raw\" :text=\"item[valueKey]\" :value=\"item[valueKey]\">\n <span>{{ item[labelKey] }}</span>\n </slot>\n </template>\n </el-autocomplete>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, toRefs, type PropType } from 'vue'\nimport { useOptionsLoader } from './useOptionsLoader'\nimport { optionsProps } from '../common/props'\n\ndefineOptions({ name: 'WdAutoComplete', inheritAttrs: false })\n\nconst props = defineProps({\n ...optionsProps,\n modelValue: { type: String, default: '' },\n /** 选项值字段 */\n valueKey: { type: String, default: 'value' },\n /** 选项显示字段 */\n labelKey: { type: String, default: 'text' },\n keywordKey: { type: String, default: 'keyword' }\n})\n\nconst emit = defineEmits(['update:modelValue', 'change', 'select', 'apiBefore', 'apiSuccess', 'apiFail', 'apiAfter'])\n\nconst refs = toRefs(props)\nconst { options, loading, remoteSearch, fetchOptions } = useOptionsLoader({\n api: refs.api,\n apiMethod: refs.apiMethod as any,\n apiParam: refs.apiParam,\n active: refs.active,\n dataSource: refs.dataSource as any,\n textProp: refs.textProp,\n valueProp: refs.valueProp,\n addData: refs.addData as any,\n appendData: refs.appendData as any,\n emit\n})\n\nconst inner = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val)\n})\n\n/** el-autocomplete 回调式建议加载 */\nasync function fetchSuggestions(query: string, cb: (results: any[]) => void) {\n if (props.api && props.active) {\n await remoteSearch(query, props.keywordKey)\n } else if (!options.value.length) {\n await fetchOptions()\n }\n // 本地过滤\n const list = options.value.filter((o) =>\n query ? String(o.text).toLowerCase().includes(String(query).toLowerCase()) : true\n )\n cb(list as any)\n}\n\nfunction onSelect(item: any) {\n emit('update:modelValue', item[props.valueKey])\n emit('select', item.raw)\n emit('change', item[props.valueKey])\n}\n\nfunction onChange(val: any) {\n emit('change', val)\n}\n</script>\n\n<style scoped>\n.wd-auto-complete {\n width: 100%;\n}\n.wd-auto-complete :deep(.el-autocomplete) {\n width: 100%;\n}\n</style>\n"],"names":["props","__props","emit","__emit","refs","toRefs","options","loading","remoteSearch","fetchOptions","useOptionsLoader","inner","computed","val","fetchSuggestions","query","cb","list","o","onSelect","item","onChange","_withDirectives","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_el_autocomplete","_mergeProps","$event","$attrs","_withCtx","_renderSlot","_ctx","_createElementVNode","_toDisplayString","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;AA0BA,UAAMA,IAAQC,GAURC,IAAOC,GAEPC,IAAOC,EAAOL,CAAK,GACnB,EAAE,SAAAM,GAAS,SAAAC,GAAS,cAAAC,GAAc,cAAAC,EAAA,IAAiBC,EAAiB;AAAA,MACxE,KAAKN,EAAK;AAAA,MACV,WAAWA,EAAK;AAAA,MAChB,UAAUA,EAAK;AAAA,MACf,QAAQA,EAAK;AAAA,MACb,YAAYA,EAAK;AAAA,MACjB,UAAUA,EAAK;AAAA,MACf,WAAWA,EAAK;AAAA,MAChB,SAASA,EAAK;AAAA,MACd,YAAYA,EAAK;AAAA,MACjB,MAAAF;AAAA,IAAA,CACD,GAEKS,IAAQC,EAAS;AAAA,MACrB,KAAK,MAAMZ,EAAM;AAAA,MACjB,KAAK,CAACa,MAAQX,EAAK,qBAAqBW,CAAG;AAAA,IAAA,CAC5C;AAGD,mBAAeC,EAAiBC,GAAeC,GAA8B;AAC3E,MAAIhB,EAAM,OAAOA,EAAM,SACrB,MAAMQ,EAAaO,GAAOf,EAAM,UAAU,IAChCM,EAAQ,MAAM,UACxB,MAAMG,EAAA;AAGR,YAAMQ,IAAOX,EAAQ,MAAM;AAAA,QAAO,CAACY,MACjCH,IAAQ,OAAOG,EAAE,IAAI,EAAE,YAAA,EAAc,SAAS,OAAOH,CAAK,EAAE,YAAA,CAAa,IAAI;AAAA,MAAA;AAE/E,MAAAC,EAAGC,CAAW;AAAA,IAChB;AAEA,aAASE,EAASC,GAAW;AAC3B,MAAAlB,EAAK,qBAAqBkB,EAAKpB,EAAM,QAAQ,CAAC,GAC9CE,EAAK,UAAUkB,EAAK,GAAG,GACvBlB,EAAK,UAAUkB,EAAKpB,EAAM,QAAQ,CAAC;AAAA,IACrC;AAEA,aAASqB,EAASR,GAAU;AAC1B,MAAAX,EAAK,UAAUW,CAAG;AAAA,IACpB;;;AA9EE,aAAAS,GAAAC,EAAA,GAAAC,EAeM,OAfNC,GAeM;AAAA,QAdJC,EAakBC,GAblBC,EAakB;AAAA,sBAZPjB,EAAA;AAAA,wDAAAA,EAAK,QAAAkB;AAAA,UACb,qBAAmBf;AAAA,UACnB,aAAWb,EAAA;AAAA,QAAA,GACJ6B,EAAAA,QAAM;AAAA,UACb,UAAAX;AAAA,UACA,UAAAE;AAAA,QAAA;UAEU,SAAOU,EAChB,CAEO,EAHa,MAAAX,QAAI;AAAA,YACxBY,EAEOC,EAAA,QAAA,WAAA;AAAA,cAFA,QAAQb,EAAK;AAAA,cAAM,MAAMA,EAAKnB,EAAA,QAAQ;AAAA,cAAI,OAAOmB,EAAKnB,EAAA,QAAQ;AAAA,YAAA,GAArE,MAEO;AAAA,cADLiC,EAAiC,QAAA,MAAAC,EAAxBf,EAAKnB,EAAA,QAAQ,CAAA,GAAA,CAAA;AAAA,YAAA;;;;;YAXdmC,EAAA7B,CAAA,CAAO;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"AutoComplete-DqyhsqiS.mjs","sources":["../../src/components/inputs/AutoComplete.vue"],"sourcesContent":["<template>\n <div v-loading=\"loading\" class=\"wd-auto-complete\">\n <el-autocomplete\n v-model=\"inner\"\n :fetch-suggestions=\"fetchSuggestions\"\n :value-key=\"labelKey\"\n v-bind=\"$attrs\"\n @select=\"onSelect\"\n @change=\"onChange\"\n >\n <template #default=\"{ item }\">\n <slot :option=\"item.raw\" :text=\"item[valueKey]\" :value=\"item[valueKey]\">\n <span>{{ item[labelKey] }}</span>\n </slot>\n </template>\n </el-autocomplete>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, toRefs, type PropType } from 'vue'\nimport { useOptionsLoader } from './useOptionsLoader'\nimport { optionsProps } from '../common/props'\n\ndefineOptions({ name: 'WdAutoComplete', inheritAttrs: false })\n\nconst props = defineProps({\n ...optionsProps,\n modelValue: { type: String, default: '' },\n /** 选项值字段 */\n valueKey: { type: String, default: 'value' },\n /** 选项显示字段 */\n labelKey: { type: String, default: 'text' },\n keywordKey: { type: String, default: 'keyword' }\n})\n\nconst emit = defineEmits(['update:modelValue', 'change', 'select', 'apiBefore', 'apiSuccess', 'apiFail', 'apiAfter'])\n\nconst refs = toRefs(props)\nconst { options, loading, remoteSearch, fetchOptions } = useOptionsLoader({\n api: refs.api,\n apiMethod: refs.apiMethod as any,\n apiParam: refs.apiParam,\n active: refs.active,\n dataSource: refs.dataSource as any,\n textProp: refs.textProp,\n valueProp: refs.valueProp,\n addData: refs.addData as any,\n appendData: refs.appendData as any,\n emit\n})\n\nconst inner = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val)\n})\n\n/** el-autocomplete 回调式建议加载 */\nasync function fetchSuggestions(query: string, cb: (results: any[]) => void) {\n if (props.api && props.active) {\n await remoteSearch(query, props.keywordKey)\n } else if (!options.value.length) {\n await fetchOptions()\n }\n // 本地过滤\n const list = options.value.filter((o) =>\n query ? String(o.text).toLowerCase().includes(String(query).toLowerCase()) : true\n )\n cb(list as any)\n}\n\nfunction onSelect(item: any) {\n emit('update:modelValue', item[props.valueKey])\n emit('select', item.raw)\n emit('change', item[props.valueKey])\n}\n\nfunction onChange(val: any) {\n emit('change', val)\n}\n</script>\n\n<style scoped>\n.wd-auto-complete {\n width: 100%;\n}\n.wd-auto-complete :deep(.el-autocomplete) {\n width: 100%;\n}\n</style>\n"],"names":["props","__props","emit","__emit","refs","toRefs","options","loading","remoteSearch","fetchOptions","useOptionsLoader","inner","computed","val","fetchSuggestions","query","cb","list","o","onSelect","item","onChange","_withDirectives","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_el_autocomplete","_mergeProps","$event","$attrs","_withCtx","_renderSlot","_ctx","_createElementVNode","_toDisplayString","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;AA0BA,UAAMA,IAAQC,GAURC,IAAOC,GAEPC,IAAOC,EAAOL,CAAK,GACnB,EAAE,SAAAM,GAAS,SAAAC,GAAS,cAAAC,GAAc,cAAAC,EAAA,IAAiBC,EAAiB;AAAA,MACxE,KAAKN,EAAK;AAAA,MACV,WAAWA,EAAK;AAAA,MAChB,UAAUA,EAAK;AAAA,MACf,QAAQA,EAAK;AAAA,MACb,YAAYA,EAAK;AAAA,MACjB,UAAUA,EAAK;AAAA,MACf,WAAWA,EAAK;AAAA,MAChB,SAASA,EAAK;AAAA,MACd,YAAYA,EAAK;AAAA,MACjB,MAAAF;AAAA,IAAA,CACD,GAEKS,IAAQC,EAAS;AAAA,MACrB,KAAK,MAAMZ,EAAM;AAAA,MACjB,KAAK,CAACa,MAAQX,EAAK,qBAAqBW,CAAG;AAAA,IAAA,CAC5C;AAGD,mBAAeC,EAAiBC,GAAeC,GAA8B;AAC3E,MAAIhB,EAAM,OAAOA,EAAM,SACrB,MAAMQ,EAAaO,GAAOf,EAAM,UAAU,IAChCM,EAAQ,MAAM,UACxB,MAAMG,EAAA;AAGR,YAAMQ,IAAOX,EAAQ,MAAM;AAAA,QAAO,CAACY,MACjCH,IAAQ,OAAOG,EAAE,IAAI,EAAE,YAAA,EAAc,SAAS,OAAOH,CAAK,EAAE,YAAA,CAAa,IAAI;AAAA,MAAA;AAE/E,MAAAC,EAAGC,CAAW;AAAA,IAChB;AAEA,aAASE,EAASC,GAAW;AAC3B,MAAAlB,EAAK,qBAAqBkB,EAAKpB,EAAM,QAAQ,CAAC,GAC9CE,EAAK,UAAUkB,EAAK,GAAG,GACvBlB,EAAK,UAAUkB,EAAKpB,EAAM,QAAQ,CAAC;AAAA,IACrC;AAEA,aAASqB,EAASR,GAAU;AAC1B,MAAAX,EAAK,UAAUW,CAAG;AAAA,IACpB;;;AA9EE,aAAAS,GAAAC,EAAA,GAAAC,EAeM,OAfNC,GAeM;AAAA,QAdJC,EAakBC,GAblBC,EAakB;AAAA,sBAZPjB,EAAA;AAAA,wDAAAA,EAAK,QAAAkB;AAAA,UACb,qBAAmBf;AAAA,UACnB,aAAWb,EAAA;AAAA,QAAA,GACJ6B,EAAAA,QAAM;AAAA,UACb,UAAAX;AAAA,UACA,UAAAE;AAAA,QAAA;UAEU,SAAOU,EAChB,CAEO,EAHa,MAAAX,QAAI;AAAA,YACxBY,EAEOC,EAAA,QAAA,WAAA;AAAA,cAFA,QAAQb,EAAK;AAAA,cAAM,MAAMA,EAAKnB,EAAA,QAAQ;AAAA,cAAI,OAAOmB,EAAKnB,EAAA,QAAQ;AAAA,YAAA,GAArE,MAEO;AAAA,cADLiC,EAAiC,QAAA,MAAAC,EAAxBf,EAAKnB,EAAA,QAAQ,CAAA,GAAA,CAAA;AAAA,YAAA;;;;;YAXdmC,EAAA7B,CAAA,CAAO;AAAA,MAAA;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as D, toRefs as B, computed as L, resolveComponent as s, resolveDirective as $, withDirectives as A, openBlock as o, createBlock as n, mergeProps as W, withCtx as l, createElementBlock as _, Fragment as x, renderList as E, unref as h, createElementVNode as k, renderSlot as r, createTextVNode as i, toDisplayString as u } from "vue";
2
- import { u as F } from "./useOptionsLoader-DEVCYhrp.mjs";
2
+ import { u as F } from "./useOptionsLoader-D4Jh4f1F.mjs";
3
3
  import { o as M } from "./props-DAytpx7D.mjs";
4
4
  import { _ as N } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
5
5
  const I = { class: "wd-option-text" }, O = { class: "wd-option-text" }, R = /* @__PURE__ */ D({
@@ -126,4 +126,4 @@ const I = { class: "wd-option-text" }, O = { class: "wd-option-text" }, R = /* @
126
126
  export {
127
127
  z as W
128
128
  };
129
- //# sourceMappingURL=CheckboxList-5AEx33r5.mjs.map
129
+ //# sourceMappingURL=CheckboxList-RxJGe-LQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxList-5AEx33r5.mjs","sources":["../../src/components/inputs/CheckboxList.vue"],"sourcesContent":["<template>\n <el-checkbox-group\n v-model=\"inner\"\n v-loading=\"loading\"\n v-bind=\"$attrs\"\n @change=\"onChange\"\n >\n <template v-for=\"opt in options\" :key=\"String(opt.value)\">\n <el-checkbox-button v-if=\"buttonStyle\" :value=\"opt.value\">\n <el-tooltip\n v-if=\"opt.tips\"\n :content=\"opt.tips\"\n placement=\"top\"\n effect=\"dark\"\n :show-after=\"200\"\n >\n <span class=\"wd-option-text\">\n <slot :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </span>\n </el-tooltip>\n <slot v-else :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </el-checkbox-button>\n <el-checkbox v-else :value=\"opt.value\">\n <el-tooltip\n v-if=\"opt.tips\"\n :content=\"opt.tips\"\n placement=\"top\"\n effect=\"dark\"\n :show-after=\"200\"\n >\n <span class=\"wd-option-text\">\n <slot :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </span>\n </el-tooltip>\n <slot v-else :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </el-checkbox>\n </template>\n </el-checkbox-group>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs, type PropType } from 'vue'\nimport { useOptionsLoader } from './useOptionsLoader'\nimport { optionsProps } from '../common/props'\n\ndefineOptions({ name: 'WdCheckboxList', inheritAttrs: false })\n\nconst props = defineProps({\n ...optionsProps,\n modelValue: { type: Array as PropType<any[]>, default: () => [] },\n /** 按钮样式 */\n buttonStyle: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits(['update:modelValue', 'change', 'apiBefore', 'apiSuccess', 'apiFail', 'apiAfter'])\n\nconst refs = toRefs(props)\nconst { options, loading } = useOptionsLoader({\n api: refs.api,\n apiMethod: refs.apiMethod as any,\n apiParam: refs.apiParam,\n active: refs.active,\n dataSource: refs.dataSource as any,\n textProp: refs.textProp,\n valueProp: refs.valueProp,\n tipsProp: refs.tipsProp,\n addData: refs.addData as any,\n appendData: refs.appendData as any,\n emit\n})\n\nconst inner = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val)\n})\n\nfunction onChange(val: any) {\n emit('change', val)\n}\n</script>\n\n<style scoped>\n.wd-option-text {\n display: inline-block;\n}\n</style>\n"],"names":["props","__props","emit","__emit","refs","toRefs","options","loading","useOptionsLoader","inner","computed","val","onChange","_withDirectives","_openBlock","_createBlock","_component_el_checkbox_group","_mergeProps","$event","$attrs","_createElementBlock","_Fragment","_renderList","_unref","opt","_component_el_checkbox_button","_component_el_tooltip","_createElementVNode","_hoisted_1","_renderSlot","_ctx","_createTextVNode","_toDisplayString","_component_el_checkbox","_hoisted_2"],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxList-RxJGe-LQ.mjs","sources":["../../src/components/inputs/CheckboxList.vue"],"sourcesContent":["<template>\n <el-checkbox-group\n v-model=\"inner\"\n v-loading=\"loading\"\n v-bind=\"$attrs\"\n @change=\"onChange\"\n >\n <template v-for=\"opt in options\" :key=\"String(opt.value)\">\n <el-checkbox-button v-if=\"buttonStyle\" :value=\"opt.value\">\n <el-tooltip\n v-if=\"opt.tips\"\n :content=\"opt.tips\"\n placement=\"top\"\n effect=\"dark\"\n :show-after=\"200\"\n >\n <span class=\"wd-option-text\">\n <slot :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </span>\n </el-tooltip>\n <slot v-else :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </el-checkbox-button>\n <el-checkbox v-else :value=\"opt.value\">\n <el-tooltip\n v-if=\"opt.tips\"\n :content=\"opt.tips\"\n placement=\"top\"\n effect=\"dark\"\n :show-after=\"200\"\n >\n <span class=\"wd-option-text\">\n <slot :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </span>\n </el-tooltip>\n <slot v-else :option=\"opt.raw\" :text=\"opt.text\" :value=\"opt.value\" :tips=\"opt.tips\">{{ opt.text }}</slot>\n </el-checkbox>\n </template>\n </el-checkbox-group>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs, type PropType } from 'vue'\nimport { useOptionsLoader } from './useOptionsLoader'\nimport { optionsProps } from '../common/props'\n\ndefineOptions({ name: 'WdCheckboxList', inheritAttrs: false })\n\nconst props = defineProps({\n ...optionsProps,\n modelValue: { type: Array as PropType<any[]>, default: () => [] },\n /** 按钮样式 */\n buttonStyle: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits(['update:modelValue', 'change', 'apiBefore', 'apiSuccess', 'apiFail', 'apiAfter'])\n\nconst refs = toRefs(props)\nconst { options, loading } = useOptionsLoader({\n api: refs.api,\n apiMethod: refs.apiMethod as any,\n apiParam: refs.apiParam,\n active: refs.active,\n dataSource: refs.dataSource as any,\n textProp: refs.textProp,\n valueProp: refs.valueProp,\n tipsProp: refs.tipsProp,\n addData: refs.addData as any,\n appendData: refs.appendData as any,\n emit\n})\n\nconst inner = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val)\n})\n\nfunction onChange(val: any) {\n emit('change', val)\n}\n</script>\n\n<style scoped>\n.wd-option-text {\n display: inline-block;\n}\n</style>\n"],"names":["props","__props","emit","__emit","refs","toRefs","options","loading","useOptionsLoader","inner","computed","val","onChange","_withDirectives","_openBlock","_createBlock","_component_el_checkbox_group","_mergeProps","$event","$attrs","_createElementBlock","_Fragment","_renderList","_unref","opt","_component_el_checkbox_button","_component_el_tooltip","_createElementVNode","_hoisted_1","_renderSlot","_ctx","_createTextVNode","_toDisplayString","_component_el_checkbox","_hoisted_2"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as B, resolveComponent as l, openBlock as p, createBlock as s, withCtx as a, createVNode as b, mergeProps as c, unref as f, renderSlot as d, createTextVNode as m, toDisplayString as u } from "vue";
2
2
  import { ElMessageBox as P } from "element-plus";
3
- import { u as k } from "./useApiAction-DxVQWWxv.mjs";
3
+ import { u as k } from "./useApiAction-71XPKjlQ.mjs";
4
4
  import { t as C, b as L, a as S, h as _, f as w } from "./props-DAytpx7D.mjs";
5
5
  const M = /* @__PURE__ */ B({
6
6
  name: "WdConfirmButton",
@@ -96,4 +96,4 @@ const M = /* @__PURE__ */ B({
96
96
  export {
97
97
  M as _
98
98
  };
99
- //# sourceMappingURL=ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map
99
+ //# sourceMappingURL=ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs","sources":["../../src/components/buttons/ConfirmButton.vue"],"sourcesContent":["<template>\r\n <el-tooltip\r\n v-if=\"tips\"\r\n :content=\"tips\"\r\n :effect=\"tipsType\"\r\n :placement=\"placement\"\r\n >\r\n <el-button v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n </el-tooltip>\r\n <el-button v-else v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElMessageBox } from 'element-plus'\r\nimport { useApiAction } from './useApiAction'\r\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdConfirmButton', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n ...apiProps,\r\n ...buttonTextProp,\r\n ...tipsProp,\r\n /** 确认文案 */\r\n confirmText: { type: String, default: '确认执行该操作?' },\r\n /** 取消按钮文案(空则不显示取消按钮) */\r\n cancelText: { type: String, default: '取消' },\r\n /** 确认框标题 */\r\n confirmTitle: { type: String, default: '提示' },\r\n /** 按钮级 loading */\r\n buttonLoading: { type: Boolean, default: true },\r\n pageLoading: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'click',\r\n 'confirm',\r\n 'cancel',\r\n 'apiBefore',\r\n 'apiSuccess',\r\n 'apiFail',\r\n 'apiException',\r\n 'apiAfter'\r\n])\r\n\r\nconst { loading, doRequest } = useApiAction({\r\n getApi: () => props.api,\r\n getMethod: () => props.apiMethod,\r\n getParam: () => props.apiParam,\r\n getFilter: () => props.filter,\r\n getHeadRefresh: () => props.headRefreshDatagrid,\r\n emit,\r\n buttonLoading: () => props.buttonLoading,\r\n getReqOptions: () => ({ showLoading: props.pageLoading })\r\n})\r\n\r\nasync function onClick(event: MouseEvent) {\r\n emit('click', event)\r\n try {\r\n await ElMessageBox.confirm(props.confirmText, props.confirmTitle, {\r\n confirmButtonText: '确定',\r\n cancelButtonText: props.cancelText,\r\n type: 'warning'\r\n })\r\n } catch {\r\n emit('cancel')\r\n return\r\n }\r\n emit('confirm')\r\n await doRequest()\r\n}\r\n</script>\r\n"],"names":["props","__props","emit","__emit","loading","doRequest","useApiAction","onClick","event","ElMessageBox","tips","_createBlock","_component_el_tooltip","tipsType","placement","_createVNode","_component_el_button","_mergeProps","_ctx","_unref","_renderSlot","label","$attrs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,UAAMA,IAAQC,GAiBRC,IAAOC,GAWP,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAcC,EAAa;AAAA,MAC1C,QAAQ,MAAMN,EAAM;AAAA,MACpB,WAAW,MAAMA,EAAM;AAAA,MACvB,UAAU,MAAMA,EAAM;AAAA,MACtB,WAAW,MAAMA,EAAM;AAAA,MACvB,gBAAgB,MAAMA,EAAM;AAAA,MAC5B,MAAAE;AAAA,MACA,eAAe,MAAMF,EAAM;AAAA,MAC3B,eAAe,OAAO,EAAE,aAAaA,EAAM,YAAA;AAAA,IAAY,CACxD;AAED,mBAAeO,EAAQC,GAAmB;AACxC,MAAAN,EAAK,SAASM,CAAK;AACnB,UAAI;AACF,cAAMC,EAAa,QAAQT,EAAM,aAAaA,EAAM,cAAc;AAAA,UAChE,mBAAmB;AAAA,UACnB,kBAAkBA,EAAM;AAAA,UACxB,MAAM;AAAA,QAAA,CACP;AAAA,MACH,QAAQ;AACN,QAAAE,EAAK,QAAQ;AACb;AAAA,MACF;AACA,MAAAA,EAAK,SAAS,GACd,MAAMG,EAAA;AAAA,IACR;;;aA1EUK,EAAAA,aADRC,EASaC,GAAA;AAAA;QAPV,SAASF,EAAAA;AAAAA,QACT,QAAQG,EAAAA;AAAAA,QACR,WAAWC,EAAAA;AAAAA,MAAAA;mBAEZ,MAEY;AAAA,UAFZC,EAEYC,GAFZC,EAEYC,EAAA,QAFa;AAAA,YAAG,SAASC,EAAAf,CAAA;AAAA,YAAU,SAAAG;AAAA,UAAA;uBAC7C,MAAwB;AAAA,cAAxBa,EAAwBF,yBAAxB,MAAwB;AAAA,oBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;yDAGlBV,EAEYK,GAFZC,EAEY,EAAA,KAAA,EAAA,GAFcK,EAAAA,QAAM;AAAA,QAAG,SAASH,EAAAf,CAAA;AAAA,QAAU,SAAAG;AAAA,MAAA;mBACpD,MAAwB;AAAA,UAAxBa,EAAwBF,yBAAxB,MAAwB;AAAA,gBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs","sources":["../../src/components/buttons/ConfirmButton.vue"],"sourcesContent":["<template>\r\n <el-tooltip\r\n v-if=\"tips\"\r\n :content=\"tips\"\r\n :effect=\"tipsType\"\r\n :placement=\"placement\"\r\n >\r\n <el-button v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n </el-tooltip>\r\n <el-button v-else v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\r\n <slot>{{ label }}</slot>\r\n </el-button>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElMessageBox } from 'element-plus'\r\nimport { useApiAction } from './useApiAction'\r\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdConfirmButton', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n ...apiProps,\r\n ...buttonTextProp,\r\n ...tipsProp,\r\n /** 确认文案 */\r\n confirmText: { type: String, default: '确认执行该操作?' },\r\n /** 取消按钮文案(空则不显示取消按钮) */\r\n cancelText: { type: String, default: '取消' },\r\n /** 确认框标题 */\r\n confirmTitle: { type: String, default: '提示' },\r\n /** 按钮级 loading */\r\n buttonLoading: { type: Boolean, default: true },\r\n pageLoading: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'click',\r\n 'confirm',\r\n 'cancel',\r\n 'apiBefore',\r\n 'apiSuccess',\r\n 'apiFail',\r\n 'apiException',\r\n 'apiAfter'\r\n])\r\n\r\nconst { loading, doRequest } = useApiAction({\r\n getApi: () => props.api,\r\n getMethod: () => props.apiMethod,\r\n getParam: () => props.apiParam,\r\n getFilter: () => props.filter,\r\n getHeadRefresh: () => props.headRefreshDatagrid,\r\n emit,\r\n buttonLoading: () => props.buttonLoading,\r\n getReqOptions: () => ({ showLoading: props.pageLoading })\r\n})\r\n\r\nasync function onClick(event: MouseEvent) {\r\n emit('click', event)\r\n try {\r\n await ElMessageBox.confirm(props.confirmText, props.confirmTitle, {\r\n confirmButtonText: '确定',\r\n cancelButtonText: props.cancelText,\r\n type: 'warning'\r\n })\r\n } catch {\r\n emit('cancel')\r\n return\r\n }\r\n emit('confirm')\r\n await doRequest()\r\n}\r\n</script>\r\n"],"names":["props","__props","emit","__emit","loading","doRequest","useApiAction","onClick","event","ElMessageBox","tips","_createBlock","_component_el_tooltip","tipsType","placement","_createVNode","_component_el_button","_mergeProps","_ctx","_unref","_renderSlot","label","$attrs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,UAAMA,IAAQC,GAiBRC,IAAOC,GAWP,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAcC,EAAa;AAAA,MAC1C,QAAQ,MAAMN,EAAM;AAAA,MACpB,WAAW,MAAMA,EAAM;AAAA,MACvB,UAAU,MAAMA,EAAM;AAAA,MACtB,WAAW,MAAMA,EAAM;AAAA,MACvB,gBAAgB,MAAMA,EAAM;AAAA,MAC5B,MAAAE;AAAA,MACA,eAAe,MAAMF,EAAM;AAAA,MAC3B,eAAe,OAAO,EAAE,aAAaA,EAAM,YAAA;AAAA,IAAY,CACxD;AAED,mBAAeO,EAAQC,GAAmB;AACxC,MAAAN,EAAK,SAASM,CAAK;AACnB,UAAI;AACF,cAAMC,EAAa,QAAQT,EAAM,aAAaA,EAAM,cAAc;AAAA,UAChE,mBAAmB;AAAA,UACnB,kBAAkBA,EAAM;AAAA,UACxB,MAAM;AAAA,QAAA,CACP;AAAA,MACH,QAAQ;AACN,QAAAE,EAAK,QAAQ;AACb;AAAA,MACF;AACA,MAAAA,EAAK,SAAS,GACd,MAAMG,EAAA;AAAA,IACR;;;aA1EUK,EAAAA,aADRC,EASaC,GAAA;AAAA;QAPV,SAASF,EAAAA;AAAAA,QACT,QAAQG,EAAAA;AAAAA,QACR,WAAWC,EAAAA;AAAAA,MAAAA;mBAEZ,MAEY;AAAA,UAFZC,EAEYC,GAFZC,EAEYC,EAAA,QAFa;AAAA,YAAG,SAASC,EAAAf,CAAA;AAAA,YAAU,SAAAG;AAAA,UAAA;uBAC7C,MAAwB;AAAA,cAAxBa,EAAwBF,yBAAxB,MAAwB;AAAA,oBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;yDAGlBV,EAEYK,GAFZC,EAEY,EAAA,KAAA,EAAA,GAFcK,EAAAA,QAAM;AAAA,QAAG,SAASH,EAAAf,CAAA;AAAA,QAAU,SAAAG;AAAA,MAAA;mBACpD,MAAwB;AAAA,UAAxBa,EAAwBF,yBAAxB,MAAwB;AAAA,gBAAfG,EAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { defineComponent as z, ref as F, reactive as Q, computed as b, getCurrentInstance as X, provide as Y, watch as Z, onMounted as ee, onBeforeUnmount as te, resolveComponent as L, resolveDirective as ae, openBlock as w, createElementBlock as V, withDirectives as oe, createBlock as A, mergeProps as re, withModifiers as ie, withCtx as S, renderSlot as W, createTextVNode as O, toDisplayString as T, createCommentVNode as M, createVNode as le } from "vue";
2
2
  import { ElMessageBox as _, ElMessage as ne } from "element-plus";
3
- import { d as se, r as N } from "./http-C06mNpwY.mjs";
4
- import { r as ue } from "./linkage-FbL1mcz3.mjs";
3
+ import { r as N } from "./http-BKKP0gEJ.mjs";
4
+ import { r as se } from "./linkage-FbL1mcz3.mjs";
5
+ import { d as ue } from "./config-B6nWG5dv.mjs";
5
6
  import { u as fe } from "./containerContext-BgphFDeH.mjs";
6
7
  import { _ as ce } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
7
8
  const de = { class: "wd-data-form" }, me = {
@@ -63,7 +64,7 @@ const de = { class: "wd-data-form" }, me = {
63
64
  ],
64
65
  setup(m, { expose: $, emit: K }) {
65
66
  const a = m, s = K, c = F(null), f = F(!1), i = Q({}), C = F({}), P = b(() => a.mode !== "edit"), y = b(
66
- () => se(
67
+ () => ue(
67
68
  {
68
69
  resetText: "重置",
69
70
  submitText: "保存",
@@ -129,7 +130,7 @@ const de = { class: "wd-data-form" }, me = {
129
130
  }
130
131
  }
131
132
  function E(e, t) {
132
- a.headRefreshDatagrid && ue(a.headRefreshDatagrid, a.filter), t && P.value ? x(!0) : a.headCloseDrawer && (l != null && l.requestClose ? l.requestClose("submit") : s("close", { reason: "submit" })), C.value = JSON.parse(JSON.stringify(i));
133
+ a.headRefreshDatagrid && se(a.headRefreshDatagrid, a.filter), t && P.value ? x(!0) : a.headCloseDrawer && (l != null && l.requestClose ? l.requestClose("submit") : s("close", { reason: "submit" })), C.value = JSON.parse(JSON.stringify(i));
133
134
  }
134
135
  function x(e = !1) {
135
136
  var t, o, r, u;
@@ -298,8 +299,8 @@ const de = { class: "wd-data-form" }, me = {
298
299
  ]);
299
300
  };
300
301
  }
301
- }), Se = /* @__PURE__ */ ce(pe, [["__scopeId", "data-v-af8e46f8"]]);
302
+ }), Ce = /* @__PURE__ */ ce(pe, [["__scopeId", "data-v-af8e46f8"]]);
302
303
  export {
303
- Se as W
304
+ Ce as W
304
305
  };
305
- //# sourceMappingURL=DataForm-C6VLTSOm.mjs.map
306
+ //# sourceMappingURL=DataForm-DYMderSS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataForm-C6VLTSOm.mjs","sources":["../../src/components/form/data-form/DataForm.vue"],"sourcesContent":["<template>\r\n <div class=\"wd-data-form\">\r\n <el-form\r\n ref=\"formRef\"\r\n v-loading=\"loading\"\r\n :model=\"formModel\"\r\n :rules=\"rules\"\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n :inline=\"inline\"\r\n :disabled=\"loading\"\r\n v-bind=\"$attrs\"\r\n @submit.prevent\r\n >\r\n <slot :model=\"formModel\" :form=\"formRef\" />\r\n\r\n <!-- 底部操作区 -->\r\n <div v-if=\"withActions\" class=\"wd-data-form__footer\">\r\n <slot name=\"footer\" :submit=\"submitForm\" :reset=\"resetForm\" :loading=\"loading\">\r\n <!-- 关闭 / 保存并继续:仅在容器(drawer/dialog)或 iframe 内显示,独立使用时隐藏 -->\r\n <el-button v-if=\"inHost\" @click=\"onClose\">{{ closeText }}</el-button>\r\n <el-button v-if=\"actionConf.showReset\" @click=\"resetForm\">{{ actionConf.resetText }}</el-button>\r\n <el-button\r\n v-if=\"inHost && isCreate && keepFormButton && actionConf.showContinue\"\r\n :loading=\"loading\"\r\n @click=\"submitForm(true)\"\r\n >\r\n {{ actionConf.continueText }}\r\n </el-button>\r\n <el-button type=\"primary\" :loading=\"loading\" @click=\"submitForm(false)\">\r\n {{ actionConf.submitText }}\r\n </el-button>\r\n </slot>\r\n </div>\r\n </el-form>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, reactive, computed, onMounted, onBeforeUnmount, watch, provide, inject, getCurrentInstance, type PropType } from 'vue'\r\nimport { ElMessage, ElMessageBox } from 'element-plus'\r\nimport { request } from '../../../lib/core/http'\r\nimport { refreshDataGrid } from '../../../lib/core/linkage'\r\nimport { deepMerge } from '../../../lib/core/utils'\r\nimport { useContainer } from '../../containers/containerContext'\r\n\r\ndefineOptions({ name: 'WdDataForm', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n /** 模式:create 新增 / edit 编辑 */\r\n mode: { type: String as PropType<'create' | 'edit'>, default: 'create' },\r\n /** 详情数据接口(edit 模式回填) */\r\n api: { type: String, default: '' },\r\n apiMethod: { type: String as PropType<'get' | 'post'>, default: 'get' },\r\n apiParam: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\r\n /** 提交接口 */\r\n submitApi: { type: String, default: '' },\r\n submitMethod: { type: String as PropType<'post' | 'put'>, default: 'post' },\r\n /** 提交字段白名单 */\r\n submitKeys: { type: [String, Array] as PropType<string | string[]>, default: undefined },\r\n /** 提交字段黑名单 */\r\n submitExcludeKeys: { type: [String, Array] as PropType<string | string[]>, default: undefined },\r\n /** 是否自动请求详情 */\r\n active: { type: Boolean, default: false },\r\n /** 有未保存修改时离开确认 */\r\n confirmLeave: { type: Boolean, default: true },\r\n /** 是否显示底部操作按钮区 */\r\n withActions: { type: Boolean, default: true },\r\n /** 底部按钮文案配置 */\r\n actionConfig: {\r\n type: Object as PropType<{\r\n resetText?: string\r\n submitText?: string\r\n continueText?: string\r\n closeText?: string\r\n showReset?: boolean\r\n showContinue?: boolean\r\n }>,\r\n default: () => ({})\r\n },\r\n /** 提交后关闭抽屉 */\r\n headCloseDrawer: { type: [Boolean, String], default: true },\r\n /** 提交后刷新表格 */\r\n headRefreshDatagrid: { type: [Boolean, String], default: false },\r\n /** 显示连续操作按钮 */\r\n keepFormButton: { type: Boolean, default: true },\r\n /** 表单规则(透传 el-form rules) */\r\n rules: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\r\n labelWidth: { type: [String, Number], default: '100px' },\r\n labelPosition: { type: String as PropType<'left' | 'right' | 'top'>, default: 'right' },\r\n inline: { type: Boolean, default: false },\r\n /** 联动分组 */\r\n filter: { type: String, default: '' },\r\n /** 外部传入的初始数据(DrawerButton data 等) */\r\n data: { type: Object as PropType<Record<string, any>>, default: undefined }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'submit-success',\r\n 'submit-fail',\r\n 'load-success',\r\n 'change',\r\n 'close',\r\n 'apiBefore',\r\n 'apiAfter'\r\n])\r\n\r\nconst formRef = ref<any>(null)\r\nconst loading = ref(false)\r\nconst formModel = reactive<Record<string, any>>({})\r\n/** 初始快照,用于修改检测与 edit 重置 */\r\nconst snapshot = ref<Record<string, any>>({})\r\n\r\nconst isCreate = computed(() => props.mode !== 'edit')\r\n\r\nconst actionConf = computed(() =>\r\n deepMerge(\r\n {\r\n resetText: '重置',\r\n submitText: '保存',\r\n continueText: '保存并继续',\r\n closeText: '关闭',\r\n showReset: true,\r\n showContinue: true\r\n },\r\n props.actionConfig || {}\r\n )\r\n)\r\n\r\nconst closeText = computed(() => actionConf.value.closeText)\r\n\r\n// 通过 provide 向子组件暴露 model;HTML 场景下插槽 v-model=\"model.xxx\"\r\n// 运行于根组件模板作用域,故同时把 model 挂到 app.config.globalProperties\r\n// (根实例 proxy 查找 setupState/data 之后回退 globalProperties)\r\nconst instance = getCurrentInstance()\r\nprovide('wdDataForm', {\r\n model: formModel,\r\n formRef\r\n})\r\n\r\n/** 回填数据到表单 */\r\nfunction fillForm(data: Record<string, any> | null | undefined) {\r\n // 清空旧值\r\n Object.keys(formModel).forEach((k) => delete formModel[k])\r\n if (data && typeof data === 'object') {\r\n Object.assign(formModel, JSON.parse(JSON.stringify(data)))\r\n }\r\n snapshot.value = JSON.parse(JSON.stringify(formModel))\r\n}\r\n\r\n/** 请求详情并回填 */\r\nasync function requestApi(options?: { apiParam?: Record<string, any> }) {\r\n if (!props.api) {\r\n fillForm(props.data || {})\r\n return\r\n }\r\n loading.value = true\r\n emit('apiBefore', { type: 'load' })\r\n try {\r\n const param = { ...props.apiParam, ...(options?.apiParam || {}) }\r\n const result =\r\n props.apiMethod === 'get'\r\n ? await request.get(props.api, param)\r\n : await request.post(props.api, param)\r\n if (result.success) {\r\n fillForm(result.data || {})\r\n emit('load-success', result.data)\r\n }\r\n } finally {\r\n loading.value = false\r\n emit('apiAfter', { type: 'load' })\r\n }\r\n}\r\n\r\n/** 取当前表单值 */\r\nfunction getFormData() {\r\n return { ...formModel }\r\n}\r\n\r\n/** 按白/黑名单过滤提交字段 */\r\nfunction pickSubmitData() {\r\n const data = getFormData()\r\n const toArr = (v: string | string[] | undefined) =>\r\n v == null ? null : Array.isArray(v) ? v : String(v).split(',').map((s) => s.trim()).filter(Boolean)\r\n\r\n const whitelist = toArr(props.submitKeys)\r\n const blacklist = toArr(props.submitExcludeKeys)\r\n\r\n let result = data\r\n if (whitelist) {\r\n result = whitelist.reduce((acc: Record<string, any>, key) => {\r\n acc[key] = data[key]\r\n return acc\r\n }, {})\r\n }\r\n if (blacklist) {\r\n result = Object.keys(result).reduce((acc: Record<string, any>, key) => {\r\n if (!blacklist.includes(key)) acc[key] = result[key]\r\n return acc\r\n }, {})\r\n }\r\n return result\r\n}\r\n\r\n/** 手动校验 */\r\nasync function validate(): Promise<boolean> {\r\n if (!formRef.value) return true\r\n try {\r\n await formRef.value.validate()\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n/** 提交 */\r\nasync function submitForm(continueNext = false) {\r\n const ok = await validate()\r\n if (!ok) {\r\n ElMessage.warning('请完善表单必填项')\r\n return\r\n }\r\n if (!props.submitApi) {\r\n // 无提交接口:仅抛出事件,交给父组件处理\r\n emit('submit-success', getFormData())\r\n afterSubmitSuccess(getFormData(), continueNext)\r\n return\r\n }\r\n\r\n loading.value = true\r\n emit('apiBefore', { type: 'submit' })\r\n try {\r\n const submitData = pickSubmitData()\r\n const result =\r\n props.submitMethod === 'put'\r\n ? await request.put(props.submitApi, submitData)\r\n : await request.post(props.submitApi, submitData)\r\n\r\n if (result.success) {\r\n emit('submit-success', result.data)\r\n afterSubmitSuccess(result.data, continueNext)\r\n } else {\r\n emit('submit-fail', result)\r\n }\r\n } finally {\r\n loading.value = false\r\n emit('apiAfter', { type: 'submit' })\r\n }\r\n}\r\n\r\n/** 提交成功后的联动处理 */\r\nfunction afterSubmitSuccess(data: any, continueNext: boolean) {\r\n // 1. 刷新目标 DataGrid(声明式联动)\r\n if (props.headRefreshDatagrid) {\r\n refreshDataGrid(props.headRefreshDatagrid, props.filter)\r\n }\r\n // 2. 关闭抽屉 / 连续操作\r\n if (continueNext && isCreate.value) {\r\n // 保存并继续:清空表单继续新增,不关闭\r\n resetForm(true)\r\n } else if (props.headCloseDrawer) {\r\n // 容器内:请求容器关闭(提交成功不再做离开确认);独立使用:emit close\r\n if (container?.requestClose) {\r\n container.requestClose('submit')\r\n } else {\r\n emit('close', { reason: 'submit' })\r\n }\r\n }\r\n // 更新快照\r\n snapshot.value = JSON.parse(JSON.stringify(formModel))\r\n}\r\n\r\n/** 重置:create 清空 / edit 回填原值 */\r\nfunction resetForm(clearOnly = false) {\r\n if (isCreate.value || clearOnly) {\r\n Object.keys(formModel).forEach((k) => delete formModel[k])\r\n formRef.value?.clearValidate?.()\r\n } else {\r\n fillForm(snapshot.value)\r\n formRef.value?.clearValidate?.()\r\n }\r\n}\r\n\r\n/** 是否有未保存修改 */\r\nfunction isDirty(): boolean {\r\n return JSON.stringify(formModel) !== JSON.stringify(snapshot.value)\r\n}\r\n\r\n/** 关闭(底部关闭按钮) */\r\nfunction onClose() {\r\n if (container?.requestClose) {\r\n // 容器内:交给容器走关闭流程(容器统一执行未保存确认,避免重复弹窗)\r\n container.requestClose('manual')\r\n return\r\n }\r\n // iframe 场景:通知父容器(wd-drawer url 模式 / wd-iframe 承载)请求关闭\r\n if (inIframe.value) {\r\n window.parent?.postMessage({ type: 'wd-container:close' }, '*')\r\n return\r\n }\r\n // 独立使用:自行确认\r\n if (props.confirmLeave && isDirty()) {\r\n ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n .then(() => emit('close', { reason: 'manual' }))\r\n .catch(() => {})\r\n return\r\n }\r\n emit('close', { reason: 'manual' })\r\n}\r\n\r\n/** 供父组件/抽屉调用的离开检查 */\r\nasync function beforeLeave(): Promise<boolean> {\r\n if (!props.confirmLeave || !isDirty()) return true\r\n try {\r\n await ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n// 表单变化事件(修改检测)\r\nwatch(\r\n formModel,\r\n () => {\r\n emit('change', getFormData())\r\n },\r\n { deep: true }\r\n)\r\n\r\n// 容器上下文(被 wd-drawer 承载时存在,mode=dialog 同为该组件)\r\nconst container = useContainer()\r\nlet removeBeforeClose: (() => void) | null = null\r\n// 容器携带的数据(DrawerButton data),props.data 优先\r\nconst containerData = computed(() => props.data || container?.data)\r\n\r\n// 是否处于 iframe 子页面(被 wd-drawer url 模式 / wd-iframe 承载;跨域访问 window.top 会抛错,视为 iframe)\r\nconst inIframe = computed(() => {\r\n if (typeof window === 'undefined') return false\r\n try {\r\n return window.self !== window.top\r\n } catch {\r\n return true\r\n }\r\n})\r\n// 是否处于宿主环境(drawer/dialog 容器 或 iframe)——决定底部「关闭」「保存并继续」按钮是否显示\r\nconst inHost = computed(() => !!container || inIframe.value)\r\n\r\n// 同步数据预填(首次渲染前):props.data / 容器 data 在 setup 阶段已可用,\r\n// 提前回填可避免插槽内 el-switch / el-radio 等控件首帧绑定 undefined 触发 EP 校验警告;\r\n// api 异步详情仍在 onMounted 中拉取并覆盖\r\nif (containerData.value) {\r\n fillForm(containerData.value)\r\n}\r\n\r\nonMounted(() => {\r\n // HTML 场景:把 model 暴露给根模板作用域(v-model=\"model.xxx\")\r\n const appContext = instance?.appContext\r\n if (appContext) {\r\n appContext.config.globalProperties.model = formModel\r\n const rootProxy = appContext.app?.config?.globalProperties\r\n if (rootProxy) rootProxy.model = formModel\r\n }\r\n\r\n // 注册关闭前守卫:容器关闭时先做未保存确认(确认逻辑只走这一处,避免重复弹窗)\r\n if (container?.addBeforeClose) {\r\n removeBeforeClose = container.addBeforeClose(async () => {\r\n if (!props.confirmLeave || !isDirty()) return true\r\n try {\r\n await ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n return true\r\n } catch {\r\n return false\r\n }\r\n })\r\n }\r\n\r\n if (props.mode === 'edit') {\r\n if (containerData.value) {\r\n fillForm(containerData.value)\r\n }\r\n if (props.active && props.api) {\r\n requestApi()\r\n }\r\n } else if (containerData.value) {\r\n fillForm(containerData.value)\r\n }\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n removeBeforeClose?.()\r\n // 清理全局 model(仅当仍指向本实例时)\r\n const appContext = instance?.appContext\r\n if (appContext?.config?.globalProperties?.model === formModel) {\r\n delete appContext.config.globalProperties.model\r\n }\r\n})\r\n\r\ndefineExpose({\r\n requestApi,\r\n submitForm,\r\n resetForm,\r\n validate,\r\n getFormData,\r\n isDirty,\r\n beforeLeave,\r\n fillForm,\r\n formRef\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.wd-data-form {\r\n width: 100%;\r\n}\r\n.wd-data-form__footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: 8px;\r\n /* 组件级令牌:皮肤可给表单 footer 加底色 / 内边距 / 圆角;\r\n 默认仅顶部留白(按钮与表单右缘对齐),皮肤给底色时应同步给 padding/radius 避免按钮贴边 */\r\n padding: var(--wd-form-footer-padding, 12px 0 0);\r\n border-top: var(--wd-border-width, 1px) var(--wd-border-style, solid) var(--wd-border-color-light, #e4e7ed);\r\n margin-top: var(--wd-spacing-base, 12px);\r\n border-radius: var(--wd-form-footer-radius, 0);\r\n background: var(--wd-form-footer-bg, transparent);\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","formRef","ref","loading","formModel","reactive","snapshot","isCreate","computed","actionConf","deepMerge","closeText","instance","getCurrentInstance","provide","fillForm","data","k","requestApi","options","param","result","request","getFormData","pickSubmitData","toArr","v","s","whitelist","blacklist","acc","key","validate","submitForm","continueNext","ElMessage","afterSubmitSuccess","submitData","refreshDataGrid","resetForm","container","clearOnly","_b","_a","_d","_c","isDirty","onClose","inIframe","ElMessageBox","beforeLeave","watch","useContainer","removeBeforeClose","containerData","inHost","onMounted","appContext","rootProxy","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_hoisted_1","_withDirectives","_createBlock","_component_el_form","_mergeProps","$attrs","_renderSlot","_ctx","_hoisted_2","_component_el_button","_createTextVNode","_toDisplayString","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"DataForm-DYMderSS.mjs","sources":["../../src/components/form/data-form/DataForm.vue"],"sourcesContent":["<template>\r\n <div class=\"wd-data-form\">\r\n <el-form\r\n ref=\"formRef\"\r\n v-loading=\"loading\"\r\n :model=\"formModel\"\r\n :rules=\"rules\"\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n :inline=\"inline\"\r\n :disabled=\"loading\"\r\n v-bind=\"$attrs\"\r\n @submit.prevent\r\n >\r\n <slot :model=\"formModel\" :form=\"formRef\" />\r\n\r\n <!-- 底部操作区 -->\r\n <div v-if=\"withActions\" class=\"wd-data-form__footer\">\r\n <slot name=\"footer\" :submit=\"submitForm\" :reset=\"resetForm\" :loading=\"loading\">\r\n <!-- 关闭 / 保存并继续:仅在容器(drawer/dialog)或 iframe 内显示,独立使用时隐藏 -->\r\n <el-button v-if=\"inHost\" @click=\"onClose\">{{ closeText }}</el-button>\r\n <el-button v-if=\"actionConf.showReset\" @click=\"resetForm\">{{ actionConf.resetText }}</el-button>\r\n <el-button\r\n v-if=\"inHost && isCreate && keepFormButton && actionConf.showContinue\"\r\n :loading=\"loading\"\r\n @click=\"submitForm(true)\"\r\n >\r\n {{ actionConf.continueText }}\r\n </el-button>\r\n <el-button type=\"primary\" :loading=\"loading\" @click=\"submitForm(false)\">\r\n {{ actionConf.submitText }}\r\n </el-button>\r\n </slot>\r\n </div>\r\n </el-form>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, reactive, computed, onMounted, onBeforeUnmount, watch, provide, inject, getCurrentInstance, type PropType } from 'vue'\r\nimport { ElMessage, ElMessageBox } from 'element-plus'\r\nimport { request } from '../../../lib/core/http'\r\nimport { refreshDataGrid } from '../../../lib/core/linkage'\r\nimport { deepMerge } from '../../../lib/core/utils'\r\nimport { useContainer } from '../../containers/containerContext'\r\n\r\ndefineOptions({ name: 'WdDataForm', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n /** 模式:create 新增 / edit 编辑 */\r\n mode: { type: String as PropType<'create' | 'edit'>, default: 'create' },\r\n /** 详情数据接口(edit 模式回填) */\r\n api: { type: String, default: '' },\r\n apiMethod: { type: String as PropType<'get' | 'post'>, default: 'get' },\r\n apiParam: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\r\n /** 提交接口 */\r\n submitApi: { type: String, default: '' },\r\n submitMethod: { type: String as PropType<'post' | 'put'>, default: 'post' },\r\n /** 提交字段白名单 */\r\n submitKeys: { type: [String, Array] as PropType<string | string[]>, default: undefined },\r\n /** 提交字段黑名单 */\r\n submitExcludeKeys: { type: [String, Array] as PropType<string | string[]>, default: undefined },\r\n /** 是否自动请求详情 */\r\n active: { type: Boolean, default: false },\r\n /** 有未保存修改时离开确认 */\r\n confirmLeave: { type: Boolean, default: true },\r\n /** 是否显示底部操作按钮区 */\r\n withActions: { type: Boolean, default: true },\r\n /** 底部按钮文案配置 */\r\n actionConfig: {\r\n type: Object as PropType<{\r\n resetText?: string\r\n submitText?: string\r\n continueText?: string\r\n closeText?: string\r\n showReset?: boolean\r\n showContinue?: boolean\r\n }>,\r\n default: () => ({})\r\n },\r\n /** 提交后关闭抽屉 */\r\n headCloseDrawer: { type: [Boolean, String], default: true },\r\n /** 提交后刷新表格 */\r\n headRefreshDatagrid: { type: [Boolean, String], default: false },\r\n /** 显示连续操作按钮 */\r\n keepFormButton: { type: Boolean, default: true },\r\n /** 表单规则(透传 el-form rules) */\r\n rules: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\r\n labelWidth: { type: [String, Number], default: '100px' },\r\n labelPosition: { type: String as PropType<'left' | 'right' | 'top'>, default: 'right' },\r\n inline: { type: Boolean, default: false },\r\n /** 联动分组 */\r\n filter: { type: String, default: '' },\r\n /** 外部传入的初始数据(DrawerButton data 等) */\r\n data: { type: Object as PropType<Record<string, any>>, default: undefined }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'submit-success',\r\n 'submit-fail',\r\n 'load-success',\r\n 'change',\r\n 'close',\r\n 'apiBefore',\r\n 'apiAfter'\r\n])\r\n\r\nconst formRef = ref<any>(null)\r\nconst loading = ref(false)\r\nconst formModel = reactive<Record<string, any>>({})\r\n/** 初始快照,用于修改检测与 edit 重置 */\r\nconst snapshot = ref<Record<string, any>>({})\r\n\r\nconst isCreate = computed(() => props.mode !== 'edit')\r\n\r\nconst actionConf = computed(() =>\r\n deepMerge(\r\n {\r\n resetText: '重置',\r\n submitText: '保存',\r\n continueText: '保存并继续',\r\n closeText: '关闭',\r\n showReset: true,\r\n showContinue: true\r\n },\r\n props.actionConfig || {}\r\n )\r\n)\r\n\r\nconst closeText = computed(() => actionConf.value.closeText)\r\n\r\n// 通过 provide 向子组件暴露 model;HTML 场景下插槽 v-model=\"model.xxx\"\r\n// 运行于根组件模板作用域,故同时把 model 挂到 app.config.globalProperties\r\n// (根实例 proxy 查找 setupState/data 之后回退 globalProperties)\r\nconst instance = getCurrentInstance()\r\nprovide('wdDataForm', {\r\n model: formModel,\r\n formRef\r\n})\r\n\r\n/** 回填数据到表单 */\r\nfunction fillForm(data: Record<string, any> | null | undefined) {\r\n // 清空旧值\r\n Object.keys(formModel).forEach((k) => delete formModel[k])\r\n if (data && typeof data === 'object') {\r\n Object.assign(formModel, JSON.parse(JSON.stringify(data)))\r\n }\r\n snapshot.value = JSON.parse(JSON.stringify(formModel))\r\n}\r\n\r\n/** 请求详情并回填 */\r\nasync function requestApi(options?: { apiParam?: Record<string, any> }) {\r\n if (!props.api) {\r\n fillForm(props.data || {})\r\n return\r\n }\r\n loading.value = true\r\n emit('apiBefore', { type: 'load' })\r\n try {\r\n const param = { ...props.apiParam, ...(options?.apiParam || {}) }\r\n const result =\r\n props.apiMethod === 'get'\r\n ? await request.get(props.api, param)\r\n : await request.post(props.api, param)\r\n if (result.success) {\r\n fillForm(result.data || {})\r\n emit('load-success', result.data)\r\n }\r\n } finally {\r\n loading.value = false\r\n emit('apiAfter', { type: 'load' })\r\n }\r\n}\r\n\r\n/** 取当前表单值 */\r\nfunction getFormData() {\r\n return { ...formModel }\r\n}\r\n\r\n/** 按白/黑名单过滤提交字段 */\r\nfunction pickSubmitData() {\r\n const data = getFormData()\r\n const toArr = (v: string | string[] | undefined) =>\r\n v == null ? null : Array.isArray(v) ? v : String(v).split(',').map((s) => s.trim()).filter(Boolean)\r\n\r\n const whitelist = toArr(props.submitKeys)\r\n const blacklist = toArr(props.submitExcludeKeys)\r\n\r\n let result = data\r\n if (whitelist) {\r\n result = whitelist.reduce((acc: Record<string, any>, key) => {\r\n acc[key] = data[key]\r\n return acc\r\n }, {})\r\n }\r\n if (blacklist) {\r\n result = Object.keys(result).reduce((acc: Record<string, any>, key) => {\r\n if (!blacklist.includes(key)) acc[key] = result[key]\r\n return acc\r\n }, {})\r\n }\r\n return result\r\n}\r\n\r\n/** 手动校验 */\r\nasync function validate(): Promise<boolean> {\r\n if (!formRef.value) return true\r\n try {\r\n await formRef.value.validate()\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n/** 提交 */\r\nasync function submitForm(continueNext = false) {\r\n const ok = await validate()\r\n if (!ok) {\r\n ElMessage.warning('请完善表单必填项')\r\n return\r\n }\r\n if (!props.submitApi) {\r\n // 无提交接口:仅抛出事件,交给父组件处理\r\n emit('submit-success', getFormData())\r\n afterSubmitSuccess(getFormData(), continueNext)\r\n return\r\n }\r\n\r\n loading.value = true\r\n emit('apiBefore', { type: 'submit' })\r\n try {\r\n const submitData = pickSubmitData()\r\n const result =\r\n props.submitMethod === 'put'\r\n ? await request.put(props.submitApi, submitData)\r\n : await request.post(props.submitApi, submitData)\r\n\r\n if (result.success) {\r\n emit('submit-success', result.data)\r\n afterSubmitSuccess(result.data, continueNext)\r\n } else {\r\n emit('submit-fail', result)\r\n }\r\n } finally {\r\n loading.value = false\r\n emit('apiAfter', { type: 'submit' })\r\n }\r\n}\r\n\r\n/** 提交成功后的联动处理 */\r\nfunction afterSubmitSuccess(data: any, continueNext: boolean) {\r\n // 1. 刷新目标 DataGrid(声明式联动)\r\n if (props.headRefreshDatagrid) {\r\n refreshDataGrid(props.headRefreshDatagrid, props.filter)\r\n }\r\n // 2. 关闭抽屉 / 连续操作\r\n if (continueNext && isCreate.value) {\r\n // 保存并继续:清空表单继续新增,不关闭\r\n resetForm(true)\r\n } else if (props.headCloseDrawer) {\r\n // 容器内:请求容器关闭(提交成功不再做离开确认);独立使用:emit close\r\n if (container?.requestClose) {\r\n container.requestClose('submit')\r\n } else {\r\n emit('close', { reason: 'submit' })\r\n }\r\n }\r\n // 更新快照\r\n snapshot.value = JSON.parse(JSON.stringify(formModel))\r\n}\r\n\r\n/** 重置:create 清空 / edit 回填原值 */\r\nfunction resetForm(clearOnly = false) {\r\n if (isCreate.value || clearOnly) {\r\n Object.keys(formModel).forEach((k) => delete formModel[k])\r\n formRef.value?.clearValidate?.()\r\n } else {\r\n fillForm(snapshot.value)\r\n formRef.value?.clearValidate?.()\r\n }\r\n}\r\n\r\n/** 是否有未保存修改 */\r\nfunction isDirty(): boolean {\r\n return JSON.stringify(formModel) !== JSON.stringify(snapshot.value)\r\n}\r\n\r\n/** 关闭(底部关闭按钮) */\r\nfunction onClose() {\r\n if (container?.requestClose) {\r\n // 容器内:交给容器走关闭流程(容器统一执行未保存确认,避免重复弹窗)\r\n container.requestClose('manual')\r\n return\r\n }\r\n // iframe 场景:通知父容器(wd-drawer url 模式 / wd-iframe 承载)请求关闭\r\n if (inIframe.value) {\r\n window.parent?.postMessage({ type: 'wd-container:close' }, '*')\r\n return\r\n }\r\n // 独立使用:自行确认\r\n if (props.confirmLeave && isDirty()) {\r\n ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n .then(() => emit('close', { reason: 'manual' }))\r\n .catch(() => {})\r\n return\r\n }\r\n emit('close', { reason: 'manual' })\r\n}\r\n\r\n/** 供父组件/抽屉调用的离开检查 */\r\nasync function beforeLeave(): Promise<boolean> {\r\n if (!props.confirmLeave || !isDirty()) return true\r\n try {\r\n await ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n// 表单变化事件(修改检测)\r\nwatch(\r\n formModel,\r\n () => {\r\n emit('change', getFormData())\r\n },\r\n { deep: true }\r\n)\r\n\r\n// 容器上下文(被 wd-drawer 承载时存在,mode=dialog 同为该组件)\r\nconst container = useContainer()\r\nlet removeBeforeClose: (() => void) | null = null\r\n// 容器携带的数据(DrawerButton data),props.data 优先\r\nconst containerData = computed(() => props.data || container?.data)\r\n\r\n// 是否处于 iframe 子页面(被 wd-drawer url 模式 / wd-iframe 承载;跨域访问 window.top 会抛错,视为 iframe)\r\nconst inIframe = computed(() => {\r\n if (typeof window === 'undefined') return false\r\n try {\r\n return window.self !== window.top\r\n } catch {\r\n return true\r\n }\r\n})\r\n// 是否处于宿主环境(drawer/dialog 容器 或 iframe)——决定底部「关闭」「保存并继续」按钮是否显示\r\nconst inHost = computed(() => !!container || inIframe.value)\r\n\r\n// 同步数据预填(首次渲染前):props.data / 容器 data 在 setup 阶段已可用,\r\n// 提前回填可避免插槽内 el-switch / el-radio 等控件首帧绑定 undefined 触发 EP 校验警告;\r\n// api 异步详情仍在 onMounted 中拉取并覆盖\r\nif (containerData.value) {\r\n fillForm(containerData.value)\r\n}\r\n\r\nonMounted(() => {\r\n // HTML 场景:把 model 暴露给根模板作用域(v-model=\"model.xxx\")\r\n const appContext = instance?.appContext\r\n if (appContext) {\r\n appContext.config.globalProperties.model = formModel\r\n const rootProxy = appContext.app?.config?.globalProperties\r\n if (rootProxy) rootProxy.model = formModel\r\n }\r\n\r\n // 注册关闭前守卫:容器关闭时先做未保存确认(确认逻辑只走这一处,避免重复弹窗)\r\n if (container?.addBeforeClose) {\r\n removeBeforeClose = container.addBeforeClose(async () => {\r\n if (!props.confirmLeave || !isDirty()) return true\r\n try {\r\n await ElMessageBox.confirm('有未保存的修改,确认离开?', '提示', {\r\n confirmButtonText: '确认离开',\r\n cancelButtonText: '继续编辑',\r\n type: 'warning'\r\n })\r\n return true\r\n } catch {\r\n return false\r\n }\r\n })\r\n }\r\n\r\n if (props.mode === 'edit') {\r\n if (containerData.value) {\r\n fillForm(containerData.value)\r\n }\r\n if (props.active && props.api) {\r\n requestApi()\r\n }\r\n } else if (containerData.value) {\r\n fillForm(containerData.value)\r\n }\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n removeBeforeClose?.()\r\n // 清理全局 model(仅当仍指向本实例时)\r\n const appContext = instance?.appContext\r\n if (appContext?.config?.globalProperties?.model === formModel) {\r\n delete appContext.config.globalProperties.model\r\n }\r\n})\r\n\r\ndefineExpose({\r\n requestApi,\r\n submitForm,\r\n resetForm,\r\n validate,\r\n getFormData,\r\n isDirty,\r\n beforeLeave,\r\n fillForm,\r\n formRef\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.wd-data-form {\r\n width: 100%;\r\n}\r\n.wd-data-form__footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: 8px;\r\n /* 组件级令牌:皮肤可给表单 footer 加底色 / 内边距 / 圆角;\r\n 默认仅顶部留白(按钮与表单右缘对齐),皮肤给底色时应同步给 padding/radius 避免按钮贴边 */\r\n padding: var(--wd-form-footer-padding, 12px 0 0);\r\n border-top: var(--wd-border-width, 1px) var(--wd-border-style, solid) var(--wd-border-color-light, #e4e7ed);\r\n margin-top: var(--wd-spacing-base, 12px);\r\n border-radius: var(--wd-form-footer-radius, 0);\r\n background: var(--wd-form-footer-bg, transparent);\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","formRef","ref","loading","formModel","reactive","snapshot","isCreate","computed","actionConf","deepMerge","closeText","instance","getCurrentInstance","provide","fillForm","data","k","requestApi","options","param","result","request","getFormData","pickSubmitData","toArr","v","s","whitelist","blacklist","acc","key","validate","submitForm","continueNext","ElMessage","afterSubmitSuccess","submitData","refreshDataGrid","resetForm","container","clearOnly","_b","_a","_d","_c","isDirty","onClose","inIframe","ElMessageBox","beforeLeave","watch","useContainer","removeBeforeClose","containerData","inHost","onMounted","appContext","rootProxy","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_hoisted_1","_withDirectives","_createBlock","_component_el_form","_mergeProps","$attrs","_renderSlot","_ctx","_hoisted_2","_component_el_button","_createTextVNode","_toDisplayString","_createVNode"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { defineComponent as Fe, useSlots as Ft, ref as D, computed as m, watch as N, nextTick as we, onMounted as Ot, onBeforeUnmount as Lt, resolveComponent as P, resolveDirective as It, openBlock as o, createElementBlock as y, normalizeStyle as Gt, normalizeClass as A, renderSlot as Y, unref as u, createBlock as f, withCtx as a, createVNode as n, createTextVNode as C, createCommentVNode as g, toDisplayString as M, withDirectives as Oe, Fragment as J, renderList as Q, createElementVNode as E, isRef as Nt, withModifiers as Le, resolveDynamicComponent as jt, createSlots as Ut } from "vue";
2
2
  import { Plus as Ie, Download as Ge, Refresh as Ne, ScaleToOriginal as je, Grid as Ue, Menu as We, Setting as qe, ShoppingCart as Ye, Rank as Wt } from "@element-plus/icons-vue";
3
- import { u as qt, a as Yt, o as Jt } from "./useColumnSettings-BwG2V9xp.mjs";
3
+ import { u as qt, a as Yt, o as Jt } from "./useColumnSettings-CbiWd27-.mjs";
4
4
  import { a as Qt } from "./linkage-FbL1mcz3.mjs";
5
- import { e as Xt, a as Zt } from "./http-C06mNpwY.mjs";
5
+ import { c as Xt, a as Zt } from "./config-B6nWG5dv.mjs";
6
6
  import { _ as ea } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
7
7
  const ta = {
8
8
  key: 0,
@@ -1121,4 +1121,4 @@ const ta = {
1121
1121
  export {
1122
1122
  Ca as W
1123
1123
  };
1124
- //# sourceMappingURL=DataGrid-Dd7n5JM7.mjs.map
1124
+ //# sourceMappingURL=DataGrid-DWAhwLVk.mjs.map