liyu-pc-base 1.0.916 → 1.0.921

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 (39) hide show
  1. package/dist/{FieldRender-DUylkdFU.js → FieldRender-BOg7nm5z.js} +3 -3
  2. package/dist/{FieldRender-DUylkdFU.js.map → FieldRender-BOg7nm5z.js.map} +1 -1
  3. package/dist/{FieldRender2-ni4dCoWb.js → FieldRender2-_MtcDkI5.js} +7 -7
  4. package/dist/{FieldRender2-ni4dCoWb.js.map → FieldRender2-_MtcDkI5.js.map} +1 -1
  5. package/dist/{FormRender3-D8g1u8XE.js → FormRender3-BtY9d91e.js} +3 -3
  6. package/dist/{FormRender3-D8g1u8XE.js.map → FormRender3-BtY9d91e.js.map} +1 -1
  7. package/dist/{RemoteModal-Bcj3dfNQ.js → RemoteModal-Dqy32RFN.js} +1 -1
  8. package/dist/{RemoteModal-Bcj3dfNQ.js.map → RemoteModal-Dqy32RFN.js.map} +1 -1
  9. package/dist/{RemoteSelectPro-DzCL3v2d.js → RemoteSelectPro-CcWTS4f6.js} +2 -2
  10. package/dist/{RemoteSelectPro-DzCL3v2d.js.map → RemoteSelectPro-CcWTS4f6.js.map} +1 -1
  11. package/dist/{RemoteTable-Wk-bmeCF.js → RemoteTable-D_12PvNS.js} +2 -2
  12. package/dist/{RemoteTable-Wk-bmeCF.js.map → RemoteTable-D_12PvNS.js.map} +1 -1
  13. package/dist/{RemoteTreeSelectPro-D2RSKzFr.js → RemoteTreeSelectPro-CXMOariR.js} +1 -1
  14. package/dist/{RemoteTreeSelectPro-D2RSKzFr.js.map → RemoteTreeSelectPro-CXMOariR.js.map} +1 -1
  15. package/dist/{SearchRender-IBjoONHu.js → SearchRender-ByarFel1.js} +1 -1
  16. package/dist/{SearchRender-IBjoONHu.js.map → SearchRender-ByarFel1.js.map} +1 -1
  17. package/dist/{TinymceEditor-BLPIZIaP.js → TinymceEditor-waI-dlC5.js} +3 -3
  18. package/dist/{TinymceEditor-BLPIZIaP.js.map → TinymceEditor-waI-dlC5.js.map} +1 -1
  19. package/dist/components/index.js +11 -11
  20. package/dist/{dbViewConfig-BauCY_B2.js → dbViewConfig-RGSyUx3F.js} +2 -2
  21. package/dist/{dbViewConfig-BauCY_B2.js.map → dbViewConfig-RGSyUx3F.js.map} +1 -1
  22. package/dist/{detailTablePro-CmhEujKb.js → detailTablePro-CqcVbn8O.js} +1 -1
  23. package/dist/{detailTablePro-CmhEujKb.js.map → detailTablePro-CqcVbn8O.js.map} +1 -1
  24. package/dist/{function-DQjzcDkk.js → function-BhYSb8ls.js} +96 -88
  25. package/dist/function-BhYSb8ls.js.map +1 -0
  26. package/dist/index.js +1 -1
  27. package/dist/liyu-pc-base.css +1 -1
  28. package/dist/{tableModal-Cjjw_VUe.js → tableModal-DSKuV-hn.js} +1 -1
  29. package/dist/{tableModal-Cjjw_VUe.js.map → tableModal-DSKuV-hn.js.map} +1 -1
  30. package/dist/{tablePageHost-LnRX1FVx.js → tablePageHost-B_BOlBNA.js} +8416 -7870
  31. package/dist/tablePageHost-B_BOlBNA.js.map +1 -0
  32. package/dist/{tablePro-CerNGQgL.js → tablePro-IAcxxAGI.js} +17 -17
  33. package/dist/tablePro-IAcxxAGI.js.map +1 -0
  34. package/dist/utils/function.js +1 -1
  35. package/dist/utils/hooks/useFetchData.js +1 -1
  36. package/package.json +1 -1
  37. package/dist/function-DQjzcDkk.js.map +0 -1
  38. package/dist/tablePageHost-LnRX1FVx.js.map +0 -1
  39. package/dist/tablePro-CerNGQgL.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
2
- import { t } from "./tablePageHost-LnRX1FVx.js";
2
+ import { t } from "./tablePageHost-B_BOlBNA.js";
3
3
  import { computed as n, createBlock as r, createElementBlock as i, defineComponent as a, openBlock as o, resolveComponent as s } from "vue";
4
4
  //#region src/components/detailTablePro/detailTablePro.vue?vue&type=script&setup=true&lang.ts
