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.
- package/dist/{FieldRender-DUylkdFU.js → FieldRender-BOg7nm5z.js} +3 -3
- package/dist/{FieldRender-DUylkdFU.js.map → FieldRender-BOg7nm5z.js.map} +1 -1
- package/dist/{FieldRender2-ni4dCoWb.js → FieldRender2-_MtcDkI5.js} +7 -7
- package/dist/{FieldRender2-ni4dCoWb.js.map → FieldRender2-_MtcDkI5.js.map} +1 -1
- package/dist/{FormRender3-D8g1u8XE.js → FormRender3-BtY9d91e.js} +3 -3
- package/dist/{FormRender3-D8g1u8XE.js.map → FormRender3-BtY9d91e.js.map} +1 -1
- package/dist/{RemoteModal-Bcj3dfNQ.js → RemoteModal-Dqy32RFN.js} +1 -1
- package/dist/{RemoteModal-Bcj3dfNQ.js.map → RemoteModal-Dqy32RFN.js.map} +1 -1
- package/dist/{RemoteSelectPro-DzCL3v2d.js → RemoteSelectPro-CcWTS4f6.js} +2 -2
- package/dist/{RemoteSelectPro-DzCL3v2d.js.map → RemoteSelectPro-CcWTS4f6.js.map} +1 -1
- package/dist/{RemoteTable-Wk-bmeCF.js → RemoteTable-D_12PvNS.js} +2 -2
- package/dist/{RemoteTable-Wk-bmeCF.js.map → RemoteTable-D_12PvNS.js.map} +1 -1
- package/dist/{RemoteTreeSelectPro-D2RSKzFr.js → RemoteTreeSelectPro-CXMOariR.js} +1 -1
- package/dist/{RemoteTreeSelectPro-D2RSKzFr.js.map → RemoteTreeSelectPro-CXMOariR.js.map} +1 -1
- package/dist/{SearchRender-IBjoONHu.js → SearchRender-ByarFel1.js} +1 -1
- package/dist/{SearchRender-IBjoONHu.js.map → SearchRender-ByarFel1.js.map} +1 -1
- package/dist/{TinymceEditor-BLPIZIaP.js → TinymceEditor-waI-dlC5.js} +3 -3
- package/dist/{TinymceEditor-BLPIZIaP.js.map → TinymceEditor-waI-dlC5.js.map} +1 -1
- package/dist/components/index.js +11 -11
- package/dist/{dbViewConfig-BauCY_B2.js → dbViewConfig-RGSyUx3F.js} +2 -2
- package/dist/{dbViewConfig-BauCY_B2.js.map → dbViewConfig-RGSyUx3F.js.map} +1 -1
- package/dist/{detailTablePro-CmhEujKb.js → detailTablePro-CqcVbn8O.js} +1 -1
- package/dist/{detailTablePro-CmhEujKb.js.map → detailTablePro-CqcVbn8O.js.map} +1 -1
- package/dist/{function-DQjzcDkk.js → function-BhYSb8ls.js} +96 -88
- package/dist/function-BhYSb8ls.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/liyu-pc-base.css +1 -1
- package/dist/{tableModal-Cjjw_VUe.js → tableModal-DSKuV-hn.js} +1 -1
- package/dist/{tableModal-Cjjw_VUe.js.map → tableModal-DSKuV-hn.js.map} +1 -1
- package/dist/{tablePageHost-LnRX1FVx.js → tablePageHost-B_BOlBNA.js} +8416 -7870
- package/dist/tablePageHost-B_BOlBNA.js.map +1 -0
- package/dist/{tablePro-CerNGQgL.js → tablePro-IAcxxAGI.js} +17 -17
- package/dist/tablePro-IAcxxAGI.js.map +1 -0
- package/dist/utils/function.js +1 -1
- package/dist/utils/hooks/useFetchData.js +1 -1
- package/package.json +1 -1
- package/dist/function-DQjzcDkk.js.map +0 -1
- package/dist/tablePageHost-LnRX1FVx.js.map +0 -1
- 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-
|
|
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
|
|
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
|
|
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
|
|
4416
|
-
return ut(e).filter((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
|
|
4421
|
-
let n =
|
|
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
|
|
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
|
-
})(
|
|
4434
|
-
var
|
|
4435
|
-
new DataView(
|
|
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
|
|
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
|
|
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
|
|
4461
|
+
function Jt(e) {
|
|
4454
4462
|
return nt(e) ? "bigint" : rt(e) ? "boolean" : at(e) ? "number" : st(e) ? "string" : (() => {
|
|
4455
|
-
throw new
|
|
4463
|
+
throw new qt(e);
|
|
4456
4464
|
})();
|
|
4457
4465
|
}
|
|
4458
|
-
function
|
|
4466
|
+
function Yt(e, t) {
|
|
4459
4467
|
return Y({ "~kind": "Literal" }, {
|
|
4460
|
-
type:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
4485
|
-
`${
|
|
4492
|
+
var en = `^${Kt}$`;
|
|
4493
|
+
`${Zt}`;
|
|
4486
4494
|
//#endregion
|
|
4487
4495
|
//#region node_modules/typebox/build/type/script/token/internal/char.mjs
|
|
4488
|
-
function
|
|
4496
|
+
function tn(e, t) {
|
|
4489
4497
|
return Array.from({ length: t - e + 1 }, (t, n) => String.fromCharCode(e + n));
|
|
4490
4498
|
}
|
|
4491
|
-
var
|
|
4492
|
-
[...
|
|
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
|
|
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
|
|
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
|
|
4511
|
+
function cn(e) {
|
|
4504
4512
|
return e === void 0 ? {} : e;
|
|
4505
4513
|
}
|
|
4506
|
-
function
|
|
4507
|
-
let n = t.parameters ||
|
|
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 =
|
|
4524
|
+
let i = cn(n);
|
|
4517
4525
|
return r && !r(i) ? {
|
|
4518
4526
|
ok: !1,
|
|
4519
|
-
error: `页面能力「${t.toolName || e}」参数校验失败: ${
|
|
4527
|
+
error: `页面能力「${t.toolName || e}」参数校验失败: ${sn(r.errors)}`
|
|
4520
4528
|
} : t.execute(i);
|
|
4521
4529
|
}
|
|
4522
4530
|
};
|
|
4523
4531
|
}
|
|
4524
|
-
function
|
|
4525
|
-
let e = globalThis, t = e[
|
|
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 =
|
|
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[
|
|
4565
|
+
return e[an] = n, n;
|
|
4558
4566
|
}
|
|
4559
|
-
function
|
|
4560
|
-
return
|
|
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
|
|
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
|
-
|
|
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),
|
|
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),
|
|
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[
|
|
4609
|
+
return e[fn] = n, n;
|
|
4602
4610
|
}
|
|
4603
|
-
function
|
|
4604
|
-
return
|
|
4611
|
+
function gn(e) {
|
|
4612
|
+
return hn().register(e);
|
|
4605
4613
|
}
|
|
4606
|
-
function
|
|
4607
|
-
return
|
|
4614
|
+
function _n() {
|
|
4615
|
+
return hn().list();
|
|
4608
4616
|
}
|
|
4609
|
-
function
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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())],
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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 !== "",
|
|
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 === "",
|
|
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
|
-
},
|
|
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 &&
|
|
4780
|
+
e.children && Qn(e.children);
|
|
4773
4781
|
});
|
|
4774
|
-
}, Q = (e, t = "YYYY-MM-DD") => f(e, t, !0).isValid(),
|
|
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 =
|
|
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
|
-
},
|
|
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
|
-
},
|
|
4873
|
+
}, tr = (e, t, n = {}) => {
|
|
4866
4874
|
let r = {
|
|
4867
|
-
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
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 (!
|
|
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
|
-
}),
|
|
4930
|
+
}), rr.set(t, window[t]);
|
|
4923
4931
|
}
|
|
4924
|
-
let i =
|
|
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
|
-
}),
|
|
4949
|
+
}), ar = (e) => {
|
|
4942
4950
|
let t = new TextEncoder().encode(e);
|
|
4943
4951
|
return btoa(String.fromCharCode(...t));
|
|
4944
|
-
},
|
|
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,
|
|
4948
|
-
|
|
4949
|
-
},
|
|
4950
|
-
let e =
|
|
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
|
-
},
|
|
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 {
|
|
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 };
|