workdesktop-ai 1.2.4 → 1.2.5

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 (73) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/api-button/index.mjs +1 -1
  3. package/dist/auto-complete/index.mjs +1 -1
  4. package/dist/checkbox-list/index.mjs +1 -1
  5. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs → ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs} +2 -2
  6. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs.map} +1 -1
  7. package/dist/chunks/{AutoComplete-DqyhsqiS.mjs → AutoComplete-BKWrR5pD.mjs} +2 -2
  8. package/dist/chunks/{AutoComplete-DqyhsqiS.mjs.map → AutoComplete-BKWrR5pD.mjs.map} +1 -1
  9. package/dist/chunks/{CheckboxList-RxJGe-LQ.mjs → CheckboxList-5o9E0Tzg.mjs} +2 -2
  10. package/dist/chunks/{CheckboxList-RxJGe-LQ.mjs.map → CheckboxList-5o9E0Tzg.mjs.map} +1 -1
  11. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs} +2 -2
  12. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs.map} +1 -1
  13. package/dist/chunks/{DataForm-DYMderSS.mjs → DataForm-Dvx6GxlR.mjs} +3 -3
  14. package/dist/chunks/{DataForm-DYMderSS.mjs.map → DataForm-Dvx6GxlR.mjs.map} +1 -1
  15. package/dist/chunks/{DataGrid-DWAhwLVk.mjs → DataGrid-Cw3yXhmR.mjs} +3 -3
  16. package/dist/chunks/{DataGrid-DWAhwLVk.mjs.map → DataGrid-Cw3yXhmR.mjs.map} +1 -1
  17. package/dist/chunks/{EditableGrid-e3wwCaem.mjs → EditableGrid-Dr48XzLH.mjs} +4 -4
  18. package/dist/chunks/{EditableGrid-e3wwCaem.mjs.map → EditableGrid-Dr48XzLH.mjs.map} +1 -1
  19. package/dist/chunks/{Iframe-DcFFi0S9.mjs → Iframe-BB1Va2kZ.mjs} +3 -3
  20. package/dist/chunks/{Iframe-DcFFi0S9.mjs.map → Iframe-BB1Va2kZ.mjs.map} +1 -1
  21. package/dist/chunks/{ImageUpload-BK7tbU2o.mjs → ImageUpload-DiJ16Aga.mjs} +3 -3
  22. package/dist/chunks/{ImageUpload-BK7tbU2o.mjs.map → ImageUpload-DiJ16Aga.mjs.map} +1 -1
  23. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs → PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs} +2 -2
  24. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs.map} +1 -1
  25. package/dist/chunks/{RadioList-DuEeHumw.mjs → RadioList-CQJDixnr.mjs} +2 -2
  26. package/dist/chunks/{RadioList-DuEeHumw.mjs.map → RadioList-CQJDixnr.mjs.map} +1 -1
  27. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs → Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs} +3 -3
  28. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs.map → Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs.map} +1 -1
  29. package/dist/chunks/{Select-MD3taMJo.mjs → Select-ByH7uxuS.mjs} +2 -2
  30. package/dist/chunks/{Select-MD3taMJo.mjs.map → Select-ByH7uxuS.mjs.map} +1 -1
  31. package/dist/chunks/{Station-2m9uznh3.mjs → Station-DDoJem4F.mjs} +150 -139
  32. package/dist/chunks/Station-DDoJem4F.mjs.map +1 -0
  33. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs → Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs} +2 -2
  34. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs.map → Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs.map} +1 -1
  35. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs → Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs} +3 -3
  36. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs.map → Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs.map} +1 -1
  37. package/dist/chunks/{Viewer-FSV6xObc.mjs → Viewer-CmTaneb6.mjs} +2 -2
  38. package/dist/chunks/{Viewer-FSV6xObc.mjs.map → Viewer-CmTaneb6.mjs.map} +1 -1
  39. package/dist/chunks/{config-B6nWG5dv.mjs → config-CDqjABpD.mjs} +2 -2
  40. package/dist/chunks/{config-B6nWG5dv.mjs.map → config-CDqjABpD.mjs.map} +1 -1
  41. package/dist/chunks/{http-BKKP0gEJ.mjs → http-CW9konD4.mjs} +2 -2
  42. package/dist/chunks/{http-BKKP0gEJ.mjs.map → http-CW9konD4.mjs.map} +1 -1
  43. package/dist/chunks/{useApiAction-71XPKjlQ.mjs → useApiAction-CQVmN1MH.mjs} +2 -2
  44. package/dist/chunks/{useApiAction-71XPKjlQ.mjs.map → useApiAction-CQVmN1MH.mjs.map} +1 -1
  45. package/dist/chunks/{useColumnSettings-CbiWd27-.mjs → useColumnSettings-CIFQCmzT.mjs} +3 -3
  46. package/dist/chunks/{useColumnSettings-CbiWd27-.mjs.map → useColumnSettings-CIFQCmzT.mjs.map} +1 -1
  47. package/dist/chunks/{useConfig-CPioiLWJ.mjs → useConfig-ChIkE3Lz.mjs} +2 -2
  48. package/dist/chunks/{useConfig-CPioiLWJ.mjs.map → useConfig-ChIkE3Lz.mjs.map} +1 -1
  49. package/dist/chunks/{useOptionsLoader-D4Jh4f1F.mjs → useOptionsLoader-BUO0VTjH.mjs} +2 -2
  50. package/dist/chunks/{useOptionsLoader-D4Jh4f1F.mjs.map → useOptionsLoader-BUO0VTjH.mjs.map} +1 -1
  51. package/dist/confirm-button/index.mjs +1 -1
  52. package/dist/data-form/index.mjs +1 -1
  53. package/dist/data-grid/index.mjs +1 -1
  54. package/dist/editable-grid/index.mjs +1 -1
  55. package/dist/iframe/index.mjs +1 -1
  56. package/dist/image-upload/index.mjs +1 -1
  57. package/dist/index.esm.js +24 -24
  58. package/dist/index.umd.js +9 -9
  59. package/dist/index.umd.js.map +1 -1
  60. package/dist/prompt-button/index.mjs +1 -1
  61. package/dist/radio-list/index.mjs +1 -1
  62. package/dist/requester/index.mjs +1 -1
  63. package/dist/select/index.mjs +1 -1
  64. package/dist/station/index.mjs +1 -1
  65. package/dist/station/style.css +1 -1
  66. package/dist/style.css +1 -1
  67. package/dist/switch/index.mjs +1 -1
  68. package/dist/types/src/components/layout/Station.vue.d.ts +15 -4
  69. package/dist/types/src/components/layout/types.d.ts +2 -0
  70. package/dist/upload/index.mjs +1 -1
  71. package/dist/viewer/index.mjs +1 -1
  72. package/package.json +1 -1
  73. package/dist/chunks/Station-2m9uznh3.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { ref as n } from "vue";
2
- import { r as d } from "./http-BKKP0gEJ.mjs";
2
+ import { r as d } from "./http-CW9konD4.mjs";
3
3
  import { r as o } from "./linkage-FbL1mcz3.mjs";