5
5
  var c = { class: "detail-table-pro" }, l = /*#__PURE__*/ e(/* @__PURE__ */ a({
@@ -1 +1 @@
1
- {"version":3,"file":"detailTablePro-CmhEujKb.js","names":[],"sources":["../src/components/detailTablePro/detailTablePro.vue","../src/components/detailTablePro/detailTablePro.vue"],"sourcesContent":["<template>\n <div class=\"detail-table-pro\">\n <a-empty\n v-if=\"!hasConditionValue\"\n class=\"dtp-center\"\n :description=\"emptyDescription\"\n />\n <tablePageHost\n v-else\n class=\"dtp-host\"\n :app_flag=\"app_flag\"\n :modalType=\"extra.modalType\"\n :inject_conditions=\"conditions\"\n :inherit_route_params=\"false\"\n :use_store=\"false\"\n :enable_ai_abilities=\"false\"\n :enable_hash_sync=\"false\"\n :enable_btn_add=\"!!extra.enable_btn_add\"\n :enable_view_panel=\"!!extra.enable_view_panel\"\n :view_key_namespace=\"extra.view_key_namespace || 'detail-remotePagesV2'\"\n :title_inject=\"extra.title || ''\"\n :setting_drawer_width=\"extra.setting_drawer_width || 800\"\n :enable_pagination=\"paginationOverride\"\n :enable_advanced_search_multigroups=\"!!extra.enable_advanced_search_multigroups\"\n :hide_header=\"hideHeaderOverride\"\n :search_display_type=\"extra.search_display_type || 'hide_and_show_summary'\"\n :inject_form_defaults=\"formDefaults\"\n :depth=\"depth ?? 1\"\n :listen_global_show_detail=\"false\"\n :max_depth=\"nestedMaxDepth\"\n ></tablePageHost>\n </div>\n</template>\n<script setup lang=\"ts\">\n// 通用一对多详情表:按 extra.modalType 复用 remotePages 的页面配置,\n// 用 extra.filter_list 把当前行 record 的值转成目标表的 conditions 预过滤。\n// 壳逻辑(配置拉取/总线/详情抽屉/视图模式)全部由 tablePageHost.vue 提供,本组件只做:\n// 1) extra 解析;\n// 2) 过滤条件构建 + 空值闸门(取不到关联值时展示空态、不挂载表格、不发请求);\n// 3) 嵌套参数收敛(depth 由上层 Host 的详情渲染传入,恒不听全局总线、不写 hash、不注册 AI 能力)。\nimport { computed } from 'vue';\nimport tablePageHost from '../remotePages/v2/tablePageHost.vue';\nimport type { DetailTableProExtra } from '../remotePages/typing.js';\n\ninterface Props {\n cmpObj?: any; // 上层 Host 透传:{ record }(或含 column 等的单元格 cmpObj)\n extra?: DetailTableProExtra;\n depth?: number; // 嵌套层级:上层 Host 抽屉渲染时传 depth+1\n}\nconst props = withDefaults(defineProps<Props>(), {\n cmpObj: null,\n extra: null,\n depth: undefined,\n});\n\nconst app_flag = computed(() => (props.extra?.modalType || '').split('-')[0] || '');\n// modalType 约定 `${app_flag}-${model_name}`,与 getUrl / obtain_<model>_column_data 同规则\n\n// ---- 过滤条件构建 + 空值闸门 ----\nconst emptyDescription = computed(() => {\n const filter_list = props.extra?.filter_list || [];\n if (!props.extra?.modalType) {\n return '未配置目标表 modalType,请检查详情配置';\n }\n if (!filter_list.length) {\n return '未配置过滤条件对应关系,请检查详情配置';\n }\n return '缺少关联字段值,无法加载关联数据';\n});\n\n// 把 filter_list 转成 advanced 条件条目(field_name/operator/value/format/class_name)。\n// fixed_value 优先(固定字面值,不依赖源行);否则取 record[source_field]。\nconst conditions = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!filter_list.length) {\n return [];\n }\n const res: any[] = [];\n filter_list.forEach(item => {\n let value: any;\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n value = coerceFixedValue(item.fixed_value);\n } else if (record) {\n value = record[item.source_field];\n }\n // 空值闸门:取不到值的条件直接丢弃;全部取不到时由 hasConditionValue 拦截(防退化为全表查询)\n if (value === undefined || value === null || value === '') {\n return;\n }\n res.push({\n field_name: item.target_field,\n operator: item.operator || 'eq',\n value: Array.isArray(value) ? value : [value],\n format: item.format || 'input',\n class_name: item.class_name || 'str',\n });\n });\n return res;\n});\nconst hasConditionValue = computed(() => conditions.value.length > 0);\n\n// 「新建」预置外键:把 filter_list 中按源行取值的项(target_field = record[source_field])\n// 作为目标表「新建」表单的初始值,实现「在此主表下新建子表数据」;固定值条件不参与预置\nconst formDefaults = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!record) {\n return {};\n }\n const res: Record<string, any> = {};\n filter_list.forEach(item => {\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n return;\n }\n const value = record[item.source_field];\n if (value === undefined || value === null || value === '') {\n return;\n }\n res[item.target_field] = value;\n });\n return res;\n});\n\n// 配置界面落库的是字符串,这里按「true/false→布尔、纯数字→数值、其余→字符串」推测固定值类型\nconst coerceFixedValue = (raw: any) => {\n if (typeof raw !== 'string') {\n return raw;\n }\n const text = raw.trim();\n if (text === 'true') return true;\n if (text === 'false') return false;\n if (text !== '' && !isNaN(Number(text))) return Number(text);\n return raw;\n};\n\n// enable_nested_detail=false 时把 max_depth 压到本层(depth+1 > 1 ⇒ 更深层被拦截)\nconst nestedMaxDepth = computed(() => {\n if (props.extra?.enable_nested_detail === false) {\n return 1;\n }\n return props.extra?.max_depth ?? 2;\n});\n\n// 分页覆盖:extra.enable_pagination 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面)\nconst paginationOverride = computed(() =>\n typeof props.extra?.enable_pagination === 'boolean' ? props.extra.enable_pagination : undefined,\n);\n\n// 表头隐藏覆盖:extra.hide_header 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面,默认不隐藏)\nconst hideHeaderOverride = computed(() =>\n typeof props.extra?.hide_header === 'boolean' ? props.extra.hide_header : undefined,\n);\n</script>\n<style scoped lang=\"less\">\n.detail-table-pro {\n height: 100%;\n overflow: hidden;\n}\n.dtp-center {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 24px 0;\n}\n.dtp-host {\n height: 100%;\n}\n</style>\n","<template>\n <div class=\"detail-table-pro\">\n <a-empty\n v-if=\"!hasConditionValue\"\n class=\"dtp-center\"\n :description=\"emptyDescription\"\n />\n <tablePageHost\n v-else\n class=\"dtp-host\"\n :app_flag=\"app_flag\"\n :modalType=\"extra.modalType\"\n :inject_conditions=\"conditions\"\n :inherit_route_params=\"false\"\n :use_store=\"false\"\n :enable_ai_abilities=\"false\"\n :enable_hash_sync=\"false\"\n :enable_btn_add=\"!!extra.enable_btn_add\"\n :enable_view_panel=\"!!extra.enable_view_panel\"\n :view_key_namespace=\"extra.view_key_namespace || 'detail-remotePagesV2'\"\n :title_inject=\"extra.title || ''\"\n :setting_drawer_width=\"extra.setting_drawer_width || 800\"\n :enable_pagination=\"paginationOverride\"\n :enable_advanced_search_multigroups=\"!!extra.enable_advanced_search_multigroups\"\n :hide_header=\"hideHeaderOverride\"\n :search_display_type=\"extra.search_display_type || 'hide_and_show_summary'\"\n :inject_form_defaults=\"formDefaults\"\n :depth=\"depth ?? 1\"\n :listen_global_show_detail=\"false\"\n :max_depth=\"nestedMaxDepth\"\n ></tablePageHost>\n </div>\n</template>\n<script setup lang=\"ts\">\n// 通用一对多详情表:按 extra.modalType 复用 remotePages 的页面配置,\n// 用 extra.filter_list 把当前行 record 的值转成目标表的 conditions 预过滤。\n// 壳逻辑(配置拉取/总线/详情抽屉/视图模式)全部由 tablePageHost.vue 提供,本组件只做:\n// 1) extra 解析;\n// 2) 过滤条件构建 + 空值闸门(取不到关联值时展示空态、不挂载表格、不发请求);\n// 3) 嵌套参数收敛(depth 由上层 Host 的详情渲染传入,恒不听全局总线、不写 hash、不注册 AI 能力)。\nimport { computed } from 'vue';\nimport tablePageHost from '../remotePages/v2/tablePageHost.vue';\nimport type { DetailTableProExtra } from '../remotePages/typing.js';\n\ninterface Props {\n cmpObj?: any; // 上层 Host 透传:{ record }(或含 column 等的单元格 cmpObj)\n extra?: DetailTableProExtra;\n depth?: number; // 嵌套层级:上层 Host 抽屉渲染时传 depth+1\n}\nconst props = withDefaults(defineProps<Props>(), {\n cmpObj: null,\n extra: null,\n depth: undefined,\n});\n\nconst app_flag = computed(() => (props.extra?.modalType || '').split('-')[0] || '');\n// modalType 约定 `${app_flag}-${model_name}`,与 getUrl / obtain_<model>_column_data 同规则\n\n// ---- 过滤条件构建 + 空值闸门 ----\nconst emptyDescription = computed(() => {\n const filter_list = props.extra?.filter_list || [];\n if (!props.extra?.modalType) {\n return '未配置目标表 modalType,请检查详情配置';\n }\n if (!filter_list.length) {\n return '未配置过滤条件对应关系,请检查详情配置';\n }\n return '缺少关联字段值,无法加载关联数据';\n});\n\n// 把 filter_list 转成 advanced 条件条目(field_name/operator/value/format/class_name)。\n// fixed_value 优先(固定字面值,不依赖源行);否则取 record[source_field]。\nconst conditions = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!filter_list.length) {\n return [];\n }\n const res: any[] = [];\n filter_list.forEach(item => {\n let value: any;\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n value = coerceFixedValue(item.fixed_value);\n } else if (record) {\n value = record[item.source_field];\n }\n // 空值闸门:取不到值的条件直接丢弃;全部取不到时由 hasConditionValue 拦截(防退化为全表查询)\n if (value === undefined || value === null || value === '') {\n return;\n }\n res.push({\n field_name: item.target_field,\n operator: item.operator || 'eq',\n value: Array.isArray(value) ? value : [value],\n format: item.format || 'input',\n class_name: item.class_name || 'str',\n });\n });\n return res;\n});\nconst hasConditionValue = computed(() => conditions.value.length > 0);\n\n// 「新建」预置外键:把 filter_list 中按源行取值的项(target_field = record[source_field])\n// 作为目标表「新建」表单的初始值,实现「在此主表下新建子表数据」;固定值条件不参与预置\nconst formDefaults = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!record) {\n return {};\n }\n const res: Record<string, any> = {};\n filter_list.forEach(item => {\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n return;\n }\n const value = record[item.source_field];\n if (value === undefined || value === null || value === '') {\n return;\n }\n res[item.target_field] = value;\n });\n return res;\n});\n\n// 配置界面落库的是字符串,这里按「true/false→布尔、纯数字→数值、其余→字符串」推测固定值类型\nconst coerceFixedValue = (raw: any) => {\n if (typeof raw !== 'string') {\n return raw;\n }\n const text = raw.trim();\n if (text === 'true') return true;\n if (text === 'false') return false;\n if (text !== '' && !isNaN(Number(text))) return Number(text);\n return raw;\n};\n\n// enable_nested_detail=false 时把 max_depth 压到本层(depth+1 > 1 ⇒ 更深层被拦截)\nconst nestedMaxDepth = computed(() => {\n if (props.extra?.enable_nested_detail === false) {\n return 1;\n }\n return props.extra?.max_depth ?? 2;\n});\n\n// 分页覆盖:extra.enable_pagination 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面)\nconst paginationOverride = computed(() =>\n typeof props.extra?.enable_pagination === 'boolean' ? props.extra.enable_pagination : undefined,\n);\n\n// 表头隐藏覆盖:extra.hide_header 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面,默认不隐藏)\nconst hideHeaderOverride = computed(() =>\n typeof props.extra?.hide_header === 'boolean' ? props.extra.hide_header : undefined,\n);\n</script>\n<style scoped lang=\"less\">\n.detail-table-pro {\n height: 100%;\n overflow: hidden;\n}\n.dtp-center {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 24px 0;\n}\n.dtp-host {\n height: 100%;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAiDA,IAAM,IAAQ,GAMR,IAAW,SAAgB,EAAM,OAAO,aAAa,GAAA,CAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,GAI5E,IAAmB,QAAe;GACtC,IAAM,IAAc,EAAM,OAAO,eAAe,CAAC;GAOjD,OANK,EAAM,OAAO,YAGb,EAAY,SAGV,qBAFE,wBAHA;EAMX,CAAC,GAIK,IAAa,QAAe;GAChC,IAAM,IAAS,EAAM,QAAQ,QACvB,IAAc,EAAM,OAAO,eAAe,CAAC;GACjD,IAAI,CAAC,EAAY,QACf,OAAO,CAAC;GAEV,IAAM,IAAa,CAAC;GAoBpB,OAnBA,EAAY,SAAQ,MAAQ;IAC1B,IAAI;IACJ,AAAI,EAAK,gBAAgB,KAAA,KAAa,EAAK,gBAAgB,QAAQ,EAAK,gBAAgB,KACtF,IAAQ,EAAiB,EAAK,WAAW,IAChC,MACT,IAAQ,EAAO,EAAK,gBAGlB,OAAiC,QAAQ,MAAU,OAGvD,EAAI,KAAK;KACP,YAAY,EAAK;KACjB,UAAU,EAAK,YAAY;KAC3B,OAAO,MAAM,QAAQ,CAAK,IAAI,IAAQ,CAAC,CAAK;KAC5C,QAAQ,EAAK,UAAU;KACvB,YAAY,EAAK,cAAc;IACjC,CAAC;GACH,CAAC,GACM;EACT,CAAC,GACK,IAAoB,QAAe,EAAW,MAAM,SAAS,CAAC,GAI9D,IAAe,QAAe;GAClC,IAAM,IAAS,EAAM,QAAQ,QACvB,IAAc,EAAM,OAAO,eAAe,CAAC;GACjD,IAAI,CAAC,GACH,OAAO,CAAC;GAEV,IAAM,IAA2B,CAAC;GAWlC,OAVA,EAAY,SAAQ,MAAQ;IAC1B,IAAI,EAAK,gBAAgB,KAAA,KAAa,EAAK,gBAAgB,QAAQ,EAAK,gBAAgB,IACtF;IAEF,IAAM,IAAQ,EAAO,EAAK;IACtB,KAAiC,QAAQ,MAAU,OAGvD,EAAI,EAAK,gBAAgB;GAC3B,CAAC,GACM;EACT,CAAC,GAGK,KAAoB,MAAa;GACrC,IAAI,OAAO,KAAQ,UACjB,OAAO;GAET,IAAM,IAAO,EAAI,KAAK;GAItB,OAHI,MAAS,SAAe,KACxB,MAAS,UAAgB,KACzB,MAAS,MAAM,CAAC,MAAM,OAAO,CAAI,CAAC,IAAU,OAAO,CAAI,IACpD;EACT,GAGM,IAAiB,QACjB,EAAM,OAAO,yBAAyB,KACjC,IAEF,EAAM,OAAO,aAAa,CAClC,GAGK,IAAqB,QACzB,OAAO,EAAM,OAAO,qBAAsB,YAAY,EAAM,MAAM,oBAAoB,KAAA,CACxF,GAGM,IAAqB,QACzB,OAAO,EAAM,OAAO,eAAgB,YAAY,EAAM,MAAM,cAAc,KAAA,CAC5E"}
1
+ {"version":3,"file":"detailTablePro-CqcVbn8O.js","names":[],"sources":["../src/components/detailTablePro/detailTablePro.vue","../src/components/detailTablePro/detailTablePro.vue"],"sourcesContent":["<template>\n <div class=\"detail-table-pro\">\n <a-empty\n v-if=\"!hasConditionValue\"\n class=\"dtp-center\"\n :description=\"emptyDescription\"\n />\n <tablePageHost\n v-else\n class=\"dtp-host\"\n :app_flag=\"app_flag\"\n :modalType=\"extra.modalType\"\n :inject_conditions=\"conditions\"\n :inherit_route_params=\"false\"\n :use_store=\"false\"\n :enable_ai_abilities=\"false\"\n :enable_hash_sync=\"false\"\n :enable_btn_add=\"!!extra.enable_btn_add\"\n :enable_view_panel=\"!!extra.enable_view_panel\"\n :view_key_namespace=\"extra.view_key_namespace || 'detail-remotePagesV2'\"\n :title_inject=\"extra.title || ''\"\n :setting_drawer_width=\"extra.setting_drawer_width || 800\"\n :enable_pagination=\"paginationOverride\"\n :enable_advanced_search_multigroups=\"!!extra.enable_advanced_search_multigroups\"\n :hide_header=\"hideHeaderOverride\"\n :search_display_type=\"extra.search_display_type || 'hide_and_show_summary'\"\n :inject_form_defaults=\"formDefaults\"\n :depth=\"depth ?? 1\"\n :listen_global_show_detail=\"false\"\n :max_depth=\"nestedMaxDepth\"\n ></tablePageHost>\n </div>\n</template>\n<script setup lang=\"ts\">\n// 通用一对多详情表:按 extra.modalType 复用 remotePages 的页面配置,\n// 用 extra.filter_list 把当前行 record 的值转成目标表的 conditions 预过滤。\n// 壳逻辑(配置拉取/总线/详情抽屉/视图模式)全部由 tablePageHost.vue 提供,本组件只做:\n// 1) extra 解析;\n// 2) 过滤条件构建 + 空值闸门(取不到关联值时展示空态、不挂载表格、不发请求);\n// 3) 嵌套参数收敛(depth 由上层 Host 的详情渲染传入,恒不听全局总线、不写 hash、不注册 AI 能力)。\nimport { computed } from 'vue';\nimport tablePageHost from '../remotePages/v2/tablePageHost.vue';\nimport type { DetailTableProExtra } from '../remotePages/typing.js';\n\ninterface Props {\n cmpObj?: any; // 上层 Host 透传:{ record }(或含 column 等的单元格 cmpObj)\n extra?: DetailTableProExtra;\n depth?: number; // 嵌套层级:上层 Host 抽屉渲染时传 depth+1\n}\nconst props = withDefaults(defineProps<Props>(), {\n cmpObj: null,\n extra: null,\n depth: undefined,\n});\n\nconst app_flag = computed(() => (props.extra?.modalType || '').split('-')[0] || '');\n// modalType 约定 `${app_flag}-${model_name}`,与 getUrl / obtain_<model>_column_data 同规则\n\n// ---- 过滤条件构建 + 空值闸门 ----\nconst emptyDescription = computed(() => {\n const filter_list = props.extra?.filter_list || [];\n if (!props.extra?.modalType) {\n return '未配置目标表 modalType,请检查详情配置';\n }\n if (!filter_list.length) {\n return '未配置过滤条件对应关系,请检查详情配置';\n }\n return '缺少关联字段值,无法加载关联数据';\n});\n\n// 把 filter_list 转成 advanced 条件条目(field_name/operator/value/format/class_name)。\n// fixed_value 优先(固定字面值,不依赖源行);否则取 record[source_field]。\nconst conditions = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!filter_list.length) {\n return [];\n }\n const res: any[] = [];\n filter_list.forEach(item => {\n let value: any;\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n value = coerceFixedValue(item.fixed_value);\n } else if (record) {\n value = record[item.source_field];\n }\n // 空值闸门:取不到值的条件直接丢弃;全部取不到时由 hasConditionValue 拦截(防退化为全表查询)\n if (value === undefined || value === null || value === '') {\n return;\n }\n res.push({\n field_name: item.target_field,\n operator: item.operator || 'eq',\n value: Array.isArray(value) ? value : [value],\n format: item.format || 'input',\n class_name: item.class_name || 'str',\n });\n });\n return res;\n});\nconst hasConditionValue = computed(() => conditions.value.length > 0);\n\n// 「新建」预置外键:把 filter_list 中按源行取值的项(target_field = record[source_field])\n// 作为目标表「新建」表单的初始值,实现「在此主表下新建子表数据」;固定值条件不参与预置\nconst formDefaults = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!record) {\n return {};\n }\n const res: Record<string, any> = {};\n filter_list.forEach(item => {\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n return;\n }\n const value = record[item.source_field];\n if (value === undefined || value === null || value === '') {\n return;\n }\n res[item.target_field] = value;\n });\n return res;\n});\n\n// 配置界面落库的是字符串,这里按「true/false→布尔、纯数字→数值、其余→字符串」推测固定值类型\nconst coerceFixedValue = (raw: any) => {\n if (typeof raw !== 'string') {\n return raw;\n }\n const text = raw.trim();\n if (text === 'true') return true;\n if (text === 'false') return false;\n if (text !== '' && !isNaN(Number(text))) return Number(text);\n return raw;\n};\n\n// enable_nested_detail=false 时把 max_depth 压到本层(depth+1 > 1 ⇒ 更深层被拦截)\nconst nestedMaxDepth = computed(() => {\n if (props.extra?.enable_nested_detail === false) {\n return 1;\n }\n return props.extra?.max_depth ?? 2;\n});\n\n// 分页覆盖:extra.enable_pagination 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面)\nconst paginationOverride = computed(() =>\n typeof props.extra?.enable_pagination === 'boolean' ? props.extra.enable_pagination : undefined,\n);\n\n// 表头隐藏覆盖:extra.hide_header 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面,默认不隐藏)\nconst hideHeaderOverride = computed(() =>\n typeof props.extra?.hide_header === 'boolean' ? props.extra.hide_header : undefined,\n);\n</script>\n<style scoped lang=\"less\">\n.detail-table-pro {\n height: 100%;\n overflow: hidden;\n}\n.dtp-center {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 24px 0;\n}\n.dtp-host {\n height: 100%;\n}\n</style>\n","<template>\n <div class=\"detail-table-pro\">\n <a-empty\n v-if=\"!hasConditionValue\"\n class=\"dtp-center\"\n :description=\"emptyDescription\"\n />\n <tablePageHost\n v-else\n class=\"dtp-host\"\n :app_flag=\"app_flag\"\n :modalType=\"extra.modalType\"\n :inject_conditions=\"conditions\"\n :inherit_route_params=\"false\"\n :use_store=\"false\"\n :enable_ai_abilities=\"false\"\n :enable_hash_sync=\"false\"\n :enable_btn_add=\"!!extra.enable_btn_add\"\n :enable_view_panel=\"!!extra.enable_view_panel\"\n :view_key_namespace=\"extra.view_key_namespace || 'detail-remotePagesV2'\"\n :title_inject=\"extra.title || ''\"\n :setting_drawer_width=\"extra.setting_drawer_width || 800\"\n :enable_pagination=\"paginationOverride\"\n :enable_advanced_search_multigroups=\"!!extra.enable_advanced_search_multigroups\"\n :hide_header=\"hideHeaderOverride\"\n :search_display_type=\"extra.search_display_type || 'hide_and_show_summary'\"\n :inject_form_defaults=\"formDefaults\"\n :depth=\"depth ?? 1\"\n :listen_global_show_detail=\"false\"\n :max_depth=\"nestedMaxDepth\"\n ></tablePageHost>\n </div>\n</template>\n<script setup lang=\"ts\">\n// 通用一对多详情表:按 extra.modalType 复用 remotePages 的页面配置,\n// 用 extra.filter_list 把当前行 record 的值转成目标表的 conditions 预过滤。\n// 壳逻辑(配置拉取/总线/详情抽屉/视图模式)全部由 tablePageHost.vue 提供,本组件只做:\n// 1) extra 解析;\n// 2) 过滤条件构建 + 空值闸门(取不到关联值时展示空态、不挂载表格、不发请求);\n// 3) 嵌套参数收敛(depth 由上层 Host 的详情渲染传入,恒不听全局总线、不写 hash、不注册 AI 能力)。\nimport { computed } from 'vue';\nimport tablePageHost from '../remotePages/v2/tablePageHost.vue';\nimport type { DetailTableProExtra } from '../remotePages/typing.js';\n\ninterface Props {\n cmpObj?: any; // 上层 Host 透传:{ record }(或含 column 等的单元格 cmpObj)\n extra?: DetailTableProExtra;\n depth?: number; // 嵌套层级:上层 Host 抽屉渲染时传 depth+1\n}\nconst props = withDefaults(defineProps<Props>(), {\n cmpObj: null,\n extra: null,\n depth: undefined,\n});\n\nconst app_flag = computed(() => (props.extra?.modalType || '').split('-')[0] || '');\n// modalType 约定 `${app_flag}-${model_name}`,与 getUrl / obtain_<model>_column_data 同规则\n\n// ---- 过滤条件构建 + 空值闸门 ----\nconst emptyDescription = computed(() => {\n const filter_list = props.extra?.filter_list || [];\n if (!props.extra?.modalType) {\n return '未配置目标表 modalType,请检查详情配置';\n }\n if (!filter_list.length) {\n return '未配置过滤条件对应关系,请检查详情配置';\n }\n return '缺少关联字段值,无法加载关联数据';\n});\n\n// 把 filter_list 转成 advanced 条件条目(field_name/operator/value/format/class_name)。\n// fixed_value 优先(固定字面值,不依赖源行);否则取 record[source_field]。\nconst conditions = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!filter_list.length) {\n return [];\n }\n const res: any[] = [];\n filter_list.forEach(item => {\n let value: any;\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n value = coerceFixedValue(item.fixed_value);\n } else if (record) {\n value = record[item.source_field];\n }\n // 空值闸门:取不到值的条件直接丢弃;全部取不到时由 hasConditionValue 拦截(防退化为全表查询)\n if (value === undefined || value === null || value === '') {\n return;\n }\n res.push({\n field_name: item.target_field,\n operator: item.operator || 'eq',\n value: Array.isArray(value) ? value : [value],\n format: item.format || 'input',\n class_name: item.class_name || 'str',\n });\n });\n return res;\n});\nconst hasConditionValue = computed(() => conditions.value.length > 0);\n\n// 「新建」预置外键:把 filter_list 中按源行取值的项(target_field = record[source_field])\n// 作为目标表「新建」表单的初始值,实现「在此主表下新建子表数据」;固定值条件不参与预置\nconst formDefaults = computed(() => {\n const record = props.cmpObj?.record;\n const filter_list = props.extra?.filter_list || [];\n if (!record) {\n return {};\n }\n const res: Record<string, any> = {};\n filter_list.forEach(item => {\n if (item.fixed_value !== undefined && item.fixed_value !== null && item.fixed_value !== '') {\n return;\n }\n const value = record[item.source_field];\n if (value === undefined || value === null || value === '') {\n return;\n }\n res[item.target_field] = value;\n });\n return res;\n});\n\n// 配置界面落库的是字符串,这里按「true/false→布尔、纯数字→数值、其余→字符串」推测固定值类型\nconst coerceFixedValue = (raw: any) => {\n if (typeof raw !== 'string') {\n return raw;\n }\n const text = raw.trim();\n if (text === 'true') return true;\n if (text === 'false') return false;\n if (text !== '' && !isNaN(Number(text))) return Number(text);\n return raw;\n};\n\n// enable_nested_detail=false 时把 max_depth 压到本层(depth+1 > 1 ⇒ 更深层被拦截)\nconst nestedMaxDepth = computed(() => {\n if (props.extra?.enable_nested_detail === false) {\n return 1;\n }\n return props.extra?.max_depth ?? 2;\n});\n\n// 分页覆盖:extra.enable_pagination 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面)\nconst paginationOverride = computed(() =>\n typeof props.extra?.enable_pagination === 'boolean' ? props.extra.enable_pagination : undefined,\n);\n\n// 表头隐藏覆盖:extra.hide_header 为布尔时传给 Host 覆盖目标页面配置;未配置传 undefined(跟随目标页面,默认不隐藏)\nconst hideHeaderOverride = computed(() =>\n typeof props.extra?.hide_header === 'boolean' ? props.extra.hide_header : undefined,\n);\n</script>\n<style scoped lang=\"less\">\n.detail-table-pro {\n height: 100%;\n overflow: hidden;\n}\n.dtp-center {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 24px 0;\n}\n.dtp-host {\n height: 100%;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAiDA,IAAM,IAAQ,GAMR,IAAW,SAAgB,EAAM,OAAO,aAAa,GAAA,CAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,GAI5E,IAAmB,QAAe;GACtC,IAAM,IAAc,EAAM,OAAO,eAAe,CAAC;GAOjD,OANK,EAAM,OAAO,YAGb,EAAY,SAGV,qBAFE,wBAHA;EAMX,CAAC,GAIK,IAAa,QAAe;GAChC,IAAM,IAAS,EAAM,QAAQ,QACvB,IAAc,EAAM,OAAO,eAAe,CAAC;GACjD,IAAI,CAAC,EAAY,QACf,OAAO,CAAC;GAEV,IAAM,IAAa,CAAC;GAoBpB,OAnBA,EAAY,SAAQ,MAAQ;IAC1B,IAAI;IACJ,AAAI,EAAK,gBAAgB,KAAA,KAAa,EAAK,gBAAgB,QAAQ,EAAK,gBAAgB,KACtF,IAAQ,EAAiB,EAAK,WAAW,IAChC,MACT,IAAQ,EAAO,EAAK,gBAGlB,OAAiC,QAAQ,MAAU,OAGvD,EAAI,KAAK;KACP,YAAY,EAAK;KACjB,UAAU,EAAK,YAAY;KAC3B,OAAO,MAAM,QAAQ,CAAK,IAAI,IAAQ,CAAC,CAAK;KAC5C,QAAQ,EAAK,UAAU;KACvB,YAAY,EAAK,cAAc;IACjC,CAAC;GACH,CAAC,GACM;EACT,CAAC,GACK,IAAoB,QAAe,EAAW,MAAM,SAAS,CAAC,GAI9D,IAAe,QAAe;GAClC,IAAM,IAAS,EAAM,QAAQ,QACvB,IAAc,EAAM,OAAO,eAAe,CAAC;GACjD,IAAI,CAAC,GACH,OAAO,CAAC;GAEV,IAAM,IAA2B,CAAC;GAWlC,OAVA,EAAY,SAAQ,MAAQ;IAC1B,IAAI,EAAK,gBAAgB,KAAA,KAAa,EAAK,gBAAgB,QAAQ,EAAK,gBAAgB,IACtF;IAEF,IAAM,IAAQ,EAAO,EAAK;IACtB,KAAiC,QAAQ,MAAU,OAGvD,EAAI,EAAK,gBAAgB;GAC3B,CAAC,GACM;EACT,CAAC,GAGK,KAAoB,MAAa;GACrC,IAAI,OAAO,KAAQ,UACjB,OAAO;GAET,IAAM,IAAO,EAAI,KAAK;GAItB,OAHI,MAAS,SAAe,KACxB,MAAS,UAAgB,KACzB,MAAS,MAAM,CAAC,MAAM,OAAO,CAAI,CAAC,IAAU,OAAO,CAAI,IACpD;EACT,GAGM,IAAiB,QACjB,EAAM,OAAO,yBAAyB,KACjC,IAEF,EAAM,OAAO,aAAa,CAClC,GAGK,IAAqB,QACzB,OAAO,EAAM,OAAO,qBAAsB,YAAY,EAAM,MAAM,oBAAoB,KAAA,CACxF,GAGM,IAAqB,QACzB,OAAO,EAAM,OAAO,eAAgB,YAAY,EAAM,MAAM,cAAc,KAAA,CAC5E"}
@@ -4393,32 +4393,40 @@ function Ft(e, t) {
4393
4393
  return jt(Pt(e), {}, t);
4394
4394
  }
4395
4395
  //#endregion
4396
+ //#region node_modules/typebox/build/type/types/array.mjs
4397
+ function It(e, t) {
4398
+ return Y({ "~kind": "Array" }, {
4399
+ type: "array",
4400
+ items: e
4401
+ }, t);
4402
+ }
4403
+ //#endregion
4396
4404
  //#region node_modules/typebox/build/type/types/any.mjs
4397
- function It(e) {
4405
+ function Lt(e) {
4398
4406
  return Y({ "~kind": "Any" }, {}, e);
4399
4407
  }
4400
4408
  //#endregion
4401
4409
  //#region node_modules/typebox/build/type/action/_add_optional.mjs
4402
- function Lt(e, t = {}) {
4410
+ function Rt(e, t = {}) {
4403
4411
  return Ft(e, t);
4404
4412
  }
4405
4413
  //#endregion
4406
4414
  //#region node_modules/typebox/build/type/types/_optional.mjs
4407
- function Rt(e) {
4408
- return Lt(e);
4409
- }
4410
4415
  function zt(e) {
4416
+ return Rt(e);
4417
+ }
4418
+ function Bt(e) {
4411
4419
  return Nt(e) && q(e, "~optional");
4412
4420
  }
4413
4421
  //#endregion
4414
4422
  //#region node_modules/typebox/build/type/types/properties.mjs
4415
- function Bt(e) {
4416
- return ut(e).filter((t) => !zt(e[t]));
4423
+ function Vt(e) {
4424
+ return ut(e).filter((t) => !Bt(e[t]));
4417
4425
  }
4418
4426
  //#endregion
4419
4427
  //#region node_modules/typebox/build/type/types/object.mjs
4420
- function Vt(e, t = {}) {
4421
- let n = Bt(e);
4428
+ function Ht(e, t = {}) {
4429
+ let n = Vt(e);
4422
4430
  return Y({ "~kind": "Object" }, {
4423
4431
  type: "object",
4424
4432
  ...n.length > 0 ? { required: n } : {},
@@ -4427,20 +4435,20 @@ function Vt(e, t = {}) {
4427
4435
  }
4428
4436
  //#endregion
4429
4437
  //#region node_modules/typebox/build/system/hashing/hash.mjs
4430
- var Ht;
4438
+ var Ut;
4431
4439
  (function(e) {
4432
4440
  e[e.Array = 0] = "Array", e[e.BigInt = 1] = "BigInt", e[e.Boolean = 2] = "Boolean", e[e.Date = 3] = "Date", e[e.Constructor = 4] = "Constructor", e[e.Function = 5] = "Function", e[e.Null = 6] = "Null", e[e.Number = 7] = "Number", e[e.Object = 8] = "Object", e[e.RegExp = 9] = "RegExp", e[e.String = 10] = "String", e[e.Symbol = 11] = "Symbol", e[e.TypeArray = 12] = "TypeArray", e[e.Undefined = 13] = "Undefined";
4433
- })(Ht ||= {}), Array.from({ length: 256 }).map((e, t) => BigInt(t));
4434
- var Ut = /* @__PURE__ */ new Float64Array(1);
4435
- new DataView(Ut.buffer), new Uint8Array(Ut.buffer), new TextEncoder();
4441
+ })(Ut ||= {}), Array.from({ length: 256 }).map((e, t) => BigInt(t));
4442
+ var Wt = /* @__PURE__ */ new Float64Array(1);
4443
+ new DataView(Wt.buffer), new Uint8Array(Wt.buffer), new TextEncoder();
4436
4444
  //#endregion
4437
4445
  //#region node_modules/typebox/build/type/types/boolean.mjs
4438
- function Wt(e) {
4446
+ function Gt(e) {
4439
4447
  return Y({ "~kind": "Boolean" }, { type: "boolean" }, e);
4440
4448
  }
4441
4449
  //#endregion
4442
4450
  //#region node_modules/typebox/build/type/types/integer.mjs
4443
- var Gt = "-?(?:0|[1-9][0-9]*)", Kt = class extends Error {
4451
+ var Kt = "-?(?:0|[1-9][0-9]*)", qt = class extends Error {
4444
4452
  constructor(e) {
4445
4453
  super("Invalid Literal value"), Object.defineProperty(this, "cause", {
4446
4454
  value: { value: e },
@@ -4450,61 +4458,61 @@ var Gt = "-?(?:0|[1-9][0-9]*)", Kt = class extends Error {
4450
4458
  });
4451
4459
  }
4452
4460
  };
4453
- function qt(e) {
4461
+ function Jt(e) {
4454
4462
  return nt(e) ? "bigint" : rt(e) ? "boolean" : at(e) ? "number" : st(e) ? "string" : (() => {
4455
- throw new Kt(e);
4463
+ throw new qt(e);
4456
4464
  })();
4457
4465
  }
4458
- function Jt(e, t) {
4466
+ function Yt(e, t) {
4459
4467
  return Y({ "~kind": "Literal" }, {
4460
- type: qt(e),
4468
+ type: Jt(e),
4461
4469
  const: e
4462
4470
  }, t);
4463
4471
  }
4464
4472
  //#endregion
4465
4473
  //#region node_modules/typebox/build/type/types/null.mjs
4466
- function Yt(e) {
4474
+ function Xt(e) {
4467
4475
  return Y({ "~kind": "Null" }, { type: "null" }, e);
4468
4476
  }
4469
4477
  //#endregion
4470
4478
  //#region node_modules/typebox/build/type/types/number.mjs
4471
- var Xt = "-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?";
4479
+ var Zt = "-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?";
4472
4480
  //#endregion
4473
4481
  //#region node_modules/typebox/build/type/types/string.mjs
4474
- function Zt(e) {
4482
+ function Qt(e) {
4475
4483
  return Y({ "~kind": "String" }, { type: "string" }, e);
4476
4484
  }
4477
4485
  //#endregion
4478
4486
  //#region node_modules/typebox/build/type/types/union.mjs
4479
- function Qt(e, t = {}) {
4487
+ function $t(e, t = {}) {
4480
4488
  return Y({ "~kind": "Union" }, { anyOf: e }, t);
4481
4489
  }
4482
4490
  //#endregion
4483
4491
  //#region node_modules/typebox/build/type/types/record.mjs
4484
- var $t = `^${Gt}$`;
4485
- `${Xt}`;
4492
+ var en = `^${Kt}$`;
4493
+ `${Zt}`;
4486
4494
  //#endregion
4487
4495
  //#region node_modules/typebox/build/type/script/token/internal/char.mjs
4488
- function en(e, t) {
4496
+ function tn(e, t) {
4489
4497
  return Array.from({ length: t - e + 1 }, (t, n) => String.fromCharCode(e + n));
4490
4498
  }
4491
- var tn = [...en(97, 122), ...en(65, 90)], nn = ["0", ...en(49, 57)];
4492
- [...nn], [...tn, ...nn], [...nn], new RegExp($t);
4499
+ var nn = [...tn(97, 122), ...tn(65, 90)], rn = ["0", ...tn(49, 57)];
4500
+ [...rn], [...nn, ...rn], [...rn], new RegExp(en);
4493
4501
  //#endregion
4494
4502
  //#region src/components/page-ability/registry.ts
4495
- var rn = "__LY_AI_PAGE_ABILITY__", an = new Mt.default({
4503
+ var an = "__LY_AI_PAGE_ABILITY__", on = new Mt.default({
4496
4504
  allErrors: !0,
4497
4505
  allowUnionTypes: !0,
4498
4506
  strict: !1
4499
4507
  });
4500
- function on(e) {
4508
+ function sn(e) {
4501
4509
  return !e || e.length === 0 ? "参数格式不符合要求" : e.map((e) => e.keyword === "required" && typeof e.params?.missingProperty == "string" ? `缺少必填字段 ${e.params.missingProperty}` : e.keyword === "additionalProperties" && typeof e.params?.additionalProperty == "string" ? `存在未定义字段 ${e.params.additionalProperty}` : `${(e.instancePath ? e.instancePath.replace(/\//g, ".").replace(/^\./, "") : "") || "root"}: ${e.message || "参数不合法"}`).join("; ");
4502
4510
  }
4503
- function sn(e) {
4511
+ function cn(e) {
4504
4512
  return e === void 0 ? {} : e;
4505
4513
  }
4506
- function cn(e, t) {
4507
- let n = t.parameters || Vt({}), r = t.parameters ? an.compile(t.parameters) : null;
4514
+ function ln(e, t) {
4515
+ let n = t.parameters || Ht({}), r = t.parameters ? on.compile(t.parameters) : null;
4508
4516
  return {
4509
4517
  ...t,
4510
4518
  name: e,
@@ -4513,21 +4521,21 @@ function cn(e, t) {
4513
4521
  description: t.description || `${e} 页面能力`,
4514
4522
  parameters: n,
4515
4523
  execute: (n) => {
4516
- let i = sn(n);
4524
+ let i = cn(n);
4517
4525
  return r && !r(i) ? {
4518
4526
  ok: !1,
4519
- error: `页面能力「${t.toolName || e}」参数校验失败: ${on(r.errors)}`
4527
+ error: `页面能力「${t.toolName || e}」参数校验失败: ${sn(r.errors)}`
4520
4528
  } : t.execute(i);
4521
4529
  }
4522
4530
  };
4523
4531
  }
4524
- function ln() {
4525
- let e = globalThis, t = e[rn];
4532
+ function un() {
4533
+ let e = globalThis, t = e[an];
4526
4534
  if (t && typeof t.get == "function" && typeof t.find == "function" && typeof t.list == "function") return t;
4527
4535
  let n = {
4528
4536
  stack: /* @__PURE__ */ new Map(),
4529
4537
  register(e, t) {
4530
- let r = cn(e, t), i = n.stack.get(e) || [];
4538
+ let r = ln(e, t), i = n.stack.get(e) || [];
4531
4539
  i.push(r), n.stack.set(e, i);
4532
4540
  let a = !0;
4533
4541
  return () => {
@@ -4554,19 +4562,19 @@ function ln() {
4554
4562
  return [...n.stack.values()].map((e) => e[e.length - 1]).filter((e) => !!e).map(({ execute: e, ...t }) => t).sort((e, t) => (e.toolName || e.name).localeCompare(t.toolName || t.name));
4555
4563
  }
4556
4564
  };
4557
- return e[rn] = n, n;
4565
+ return e[an] = n, n;
4558
4566
  }
4559
- function un(e, t) {
4560
- return ln().register(e, t);
4567
+ function dn(e, t) {
4568
+ return un().register(e, t);
4561
4569
  }
4562
4570
  //#endregion
4563
4571
  //#region src/components/quick-action/registry.ts
4564
- var dn = "__LY_AI_QUICK_ACTION__", fn = "ly-ai-quick-actions-changed";
4565
- function pn() {
4566
- window.dispatchEvent(new CustomEvent(fn));
4567
- }
4572
+ var fn = "__LY_AI_QUICK_ACTION__", pn = "ly-ai-quick-actions-changed";
4568
4573
  function mn() {
4569
- let e = globalThis, t = e[dn];
4574
+ window.dispatchEvent(new CustomEvent(pn));
4575
+ }
4576
+ function hn() {
4577
+ let e = globalThis, t = e[fn];
4570
4578
  if (t && typeof t.register == "function" && typeof t.list == "function") return t;
4571
4579
  let n = {
4572
4580
  stack: /* @__PURE__ */ new Map(),
@@ -4578,7 +4586,7 @@ function mn() {
4578
4586
  };
4579
4587
  if (!t.label) return () => {};
4580
4588
  let r = n.stack.get(t.label) || [];
4581
- r.push(t), n.stack.set(t.label, r), pn();
4589
+ r.push(t), n.stack.set(t.label, r), mn();
4582
4590
  let i = !0;
4583
4591
  return () => {
4584
4592
  if (!i) return;
@@ -4586,7 +4594,7 @@ function mn() {
4586
4594
  let e = n.stack.get(t.label);
4587
4595
  if (!e) return;
4588
4596
  let r = e.indexOf(t);
4589
- r > -1 && (e.splice(r, 1), e.length === 0 ? n.stack.delete(t.label) : n.stack.set(t.label, e), pn());
4597
+ r > -1 && (e.splice(r, 1), e.length === 0 ? n.stack.delete(t.label) : n.stack.set(t.label, e), mn());
4590
4598
  };
4591
4599
  },
4592
4600
  list() {
@@ -4598,15 +4606,15 @@ function mn() {
4598
4606
  return e;
4599
4607
  }
4600
4608
  };
4601
- return e[dn] = n, n;
4609
+ return e[fn] = n, n;
4602
4610
  }
4603
- function hn(e) {
4604
- return mn().register(e);
4611
+ function gn(e) {
4612
+ return hn().register(e);
4605
4613
  }
4606
- function gn() {
4607
- return mn().list();
4614
+ function _n() {
4615
+ return hn().list();
4608
4616
  }
4609
- function _n(e) {
4617
+ function vn(e) {
4610
4618
  if (!e || typeof e != "object") return [];
4611
4619
  let t = e.ai_quick_actions;
4612
4620
  if (typeof t == "string") try {
@@ -4629,14 +4637,14 @@ function _n(e) {
4629
4637
  }
4630
4638
  //#endregion
4631
4639
  //#region src/utils/function.ts
4632
- var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e), bn = (e) => (e &&= e.substring(11, 16), e), xn = (e) => (e &&= e.substring(11, 19), e), Sn = (e) => (e &&= e.substring(0, 7), e), Cn = (e) => e == "1900-01-01" ? "期初" : (e &&= e.substring(0, 4) + "年" + e.substring(5, 7) + "月", e), wn = (e) => {
4640
+ var yn = (e) => dn(e.name, { ...e }), bn = (e) => (e &&= e.substring(0, 5), e), xn = (e) => (e &&= e.substring(11, 16), e), Sn = (e) => (e &&= e.substring(11, 19), e), Cn = (e) => (e &&= e.substring(0, 7), e), wn = (e) => e == "1900-01-01" ? "期初" : (e &&= e.substring(0, 4) + "年" + e.substring(5, 7) + "月", e), Tn = (e) => {
4633
4641
  if (e == "1900-01-01") return "期初";
4634
4642
  if (e) {
4635
4643
  let t = p(e);
4636
4644
  return t.isValid() ? `${t.format("YYYY")}年` : "";
4637
4645
  }
4638
4646
  return e;
4639
- }, Tn = (e) => (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 10) : e &&= e.substring(0, 10), e), En = (e) => (e &&= e.substring(0, 10), e), Dn = (e) => e && e.substring(0, 4) <= 1970 ? "" : (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 16) : e &&= e.substring(0, 16), e), On = (e) => (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 19) : e &&= e.substring(0, 19), e), kn = (e) => (e &&= e.substring(0, 19), e), An = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(2)) == 0 ? 0 : e.toFixed(2) : "", jn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(0)) == 0 ? 0 : e.toFixed(0) : "", Mn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(3)) == 0 ? 0 : e.toFixed(3) : "", Nn = (e) => e.replace(/(^\s*)|(\s*$)/g, ""), Pn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(6)) == 0 ? 0 : e.toFixed(6) : "", Fn = (e) => {
4647
+ }, En = (e) => (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 10) : e &&= e.substring(0, 10), e), Dn = (e) => (e &&= e.substring(0, 10), e), On = (e) => e && e.substring(0, 4) <= 1970 ? "" : (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 16) : e &&= e.substring(0, 16), e), kn = (e) => (e && (/* @__PURE__ */ new Date()).getFullYear().toString() == e.substring(0, 4) ? e = e.substring(5, 19) : e &&= e.substring(0, 19), e), An = (e) => (e &&= e.substring(0, 19), e), jn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(2)) == 0 ? 0 : e.toFixed(2) : "", Mn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(0)) == 0 ? 0 : e.toFixed(0) : "", Nn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(3)) == 0 ? 0 : e.toFixed(3) : "", Pn = (e) => e.replace(/(^\s*)|(\s*$)/g, ""), Fn = (e) => (0, m.isNumber)(e) ? Number(e.toFixed(6)) == 0 ? 0 : e.toFixed(6) : "", In = (e) => {
4640
4648
  let t = e;
4641
4649
  if (e > 60) {
4642
4650
  let n = e / 60;
@@ -4651,14 +4659,14 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4651
4659
  }
4652
4660
  } else t = e + "秒";
4653
4661
  return t;
4654
- }, In = (e) => {
4662
+ }, Ln = (e) => {
4655
4663
  let t = Math.floor(e / 1e3), n = Math.floor(t / 60), r = Math.floor(n / 60), i = t % 60, a = n % 60, o = "";
4656
4664
  return r > 0 && (o += `${r.toString().padStart(2, "0")}:`), o += `${a.toString().padStart(2, "0")}:${i.toString().padStart(2, "0")}`, e % 1e3 != 0 && (o += `.${e.toString().slice(-2)}`), o;
4657
- }, Ln = (e, t) => {
4665
+ }, Rn = (e, t) => {
4658
4666
  let n = {};
4659
4667
  for (let r in e) t[e[r]] && (n[r] = t[e[r]]);
4660
4668
  return n;
4661
- }, Rn = (e, t, n) => {
4669
+ }, zn = (e, t, n) => {
4662
4670
  let r = (e) => {
4663
4671
  let t = [];
4664
4672
  for (let n of e) t.push(n), n.children && n.children.length > 0 && t.push(...r(n.children));
@@ -4666,11 +4674,11 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4666
4674
  }, i = r(t || []), a = {};
4667
4675
  for (let t in e) a[t] = i.filter((e) => n.includes(e.id)).map((n) => n[e[t]]);
4668
4676
  return a;
4669
- }, zn = (e, t) => {
4677
+ }, Bn = (e, t) => {
4670
4678
  let n = {};
4671
4679
  for (let r in e) t[e[r]] && (n[r] = t[e[r]].join(","));
4672
4680
  return n;
4673
- }, Bn = (e) => Math.floor(e), Vn = ({ column: e, text: t }) => [
4681
+ }, Vn = (e) => Math.floor(e), Hn = ({ column: e, text: t }) => [
4674
4682
  "green",
4675
4683
  "orange",
4676
4684
  "red",
@@ -4682,7 +4690,7 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4682
4690
  "#2db7f5",
4683
4691
  "#87d068",
4684
4692
  "#108ee9"
4685
- ][Object.keys(e).filter((e) => e.indexOf("field_") == 0).map((e) => e.replace("field_", "")).sort().indexOf(t.toString())], Hn = (e) => {
4693
+ ][Object.keys(e).filter((e) => e.indexOf("field_") == 0).map((e) => e.replace("field_", "")).sort().indexOf(t.toString())], Un = (e) => {
4686
4694
  let t = [], n = (e, t) => {
4687
4695
  t.map((t) => {
4688
4696
  e.parent_id == t.id ? (t.children ??= [], t.children.push({
@@ -4703,7 +4711,7 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4703
4711
  children: []
4704
4712
  });
4705
4713
  }), t;
4706
- }, Un = (e) => {
4714
+ }, Wn = (e) => {
4707
4715
  let t = [], n = (e, t) => {
4708
4716
  t.map((t) => {
4709
4717
  e.parent_id == t.id ? ("children" in t || (t.children = []), t.children.push({
@@ -4727,20 +4735,20 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4727
4735
  }), t.map((e) => {
4728
4736
  e.children.length == 0 && delete e.children;
4729
4737
  }), t;
4730
- }, Wn = (e) => e.length ? (e = e.map((e) => e && !Number.isNaN(Number(e)) ? Math.round(e * 1e4) : 0), e.reduce((e, t) => e + t, 0) / 1e4) : 0, Gn = (e) => {
4738
+ }, Gn = (e) => e.length ? (e = e.map((e) => e && !Number.isNaN(Number(e)) ? Math.round(e * 1e4) : 0), e.reduce((e, t) => e + t, 0) / 1e4) : 0, Kn = (e) => {
4731
4739
  let t = "", n = "复制成功";
4732
4740
  e?.message ? (t = e.val, n = e.message) : t = e;
4733
4741
  let r = document.createElement("textarea");
4734
4742
  r.setAttribute("readonly", "readonly"), r.value = t, document.body.appendChild(r), r.select(), document.execCommand("copy") && d.info(n), document.body.removeChild(r);
4735
- }, Kn = (e) => {
4743
+ }, qn = (e) => {
4736
4744
  let t = {};
4737
4745
  return Object.keys(e).forEach((n) => {
4738
4746
  e[n] !== null && e[n] !== "" && JSON.stringify(e[n]) !== "[]" && (t[n] = e[n]);
4739
4747
  }), t;
4740
- }, X = (e) => e != null && e !== "", qn = (e, t) => (t == "getPeriod" && (e.group_info.display_name = Cn(e.group_info.display_name)), e), Jn = ({ record: e }) => {
4748
+ }, X = (e) => e != null && e !== "", Jn = (e, t) => (t == "getPeriod" && (e.group_info.display_name = wn(e.group_info.display_name)), e), Yn = ({ record: e }) => {
4741
4749
  let t = { props: {} };
4742
4750
  return e?.meta_data?.rowSpan != null && (t.props.rowSpan = e.meta_data.rowSpan), t;
4743
- }, Z = (e) => e === null || e == null || e === "", Yn = (e, t) => {
4751
+ }, Z = (e) => e === null || e == null || e === "", Xn = (e, t) => {
4744
4752
  let n;
4745
4753
  if (t == "int") X(e) && e instanceof Array ? (n = [], e.forEach((e) => {
4746
4754
  X(e) && typeof e == "string" ? n.push(Number(e)) : n.push(e);
@@ -4767,11 +4775,11 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4767
4775
  });
4768
4776
  } else n = e;
4769
4777
  return n;
4770
- }, Xn = (e, t) => e == "input" && t == "in" ? "等于" : c[t], Zn = (e) => {
4778
+ }, Zn = (e, t) => e == "input" && t == "in" ? "等于" : c[t], Qn = (e) => {
4771
4779
  e.sort((e, t) => (e.order || 0) - (t.order || 0)), e.forEach((e) => {
4772
- e.children && Zn(e.children);
4780
+ e.children && Qn(e.children);
4773
4781
  });
4774
- }, Q = (e, t = "YYYY-MM-DD") => f(e, t, !0).isValid(), Qn = ({ record: e, conditions: t, dataSource: n, selectedRowKeys: r }) => {
4782
+ }, Q = (e, t = "YYYY-MM-DD") => f(e, t, !0).isValid(), $n = ({ record: e, conditions: t, dataSource: n, selectedRowKeys: r }) => {
4775
4783
  if (!t || t.length === 0) return !0;
4776
4784
  let i = (e) => {
4777
4785
  let t = [];
@@ -4782,7 +4790,7 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4782
4790
  if (!t) return !1;
4783
4791
  let n = null;
4784
4792
  n = r instanceof Array ? a.filter((e) => r.includes(e.id)).map((e) => e[t.flag]) : e[t.flag];
4785
- let i = Yn(t.value, t.type);
4793
+ let i = Xn(t.value, t.type);
4786
4794
  switch (i instanceof Array || (i = [i]), t.operator) {
4787
4795
  case "lt": return typeof i[0] == "number" ? !Z(n) && n < i[0] : Q(i[0]) ? !Z(n) && f(n).isBefore(f(i[0])) : !1;
4788
4796
  case "lte": return typeof i[0] == "number" ? !Z(n) && n <= i[0] : Q(i[0]) ? !Z(n) && (f(n).isBefore(f(i[0])) || f(n).isSame(f(i[0]))) : !1;
@@ -4809,7 +4817,7 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4809
4817
  default: return !1;
4810
4818
  }
4811
4819
  }).every((e) => e)).some((e) => e);
4812
- }, $n = {
4820
+ }, er = {
4813
4821
  getApiData: s,
4814
4822
  confirm: ({ title: e, content: t }) => new Promise((n, r) => {
4815
4823
  u.confirm({
@@ -4862,9 +4870,9 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4862
4870
  dates: o(new Date(Math.min(n.getTime(), r.getTime())), new Date(Math.max(n.getTime(), r.getTime())))
4863
4871
  } : { sameWeek: !1 };
4864
4872
  }
4865
- }, er = (e, t, n = {}) => {
4873
+ }, tr = (e, t, n = {}) => {
4866
4874
  let r = {
4867
- ...$n,
4875
+ ...er,
4868
4876
  ...n,
4869
4877
  ...a()
4870
4878
  };
@@ -4901,27 +4909,27 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4901
4909
  s.terminate(), i(e);
4902
4910
  }, s.postMessage(JSON.parse(JSON.stringify(t)));
4903
4911
  });
4904
- }, tr = (e) => {
4912
+ }, nr = (e) => {
4905
4913
  if (!e) return [];
4906
4914
  let t = [];
4907
4915
  for (let n of e) if (Array.isArray(n)) {
4908
- let e = tr(n);
4916
+ let e = nr(n);
4909
4917
  e.length > 0 && t.push(e);
4910
4918
  } else n.value instanceof Array && n.value.length > 0 && !n.value.some((e) => Z(e)) && t.push(n);
4911
4919
  return t;
4912
- }, nr = /* @__PURE__ */ new Map(), rr = ({ url: e, libName: t, componentName: n, cssUrl: r }) => l({
4920
+ }, rr = /* @__PURE__ */ new Map(), ir = ({ url: e, libName: t, componentName: n, cssUrl: r }) => l({
4913
4921
  loader: async () => {
4914
4922
  if (r && !document.querySelector(`link[href="${r}"]`)) {
4915
4923
  let e = document.createElement("link");
4916
4924
  e.rel = "stylesheet", e.href = r, document.head.appendChild(e), await new Promise((t) => e.onload = t);
4917
4925
  }
4918
- if (!nr.has(t)) {
4926
+ if (!rr.has(t)) {
4919
4927
  let n = document.createElement("script");
4920
4928
  n.src = e, document.head.appendChild(n), await new Promise((e, t) => {
4921
4929
  n.onload = e, n.onerror = t;
4922
- }), nr.set(t, window[t]);
4930
+ }), rr.set(t, window[t]);
4923
4931
  }
4924
- let i = nr.get(t);
4932
+ let i = rr.get(t);
4925
4933
  if (!i) throw Error(`Failed to load module ${t} from ${e}`);
4926
4934
  let a = i[n];
4927
4935
  if (!a) throw Error(`Component "${n}" not found in global DynamicComponent`);
@@ -4938,25 +4946,25 @@ var vn = (e) => un(e.name, { ...e }), yn = (e) => (e &&= e.substring(0, 5), e),
4938
4946
  },
4939
4947
  delay: 200,
4940
4948
  timeout: 1e4
4941
- }), ir = (e) => {
4949
+ }), ar = (e) => {
4942
4950
  let t = new TextEncoder().encode(e);
4943
4951
  return btoa(String.fromCharCode(...t));
4944
- }, ar = () => {
4952
+ }, or = () => {
4945
4953
  let e = /.*_(\d+)$/, t = new URL(window.location.href).pathname.split("/");
4946
4954
  return t.length > 1 && t[1].match(e)?.[1] || null;
4947
- }, $ = null, or = (e) => {
4948
- ar() ? (sessionStorage.removeItem("org_id"), localStorage.removeItem("org_id")) : ($ = e, e ? (sessionStorage.setItem("org_id", e.toString()), localStorage.setItem("org_id", e.toString())) : (sessionStorage.removeItem("org_id"), localStorage.removeItem("org_id")));
4949
- }, sr = () => {
4950
- let e = ar();
4955
+ }, $ = null, sr = (e) => {
4956
+ or() ? (sessionStorage.removeItem("org_id"), localStorage.removeItem("org_id")) : ($ = e, e ? (sessionStorage.setItem("org_id", e.toString()), localStorage.setItem("org_id", e.toString())) : (sessionStorage.removeItem("org_id"), localStorage.removeItem("org_id")));
4957
+ }, cr = () => {
4958
+ let e = or();
4951
4959
  if (e) return Number(e);
4952
4960
  if (!$) {
4953
4961
  let e = sessionStorage.getItem("org_id") || localStorage.getItem("org_id");
4954
4962
  e && ($ = Number(e));
4955
4963
  }
4956
4964
  return $;
4957
- }, cr = () => {
4965
+ }, lr = () => {
4958
4966
  let e = /* @__PURE__ */ new Uint8Array(16);
4959
4967
  return window.crypto.getRandomValues(e), Array.from(e, (e) => e.toString(16).padStart(2, "0")).join("");
4960
4968
  };
4961
4969
  //#endregion
4962
- export { Yt as $, Un as A, ir as B, zn as C, Bn as D, xn as E, Q as F, Nn as G, An as H, Zn as I, _n as J, fn as K, vn as L, Vn as M, Z as N, Xn as O, X as P, Zt as Q, or as R, Rn as S, bn as T, Mn as U, jn as V, Pn as W, hn as X, gn as Y, Qt as Z, En as _, Jn as a, Sn as b, tr as c, In as d, Jt as et, cr as f, wn as g, Dn as h, Wn as i, It as it, Hn as j, sr as k, Kn as l, Cn as m, Yn as n, Vt as nt, rr as o, Tn as p, dn as q, Gn as r, Rt as rt, er as s, Qn as t, Wt as tt, Fn as u, On as v, yn as w, Ln as x, kn as y, qn as z };
4970
+ export { Xt as $, Wn as A, ar as B, Bn as C, Vn as D, Sn as E, Q as F, Pn as G, jn as H, Qn as I, vn as J, pn as K, yn as L, Hn as M, Z as N, Zn as O, X as P, Qt as Q, sr as R, zn as S, xn as T, Nn as U, Mn as V, Fn as W, gn as X, _n as Y, $t as Z, Dn as _, Yn as a, It as at, Cn as b, nr as c, Ln as d, Yt as et, lr as f, Tn as g, On as h, Gn as i, Lt as it, Un as j, cr as k, qn as l, wn as m, Xn as n, Ht as nt, ir as o, En as p, fn as q, Kn as r, zt as rt, tr as s, $n as t, Gt as tt, In as u, kn as v, bn as w, Rn as x, An as y, Jn as z };