4
4
  function A(e) {
5
5
  const s = n(!1);
@@ -27,4 +27,4 @@ function A(e) {
27
27
  export {
28
28
  A as u
29
29
  };
30
- //# sourceMappingURL=useApiAction-71XPKjlQ.mjs.map
30
+ //# sourceMappingURL=useApiAction-CQVmN1MH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApiAction-71XPKjlQ.mjs","sources":["../../src/components/buttons/useApiAction.ts"],"sourcesContent":["import { ref } from 'vue'\nimport { request, type ApiEventPayload } from '../../lib/core/http'\nimport { refreshDataGrid } from '../../lib/core/linkage'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * 按钮组共享:点击 → 请求 → 提示 → 联动刷新(PRD 4.4 按钮组)\n * 业务失败 resolve 不抛异常;网络异常 reject。\n */\nexport function useApiAction(options: {\n getApi: () => string\n getMethod: () => 'get' | 'post' | 'put' | 'delete'\n getParam: () => Record<string, any>\n getFilter: () => string\n getHeadRefresh: () => boolean | string\n emit: (event: any, ...args: any[]) => void\n /** 是否按钮级 loading(ApiButton buttonLoading=false 时按钮不转圈) */\n buttonLoading?: () => boolean\n /** 请求附加项(pageLoading=true 时开启全局 ElLoading 遮罩) */\n getReqOptions?: () => ReqOptions\n}) {\n const loading = ref(false)\n\n async function doRequest(extraParam?: Record<string, any>): Promise<boolean> {\n const api = options.getApi()\n if (!api) return false\n\n const method = options.getMethod()\n const param = { ...options.getParam(), ...(extraParam || {}) }\n const useBtnLoading = options.buttonLoading ? options.buttonLoading() : true\n const reqOptions: ReqOptions = options.getReqOptions\n ? options.getReqOptions()\n : {}\n\n const beforePayload: ApiEventPayload = { type: 'apiBefore', url: api, method, params: param }\n options.emit('apiBefore', beforePayload)\n\n if (useBtnLoading) loading.value = true\n\n try {\n const result =\n method === 'get' || method === 'delete'\n ? await request.request({ url: api, method, params: param }, reqOptions)\n : await request.request({ url: api, method, data: param }, reqOptions)\n\n if (result.success) {\n options.emit('apiSuccess', { data: result.data, code: result.code, message: result.message })\n // 声明式联动:刷新目标 DataGrid\n const head = options.getHeadRefresh()\n if (head) {\n refreshDataGrid(head, options.getFilter())\n }\n options.emit('apiAfter', { data: result.data, code: result.code })\n return true\n }\n options.emit('apiFail', { data: null, code: result.code, message: result.message })\n options.emit('apiAfter', { code: result.code, message: result.message })\n return false\n } catch (error: any) {\n options.emit('apiException', { error, message: error?.message })\n options.emit('apiAfter', { error })\n return false\n } finally {\n loading.value = false\n }\n }\n\n return { loading, doRequest }\n}\n"],"names":["useApiAction","options","loading","ref","doRequest","extraParam","api","method","param","useBtnLoading","reqOptions","beforePayload","result","request","head","refreshDataGrid","error"],"mappings":";;;AASO,SAASA,EAAaC,GAW1B;AACD,QAAMC,IAAUC,EAAI,EAAK;AAEzB,iBAAeC,EAAUC,GAAoD;AAC3E,UAAMC,IAAML,EAAQ,OAAA;AACpB,QAAI,CAACK,EAAK,QAAO;AAEjB,UAAMC,IAASN,EAAQ,UAAA,GACjBO,IAAQ,EAAE,GAAGP,EAAQ,YAAY,GAAII,KAAc,GAAC,GACpDI,IAAgBR,EAAQ,gBAAgBA,EAAQ,kBAAkB,IAClES,IAAyBT,EAAQ,gBACnCA,EAAQ,cAAA,IACR,CAAA,GAEEU,IAAiC,EAAE,MAAM,aAAa,KAAKL,GAAK,QAAAC,GAAQ,QAAQC,EAAA;AACtF,IAAAP,EAAQ,KAAK,aAAaU,CAAa,GAEnCF,QAAuB,QAAQ;AAEnC,QAAI;AACF,YAAMG,IACJL,MAAW,SAASA,MAAW,WAC3B,MAAMM,EAAQ,QAAQ,EAAE,KAAKP,GAAK,QAAAC,GAAQ,QAAQC,EAAA,GAASE,CAAU,IACrE,MAAMG,EAAQ,QAAQ,EAAE,KAAKP,GAAK,QAAAC,GAAQ,MAAMC,EAAA,GAASE,CAAU;AAEzE,UAAIE,EAAO,SAAS;AAClB,QAAAX,EAAQ,KAAK,cAAc,EAAE,MAAMW,EAAO,MAAM,MAAMA,EAAO,MAAM,SAASA,EAAO,QAAA,CAAS;AAE5F,cAAME,IAAOb,EAAQ,eAAA;AACrB,eAAIa,KACFC,EAAgBD,GAAMb,EAAQ,WAAW,GAE3CA,EAAQ,KAAK,YAAY,EAAE,MAAMW,EAAO,MAAM,MAAMA,EAAO,MAAM,GAC1D;AAAA,MACT;AACA,aAAAX,EAAQ,KAAK,WAAW,EAAE,MAAM,MAAM,MAAMW,EAAO,MAAM,SAASA,EAAO,QAAA,CAAS,GAClFX,EAAQ,KAAK,YAAY,EAAE,MAAMW,EAAO,MAAM,SAASA,EAAO,SAAS,GAChE;AAAA,IACT,SAASI,GAAY;AACnB,aAAAf,EAAQ,KAAK,gBAAgB,EAAE,OAAAe,GAAO,SAASA,KAAA,gBAAAA,EAAO,SAAS,GAC/Df,EAAQ,KAAK,YAAY,EAAE,OAAAe,EAAA,CAAO,GAC3B;AAAA,IACT,UAAA;AACE,MAAAd,EAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,EAAE,SAAAA,GAAS,WAAAE,EAAA;AACpB;"}
1
+ {"version":3,"file":"useApiAction-CQVmN1MH.mjs","sources":["../../src/components/buttons/useApiAction.ts"],"sourcesContent":["import { ref } from 'vue'\nimport { request, type ApiEventPayload } from '../../lib/core/http'\nimport { refreshDataGrid } from '../../lib/core/linkage'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * 按钮组共享:点击 → 请求 → 提示 → 联动刷新(PRD 4.4 按钮组)\n * 业务失败 resolve 不抛异常;网络异常 reject。\n */\nexport function useApiAction(options: {\n getApi: () => string\n getMethod: () => 'get' | 'post' | 'put' | 'delete'\n getParam: () => Record<string, any>\n getFilter: () => string\n getHeadRefresh: () => boolean | string\n emit: (event: any, ...args: any[]) => void\n /** 是否按钮级 loading(ApiButton buttonLoading=false 时按钮不转圈) */\n buttonLoading?: () => boolean\n /** 请求附加项(pageLoading=true 时开启全局 ElLoading 遮罩) */\n getReqOptions?: () => ReqOptions\n}) {\n const loading = ref(false)\n\n async function doRequest(extraParam?: Record<string, any>): Promise<boolean> {\n const api = options.getApi()\n if (!api) return false\n\n const method = options.getMethod()\n const param = { ...options.getParam(), ...(extraParam || {}) }\n const useBtnLoading = options.buttonLoading ? options.buttonLoading() : true\n const reqOptions: ReqOptions = options.getReqOptions\n ? options.getReqOptions()\n : {}\n\n const beforePayload: ApiEventPayload = { type: 'apiBefore', url: api, method, params: param }\n options.emit('apiBefore', beforePayload)\n\n if (useBtnLoading) loading.value = true\n\n try {\n const result =\n method === 'get' || method === 'delete'\n ? await request.request({ url: api, method, params: param }, reqOptions)\n : await request.request({ url: api, method, data: param }, reqOptions)\n\n if (result.success) {\n options.emit('apiSuccess', { data: result.data, code: result.code, message: result.message })\n // 声明式联动:刷新目标 DataGrid\n const head = options.getHeadRefresh()\n if (head) {\n refreshDataGrid(head, options.getFilter())\n }\n options.emit('apiAfter', { data: result.data, code: result.code })\n return true\n }\n options.emit('apiFail', { data: null, code: result.code, message: result.message })\n options.emit('apiAfter', { code: result.code, message: result.message })\n return false\n } catch (error: any) {\n options.emit('apiException', { error, message: error?.message })\n options.emit('apiAfter', { error })\n return false\n } finally {\n loading.value = false\n }\n }\n\n return { loading, doRequest }\n}\n"],"names":["useApiAction","options","loading","ref","doRequest","extraParam","api","method","param","useBtnLoading","reqOptions","beforePayload","result","request","head","refreshDataGrid","error"],"mappings":";;;AASO,SAASA,EAAaC,GAW1B;AACD,QAAMC,IAAUC,EAAI,EAAK;AAEzB,iBAAeC,EAAUC,GAAoD;AAC3E,UAAMC,IAAML,EAAQ,OAAA;AACpB,QAAI,CAACK,EAAK,QAAO;AAEjB,UAAMC,IAASN,EAAQ,UAAA,GACjBO,IAAQ,EAAE,GAAGP,EAAQ,YAAY,GAAII,KAAc,GAAC,GACpDI,IAAgBR,EAAQ,gBAAgBA,EAAQ,kBAAkB,IAClES,IAAyBT,EAAQ,gBACnCA,EAAQ,cAAA,IACR,CAAA,GAEEU,IAAiC,EAAE,MAAM,aAAa,KAAKL,GAAK,QAAAC,GAAQ,QAAQC,EAAA;AACtF,IAAAP,EAAQ,KAAK,aAAaU,CAAa,GAEnCF,QAAuB,QAAQ;AAEnC,QAAI;AACF,YAAMG,IACJL,MAAW,SAASA,MAAW,WAC3B,MAAMM,EAAQ,QAAQ,EAAE,KAAKP,GAAK,QAAAC,GAAQ,QAAQC,EAAA,GAASE,CAAU,IACrE,MAAMG,EAAQ,QAAQ,EAAE,KAAKP,GAAK,QAAAC,GAAQ,MAAMC,EAAA,GAASE,CAAU;AAEzE,UAAIE,EAAO,SAAS;AAClB,QAAAX,EAAQ,KAAK,cAAc,EAAE,MAAMW,EAAO,MAAM,MAAMA,EAAO,MAAM,SAASA,EAAO,QAAA,CAAS;AAE5F,cAAME,IAAOb,EAAQ,eAAA;AACrB,eAAIa,KACFC,EAAgBD,GAAMb,EAAQ,WAAW,GAE3CA,EAAQ,KAAK,YAAY,EAAE,MAAMW,EAAO,MAAM,MAAMA,EAAO,MAAM,GAC1D;AAAA,MACT;AACA,aAAAX,EAAQ,KAAK,WAAW,EAAE,MAAM,MAAM,MAAMW,EAAO,MAAM,SAASA,EAAO,QAAA,CAAS,GAClFX,EAAQ,KAAK,YAAY,EAAE,MAAMW,EAAO,MAAM,SAASA,EAAO,SAAS,GAChE;AAAA,IACT,SAASI,GAAY;AACnB,aAAAf,EAAQ,KAAK,gBAAgB,EAAE,OAAAe,GAAO,SAASA,KAAA,gBAAAA,EAAO,SAAS,GAC/Df,EAAQ,KAAK,YAAY,EAAE,OAAAe,EAAA,CAAO,GAC3B;AAAA,IACT,UAAA;AACE,MAAAd,EAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,EAAE,SAAAA,GAAS,WAAAE,EAAA;AACpB;"}
@@ -1,6 +1,6 @@
1
1
  import { ref as P, shallowRef as J, reactive as _, computed as A, nextTick as R } from "vue";
2
- import { r as M } from "./http-BKKP0gEJ.mjs";
3
- import { a as B, c as H } from "./config-B6nWG5dv.mjs";
2
+ import { r as M } from "./http-CW9konD4.mjs";
3
+ import { a as B, c as H } from "./config-CDqjABpD.mjs";
4
4
  function Y(p = {}) {
5
5
  const t = B(), {
6
6
  api: c,
@@ -214,4 +214,4 @@ export {
214
214
  Z as o,
215
215
  Y as u
216
216
  };
217
- //# sourceMappingURL=useColumnSettings-CbiWd27-.mjs.map
217
+ //# sourceMappingURL=useColumnSettings-CIFQCmzT.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnSettings-CbiWd27-.mjs","sources":["../../src/lib/composables/useDataGrid.ts","../../src/components/data/datagrid/useColumnSettings.ts"],"sourcesContent":["import { ref, reactive, shallowRef } from 'vue'\r\nimport { request, type ApiResult } from '../core/http'\r\nimport { getGlobalConfig } from '../core/config'\r\n\r\n/**\r\n * useDataGrid(PRD 5.3)\r\n * DataGrid 状态管理:分页 / 搜索 / 选中 / 请求\r\n *\r\n * @example\r\n * const grid = useDataGrid({ pageSize: 20 })\r\n * grid.fetchData()\r\n */\r\n\r\nexport interface SortState {\r\n prop: string\r\n order: 'ascending' | 'descending'\r\n}\r\n\r\nexport interface UseDataGridOptions {\r\n /** 数据接口地址 */\r\n api?: string\r\n /** 请求方法,默认 post */\r\n apiMethod?: 'get' | 'post' | 'put' | 'delete'\r\n /** 固定请求参数 */\r\n apiParam?: Record<string, any>\r\n /** 初始每页条数 */\r\n pageSize?: number\r\n /** 是否自动请求 */\r\n immediate?: boolean\r\n /** 请求级覆盖 */\r\n reqOptions?: import('../../types/config').ReqOptions\r\n /** 请求成功回调(解封后的列表结果) */\r\n onLoaded?: (result: { list: any[]; total: number }) => void\r\n}\r\n\r\nexport interface ListData {\r\n list: any[]\r\n total: number\r\n pageSize: number\r\n currentPage: number\r\n}\r\n\r\nexport function useDataGrid(options: UseDataGridOptions = {}) {\r\n const cfg = getGlobalConfig()\r\n const {\r\n api,\r\n apiMethod = 'post',\r\n apiParam = {},\r\n pageSize: initPageSize = cfg.page.pager.pageSize,\r\n immediate = false,\r\n reqOptions,\r\n onLoaded\r\n } = options\r\n\r\n const currentPage = ref(1)\r\n const pageSize = ref(initPageSize)\r\n const total = ref(0)\r\n const list = shallowRef<any[]>([])\r\n const loading = ref(false)\r\n const searchParams = reactive<Record<string, any>>({})\r\n const selection = ref<any[]>([])\r\n // 排序状态\r\n const sortState = ref<SortState | null>(null)\r\n\r\n const pageParam = cfg.request.pageParam\r\n const listCfg = cfg.response.list\r\n\r\n let controller: AbortController | null = null\r\n\r\n /**\r\n * 组装列表请求体:{ currentPage, pageSize, param: {...搜索+固定参数+排序} }\r\n */\r\n function buildParams(extra?: Record<string, any>) {\r\n const params: Record<string, any> = {\r\n [pageParam.pageField]: currentPage.value,\r\n [pageParam.sizeField]: pageSize.value\r\n }\r\n const search = {\r\n ...apiParam,\r\n ...searchParams,\r\n ...(extra || {})\r\n }\r\n // 如果有排序,增加排序参数\r\n if (sortState.value) {\r\n search.sortProp = sortState.value.prop\r\n search.sortOrder = sortState.value.order\r\n }\r\n params[pageParam.searchField] = search\r\n return params\r\n }\r\n\r\n /**\r\n * 请求数据\r\n */\r\n async function fetchData(extra?: Record<string, any>): Promise<ListData> {\r\n if (!api) {\r\n list.value = []\r\n total.value = 0\r\n return { list: [], total: 0, pageSize: pageSize.value, currentPage: currentPage.value }\r\n }\r\n\r\n loading.value = true\r\n if (controller) controller.abort()\r\n controller = new AbortController()\r\n\r\n const body = buildParams(extra)\r\n try {\r\n let result: ApiResult<any>\r\n if (apiMethod === 'get') {\r\n result = await request.request({ url: api, method: 'get', params: body }, { ...reqOptions, signal: controller.signal })\r\n } else {\r\n result = await request.request({ url: api, method: apiMethod, data: body }, { ...reqOptions, signal: controller.signal })\r\n }\r\n\r\n if (result.success) {\r\n const data = result.data\r\n // 解封列表结构\r\n let rows: any[] = []\r\n let totalCount = 0\r\n if (Array.isArray(data)) {\r\n rows = data\r\n totalCount = data.length\r\n } else if (data && typeof data === 'object') {\r\n rows = data[listCfg.listName] ?? data.list ?? []\r\n totalCount = data[listCfg.totalName] ?? data.total ?? rows.length\r\n }\r\n list.value = rows\r\n total.value = totalCount\r\n onLoaded?.({ list: rows, total: totalCount })\r\n return {\r\n list: rows,\r\n total: totalCount,\r\n pageSize: data?.[listCfg.pageSizeName] ?? pageSize.value,\r\n currentPage: data?.[listCfg.currentPageName] ?? currentPage.value\r\n }\r\n }\r\n list.value = []\r\n total.value = 0\r\n return { list: [], total: 0, pageSize: pageSize.value, currentPage: currentPage.value }\r\n } finally {\r\n loading.value = false\r\n controller = null\r\n }\r\n }\r\n\r\n /** 刷新当前页 */\r\n function refresh() {\r\n return fetchData()\r\n }\r\n\r\n function onChangeCurrentpage(value: number) {\r\n currentPage.value = value\r\n return fetchData()\r\n }\r\n\r\n function onChangePagesize(value: number) {\r\n pageSize.value = value\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n function setSelection(rows: any[]) {\r\n selection.value = rows || []\r\n }\r\n\r\n function getSelection() {\r\n return selection.value\r\n }\r\n\r\n function clearSelection() {\r\n selection.value = []\r\n }\r\n\r\n /** 合并搜索条件并查询(搜索面板用) */\r\n function search(params?: Record<string, any>) {\r\n if (params) Object.assign(searchParams, params)\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n /** 排序变更,更新排序状态并查询 */\r\n function changeSort({ prop, order }: { prop: string; order: 'ascending' | 'descending' | null }) {\r\n if (!prop || !order) {\r\n sortState.value = null\r\n } else {\r\n sortState.value = { prop, order }\r\n }\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n /** 重置到第一页并清空搜索条件 + 排序 */\r\n function reset() {\r\n currentPage.value = 1\r\n Object.keys(searchParams).forEach((k) => delete searchParams[k])\r\n sortState.value = null\r\n return fetchData()\r\n }\r\n\r\n if (immediate) {\r\n fetchData()\r\n }\r\n\r\n return {\r\n // 状态\r\n currentPage,\r\n page: currentPage,\r\n pageSize,\r\n total,\r\n list,\r\n loading,\r\n searchParams,\r\n selection,\r\n sortState,\r\n // 方法\r\n fetchData,\r\n refresh,\r\n reset,\r\n search,\r\n changeSort,\r\n onChangeCurrentpage,\r\n onChangePagesize,\r\n setSelection,\r\n getSelection,\r\n clearSelection,\r\n buildParams\r\n }\r\n}\r\n\r\nexport type DataGridController = ReturnType<typeof useDataGrid>\r\n","import { ref, computed, nextTick } from 'vue'\r\nimport type { VNode } from 'vue'\r\nimport { safeJsonParse } from '../../../lib/core/utils'\r\n\r\n/**\r\n * 动态列:从默认插槽的 el-table-column vnode 中提取列元信息,\r\n * 支持显示/隐藏/排序,状态可持久化到 localStorage(PRD 4.2)。\r\n */\r\n\r\nexport interface ColumnMeta {\r\n /** el-table-column 的 key(prop 或自动 id) */\r\n key: string\r\n label: string\r\n /** 用户可控制的业务列(selection/index 等内置列不可控) */\r\n controllable: boolean\r\n visible: boolean\r\n order: number\r\n}\r\n\r\n/** 判定 vnode 是否为 el-table-column(type 显式声明或组件 name 匹配) */\r\nfunction isColumnVNode(vnode: VNode): boolean {\r\n const props = (vnode.props || {}) as Record<string, any>\r\n const typeName =\r\n (vnode.type as any)?.name ||\r\n (vnode.type as any)?.__name ||\r\n ''\r\n return (\r\n String(typeName).includes('TableColumn') ||\r\n (vnode.type as any) === Symbol.for('el-table-column') ||\r\n // 全局注册组件时 type 为对象带 name\r\n typeName === 'ElTableColumn' ||\r\n !!(props.prop || props.label || props.type)\r\n )\r\n}\r\n\r\n/**\r\n * 从插槽 vnode 数组中解析列\r\n */\r\nexport function extractColumns(vnodes: VNode[]): ColumnMeta[] {\r\n const columns: ColumnMeta[] = []\r\n let auto = 0\r\n const walk = (nodes: VNode[]) => {\r\n nodes.forEach((vnode) => {\r\n if (!vnode || typeof vnode !== 'object') return\r\n const props = (vnode.props || {}) as Record<string, any>\r\n\r\n if (isColumnVNode(vnode)) {\r\n auto += 1\r\n const colType = props.type // selection / index / expand\r\n const key = String(props.prop || props.columnKey || `col-${auto}`)\r\n columns.push({\r\n key,\r\n label: props.label || key,\r\n controllable: !colType,\r\n visible: props.hidden !== true,\r\n order: columns.length\r\n })\r\n }\r\n // 递归子节点(fragment)\r\n const children = (vnode as any).children\r\n if (Array.isArray(children)) {\r\n walk(children.filter((c: any) => c && typeof c === 'object') as VNode[])\r\n }\r\n })\r\n }\r\n walk(vnodes)\r\n return columns\r\n}\r\n\r\n/**\r\n * 按列设置中的 order 重排业务列 vnode。\r\n * key 解析规则必须与 extractColumns 完全一致(含自动编号计数),\r\n * 未匹配到列设置的 vnode 保持原相对顺序排在末尾。\r\n */\r\nexport function orderColumnVnodes(vnodes: VNode[], orderMap: Map<string, number>): VNode[] {\r\n let auto = 0\r\n const keyOf = (vnode: VNode): string => {\r\n const props = (vnode.props || {}) as Record<string, any>\r\n if (isColumnVNode(vnode)) {\r\n auto += 1\r\n return String(props.prop || props.columnKey || `col-${auto}`)\r\n }\r\n return ''\r\n }\r\n return vnodes\r\n .map((vnode, index) => ({ vnode, index, order: orderMap.get(keyOf(vnode)) }))\r\n .sort((a, b) => {\r\n if (a.order == null && b.order == null) return a.index - b.index\r\n if (a.order == null) return 1\r\n if (b.order == null) return -1\r\n return a.order - b.order\r\n })\r\n .map((item) => item.vnode)\r\n}\r\n\r\nexport function useColumnSettings(storageKey?: string) {\r\n const columns = ref<ColumnMeta[]>([])\r\n /** 初始列定义快照(插槽声明顺序),供「恢复默认」还原 */\r\n let initialColumns: ColumnMeta[] = []\r\n const settingVisible = ref(false)\r\n\r\n const storageKeyName = storageKey ? `wd:columns:${storageKey}` : ''\r\n\r\n function loadStored(): Record<string, { visible?: boolean; order?: number }> {\r\n if (!storageKeyName || typeof localStorage === 'undefined') return {}\r\n return safeJsonParse(localStorage.getItem(storageKeyName), {})\r\n }\r\n\r\n function persist() {\r\n if (!storageKeyName || typeof localStorage === 'undefined') return\r\n const data: Record<string, any> = {}\r\n columns.value.forEach((c, i) => {\r\n data[c.key] = { visible: c.visible, order: i }\r\n })\r\n localStorage.setItem(storageKeyName, JSON.stringify(data))\r\n }\r\n\r\n /** 合并本地存储的显隐/排序后写入列状态 */\r\n function applyParsed(parsed: ColumnMeta[]) {\r\n initialColumns = parsed.map((col) => ({ ...col }))\r\n const stored = loadStored()\r\n columns.value = parsed.map((col) => {\r\n const s = stored[col.key]\r\n if (s) {\r\n return { ...col, visible: s.visible ?? col.visible, order: s.order ?? col.order }\r\n }\r\n return col\r\n })\r\n columns.value.sort((a, b) => a.order - b.order)\r\n }\r\n\r\n function init(vnodes: VNode[]) {\r\n applyParsed(extractColumns(vnodes))\r\n }\r\n\r\n /** 直接以列元信息初始化(columns 配置驱动的组件用,如 EditableGrid) */\r\n function initMetas(metas: Array<{ key: string; label: string; controllable?: boolean; visible?: boolean }>) {\r\n applyParsed(\r\n metas.map((m, i) => ({\r\n key: m.key,\r\n label: m.label,\r\n controllable: m.controllable !== false,\r\n visible: m.visible !== false,\r\n order: i\r\n }))\r\n )\r\n }\r\n\r\n function setVisible(key: string, visible: boolean) {\r\n const col = columns.value.find((c) => c.key === key)\r\n if (col) {\r\n col.visible = visible\r\n persist()\r\n }\r\n }\r\n\r\n function move(key: string, direction: -1 | 1) {\r\n const idx = columns.value.findIndex((c) => c.key === key)\r\n const target = idx + direction\r\n if (idx < 0 || target < 0 || target >= columns.value.length) return\r\n const arr = columns.value.slice()\r\n const [item] = arr.splice(idx, 1)\r\n arr.splice(target, 0, item)\r\n arr.forEach((c, i) => (c.order = i))\r\n columns.value = arr\r\n persist()\r\n }\r\n\r\n /**\r\n * 拖拽重排:把 fromKey 拖到 toKey 的前面(before)或后面(after)。\r\n * 仅允许在可控列之间拖拽,selection/index 等内置列不参与。\r\n */\r\n function reorder(fromKey: string, toKey: string, position: 'before' | 'after' = 'before') {\r\n if (!fromKey || !toKey || fromKey === toKey) return\r\n const arr = columns.value.slice()\r\n const fromIdx = arr.findIndex((c) => c.key === fromKey)\r\n if (fromIdx < 0) return\r\n if (!arr[fromIdx].controllable) return\r\n const [item] = arr.splice(fromIdx, 1)\r\n let insertIdx = arr.findIndex((c) => c.key === toKey)\r\n if (insertIdx < 0 || !arr[insertIdx].controllable) return\r\n if (position === 'after') insertIdx += 1\r\n arr.splice(insertIdx, 0, item)\r\n arr.forEach((c, i) => (c.order = i))\r\n columns.value = arr\r\n persist()\r\n }\r\n\r\n /** 恢复到插槽声明时的原始顺序与显隐状态 */\r\n function reset() {\r\n columns.value = initialColumns.map((col, i) => ({ ...col, visible: true, order: i }))\r\n if (storageKeyName && typeof localStorage !== 'undefined') {\r\n localStorage.removeItem(storageKeyName)\r\n }\r\n }\r\n\r\n /** 隐藏列的 key 集合,供模板过滤插槽 vnode */\r\n const hiddenKeys = computed(() => new Set(columns.value.filter((c) => !c.visible).map((c) => c.key)))\r\n\r\n /** 列 key → 当前排序位置,供插槽 vnode 重排 */\r\n const columnOrderMap = computed(() => new Map(columns.value.map((c, i) => [c.key, i])))\r\n\r\n const controllableColumns = computed(() => columns.value.filter((c) => c.controllable))\r\n\r\n return {\r\n columns,\r\n controllableColumns,\r\n hiddenKeys,\r\n columnOrderMap,\r\n settingVisible,\r\n init,\r\n initMetas,\r\n setVisible,\r\n move,\r\n reorder,\r\n reset,\r\n nextTick\r\n }\r\n}\r\n"],"names":["useDataGrid","options","cfg","getGlobalConfig","api","apiMethod","apiParam","initPageSize","immediate","reqOptions","onLoaded","currentPage","ref","pageSize","total","list","shallowRef","loading","searchParams","reactive","selection","sortState","pageParam","listCfg","controller","buildParams","extra","params","search","fetchData","body","result","request","data","rows","totalCount","refresh","onChangeCurrentpage","value","onChangePagesize","setSelection","getSelection","clearSelection","changeSort","prop","order","reset","k","isColumnVNode","vnode","props","typeName","_a","_b","extractColumns","vnodes","columns","auto","walk","nodes","colType","key","children","c","orderColumnVnodes","orderMap","keyOf","index","a","b","item","useColumnSettings","storageKey","initialColumns","settingVisible","storageKeyName","loadStored","safeJsonParse","persist","i","applyParsed","parsed","col","stored","s","init","initMetas","metas","m","setVisible","visible","move","direction","idx","target","arr","reorder","fromKey","toKey","position","fromIdx","insertIdx","hiddenKeys","computed","columnOrderMap","controllableColumns","nextTick"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnSettings-CIFQCmzT.mjs","sources":["../../src/lib/composables/useDataGrid.ts","../../src/components/data/datagrid/useColumnSettings.ts"],"sourcesContent":["import { ref, reactive, shallowRef } from 'vue'\r\nimport { request, type ApiResult } from '../core/http'\r\nimport { getGlobalConfig } from '../core/config'\r\n\r\n/**\r\n * useDataGrid(PRD 5.3)\r\n * DataGrid 状态管理:分页 / 搜索 / 选中 / 请求\r\n *\r\n * @example\r\n * const grid = useDataGrid({ pageSize: 20 })\r\n * grid.fetchData()\r\n */\r\n\r\nexport interface SortState {\r\n prop: string\r\n order: 'ascending' | 'descending'\r\n}\r\n\r\nexport interface UseDataGridOptions {\r\n /** 数据接口地址 */\r\n api?: string\r\n /** 请求方法,默认 post */\r\n apiMethod?: 'get' | 'post' | 'put' | 'delete'\r\n /** 固定请求参数 */\r\n apiParam?: Record<string, any>\r\n /** 初始每页条数 */\r\n pageSize?: number\r\n /** 是否自动请求 */\r\n immediate?: boolean\r\n /** 请求级覆盖 */\r\n reqOptions?: import('../../types/config').ReqOptions\r\n /** 请求成功回调(解封后的列表结果) */\r\n onLoaded?: (result: { list: any[]; total: number }) => void\r\n}\r\n\r\nexport interface ListData {\r\n list: any[]\r\n total: number\r\n pageSize: number\r\n currentPage: number\r\n}\r\n\r\nexport function useDataGrid(options: UseDataGridOptions = {}) {\r\n const cfg = getGlobalConfig()\r\n const {\r\n api,\r\n apiMethod = 'post',\r\n apiParam = {},\r\n pageSize: initPageSize = cfg.page.pager.pageSize,\r\n immediate = false,\r\n reqOptions,\r\n onLoaded\r\n } = options\r\n\r\n const currentPage = ref(1)\r\n const pageSize = ref(initPageSize)\r\n const total = ref(0)\r\n const list = shallowRef<any[]>([])\r\n const loading = ref(false)\r\n const searchParams = reactive<Record<string, any>>({})\r\n const selection = ref<any[]>([])\r\n // 排序状态\r\n const sortState = ref<SortState | null>(null)\r\n\r\n const pageParam = cfg.request.pageParam\r\n const listCfg = cfg.response.list\r\n\r\n let controller: AbortController | null = null\r\n\r\n /**\r\n * 组装列表请求体:{ currentPage, pageSize, param: {...搜索+固定参数+排序} }\r\n */\r\n function buildParams(extra?: Record<string, any>) {\r\n const params: Record<string, any> = {\r\n [pageParam.pageField]: currentPage.value,\r\n [pageParam.sizeField]: pageSize.value\r\n }\r\n const search = {\r\n ...apiParam,\r\n ...searchParams,\r\n ...(extra || {})\r\n }\r\n // 如果有排序,增加排序参数\r\n if (sortState.value) {\r\n search.sortProp = sortState.value.prop\r\n search.sortOrder = sortState.value.order\r\n }\r\n params[pageParam.searchField] = search\r\n return params\r\n }\r\n\r\n /**\r\n * 请求数据\r\n */\r\n async function fetchData(extra?: Record<string, any>): Promise<ListData> {\r\n if (!api) {\r\n list.value = []\r\n total.value = 0\r\n return { list: [], total: 0, pageSize: pageSize.value, currentPage: currentPage.value }\r\n }\r\n\r\n loading.value = true\r\n if (controller) controller.abort()\r\n controller = new AbortController()\r\n\r\n const body = buildParams(extra)\r\n try {\r\n let result: ApiResult<any>\r\n if (apiMethod === 'get') {\r\n result = await request.request({ url: api, method: 'get', params: body }, { ...reqOptions, signal: controller.signal })\r\n } else {\r\n result = await request.request({ url: api, method: apiMethod, data: body }, { ...reqOptions, signal: controller.signal })\r\n }\r\n\r\n if (result.success) {\r\n const data = result.data\r\n // 解封列表结构\r\n let rows: any[] = []\r\n let totalCount = 0\r\n if (Array.isArray(data)) {\r\n rows = data\r\n totalCount = data.length\r\n } else if (data && typeof data === 'object') {\r\n rows = data[listCfg.listName] ?? data.list ?? []\r\n totalCount = data[listCfg.totalName] ?? data.total ?? rows.length\r\n }\r\n list.value = rows\r\n total.value = totalCount\r\n onLoaded?.({ list: rows, total: totalCount })\r\n return {\r\n list: rows,\r\n total: totalCount,\r\n pageSize: data?.[listCfg.pageSizeName] ?? pageSize.value,\r\n currentPage: data?.[listCfg.currentPageName] ?? currentPage.value\r\n }\r\n }\r\n list.value = []\r\n total.value = 0\r\n return { list: [], total: 0, pageSize: pageSize.value, currentPage: currentPage.value }\r\n } finally {\r\n loading.value = false\r\n controller = null\r\n }\r\n }\r\n\r\n /** 刷新当前页 */\r\n function refresh() {\r\n return fetchData()\r\n }\r\n\r\n function onChangeCurrentpage(value: number) {\r\n currentPage.value = value\r\n return fetchData()\r\n }\r\n\r\n function onChangePagesize(value: number) {\r\n pageSize.value = value\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n function setSelection(rows: any[]) {\r\n selection.value = rows || []\r\n }\r\n\r\n function getSelection() {\r\n return selection.value\r\n }\r\n\r\n function clearSelection() {\r\n selection.value = []\r\n }\r\n\r\n /** 合并搜索条件并查询(搜索面板用) */\r\n function search(params?: Record<string, any>) {\r\n if (params) Object.assign(searchParams, params)\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n /** 排序变更,更新排序状态并查询 */\r\n function changeSort({ prop, order }: { prop: string; order: 'ascending' | 'descending' | null }) {\r\n if (!prop || !order) {\r\n sortState.value = null\r\n } else {\r\n sortState.value = { prop, order }\r\n }\r\n currentPage.value = 1\r\n return fetchData()\r\n }\r\n\r\n /** 重置到第一页并清空搜索条件 + 排序 */\r\n function reset() {\r\n currentPage.value = 1\r\n Object.keys(searchParams).forEach((k) => delete searchParams[k])\r\n sortState.value = null\r\n return fetchData()\r\n }\r\n\r\n if (immediate) {\r\n fetchData()\r\n }\r\n\r\n return {\r\n // 状态\r\n currentPage,\r\n page: currentPage,\r\n pageSize,\r\n total,\r\n list,\r\n loading,\r\n searchParams,\r\n selection,\r\n sortState,\r\n // 方法\r\n fetchData,\r\n refresh,\r\n reset,\r\n search,\r\n changeSort,\r\n onChangeCurrentpage,\r\n onChangePagesize,\r\n setSelection,\r\n getSelection,\r\n clearSelection,\r\n buildParams\r\n }\r\n}\r\n\r\nexport type DataGridController = ReturnType<typeof useDataGrid>\r\n","import { ref, computed, nextTick } from 'vue'\r\nimport type { VNode } from 'vue'\r\nimport { safeJsonParse } from '../../../lib/core/utils'\r\n\r\n/**\r\n * 动态列:从默认插槽的 el-table-column vnode 中提取列元信息,\r\n * 支持显示/隐藏/排序,状态可持久化到 localStorage(PRD 4.2)。\r\n */\r\n\r\nexport interface ColumnMeta {\r\n /** el-table-column 的 key(prop 或自动 id) */\r\n key: string\r\n label: string\r\n /** 用户可控制的业务列(selection/index 等内置列不可控) */\r\n controllable: boolean\r\n visible: boolean\r\n order: number\r\n}\r\n\r\n/** 判定 vnode 是否为 el-table-column(type 显式声明或组件 name 匹配) */\r\nfunction isColumnVNode(vnode: VNode): boolean {\r\n const props = (vnode.props || {}) as Record<string, any>\r\n const typeName =\r\n (vnode.type as any)?.name ||\r\n (vnode.type as any)?.__name ||\r\n ''\r\n return (\r\n String(typeName).includes('TableColumn') ||\r\n (vnode.type as any) === Symbol.for('el-table-column') ||\r\n // 全局注册组件时 type 为对象带 name\r\n typeName === 'ElTableColumn' ||\r\n !!(props.prop || props.label || props.type)\r\n )\r\n}\r\n\r\n/**\r\n * 从插槽 vnode 数组中解析列\r\n */\r\nexport function extractColumns(vnodes: VNode[]): ColumnMeta[] {\r\n const columns: ColumnMeta[] = []\r\n let auto = 0\r\n const walk = (nodes: VNode[]) => {\r\n nodes.forEach((vnode) => {\r\n if (!vnode || typeof vnode !== 'object') return\r\n const props = (vnode.props || {}) as Record<string, any>\r\n\r\n if (isColumnVNode(vnode)) {\r\n auto += 1\r\n const colType = props.type // selection / index / expand\r\n const key = String(props.prop || props.columnKey || `col-${auto}`)\r\n columns.push({\r\n key,\r\n label: props.label || key,\r\n controllable: !colType,\r\n visible: props.hidden !== true,\r\n order: columns.length\r\n })\r\n }\r\n // 递归子节点(fragment)\r\n const children = (vnode as any).children\r\n if (Array.isArray(children)) {\r\n walk(children.filter((c: any) => c && typeof c === 'object') as VNode[])\r\n }\r\n })\r\n }\r\n walk(vnodes)\r\n return columns\r\n}\r\n\r\n/**\r\n * 按列设置中的 order 重排业务列 vnode。\r\n * key 解析规则必须与 extractColumns 完全一致(含自动编号计数),\r\n * 未匹配到列设置的 vnode 保持原相对顺序排在末尾。\r\n */\r\nexport function orderColumnVnodes(vnodes: VNode[], orderMap: Map<string, number>): VNode[] {\r\n let auto = 0\r\n const keyOf = (vnode: VNode): string => {\r\n const props = (vnode.props || {}) as Record<string, any>\r\n if (isColumnVNode(vnode)) {\r\n auto += 1\r\n return String(props.prop || props.columnKey || `col-${auto}`)\r\n }\r\n return ''\r\n }\r\n return vnodes\r\n .map((vnode, index) => ({ vnode, index, order: orderMap.get(keyOf(vnode)) }))\r\n .sort((a, b) => {\r\n if (a.order == null && b.order == null) return a.index - b.index\r\n if (a.order == null) return 1\r\n if (b.order == null) return -1\r\n return a.order - b.order\r\n })\r\n .map((item) => item.vnode)\r\n}\r\n\r\nexport function useColumnSettings(storageKey?: string) {\r\n const columns = ref<ColumnMeta[]>([])\r\n /** 初始列定义快照(插槽声明顺序),供「恢复默认」还原 */\r\n let initialColumns: ColumnMeta[] = []\r\n const settingVisible = ref(false)\r\n\r\n const storageKeyName = storageKey ? `wd:columns:${storageKey}` : ''\r\n\r\n function loadStored(): Record<string, { visible?: boolean; order?: number }> {\r\n if (!storageKeyName || typeof localStorage === 'undefined') return {}\r\n return safeJsonParse(localStorage.getItem(storageKeyName), {})\r\n }\r\n\r\n function persist() {\r\n if (!storageKeyName || typeof localStorage === 'undefined') return\r\n const data: Record<string, any> = {}\r\n columns.value.forEach((c, i) => {\r\n data[c.key] = { visible: c.visible, order: i }\r\n })\r\n localStorage.setItem(storageKeyName, JSON.stringify(data))\r\n }\r\n\r\n /** 合并本地存储的显隐/排序后写入列状态 */\r\n function applyParsed(parsed: ColumnMeta[]) {\r\n initialColumns = parsed.map((col) => ({ ...col }))\r\n const stored = loadStored()\r\n columns.value = parsed.map((col) => {\r\n const s = stored[col.key]\r\n if (s) {\r\n return { ...col, visible: s.visible ?? col.visible, order: s.order ?? col.order }\r\n }\r\n return col\r\n })\r\n columns.value.sort((a, b) => a.order - b.order)\r\n }\r\n\r\n function init(vnodes: VNode[]) {\r\n applyParsed(extractColumns(vnodes))\r\n }\r\n\r\n /** 直接以列元信息初始化(columns 配置驱动的组件用,如 EditableGrid) */\r\n function initMetas(metas: Array<{ key: string; label: string; controllable?: boolean; visible?: boolean }>) {\r\n applyParsed(\r\n metas.map((m, i) => ({\r\n key: m.key,\r\n label: m.label,\r\n controllable: m.controllable !== false,\r\n visible: m.visible !== false,\r\n order: i\r\n }))\r\n )\r\n }\r\n\r\n function setVisible(key: string, visible: boolean) {\r\n const col = columns.value.find((c) => c.key === key)\r\n if (col) {\r\n col.visible = visible\r\n persist()\r\n }\r\n }\r\n\r\n function move(key: string, direction: -1 | 1) {\r\n const idx = columns.value.findIndex((c) => c.key === key)\r\n const target = idx + direction\r\n if (idx < 0 || target < 0 || target >= columns.value.length) return\r\n const arr = columns.value.slice()\r\n const [item] = arr.splice(idx, 1)\r\n arr.splice(target, 0, item)\r\n arr.forEach((c, i) => (c.order = i))\r\n columns.value = arr\r\n persist()\r\n }\r\n\r\n /**\r\n * 拖拽重排:把 fromKey 拖到 toKey 的前面(before)或后面(after)。\r\n * 仅允许在可控列之间拖拽,selection/index 等内置列不参与。\r\n */\r\n function reorder(fromKey: string, toKey: string, position: 'before' | 'after' = 'before') {\r\n if (!fromKey || !toKey || fromKey === toKey) return\r\n const arr = columns.value.slice()\r\n const fromIdx = arr.findIndex((c) => c.key === fromKey)\r\n if (fromIdx < 0) return\r\n if (!arr[fromIdx].controllable) return\r\n const [item] = arr.splice(fromIdx, 1)\r\n let insertIdx = arr.findIndex((c) => c.key === toKey)\r\n if (insertIdx < 0 || !arr[insertIdx].controllable) return\r\n if (position === 'after') insertIdx += 1\r\n arr.splice(insertIdx, 0, item)\r\n arr.forEach((c, i) => (c.order = i))\r\n columns.value = arr\r\n persist()\r\n }\r\n\r\n /** 恢复到插槽声明时的原始顺序与显隐状态 */\r\n function reset() {\r\n columns.value = initialColumns.map((col, i) => ({ ...col, visible: true, order: i }))\r\n if (storageKeyName && typeof localStorage !== 'undefined') {\r\n localStorage.removeItem(storageKeyName)\r\n }\r\n }\r\n\r\n /** 隐藏列的 key 集合,供模板过滤插槽 vnode */\r\n const hiddenKeys = computed(() => new Set(columns.value.filter((c) => !c.visible).map((c) => c.key)))\r\n\r\n /** 列 key → 当前排序位置,供插槽 vnode 重排 */\r\n const columnOrderMap = computed(() => new Map(columns.value.map((c, i) => [c.key, i])))\r\n\r\n const controllableColumns = computed(() => columns.value.filter((c) => c.controllable))\r\n\r\n return {\r\n columns,\r\n controllableColumns,\r\n hiddenKeys,\r\n columnOrderMap,\r\n settingVisible,\r\n init,\r\n initMetas,\r\n setVisible,\r\n move,\r\n reorder,\r\n reset,\r\n nextTick\r\n }\r\n}\r\n"],"names":["useDataGrid","options","cfg","getGlobalConfig","api","apiMethod","apiParam","initPageSize","immediate","reqOptions","onLoaded","currentPage","ref","pageSize","total","list","shallowRef","loading","searchParams","reactive","selection","sortState","pageParam","listCfg","controller","buildParams","extra","params","search","fetchData","body","result","request","data","rows","totalCount","refresh","onChangeCurrentpage","value","onChangePagesize","setSelection","getSelection","clearSelection","changeSort","prop","order","reset","k","isColumnVNode","vnode","props","typeName","_a","_b","extractColumns","vnodes","columns","auto","walk","nodes","colType","key","children","c","orderColumnVnodes","orderMap","keyOf","index","a","b","item","useColumnSettings","storageKey","initialColumns","settingVisible","storageKeyName","loadStored","safeJsonParse","persist","i","applyParsed","parsed","col","stored","s","init","initMetas","metas","m","setVisible","visible","move","direction","idx","target","arr","reorder","fromKey","toKey","position","fromIdx","insertIdx","hiddenKeys","computed","columnOrderMap","controllableColumns","nextTick"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { shallowRef as r, onMounted as s } from "vue";
2
- import { a, g as l, d as c } from "./config-B6nWG5dv.mjs";
2
+ import { a, g as l, d as c } from "./config-CDqjABpD.mjs";
3
3
  function d(o, n) {
4
4
  const t = r(i(o, n));
5
5
  return s(() => {
@@ -20,4 +20,4 @@ export {
20
20
  b as a,
21
21
  d as u
22
22
  };
23
- //# sourceMappingURL=useConfig-CPioiLWJ.mjs.map
23
+ //# sourceMappingURL=useConfig-ChIkE3Lz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConfig-CPioiLWJ.mjs","sources":["../../src/lib/composables/useConfig.ts"],"sourcesContent":["import { onMounted, shallowRef } from 'vue'\nimport { getGlobalConfig, getComponentDefault } from '../core/config'\nimport { deepMerge } from '../core/utils'\nimport type { WorkDesktopConfig } from '../../types/config'\n\n/**\n * useConfig(PRD 5.3 / 5.2)\n *\n * 组件内合并三级配置:全局 componentDefault[组件名] → 本地 props。\n * 全局配置在组件 onMounted 时读取一次并缓存(运行中改配置只影响新挂载组件)。\n *\n * 返回一个响应式 ref,merge 后的组件配置对象:\n * componentDefault 的值作为默认,props 中非 undefined 的值覆盖。\n *\n * @example\n * const cfg = useConfig('WdDataGrid', props)\n * cfg.value.withPager\n */\nexport function useConfig<T extends Record<string, any> = Record<string, any>>(\n componentName?: string,\n props?: T\n) {\n const configRef = shallowRef<T>(buildComponentConfig<T>(componentName, props))\n\n onMounted(() => {\n // onMounted 时 install 已完成、window.workDesktopConfig 已就绪,再读一次\n configRef.value = buildComponentConfig<T>(componentName, props)\n })\n\n return configRef\n}\n\n/**\n * 非响应式:直接取当前全局 WorkDesktopConfig\n */\nexport function useGlobalConfig(): WorkDesktopConfig {\n return getGlobalConfig()\n}\n\nfunction buildComponentConfig<T extends Record<string, any>>(\n componentName?: string,\n props?: T\n): T {\n const componentDefaults = componentName ? getComponentDefault(componentName) : {}\n const localProps: Record<string, any> = {}\n if (props) {\n for (const [k, v] of Object.entries(props)) {\n if (v !== undefined) localProps[k] = v\n }\n }\n // 优先级:componentDefault < 本地 props\n return deepMerge<T>({} as T, componentDefaults, localProps)\n}\n"],"names":["useConfig","componentName","props","configRef","shallowRef","buildComponentConfig","onMounted","useGlobalConfig","getGlobalConfig","componentDefaults","getComponentDefault","localProps","k","v","deepMerge"],"mappings":";;AAkBO,SAASA,EACdC,GACAC,GACA;AACA,QAAMC,IAAYC,EAAcC,EAAwBJ,GAAeC,CAAK,CAAC;AAE7E,SAAAI,EAAU,MAAM;AAEd,IAAAH,EAAU,QAAQE,EAAwBJ,GAAeC,CAAK;AAAA,EAChE,CAAC,GAEMC;AACT;AAKO,SAASI,IAAqC;AACnD,SAAOC,EAAA;AACT;AAEA,SAASH,EACPJ,GACAC,GACG;AACH,QAAMO,IAAoBR,IAAgBS,EAAoBT,CAAa,IAAI,CAAA,GACzEU,IAAkC,CAAA;AACxC,MAAIT;AACF,eAAW,CAACU,GAAGC,CAAC,KAAK,OAAO,QAAQX,CAAK;AACvC,MAAIW,MAAM,WAAWF,EAAWC,CAAC,IAAIC;AAIzC,SAAOC,EAAa,CAAA,GAASL,GAAmBE,CAAU;AAC5D;"}
1
+ {"version":3,"file":"useConfig-ChIkE3Lz.mjs","sources":["../../src/lib/composables/useConfig.ts"],"sourcesContent":["import { onMounted, shallowRef } from 'vue'\nimport { getGlobalConfig, getComponentDefault } from '../core/config'\nimport { deepMerge } from '../core/utils'\nimport type { WorkDesktopConfig } from '../../types/config'\n\n/**\n * useConfig(PRD 5.3 / 5.2)\n *\n * 组件内合并三级配置:全局 componentDefault[组件名] → 本地 props。\n * 全局配置在组件 onMounted 时读取一次并缓存(运行中改配置只影响新挂载组件)。\n *\n * 返回一个响应式 ref,merge 后的组件配置对象:\n * componentDefault 的值作为默认,props 中非 undefined 的值覆盖。\n *\n * @example\n * const cfg = useConfig('WdDataGrid', props)\n * cfg.value.withPager\n */\nexport function useConfig<T extends Record<string, any> = Record<string, any>>(\n componentName?: string,\n props?: T\n) {\n const configRef = shallowRef<T>(buildComponentConfig<T>(componentName, props))\n\n onMounted(() => {\n // onMounted 时 install 已完成、window.workDesktopConfig 已就绪,再读一次\n configRef.value = buildComponentConfig<T>(componentName, props)\n })\n\n return configRef\n}\n\n/**\n * 非响应式:直接取当前全局 WorkDesktopConfig\n */\nexport function useGlobalConfig(): WorkDesktopConfig {\n return getGlobalConfig()\n}\n\nfunction buildComponentConfig<T extends Record<string, any>>(\n componentName?: string,\n props?: T\n): T {\n const componentDefaults = componentName ? getComponentDefault(componentName) : {}\n const localProps: Record<string, any> = {}\n if (props) {\n for (const [k, v] of Object.entries(props)) {\n if (v !== undefined) localProps[k] = v\n }\n }\n // 优先级:componentDefault < 本地 props\n return deepMerge<T>({} as T, componentDefaults, localProps)\n}\n"],"names":["useConfig","componentName","props","configRef","shallowRef","buildComponentConfig","onMounted","useGlobalConfig","getGlobalConfig","componentDefaults","getComponentDefault","localProps","k","v","deepMerge"],"mappings":";;AAkBO,SAASA,EACdC,GACAC,GACA;AACA,QAAMC,IAAYC,EAAcC,EAAwBJ,GAAeC,CAAK,CAAC;AAE7E,SAAAI,EAAU,MAAM;AAEd,IAAAH,EAAU,QAAQE,EAAwBJ,GAAeC,CAAK;AAAA,EAChE,CAAC,GAEMC;AACT;AAKO,SAASI,IAAqC;AACnD,SAAOC,EAAA;AACT;AAEA,SAASH,EACPJ,GACAC,GACG;AACH,QAAMO,IAAoBR,IAAgBS,EAAoBT,CAAa,IAAI,CAAA,GACzEU,IAAkC,CAAA;AACxC,MAAIT;AACF,eAAW,CAACU,GAAGC,CAAC,KAAK,OAAO,QAAQX,CAAK;AACvC,MAAIW,MAAM,WAAWF,EAAWC,CAAC,IAAIC;AAIzC,SAAOC,EAAa,CAAA,GAASL,GAAmBE,CAAU;AAC5D;"}
@@ -1,5 +1,5 @@
1
1
  import { shallowRef as m, ref as g, onMounted as p, watch as w } from "vue";
2
- import { r as y } from "./http-BKKP0gEJ.mjs";
2
+ import { r as y } from "./http-CW9konD4.mjs";
3
3
  function P(a) {
4
4
  const i = m([]), f = g(!1), s = g(!1);
5
5
  function n(r) {
@@ -61,4 +61,4 @@ function P(a) {
61
61
  export {
62
62
  P as u
63
63
  };
64
- //# sourceMappingURL=useOptionsLoader-D4Jh4f1F.mjs.map
64
+ //# sourceMappingURL=useOptionsLoader-BUO0VTjH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOptionsLoader-D4Jh4f1F.mjs","sources":["../../src/components/inputs/useOptionsLoader.ts"],"sourcesContent":["/**\n * 输入选择组共享:选项自动加载(静态数组 or api)、前插/后追加固定项\n */\nimport { ref, shallowRef, onMounted, watch, type Ref } from 'vue'\nimport { request } from '../../lib/core/http'\n\nexport interface UseOptionsOptions {\n api: Ref<string>\n apiMethod: Ref<'get' | 'post'>\n apiParam: Ref<Record<string, any>>\n active: Ref<boolean>\n dataSource: Ref<any[] | undefined>\n textProp: Ref<string>\n valueProp: Ref<string>\n tipsProp?: Ref<string>\n addData: Ref<any[] | undefined>\n appendData: Ref<any[] | undefined>\n emit: (event: any, ...args: any[]) => void\n}\n\nexport interface NormalizedOption {\n text: string\n value: any\n /** 悬停提示内容(取 tipsProp 字段,无则为空字符串) */\n tips: string\n /** 原始数据(默认插槽上下文 { option }) */\n raw: Record<string, any>\n}\n\nexport function useOptionsLoader(opts: UseOptionsOptions) {\n const options = shallowRef<NormalizedOption[]>([])\n const loading = ref(false)\n /** 标记是否加载过,避免重复请求 */\n const loaded = ref(false)\n\n function normalize(list: any[]): NormalizedOption[] {\n const textKey = opts.textProp.value\n const valueKey = opts.valueProp.value\n const tipsKey = opts.tipsProp?.value || 'tips'\n return (list || []).map((item) => {\n if (item && typeof item === 'object') {\n const tips = item[tipsKey]\n return {\n text: item[textKey],\n value: item[valueKey],\n tips: tips === null || tips === undefined ? '' : String(tips),\n raw: item\n }\n }\n // 基本类型数组 [1,2,3] / ['a','b']\n return { text: String(item), value: item, tips: '', raw: { [textKey]: String(item), [valueKey]: item } }\n })\n }\n\n async function fetchOptions(extraParam?: Record<string, any>) {\n // 静态数据源\n if (opts.dataSource.value) {\n options.value = mergeFixed(normalize(opts.dataSource.value))\n return\n }\n if (!opts.api.value) {\n options.value = mergeFixed([])\n return\n }\n loading.value = true\n opts.emit('apiBefore', { url: opts.api.value })\n try {\n const param = { ...opts.apiParam.value, ...(extraParam || {}) }\n const result =\n opts.apiMethod.value === 'get'\n ? await request.get(opts.api.value, param)\n : await request.post(opts.api.value, param)\n if (result.success) {\n const list = Array.isArray(result.data) ? result.data : result.data?.list || []\n options.value = mergeFixed(normalize(list))\n opts.emit('apiSuccess', { data: result.data })\n } else {\n opts.emit('apiFail', { code: result.code, message: result.message })\n }\n } catch (error: any) {\n opts.emit('apiFail', { error, message: error?.message })\n } finally {\n loading.value = false\n opts.emit('apiAfter')\n loaded.value = true\n }\n }\n\n /** 合并前插/后追加固定项 */\n function mergeFixed(main: NormalizedOption[]): NormalizedOption[] {\n const head = normalize(opts.addData.value || [])\n const tail = normalize(opts.appendData.value || [])\n return [...head, ...main, ...tail]\n }\n\n /** 远程搜索(Select remote / AutoComplete) */\n async function remoteSearch(keyword: string, keywordKey = 'keyword') {\n if (!opts.api.value) return\n await fetchOptions({ [keywordKey]: keyword })\n }\n\n onMounted(() => {\n if (opts.active.value) {\n fetchOptions()\n } else if (opts.dataSource.value || !opts.api.value) {\n options.value = mergeFixed(normalize(opts.dataSource.value || []))\n }\n })\n\n watch(\n () => [opts.api.value, opts.dataSource.value],\n () => {\n if (opts.active.value || opts.dataSource.value) fetchOptions()\n }\n )\n\n return { options, loading, fetchOptions, remoteSearch, loaded }\n}\n"],"names":["useOptionsLoader","opts","options","shallowRef","loading","ref","loaded","normalize","list","textKey","valueKey","tipsKey","_a","item","tips","fetchOptions","extraParam","mergeFixed","param","result","request","error","main","head","tail","remoteSearch","keyword","keywordKey","onMounted","watch"],"mappings":";;AA6BO,SAASA,EAAiBC,GAAyB;AACxD,QAAMC,IAAUC,EAA+B,EAAE,GAC3CC,IAAUC,EAAI,EAAK,GAEnBC,IAASD,EAAI,EAAK;AAExB,WAASE,EAAUC,GAAiC;;AAClD,UAAMC,IAAUR,EAAK,SAAS,OACxBS,IAAWT,EAAK,UAAU,OAC1BU,MAAUC,IAAAX,EAAK,aAAL,gBAAAW,EAAe,UAAS;AACxC,YAAQJ,KAAQ,CAAA,GAAI,IAAI,CAACK,MAAS;AAChC,UAAIA,KAAQ,OAAOA,KAAS,UAAU;AACpC,cAAMC,IAAOD,EAAKF,CAAO;AACzB,eAAO;AAAA,UACL,MAAME,EAAKJ,CAAO;AAAA,UAClB,OAAOI,EAAKH,CAAQ;AAAA,UACpB,MAAMI,KAAS,OAA6B,KAAK,OAAOA,CAAI;AAAA,UAC5D,KAAKD;AAAA,QAAA;AAAA,MAET;AAEA,aAAO,EAAE,MAAM,OAAOA,CAAI,GAAG,OAAOA,GAAM,MAAM,IAAI,KAAK,EAAE,CAACJ,CAAO,GAAG,OAAOI,CAAI,GAAG,CAACH,CAAQ,GAAGG,IAAK;AAAA,IACvG,CAAC;AAAA,EACH;AAEA,iBAAeE,EAAaC,GAAkC;;AAE5D,QAAIf,EAAK,WAAW,OAAO;AACzB,MAAAC,EAAQ,QAAQe,EAAWV,EAAUN,EAAK,WAAW,KAAK,CAAC;AAC3D;AAAA,IACF;AACA,QAAI,CAACA,EAAK,IAAI,OAAO;AACnB,MAAAC,EAAQ,QAAQe,EAAW,EAAE;AAC7B;AAAA,IACF;AACA,IAAAb,EAAQ,QAAQ,IAChBH,EAAK,KAAK,aAAa,EAAE,KAAKA,EAAK,IAAI,OAAO;AAC9C,QAAI;AACF,YAAMiB,IAAQ,EAAE,GAAGjB,EAAK,SAAS,OAAO,GAAIe,KAAc,GAAC,GACrDG,IACJlB,EAAK,UAAU,UAAU,QACrB,MAAMmB,EAAQ,IAAInB,EAAK,IAAI,OAAOiB,CAAK,IACvC,MAAME,EAAQ,KAAKnB,EAAK,IAAI,OAAOiB,CAAK;AAC9C,UAAIC,EAAO,SAAS;AAClB,cAAMX,IAAO,MAAM,QAAQW,EAAO,IAAI,IAAIA,EAAO,SAAOP,IAAAO,EAAO,SAAP,gBAAAP,EAAa,SAAQ,CAAA;AAC7E,QAAAV,EAAQ,QAAQe,EAAWV,EAAUC,CAAI,CAAC,GAC1CP,EAAK,KAAK,cAAc,EAAE,MAAMkB,EAAO,MAAM;AAAA,MAC/C;AACE,QAAAlB,EAAK,KAAK,WAAW,EAAE,MAAMkB,EAAO,MAAM,SAASA,EAAO,SAAS;AAAA,IAEvE,SAASE,GAAY;AACnB,MAAApB,EAAK,KAAK,WAAW,EAAE,OAAAoB,GAAO,SAASA,KAAA,gBAAAA,EAAO,SAAS;AAAA,IACzD,UAAA;AACE,MAAAjB,EAAQ,QAAQ,IAChBH,EAAK,KAAK,UAAU,GACpBK,EAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAGA,WAASW,EAAWK,GAA8C;AAChE,UAAMC,IAAOhB,EAAUN,EAAK,QAAQ,SAAS,CAAA,CAAE,GACzCuB,IAAOjB,EAAUN,EAAK,WAAW,SAAS,CAAA,CAAE;AAClD,WAAO,CAAC,GAAGsB,GAAM,GAAGD,GAAM,GAAGE,CAAI;AAAA,EACnC;AAGA,iBAAeC,EAAaC,GAAiBC,IAAa,WAAW;AACnE,IAAK1B,EAAK,IAAI,SACd,MAAMc,EAAa,EAAE,CAACY,CAAU,GAAGD,GAAS;AAAA,EAC9C;AAEA,SAAAE,EAAU,MAAM;AACd,IAAI3B,EAAK,OAAO,QACdc,EAAA,KACSd,EAAK,WAAW,SAAS,CAACA,EAAK,IAAI,WAC5CC,EAAQ,QAAQe,EAAWV,EAAUN,EAAK,WAAW,SAAS,CAAA,CAAE,CAAC;AAAA,EAErE,CAAC,GAED4B;AAAA,IACE,MAAM,CAAC5B,EAAK,IAAI,OAAOA,EAAK,WAAW,KAAK;AAAA,IAC5C,MAAM;AACJ,OAAIA,EAAK,OAAO,SAASA,EAAK,WAAW,UAAOc,EAAA;AAAA,IAClD;AAAA,EAAA,GAGK,EAAE,SAAAb,GAAS,SAAAE,GAAS,cAAAW,GAAc,cAAAU,GAAc,QAAAnB,EAAA;AACzD;"}
1
+ {"version":3,"file":"useOptionsLoader-BUO0VTjH.mjs","sources":["../../src/components/inputs/useOptionsLoader.ts"],"sourcesContent":["/**\n * 输入选择组共享:选项自动加载(静态数组 or api)、前插/后追加固定项\n */\nimport { ref, shallowRef, onMounted, watch, type Ref } from 'vue'\nimport { request } from '../../lib/core/http'\n\nexport interface UseOptionsOptions {\n api: Ref<string>\n apiMethod: Ref<'get' | 'post'>\n apiParam: Ref<Record<string, any>>\n active: Ref<boolean>\n dataSource: Ref<any[] | undefined>\n textProp: Ref<string>\n valueProp: Ref<string>\n tipsProp?: Ref<string>\n addData: Ref<any[] | undefined>\n appendData: Ref<any[] | undefined>\n emit: (event: any, ...args: any[]) => void\n}\n\nexport interface NormalizedOption {\n text: string\n value: any\n /** 悬停提示内容(取 tipsProp 字段,无则为空字符串) */\n tips: string\n /** 原始数据(默认插槽上下文 { option }) */\n raw: Record<string, any>\n}\n\nexport function useOptionsLoader(opts: UseOptionsOptions) {\n const options = shallowRef<NormalizedOption[]>([])\n const loading = ref(false)\n /** 标记是否加载过,避免重复请求 */\n const loaded = ref(false)\n\n function normalize(list: any[]): NormalizedOption[] {\n const textKey = opts.textProp.value\n const valueKey = opts.valueProp.value\n const tipsKey = opts.tipsProp?.value || 'tips'\n return (list || []).map((item) => {\n if (item && typeof item === 'object') {\n const tips = item[tipsKey]\n return {\n text: item[textKey],\n value: item[valueKey],\n tips: tips === null || tips === undefined ? '' : String(tips),\n raw: item\n }\n }\n // 基本类型数组 [1,2,3] / ['a','b']\n return { text: String(item), value: item, tips: '', raw: { [textKey]: String(item), [valueKey]: item } }\n })\n }\n\n async function fetchOptions(extraParam?: Record<string, any>) {\n // 静态数据源\n if (opts.dataSource.value) {\n options.value = mergeFixed(normalize(opts.dataSource.value))\n return\n }\n if (!opts.api.value) {\n options.value = mergeFixed([])\n return\n }\n loading.value = true\n opts.emit('apiBefore', { url: opts.api.value })\n try {\n const param = { ...opts.apiParam.value, ...(extraParam || {}) }\n const result =\n opts.apiMethod.value === 'get'\n ? await request.get(opts.api.value, param)\n : await request.post(opts.api.value, param)\n if (result.success) {\n const list = Array.isArray(result.data) ? result.data : result.data?.list || []\n options.value = mergeFixed(normalize(list))\n opts.emit('apiSuccess', { data: result.data })\n } else {\n opts.emit('apiFail', { code: result.code, message: result.message })\n }\n } catch (error: any) {\n opts.emit('apiFail', { error, message: error?.message })\n } finally {\n loading.value = false\n opts.emit('apiAfter')\n loaded.value = true\n }\n }\n\n /** 合并前插/后追加固定项 */\n function mergeFixed(main: NormalizedOption[]): NormalizedOption[] {\n const head = normalize(opts.addData.value || [])\n const tail = normalize(opts.appendData.value || [])\n return [...head, ...main, ...tail]\n }\n\n /** 远程搜索(Select remote / AutoComplete) */\n async function remoteSearch(keyword: string, keywordKey = 'keyword') {\n if (!opts.api.value) return\n await fetchOptions({ [keywordKey]: keyword })\n }\n\n onMounted(() => {\n if (opts.active.value) {\n fetchOptions()\n } else if (opts.dataSource.value || !opts.api.value) {\n options.value = mergeFixed(normalize(opts.dataSource.value || []))\n }\n })\n\n watch(\n () => [opts.api.value, opts.dataSource.value],\n () => {\n if (opts.active.value || opts.dataSource.value) fetchOptions()\n }\n )\n\n return { options, loading, fetchOptions, remoteSearch, loaded }\n}\n"],"names":["useOptionsLoader","opts","options","shallowRef","loading","ref","loaded","normalize","list","textKey","valueKey","tipsKey","_a","item","tips","fetchOptions","extraParam","mergeFixed","param","result","request","error","main","head","tail","remoteSearch","keyword","keywordKey","onMounted","watch"],"mappings":";;AA6BO,SAASA,EAAiBC,GAAyB;AACxD,QAAMC,IAAUC,EAA+B,EAAE,GAC3CC,IAAUC,EAAI,EAAK,GAEnBC,IAASD,EAAI,EAAK;AAExB,WAASE,EAAUC,GAAiC;;AAClD,UAAMC,IAAUR,EAAK,SAAS,OACxBS,IAAWT,EAAK,UAAU,OAC1BU,MAAUC,IAAAX,EAAK,aAAL,gBAAAW,EAAe,UAAS;AACxC,YAAQJ,KAAQ,CAAA,GAAI,IAAI,CAACK,MAAS;AAChC,UAAIA,KAAQ,OAAOA,KAAS,UAAU;AACpC,cAAMC,IAAOD,EAAKF,CAAO;AACzB,eAAO;AAAA,UACL,MAAME,EAAKJ,CAAO;AAAA,UAClB,OAAOI,EAAKH,CAAQ;AAAA,UACpB,MAAMI,KAAS,OAA6B,KAAK,OAAOA,CAAI;AAAA,UAC5D,KAAKD;AAAA,QAAA;AAAA,MAET;AAEA,aAAO,EAAE,MAAM,OAAOA,CAAI,GAAG,OAAOA,GAAM,MAAM,IAAI,KAAK,EAAE,CAACJ,CAAO,GAAG,OAAOI,CAAI,GAAG,CAACH,CAAQ,GAAGG,IAAK;AAAA,IACvG,CAAC;AAAA,EACH;AAEA,iBAAeE,EAAaC,GAAkC;;AAE5D,QAAIf,EAAK,WAAW,OAAO;AACzB,MAAAC,EAAQ,QAAQe,EAAWV,EAAUN,EAAK,WAAW,KAAK,CAAC;AAC3D;AAAA,IACF;AACA,QAAI,CAACA,EAAK,IAAI,OAAO;AACnB,MAAAC,EAAQ,QAAQe,EAAW,EAAE;AAC7B;AAAA,IACF;AACA,IAAAb,EAAQ,QAAQ,IAChBH,EAAK,KAAK,aAAa,EAAE,KAAKA,EAAK,IAAI,OAAO;AAC9C,QAAI;AACF,YAAMiB,IAAQ,EAAE,GAAGjB,EAAK,SAAS,OAAO,GAAIe,KAAc,GAAC,GACrDG,IACJlB,EAAK,UAAU,UAAU,QACrB,MAAMmB,EAAQ,IAAInB,EAAK,IAAI,OAAOiB,CAAK,IACvC,MAAME,EAAQ,KAAKnB,EAAK,IAAI,OAAOiB,CAAK;AAC9C,UAAIC,EAAO,SAAS;AAClB,cAAMX,IAAO,MAAM,QAAQW,EAAO,IAAI,IAAIA,EAAO,SAAOP,IAAAO,EAAO,SAAP,gBAAAP,EAAa,SAAQ,CAAA;AAC7E,QAAAV,EAAQ,QAAQe,EAAWV,EAAUC,CAAI,CAAC,GAC1CP,EAAK,KAAK,cAAc,EAAE,MAAMkB,EAAO,MAAM;AAAA,MAC/C;AACE,QAAAlB,EAAK,KAAK,WAAW,EAAE,MAAMkB,EAAO,MAAM,SAASA,EAAO,SAAS;AAAA,IAEvE,SAASE,GAAY;AACnB,MAAApB,EAAK,KAAK,WAAW,EAAE,OAAAoB,GAAO,SAASA,KAAA,gBAAAA,EAAO,SAAS;AAAA,IACzD,UAAA;AACE,MAAAjB,EAAQ,QAAQ,IAChBH,EAAK,KAAK,UAAU,GACpBK,EAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAGA,WAASW,EAAWK,GAA8C;AAChE,UAAMC,IAAOhB,EAAUN,EAAK,QAAQ,SAAS,CAAA,CAAE,GACzCuB,IAAOjB,EAAUN,EAAK,WAAW,SAAS,CAAA,CAAE;AAClD,WAAO,CAAC,GAAGsB,GAAM,GAAGD,GAAM,GAAGE,CAAI;AAAA,EACnC;AAGA,iBAAeC,EAAaC,GAAiBC,IAAa,WAAW;AACnE,IAAK1B,EAAK,IAAI,SACd,MAAMc,EAAa,EAAE,CAACY,CAAU,GAAGD,GAAS;AAAA,EAC9C;AAEA,SAAAE,EAAU,MAAM;AACd,IAAI3B,EAAK,OAAO,QACdc,EAAA,KACSd,EAAK,WAAW,SAAS,CAACA,EAAK,IAAI,WAC5CC,EAAQ,QAAQe,EAAWV,EAAUN,EAAK,WAAW,SAAS,CAAA,CAAE,CAAC;AAAA,EAErE,CAAC,GAED4B;AAAA,IACE,MAAM,CAAC5B,EAAK,IAAI,OAAOA,EAAK,WAAW,KAAK;AAAA,IAC5C,MAAM;AACJ,OAAIA,EAAK,OAAO,SAASA,EAAK,WAAW,UAAOc,EAAA;AAAA,IAClD;AAAA,EAAA,GAGK,EAAE,SAAAb,GAAS,SAAAE,GAAS,cAAAW,GAAc,cAAAU,GAAc,QAAAnB,EAAA;AACzD;"}
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { _ as a } from "../chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs";
2
+ import { _ as a } from "../chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs";
3
3
  export {
4
4
  a as WdConfirmButton,
5
5
  a as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as r } from "../chunks/DataForm-DYMderSS.mjs";
2
+ import { W as r } from "../chunks/DataForm-Dvx6GxlR.mjs";
3
3
  export {
4
4
  r as WdDataForm,
5
5
  r as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as t } from "../chunks/DataGrid-DWAhwLVk.mjs";
2
+ import { W as t } from "../chunks/DataGrid-Cw3yXhmR.mjs";
3
3
  export {
4
4
  t as WdDataGrid,
5
5
  t as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as a } from "../chunks/EditableGrid-e3wwCaem.mjs";
2
+ import { W as a } from "../chunks/EditableGrid-Dr48XzLH.mjs";
3
3
  export {
4
4
  a as WdEditableGrid,
5
5
  a as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as m } from "../chunks/Iframe-DcFFi0S9.mjs";
2
+ import { W as m } from "../chunks/Iframe-BB1Va2kZ.mjs";
3
3
  export {
4
4
  m as WdIframe,
5
5
  m as default
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { W as m } from "../chunks/ImageUpload-BK7tbU2o.mjs";
2
+ import { W as m } from "../chunks/ImageUpload-DiJ16Aga.mjs";
3
3
  export {
4
4
  m as WdImageUpload,
5
5
  m as default
package/dist/index.esm.js CHANGED
@@ -1,44 +1,44 @@
1
1
  /* empty css */
2
- import { i as G } from "./chunks/config-B6nWG5dv.mjs";
3
- import { S as we, d as Ce, g as ve, a as Pe, b as De, l as Re, m as Te, r as Ae, s as $e } from "./chunks/config-B6nWG5dv.mjs";
2
+ import { i as G } from "./chunks/config-CDqjABpD.mjs";
3
+ import { S as we, d as Ce, g as ve, a as Pe, b as De, l as Re, m as Te, r as Ae, s as $e } from "./chunks/config-CDqjABpD.mjs";
4
4
  import { W as k } from "./chunks/Guide-AWaWvQoq.mjs";
5
- import { W as E } from "./chunks/DataGrid-DWAhwLVk.mjs";
6
- import { W as j } from "./chunks/EditableGrid-e3wwCaem.mjs";
7
- import { W as q } from "./chunks/Viewer-FSV6xObc.mjs";
8
- import { W as I } from "./chunks/DataForm-DYMderSS.mjs";
5
+ import { W as E } from "./chunks/DataGrid-Cw3yXhmR.mjs";
6
+ import { W as j } from "./chunks/EditableGrid-Dr48XzLH.mjs";
7
+ import { W as q } from "./chunks/Viewer-CmTaneb6.mjs";
8
+ import { W as I } from "./chunks/DataForm-Dvx6GxlR.mjs";
9
9
  import { W as L } from "./chunks/SearchPanel-DPlWWuXb.mjs";
10
10
  import { W as _ } from "./chunks/FormItem-C1q0opnk.mjs";
11
11
  import { W as N } from "./chunks/SearchItem-pFO57lEO.mjs";
12
- import { _ as M } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs";
13
- import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs";
12
+ import { _ as M } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs";
13
+ import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs";
14
14
  import { _ as V } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs";
15
15
  import { defineComponent as U, ref as A, resolveComponent as S, openBlock as P, createElementBlock as H, Fragment as z, createVNode as D, mergeProps as K, unref as J, withCtx as Q, renderSlot as X, createTextVNode as Y, toDisplayString as Z, createBlock as tt, createCommentVNode as et, shallowRef as R, onUnmounted as $, isReactive as ot, reactive as rt } from "vue";
16
- import { u as nt } from "./chunks/useApiAction-71XPKjlQ.mjs";
16
+ import { u as nt } from "./chunks/useApiAction-CQVmN1MH.mjs";
17
17
  import { t as at, b as it, a as st, h as ft, f as lt } from "./chunks/props-DAytpx7D.mjs";
18
- import { _ as ct } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs";
18
+ import { _ as ct } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs";
19
19
  import { _ as ut } from "./chunks/RouteButton.vue_vue_type_script_setup_true_lang-Da0D3tKA.mjs";
20
20
  import { _ as pt } from "./chunks/TipsButton.vue_vue_type_script_setup_true_lang-DvcpRSV1.mjs";
21
21
  import { _ as mt } from "./chunks/DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs";
22
22
  import { W as dt } from "./chunks/Drawer-BzdohcBg.mjs";
23
- import { W as gt } from "./chunks/Iframe-DcFFi0S9.mjs";
24
- import { W as Wt } from "./chunks/Select-MD3taMJo.mjs";
25
- import { W as ht } from "./chunks/AutoComplete-DqyhsqiS.mjs";
26
- import { W as bt } from "./chunks/CheckboxList-RxJGe-LQ.mjs";
27
- import { W as yt } from "./chunks/RadioList-DuEeHumw.mjs";
28
- import { _ as Bt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs";
29
- import { _ as St } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs";
30
- import { W as wt } from "./chunks/ImageUpload-BK7tbU2o.mjs";
23
+ import { W as gt } from "./chunks/Iframe-BB1Va2kZ.mjs";
24
+ import { W as Wt } from "./chunks/Select-ByH7uxuS.mjs";
25
+ import { W as ht } from "./chunks/AutoComplete-BKWrR5pD.mjs";
26
+ import { W as bt } from "./chunks/CheckboxList-5o9E0Tzg.mjs";
27
+ import { W as yt } from "./chunks/RadioList-CQJDixnr.mjs";
28
+ import { _ as Bt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs";
29
+ import { _ as St } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs";
30
+ import { W as wt } from "./chunks/ImageUpload-DiJ16Aga.mjs";
31
31
  import { W as Ct } from "./chunks/Panel-BHqAeBaH.mjs";
32
32
  import { W as vt } from "./chunks/Path-pIP0JQ0c.mjs";
33
33
  import { W as Pt } from "./chunks/Tips-B_18E4mc.mjs";
34
- import { W as Dt } from "./chunks/Station-2m9uznh3.mjs";
35
- import { _ as Rt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs";
36
- import { r as T } from "./chunks/http-BKKP0gEJ.mjs";
37
- import { R as Oe } from "./chunks/http-BKKP0gEJ.mjs";
34
+ import { W as Dt } from "./chunks/Station-DDoJem4F.mjs";
35
+ import { _ as Rt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs";
36
+ import { r as T } from "./chunks/http-CW9konD4.mjs";
37
+ import { R as Oe } from "./chunks/http-CW9konD4.mjs";
38
38
  import { c as ke, g as Ee, r as je, a as qe, b as Ie, s as Le } from "./chunks/linkage-FbL1mcz3.mjs";
39
39
  import { g as Ne, n as Me, r as Fe, a as Ve, s as Ue, b as He } from "./chunks/station-linkage-D54-_iyL.mjs";
40
- import { u as Ke } from "./chunks/useColumnSettings-CbiWd27-.mjs";
41
- import { u as Qe, a as Xe } from "./chunks/useConfig-CPioiLWJ.mjs";
40
+ import { u as Ke } from "./chunks/useColumnSettings-CIFQCmzT.mjs";
41
+ import { u as Qe, a as Xe } from "./chunks/useConfig-ChIkE3Lz.mjs";
42
42
  const Tt = /* @__PURE__ */ U({
43
43
  name: "WdPopconfirmButton",
44
44
  inheritAttrs: !1,