@kp-ui/lowcode-pc 1.0.0-alpha.2 → 1.0.0-alpha.3

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 (101) hide show
  1. package/assets/CustomerModal.mjs +1 -0
  2. package/assets/CustomerModal.mjs.map +1 -0
  3. package/assets/bpmn-editor-widget.mjs +1 -0
  4. package/assets/bpmn-editor-widget.mjs.map +1 -0
  5. package/assets/button-list-widget.mjs +1 -0
  6. package/assets/button-list-widget.mjs.map +1 -0
  7. package/assets/button-widget.mjs +1 -0
  8. package/assets/button-widget.mjs.map +1 -0
  9. package/assets/cascader-widget.mjs +1 -0
  10. package/assets/cascader-widget.mjs.map +1 -0
  11. package/assets/checkbox-widget.mjs +1 -0
  12. package/assets/checkbox-widget.mjs.map +1 -0
  13. package/assets/code-editor-widget.mjs +1 -0
  14. package/assets/code-editor-widget.mjs.map +1 -0
  15. package/assets/color-widget.mjs +1 -0
  16. package/assets/color-widget.mjs.map +1 -0
  17. package/assets/data-table-widget.mjs +1 -0
  18. package/assets/data-table-widget.mjs.map +1 -0
  19. package/assets/date-range-widget.mjs +1 -0
  20. package/assets/date-range-widget.mjs.map +1 -0
  21. package/assets/date-widget.mjs +1 -0
  22. package/assets/date-widget.mjs.map +1 -0
  23. package/assets/divider-widget.mjs +1 -0
  24. package/assets/divider-widget.mjs.map +1 -0
  25. package/assets/diy-compontent-widget.mjs +1 -0
  26. package/assets/diy-compontent-widget.mjs.map +1 -0
  27. package/assets/dropdown-widget.mjs +1 -0
  28. package/assets/dropdown-widget.mjs.map +1 -0
  29. package/assets/en-US.mjs +1 -0
  30. package/assets/en-US.mjs.map +1 -0
  31. package/assets/en-US_extension.mjs +1 -0
  32. package/assets/en-US_extension.mjs.map +1 -0
  33. package/assets/en-US_render.mjs +1 -0
  34. package/assets/en-US_render.mjs.map +1 -0
  35. package/assets/file-upload-widget.mjs +1 -0
  36. package/assets/file-upload-widget.mjs.map +1 -0
  37. package/assets/form-item-wrapper.mjs +1 -0
  38. package/assets/form-item-wrapper.mjs.map +1 -0
  39. package/assets/grid-col-widget.mjs +1 -0
  40. package/assets/grid-col-widget.mjs.map +1 -0
  41. package/assets/grid-sub-form-widget.mjs +1 -0
  42. package/assets/grid-sub-form-widget.mjs.map +1 -0
  43. package/assets/grid-widget.mjs +1 -0
  44. package/assets/grid-widget.mjs.map +1 -0
  45. package/assets/html-text-widget.mjs +1 -0
  46. package/assets/html-text-widget.mjs.map +1 -0
  47. package/assets/input-widget.mjs +1 -0
  48. package/assets/input-widget.mjs.map +1 -0
  49. package/assets/install.mjs +68 -67
  50. package/assets/install.mjs.map +1 -0
  51. package/assets/number-widget.mjs +1 -0
  52. package/assets/number-widget.mjs.map +1 -0
  53. package/assets/radio-widget.mjs +1 -0
  54. package/assets/radio-widget.mjs.map +1 -0
  55. package/assets/rate-widget.mjs +1 -0
  56. package/assets/rate-widget.mjs.map +1 -0
  57. package/assets/rich-editor-widget.mjs +1 -0
  58. package/assets/rich-editor-widget.mjs.map +1 -0
  59. package/assets/select-widget.mjs +1 -0
  60. package/assets/select-widget.mjs.map +1 -0
  61. package/assets/slider-widget.mjs +1 -0
  62. package/assets/slider-widget.mjs.map +1 -0
  63. package/assets/static-text-widget.mjs +1 -0
  64. package/assets/static-text-widget.mjs.map +1 -0
  65. package/assets/switch-widget.mjs +1 -0
  66. package/assets/switch-widget.mjs.map +1 -0
  67. package/assets/tab-widget.mjs +1 -0
  68. package/assets/tab-widget.mjs.map +1 -0
  69. package/assets/textarea-widget.mjs +1 -0
  70. package/assets/textarea-widget.mjs.map +1 -0
  71. package/assets/time-range-widget.mjs +1 -0
  72. package/assets/time-range-widget.mjs.map +1 -0
  73. package/assets/time-widget.mjs +1 -0
  74. package/assets/time-widget.mjs.map +1 -0
  75. package/assets/tree-widget.mjs +1 -0
  76. package/assets/tree-widget.mjs.map +1 -0
  77. package/assets/treeSelect-widget.mjs +1 -0
  78. package/assets/treeSelect-widget.mjs.map +1 -0
  79. package/assets/useCustomerModal.mjs +1 -0
  80. package/assets/useCustomerModal.mjs.map +1 -0
  81. package/assets/useField.mjs +1 -0
  82. package/assets/useField.mjs.map +1 -0
  83. package/assets/useSelect.mjs +1 -0
  84. package/assets/useSelect.mjs.map +1 -0
  85. package/assets/vf-box-widget.mjs +1 -0
  86. package/assets/vf-box-widget.mjs.map +1 -0
  87. package/assets/vf-collapse-widget.mjs +1 -0
  88. package/assets/vf-collapse-widget.mjs.map +1 -0
  89. package/assets/vf-dialog-widget.mjs +1 -0
  90. package/assets/vf-dialog-widget.mjs.map +1 -0
  91. package/assets/vue-render-widget.mjs +1 -0
  92. package/assets/vue-render-widget.mjs.map +1 -0
  93. package/assets/zh-CN.mjs +1 -0
  94. package/assets/zh-CN.mjs.map +1 -0
  95. package/assets/zh-CN_extension.mjs +1 -0
  96. package/assets/zh-CN_extension.mjs.map +1 -0
  97. package/assets/zh-CN_render.mjs +1 -0
  98. package/assets/zh-CN_render.mjs.map +1 -0
  99. package/index.js +1 -0
  100. package/index.js.map +1 -0
  101. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.mjs","sources":["../../../core/src/utils/util.ts","../../../core/src/components/contextMenu/useWidgetContextMenu.ts","../../../core/src/components/contextMenu/WidgetContextMenu.vue","../../../core/src/components/DragBtn.vue","../../../core/src/components/common/render/Debugger.vue","../../../core/src/utils/useEmitter.ts","../../../core/src/components/common/render/RenderForm.vue","../../../core/src/components/common/render/LowcodeRenderProvider.vue","../../../core/src/components/common/render/useFormContext.ts","../../../core/src/hooks/useDesigner.ts","../../../core/src/components/common/RenderWidgetList.vue","../../../core/src/components/common/desginer/WidgetWrapper.vue","../../../core/src/constants/LayoutTypeEnum.ts","../../../core/src/constants/WidgetTypeEnum.ts","../../../core/src/constants/index.ts","../../../core/src/utils/smart-vue-i18n/index.ts","../../../core/src/utils/i18n.ts","../../../core/src/utils/format.ts","../../../core/src/utils/getFileName.ts","../../../core/src/utils/validators.ts","../../../core/src/hooks/useAppRef.ts","../../../core/src/hooks/useFormValidation.ts","../../../core/src/hooks/useDataHttp.ts","../../../core/src/hooks/useField.ts","../../../core/src/hooks/useLowcode.ts","../../src/components/field-widget/index.ts","../../src/components/form-render/RenderWigetList.vue","../../src/components/form-render/container-items/grid-sub-form-widget.vue","../../src/components/form-render/container-items/grid-col-widget.vue","../../src/components/form-render/container-items/grid-widget.vue","../../src/components/desginer/widget-panel/basicFields/input.ts","../../src/components/desginer/widget-panel/basicFields/textarea.ts","../../src/components/desginer/widget-panel/basicFields/number.ts","../../src/components/desginer/widget-panel/basicFields/radio.ts","../../src/components/desginer/widget-panel/basicFields/checkbox.ts","../../src/components/desginer/widget-panel/basicFields/select.ts","../../src/components/desginer/widget-panel/basicFields/time.ts","../../src/components/desginer/widget-panel/basicFields/timeRange.ts","../../src/components/desginer/widget-panel/basicFields/date.ts","../../src/components/desginer/widget-panel/basicFields/dateRange.ts","../../src/components/desginer/widget-panel/basicFields/switch.ts","../../src/components/desginer/widget-panel/basicFields/rate.ts","../../src/components/desginer/widget-panel/basicFields/color.ts","../../src/components/desginer/widget-panel/basicFields/slider.ts","../../src/components/desginer/widget-panel/basicFields/staticText.ts","../../src/components/desginer/widget-panel/basicFields/htmlText.ts","../../src/components/desginer/widget-panel/basicFields/button.ts","../../src/components/desginer/widget-panel/basicFields/divider.ts","../../src/components/desginer/widget-panel/basicFields/dropdown.ts","../../src/components/desginer/widget-panel/basicFields/buttonList.ts","../../src/components/desginer/widget-panel/basicFieldsEnums.ts","../../src/components/desginer/widget-panel/containers/grid.ts","../../src/components/desginer/widget-panel/containers/grid-col.ts","../../src/components/desginer/widget-panel/containers/vf-dialog.ts","../../src/components/desginer/widget-panel/containers/vf-collapse.ts","../../src/components/desginer/widget-panel/containers/vf-box.ts","../../src/components/desginer/widget-panel/containers/tab.ts","../../src/components/desginer/widget-panel/containers/tab-pane.ts","../../src/components/desginer/widget-panel/containers/grid-sub-form.ts","../../src/components/desginer/widget-panel/advanced/cascader.ts","../../src/components/desginer/widget-panel/advanced/tree-select.ts","../../src/components/desginer/widget-panel/advanced/code-editor.ts","../../src/components/desginer/widget-panel/advanced/rich-editor.ts","../../src/components/desginer/widget-panel/advanced/file-upload.ts","../../src/components/desginer/widget-panel/advanced/bpmn-editor.ts","../../src/components/desginer/widget-panel/advanced/diy-compontent.ts","../../src/components/desginer/widget-panel/advanced/tree.ts","../../src/components/desginer/widget-panel/advanced/data-table.ts","../../src/components/desginer/widget-panel/advancedFieldsEnums.ts","../../src/components/desginer/widget-panel/widgetsConfig.ts","../../src/components/desginer/form-widget/container-widget/index.ts","../../../core/src/utils/event-bus.ts","../../src/components/public/ActionButtonListRender.vue","../../src/components/public/ConfigView/CustomPageRender.vue","../../src/hooks/useLowcode.ts","../../src/components/public/DynamicDialog.vue","../../src/components/desginer/form-widget/container-widget/useTableWidget.ts","../../src/components/form-render/container-items/data-table-widget.vue","../../src/components/form-render/container-items/vf-collapse-widget.vue","../../src/components/form-render/container-items/vf-box-widget.vue","../../src/components/form-render/container-items/tab-widget.vue","../../src/components/form-render/container-items/index.ts","../../src/components/render/useRenderWidget.ts","../../src/components/render/index.vue","../../install.ts"],"sourcesContent":["import Clipboard from 'clipboard';\nimport { getLocat } from '@kp-ui/tool';\nimport { isArray, isEmpty, cloneDeep } from 'lodash-es';\n\nimport { FormConfig, Widget, FormJsonType } from '@kp-ui/lowcode-core';\n\nexport function isNull(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\nexport function isNotNull(value: unknown): boolean {\n return value !== null && value !== undefined;\n}\n\nexport function isEmptyStr(str: unknown): boolean {\n //return (str === undefined) || (!str) || (!/[^\\s]/.test(str));\n return (\n str === undefined ||\n (!str && str !== 0 && str !== '0') ||\n (typeof str === 'string' && !/[^\\s]/.test(str))\n );\n}\n\nexport const generateId = function (): number {\n return Math.floor(Math.random() * 100000 + Math.random() * 20000 + Math.random() * 5000);\n};\n\nexport const deepClone = function <T>(origin: T): T {\n return cloneDeep(origin);\n};\n\nexport const overwriteObj = function <T extends Record<string, unknown>>(\n obj1: T,\n obj2: Partial<T>\n): void {\n /* 浅拷贝对象属性,obj2覆盖obj1 */\n Object.keys(obj2).forEach(prop => {\n (obj1 as Record<string, unknown>)[prop] = obj2[prop as keyof T];\n });\n};\n\nexport const insertCustomCssToHead = function (cssCode: string, formId = ''): void {\n const head = document.getElementsByTagName('head')[0];\n\n const newStyle = document.createElement('style');\n newStyle.type = 'text/css';\n newStyle.id = formId ? 'vform-custom-css' + '-' + formId : 'vform-custom-css';\n\n try {\n newStyle.appendChild(document.createTextNode(cssCode));\n } catch (ex) {\n (newStyle as HTMLStyleElement & { styleSheet?: { cssText: string } }).styleSheet!.cssText =\n cssCode;\n }\n\n head.appendChild(newStyle);\n};\n\nexport const insertGlobalFunctionsToHtml = function (functionsCode: string, formId = ''): void {\n const bodyEle = document.getElementsByTagName('body')[0];\n\n const newScriptEle = document.createElement('script');\n newScriptEle.id = formId ? 'v_form_global_functions' + '-' + formId : 'v_form_global_functions';\n newScriptEle.type = 'text/javascript';\n newScriptEle.innerHTML = functionsCode;\n bodyEle.appendChild(newScriptEle);\n};\n\nexport const optionExists = function (\n optionsObj: Record<string, unknown> | null | undefined,\n optionName: string\n): boolean {\n if (!optionsObj) {\n return false;\n }\n\n return Object.keys(optionsObj).indexOf(optionName) > -1;\n};\n\nexport const loadRemoteScript = function (srcPath: string, callback: () => void): void {\n /*加载远程js,加载成功后执行回调函数*/\n const sid = encodeURIComponent(srcPath);\n const oldScriptEle = document.getElementById(sid);\n\n if (!oldScriptEle) {\n let s: HTMLScriptElement | null = document.createElement('script');\n s.src = srcPath;\n s.id = sid;\n document.body.appendChild(s);\n\n s.onload = s.onreadystatechange = function (\n this: HTMLScriptElement,\n _?: Event | string,\n isAbort?: boolean\n ) {\n /* 借鉴自ace.js */\n const scriptEl = this as HTMLScriptElement & { readyState?: string };\n if (\n isAbort ||\n !scriptEl.readyState ||\n scriptEl.readyState === 'loaded' ||\n scriptEl.readyState === 'complete'\n ) {\n s = null;\n if (!isAbort) {\n callback();\n }\n }\n } as OnErrorEventHandler;\n }\n};\n\nexport type WidgetHandler = (widget: Widget, parent?: Widget | null) => void;\nexport type ContainerHandler = (container: Widget) => void;\n\nexport function traverseFieldWidgets(\n widgetList: Widget[] | undefined,\n handler: WidgetHandler,\n parent: Widget | null = null,\n staticWidgetsIncluded = false\n): void {\n if (!widgetList) {\n return;\n }\n\n widgetList.forEach(w => {\n if (w.formItemFlag || (w.formItemFlag === false && staticWidgetsIncluded)) {\n handler(w, parent);\n } else if (w.type === 'grid') {\n w.cols?.forEach(col => {\n traverseFieldWidgets(col.widgetList, handler, w, staticWidgetsIncluded);\n });\n } else if (w.type === 'table') {\n w.rows?.forEach(row => {\n row.cols?.forEach(cell => {\n traverseFieldWidgets(cell.widgetList, handler, w, staticWidgetsIncluded);\n });\n });\n } else if (w.type === 'tab') {\n w.tabs?.forEach(tab => {\n traverseFieldWidgets(tab.widgetList, handler, w, staticWidgetsIncluded);\n });\n } else if (w.type === 'sub-form' || w.type === 'grid-sub-form') {\n traverseFieldWidgets(w.widgetList, handler, w, staticWidgetsIncluded);\n } else if (w.category === 'container') {\n //自定义容器\n traverseFieldWidgets(w.widgetList, handler, w, staticWidgetsIncluded);\n }\n });\n}\n\nexport function traverseContainerWidgets(\n widgetList: Widget[] | undefined,\n handler: ContainerHandler\n): void {\n if (!widgetList?.length) {\n return;\n }\n\n widgetList.forEach(w => {\n if (w.category === 'container') {\n handler(w);\n }\n\n if (w.type === 'grid') {\n w.cols?.forEach(col => {\n traverseContainerWidgets(col.widgetList, handler);\n });\n } else if (w.type === 'table') {\n w.rows?.forEach(row => {\n row.cols?.forEach(cell => {\n traverseContainerWidgets(cell.widgetList, handler);\n });\n });\n } else if (w.type === 'tab') {\n w.tabs?.forEach(tab => {\n traverseContainerWidgets(tab.widgetList, handler);\n });\n } else if (w.type === 'sub-form' || w.type === 'grid-sub-form') {\n traverseContainerWidgets(w.widgetList, handler);\n } else if (w.category === 'container') {\n //自定义容器\n traverseContainerWidgets(w.widgetList, handler);\n }\n });\n}\n\nexport function traverseAllWidgets(\n widgetList: Widget[] | undefined,\n handler: (widget: Widget) => void\n): void {\n if (!widgetList) {\n return;\n }\n\n widgetList.forEach(w => {\n handler(w);\n\n if (w.type === 'grid') {\n w.cols?.forEach(col => {\n handler(col as unknown as Widget);\n traverseAllWidgets(col.widgetList, handler);\n });\n } else if (w.type === 'table') {\n w.rows?.forEach(row => {\n row.cols?.forEach(cell => {\n handler(cell as unknown as Widget);\n traverseAllWidgets(cell.widgetList, handler);\n });\n });\n } else if (w.type === 'tab') {\n w.tabs?.forEach(tab => {\n traverseAllWidgets(tab.widgetList, handler);\n });\n } else if (w.type === 'sub-form' || w.type === 'grid-sub-form') {\n traverseAllWidgets(w.widgetList, handler);\n } else if (w.category === 'container') {\n //自定义容器\n traverseAllWidgets(w.widgetList, handler);\n }\n });\n}\n\nfunction handleWidgetForTraverse(widget: Widget, handler: WidgetHandler): void {\n if (widget.category && widget.category === 'container') {\n traverseFieldWidgetsOfContainer(widget, handler);\n } else if (widget.formItemFlag) {\n handler(widget);\n }\n}\n\n/**\n * 遍历容器内的字段组件\n * @param con\n * @param handler\n */\nexport function traverseFieldWidgetsOfContainer(con: Widget, handler: WidgetHandler): void {\n if (con.type === 'grid') {\n con.cols?.forEach(col => {\n col.widgetList?.forEach(cw => {\n handleWidgetForTraverse(cw, handler);\n });\n });\n } else if (con.type === 'table') {\n con.rows?.forEach(row => {\n row.cols?.forEach(cell => {\n cell.widgetList?.forEach(cw => {\n handleWidgetForTraverse(cw, handler);\n });\n });\n });\n } else if (con.type === 'tab') {\n con.tabs?.forEach(tab => {\n tab.widgetList?.forEach(cw => {\n handleWidgetForTraverse(cw, handler);\n });\n });\n } else if (con.type === 'sub-form' || con.type === 'grid-sub-form') {\n con.widgetList?.forEach(cw => {\n handleWidgetForTraverse(cw, handler);\n });\n } else if (con.category === 'container') {\n //自定义容器\n con.widgetList?.forEach(cw => {\n handleWidgetForTraverse(cw, handler);\n });\n }\n}\n\nfunction handleContainerTraverse(\n widget: Widget,\n fieldHandler: WidgetHandler,\n containerHandler: ContainerHandler\n): void {\n if (widget.category && widget.category === 'container') {\n traverseWidgetsOfContainer(widget, fieldHandler, containerHandler);\n } else if (widget.formItemFlag) {\n fieldHandler(widget);\n }\n}\n\n/**\n * 遍历容器内部的字段组件和容器组件\n * @param con\n * @param fieldHandler\n * @param containerHandler\n */\nexport function traverseWidgetsOfContainer(\n con: Widget,\n fieldHandler: WidgetHandler,\n containerHandler: ContainerHandler\n): void {\n if (con.type === 'grid') {\n con.cols?.forEach(col => {\n col.widgetList?.forEach(cw => {\n handleContainerTraverse(cw, fieldHandler, containerHandler);\n });\n });\n } else if (con.type === 'table') {\n con.rows?.forEach(row => {\n row.cols?.forEach(cell => {\n cell.widgetList?.forEach(cw => {\n handleContainerTraverse(cw, fieldHandler, containerHandler);\n });\n });\n });\n } else if (con.type === 'tab') {\n con.tabs?.forEach(tab => {\n tab.widgetList?.forEach(cw => {\n handleContainerTraverse(cw, fieldHandler, containerHandler);\n });\n });\n } else if (con.type === 'sub-form' || con.type === 'grid-sub-form') {\n con.widgetList?.forEach(cw => {\n handleContainerTraverse(cw, fieldHandler, containerHandler);\n });\n } else if (con.category === 'container') {\n //自定义容器\n con.widgetList?.forEach(cw => {\n handleContainerTraverse(cw, fieldHandler, containerHandler);\n });\n }\n}\n\nexport interface FieldWidgetInfo {\n type: string;\n name: string | undefined;\n field: Widget;\n}\n\n/**\n * 获取所有字段组件\n * @param widgetList\n * @param staticWidgetsIncluded 是否包含按钮等静态组件,默认不包含\n * @returns {[]}\n */\nexport function getAllFieldWidgets(\n widgetList: Widget[] | undefined,\n staticWidgetsIncluded = false\n): FieldWidgetInfo[] {\n if (!widgetList) {\n return [];\n }\n\n const result: FieldWidgetInfo[] = [];\n const handlerFn: WidgetHandler = w => {\n result.push({\n type: w.type,\n name: w.options?.name,\n field: w\n });\n };\n traverseFieldWidgets(widgetList, handlerFn, null, staticWidgetsIncluded);\n\n return result;\n}\n\nexport interface ContainerWidgetInfo {\n type: string;\n name: string | undefined;\n container: Widget;\n}\n\n/**\n * 获取所有容器组件\n * @param widgetList\n * @returns {[]}\n */\nexport function getAllContainerWidgets(widgetList: Widget[] | undefined): ContainerWidgetInfo[] {\n if (!widgetList) {\n return [];\n }\n\n const result: ContainerWidgetInfo[] = [];\n const handlerFn: ContainerHandler = w => {\n result.push({\n type: w.type,\n name: w.options?.name,\n container: w\n });\n };\n traverseContainerWidgets(widgetList, handlerFn);\n\n return result;\n}\n\nexport function getFieldWidgetByName(\n widgetList: Widget[] | undefined,\n fieldName: string,\n staticWidgetsIncluded?: boolean\n): Widget | null {\n if (!widgetList) {\n return null;\n }\n\n let foundWidget: Widget | null = null;\n const handlerFn: WidgetHandler = widget => {\n if (widget.options?.name === fieldName) {\n foundWidget = widget;\n }\n };\n\n traverseFieldWidgets(widgetList, handlerFn, null, staticWidgetsIncluded);\n return foundWidget;\n}\n\nexport function getContainerWidgetByName(\n widgetList: Widget[] | undefined,\n containerName: string\n): Widget | null {\n if (!widgetList) {\n return null;\n }\n\n let foundContainer: Widget | null = null;\n const handlerFn: ContainerHandler = con => {\n if (con.options?.name === containerName) {\n foundContainer = con;\n }\n };\n\n traverseContainerWidgets(widgetList, handlerFn);\n return foundContainer;\n}\n\nexport function getContainerWidgetById(\n widgetList: Widget[] | undefined,\n containerId: string\n): Widget | null {\n if (!widgetList) {\n return null;\n }\n\n let foundContainer: Widget | null = null;\n const handlerFn: ContainerHandler = con => {\n if (con.id === containerId) {\n foundContainer = con;\n }\n };\n\n traverseContainerWidgets(widgetList, handlerFn);\n return foundContainer;\n}\n\ninterface MessageApi {\n success: (msg: string) => void;\n error: (msg: string) => void;\n}\n\nexport function copyToClipboard(\n content: string,\n clickEvent: MouseEvent,\n $message: MessageApi,\n successMsg: string,\n errorMsg: string\n): void {\n const clipboard = new Clipboard(clickEvent.target as Element, {\n text: () => content\n });\n\n clipboard.on('success', () => {\n $message.success(successMsg);\n clipboard.destroy();\n });\n\n clipboard.on('error', () => {\n $message.error(errorMsg);\n clipboard.destroy();\n });\n\n clipboard.onClick(clickEvent);\n}\n\nexport function getQueryParam(variable: string): string | undefined {\n const query = window.location.search.substring(1);\n const vars = query.split('&');\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=');\n if (pair[0] == variable) {\n return pair[1];\n }\n }\n\n return undefined;\n}\n\nexport function getDefaultFormConfig(): FormConfig {\n const { formCode = '' } = getLocat() as { formCode?: string };\n\n return {\n labelWidth: 80,\n labelPosition: 'horizontal', //'left',\n size: '',\n labelAlign: 'right',\n cssCode: '',\n customClass: [],\n\n isEnterSubmit: 0,\n\n buttonList: [],\n\n functions: '', //全局函数\n layoutType: 'PC',\n scaleMode: 'auto',\n onFormCreated: '',\n onFormMounted: `\n if(!this.vfCtx) return\n if(!this.vfCtx._id) return\n const type = this.vfCtx.type\n this.setReadMode(type==='view')\n this.onFormDetail().then(res=>{\n this.setFormData({...res})\n })\n `,\n\n onFormDataChange: '',\n\n serveList: {\n list: [],\n vformUpdate: {\n http: {\n url: `/api/tmgc2-mgt/formDefinition/${formCode}/evaluate/formSubmit`,\n method: 'post',\n data: { _id: '${_id}' },\n params: {}\n },\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n dataHandlerCode: ''\n },\n vformDetail: {\n http: {\n url: `/api/tmgc2-mgt/formDefinition/${formCode}/evaluate/formLoad`,\n method: 'post',\n data: { _id: '${_id}' },\n params: {}\n },\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n dataHandlerCode: 'return data.data.object||{}'\n }\n }\n };\n}\n\nexport function buildDefaultFormJson(): FormJsonType {\n return {\n widgetList: [],\n formConfig: deepClone(getDefaultFormConfig())\n };\n}\n\nexport function cloneFormConfigWithoutEventHandler(formConfig: FormConfig): FormConfig {\n const newFC = deepClone(formConfig);\n newFC.onFormCreated = '';\n newFC.onFormMounted = '';\n newFC.onFormDataChange = '';\n\n return newFC;\n}\n\n/**\n * 转译选择项数据\n * @param rawData\n * @param widgetType\n * @param labelKey\n * @param valueKey\n * @returns {[]}\n */\nexport function translateOptionItems<T extends Record<string, unknown>>(\n rawData: T[],\n widgetType: string,\n labelKey: string,\n valueKey: string\n): Array<{ label: unknown; value: unknown }> | T[] {\n if (['cascader', 'treeSelect', 'select'].includes(widgetType)) {\n // 级联选择不转译\n return deepClone(rawData);\n }\n\n const result: Array<{ label: unknown; value: unknown }> = [];\n if (rawData && rawData.length > 0) {\n rawData.forEach(ri => {\n result.push({\n label: ri[labelKey],\n value: ri[valueKey]\n });\n });\n }\n\n return rawData; //result;\n}\n\nexport function getDSByName(\n formConfig: FormConfig,\n dsName: string\n): { uniqueName: string; [key: string]: unknown } | null {\n let resultDS: { uniqueName: string; [key: string]: unknown } | null = null;\n if (dsName && formConfig.dataSources) {\n formConfig.dataSources.forEach(ds => {\n if (ds.uniqueName === dsName) {\n resultDS = ds;\n }\n });\n }\n\n return resultDS;\n}\n","import { Component, computed, Ref } from 'vue';\nimport { Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport {\n DeleteOutlined,\n LockOutlined,\n UnlockOutlined,\n VerticalAlignTopOutlined,\n VerticalAlignBottomOutlined,\n ArrowUpOutlined,\n ArrowDownOutlined,\n AppstoreOutlined,\n CopyOutlined,\n RollbackOutlined\n} from '@ant-design/icons-vue';\nimport { useDesigner } from '@kp-ui/lowcode-core';\nimport { useI18n } from '@kp-ui/lowcode-core';\n\nexport interface MenuItem {\n key: string;\n label?: string;\n icon?: Component;\n onClick?: () => void;\n divider?: boolean;\n children?: MenuItem[];\n hidden?: boolean;\n}\n\nexport function useWidgetContextMenu(props: {\n widget: Widget;\n index: number;\n parentWidget?: Widget;\n onClose: () => void;\n list: Ref<Widget[]>;\n}) {\n const { designer, isBI } = useDesigner();\n const { i18nt } = useI18n();\n\n // 上移组件\n const moveUpWidget = () => {\n designer.value.moveUpWidget(props.list.value, props.index);\n designer.value.emitHistoryChange();\n };\n\n // 下移组件\n const moveDownWidget = () => {\n designer.value.moveDownWidget(props.list.value, props.index);\n designer.value.emitHistoryChange();\n };\n\n // 复制组件\n const cloneWidget = () => {\n const list = props.list.value;\n if (!list) return;\n const cloned = designer.value.copyWidget(props.widget);\n list.splice(props.index + 1, 0, cloned);\n designer.value.setSelected(cloned);\n designer.value.emitHistoryChange();\n };\n\n // 删除组件\n const removeWidget = () => {\n console.log(props.list.value);\n\n designer.value.removeWidget(props.list.value, props.index, props.parentWidget);\n };\n\n // 选择父组件\n const selectParentWidget = () => {\n if (props.parentWidget?.id) {\n designer.value.setSelected(props.parentWidget);\n } else {\n designer.value.clearSelected();\n }\n };\n\n const handleAction = (action: () => void) => {\n action();\n props.onClose();\n };\n\n const handleLock = () => {\n props.widget.options.locked = !props.widget.options.locked;\n props.onClose();\n };\n\n const handleLayer = (type: 'top' | 'bottom' | 'up' | 'down') => {\n const widget = props.widget;\n const zIndex = widget.options.zIndex || 0;\n const list = designer.value.widgetList;\n switch (type) {\n case 'top':\n const maxZ = Math.max(...list.map(w => w.options.zIndex || 0));\n widget.options.zIndex = maxZ + 1;\n break;\n case 'bottom':\n const minZ = Math.min(...list.map(w => w.options.zIndex || 0));\n widget.options.zIndex = minZ - 1;\n break;\n case 'up':\n widget.options.zIndex = zIndex + 1;\n break;\n case 'down':\n widget.options.zIndex = zIndex - 1;\n break;\n }\n props.onClose();\n };\n\n const menuConfigs = computed<MenuItem[]>(() => {\n const configs: MenuItem[] = [];\n\n // 选择父组件\n if (props.parentWidget?.id) {\n configs.push({\n key: 'selectParent',\n label: i18nt('designer.hint.selectParentWidget'),\n icon: RollbackOutlined,\n onClick: () => handleAction(selectParentWidget)\n });\n configs.push({ key: 'd1', divider: true });\n }\n\n if (isBI.value) {\n // BI 模式特有:锁定\n configs.push({\n key: 'lock',\n label: props.widget.options.locked\n ? i18nt('designer.hint.unlock')\n : i18nt('designer.hint.lock'),\n icon: props.widget.options.locked ? UnlockOutlined : LockOutlined,\n onClick: handleLock\n });\n\n // BI 模式特有:图层\n configs.push({\n key: 'layer',\n label: i18nt('designer.hint.layer'),\n icon: AppstoreOutlined,\n children: [\n {\n key: 'bringToFront',\n label: i18nt('designer.hint.bringToFront'),\n icon: VerticalAlignTopOutlined,\n onClick: () => handleLayer('top')\n },\n {\n key: 'sendToBack',\n label: i18nt('designer.hint.sendToBack'),\n icon: VerticalAlignBottomOutlined,\n onClick: () => handleLayer('bottom')\n },\n {\n key: 'bringForward',\n label: i18nt('designer.hint.bringForward'),\n icon: ArrowUpOutlined,\n onClick: () => handleLayer('up')\n },\n {\n key: 'sendBackward',\n label: i18nt('designer.hint.sendBackward'),\n icon: ArrowDownOutlined,\n onClick: () => handleLayer('down')\n }\n ]\n });\n\n configs.push({\n key: 'clone',\n label: i18nt('designer.hint.cloneWidget'),\n icon: CopyOutlined,\n onClick: () => handleAction(cloneWidget)\n });\n\n configs.push({ key: 'd2', divider: true });\n } else {\n // 非 BI 模式:上移/下移/复制\n configs.push({\n key: 'moveUp',\n label: i18nt('designer.hint.moveUpWidget'),\n icon: ArrowUpOutlined,\n onClick: () => handleAction(moveUpWidget),\n hidden: props.index <= 0\n });\n configs.push({\n key: 'moveDown',\n label: i18nt('designer.hint.moveDownWidget'),\n icon: ArrowDownOutlined,\n onClick: () => handleAction(moveDownWidget),\n hidden: props.index >= props.list.value.length - 1\n });\n\n configs.push({\n key: 'clone',\n label: i18nt('designer.hint.cloneWidget'),\n icon: CopyOutlined,\n onClick: () => handleAction(cloneWidget)\n });\n\n configs.push({ key: 'd3', divider: true });\n }\n\n // 删除\n configs.push({\n key: 'delete',\n label: i18nt('designer.hint.remove'),\n icon: DeleteOutlined,\n onClick: () => handleAction(removeWidget)\n });\n\n return configs.filter(item => !item.hidden);\n });\n\n return {\n menuConfigs,\n moveUpWidget,\n moveDownWidget,\n cloneWidget,\n removeWidget,\n selectParentWidget\n };\n}\n","<template>\n <a-dropdown :open=\"visible\" @update:open=\"handleVisibleChange\" :trigger=\"['click']\">\n <div\n class=\"context-menu-trigger\"\n :style=\"{ position: 'fixed', left: x + 'px', top: y + 'px' }\"\n ></div>\n <template #overlay>\n <a-menu>\n <template v-for=\"item in menuConfigs\" :key=\"item.key\">\n <a-menu-divider v-if=\"item.divider\" />\n <template v-else-if=\"!item.hidden\">\n <a-sub-menu v-if=\"item.children\" :title=\"item.label\">\n <template #icon v-if=\"item.icon\">\n <component :is=\"item.icon\" />\n </template>\n <a-menu-item\n v-for=\"sub in item.children\"\n :key=\"sub.key\"\n @click=\"sub.onClick\"\n >\n <template #icon v-if=\"sub.icon\">\n <component :is=\"sub.icon\" />\n </template>\n {{ sub.label }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-item v-else @click=\"item.onClick\" :key=\"item.key\">\n <template #icon v-if=\"item.icon\">\n <component :is=\"item.icon\" />\n </template>\n {{ item.label }}\n </a-menu-item>\n </template>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n</template>\n\n<script lang=\"ts\" setup>\n import { Widget } from '@kp-ui/lowcode-core/src/types/schema';\n import { useWidgetContextMenu } from './useWidgetContextMenu';\n\n defineOptions({\n name: 'WidgetContextMenu'\n });\n\n const props = defineProps<{\n widget: Widget | null;\n index: number;\n visible: boolean;\n x: number;\n y: number;\n parentWidget?: any;\n }>();\n const list = defineModel<Widget[]>('list', { default: () => [] });\n\n const emit = defineEmits<{\n (e: 'update:visible', visible: boolean): void;\n }>();\n\n const handleVisibleChange = (val: boolean) => {\n emit('update:visible', val);\n };\n\n const { menuConfigs } = useWidgetContextMenu({\n widget: props.widget as Widget,\n index: props.index,\n parentWidget: props.parentWidget,\n list: list,\n onClose: () => handleVisibleChange(false)\n });\n</script>\n\n<style scoped>\n .context-menu-trigger {\n width: 1px;\n height: 1px;\n z-index: 9999;\n }\n</style>\n","<template>\n <div :class=\"{ 'drag-handler': true, selected: selected }\">\n <i :title=\"i18nt('designer.hint.dragHandler')\">\n <svg-icon icon-class=\"icon-el-drag-move\" />\n </i>\n <i>\n {{\n i18n2t(\n `designer.widgetLabel.${widget.type}`,\n `extension.widgetLabel.${widget.type}`\n )\n }}\n </i>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { useI18n } from '@kp-ui/lowcode-core';\n import { SvgIcon } from 'tmgc2-share';\n import type { Widget } from '@kp-ui/lowcode-core';\n\n const { i18nt, i18n2t } = useI18n();\n\n const props = defineProps<{\n selected: boolean;\n widget: Widget;\n }>();\n</script>\n<style lang=\"scss\" scoped>\n .drag-handler {\n position: absolute;\n top: -1px;\n left: -1px;\n height: 20px;\n line-height: 20px;\n z-index: 10;\n background: var(--ant-primary-color);\n display: flex;\n align-items: center;\n padding: 0 4px;\n opacity: 0;\n transition: opacity 0.2s;\n visibility: hidden;\n &.selected {\n opacity: 0.6;\n visibility: visible;\n &:hover {\n opacity: 1;\n }\n }\n\n i {\n font-size: 12px;\n font-style: normal;\n color: #fff;\n margin: 0 2px;\n cursor: move;\n display: flex;\n align-items: center;\n }\n }\n</style>\n","<template>\n <div class=\"debug-panel\" :class=\"{ collapsed: !debugVisible }\">\n <div class=\"debug-toggle\" @click=\"debugVisible = !debugVisible\">\n {{ debugVisible ? '收起' : '调试' }}\n </div>\n <div class=\"debug-content\">\n <div class=\"debug-section\">\n <h3>Form Data Model</h3>\n <JsonViewer :value=\"formDataModel\" :expand-depth=\"5\" />\n </div>\n <div class=\"debug-section\">\n <h3>Widget Ref List ({{ widgetRefList.size }} widgets)</h3>\n <div class=\"widget-list\">\n <div\n v-for=\"[key, value] in widgetRefList\"\n @click=\"console.log(value)\"\n :key=\"key\"\n class=\"widget-item\"\n >\n <div class=\"widget-key\">{{ key }}</div>\n </div>\n </div>\n </div>\n <div class=\"debug-section\">\n <h3>FormConfig</h3>\n <div class=\"widget-list\">\n <JsonViewer :value=\"formConfig\" :expand-depth=\"5\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, inject } from 'vue';\n import JsonViewer from 'vue-json-viewer';\n const debugVisible = defineModel('visible', {\n type: Boolean,\n default: false\n });\n\n const formDataModel = inject('formData', {});\n const widgetRefList = inject('refList', ref(new Map()));\n const formConfig = inject('formConfig');\n</script>\n\n<style lang=\"less\" scoped>\n /* 调试面板样式 */\n .debug-panel {\n position: absolute;\n top: 0;\n right: 0;\n width: 400px;\n height: 100vh;\n background-color: #fff;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n z-index: 9999;\n transition: transform 0.3s ease-in-out;\n display: flex;\n flex-direction: column;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n :deep(.jv-container .jv-code) {\n padding: 0;\n }\n\n &.collapsed {\n transform: translateX(400px);\n\n .debug-toggle {\n left: -40px;\n border-radius: 8px 0 0 8px;\n width: 40px;\n }\n }\n\n .debug-toggle {\n position: absolute;\n left: -40px;\n top: 20px;\n width: 40px;\n height: 40px;\n background-color: var(--ant-primary-color);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px 0 0 8px;\n font-size: 12px;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n writing-mode: vertical-lr;\n padding: 8px 0;\n user-select: none;\n }\n\n .debug-content {\n flex: 1;\n overflow: auto;\n padding: 16px;\n background-color: #f5f7fa;\n\n .debug-section {\n margin-bottom: 24px;\n background-color: #fff;\n border-radius: 8px;\n padding: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n\n h3 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n border-bottom: 1px solid #e8e8e8;\n padding-bottom: 8px;\n }\n\n .empty-state {\n color: #999;\n font-size: 12px;\n text-align: center;\n padding: 20px;\n }\n\n .widget-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n .widget-item {\n border: 1px solid #e8e8e8;\n border-radius: 4px;\n padding: 2px 4px;\n line-height: 1.2;\n background-color: #fafafa;\n cursor: pointer;\n\n .widget-key {\n font-weight: 600;\n color: var(--ant-primary-color);\n font-size: 12px;\n }\n }\n }\n }\n\n pre {\n margin: 0;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n font-size: 12px;\n white-space: pre-wrap;\n word-wrap: break-word;\n background-color: #f5f5f5;\n padding: 8px;\n border-radius: 4px;\n color: #333;\n }\n }\n }\n</style>\n","import { ref, getCurrentInstance, ComponentInternalInstance, Ref } from 'vue';\n\n/**\n * 事件处理函数类型\n */\nexport type EventHandler<T = any> = (data: T) => void;\n\n/**\n * 事件存储对象类型\n */\nexport interface EventsMap {\n [eventName: string]: EventHandler[];\n}\n\n/**\n * 组件引用类型\n */\ninterface ComponentRef {\n $options?: {\n componentName?: string;\n };\n emit$?: (eventName: string, params: any) => void;\n}\n\n/**\n * 组件上下文类型\n */\ninterface ComponentContext {\n widgetRefList?: Record<string, ComponentRef>;\n refList?: Record<string, ComponentRef>;\n}\n\nexport type EditEventHandlerParams = {\n title?: string;\n attr: string;\n eventParams?: string[];\n mode?: string;\n};\n\n/**\n * 组合式API版本的事件总线\n * 用于组件间通信\n */\nexport function useEmitter() {\n // 使用ref创建响应式事件存储对象\n const vfEvents: Ref<EventsMap> = ref({});\n const instance = getCurrentInstance();\n\n /**\n * 触发事件\n * @param {string} eventName 事件名称\n * @param {any} data 事件数据\n */\n const emit$ = <T = any>(eventName: string, data: T): void => {\n if (vfEvents.value[eventName]) {\n vfEvents.value[eventName].forEach(fn => {\n fn(data);\n });\n }\n };\n\n /**\n * 监听事件\n * @param {string} eventName 事件名称\n * @param {Function} fn 回调函数\n */\n const on$ = <T = any>(eventName: string, fn: EventHandler<T>): void => {\n vfEvents.value[eventName] = vfEvents.value[eventName] || [];\n vfEvents.value[eventName].push(fn as EventHandler);\n };\n\n /**\n * 移除事件监听\n * @param {string} eventName 事件名称\n * @param {Function} fn 回调函数,如果不传则移除该事件的所有监听\n */\n const off$ = <T = any>(eventName: string, fn?: EventHandler<T>): void => {\n if (vfEvents.value[eventName]) {\n if (fn === undefined || fn === null) {\n vfEvents.value[eventName].length = 0;\n return;\n }\n\n for (let i = 0; i < vfEvents.value[eventName].length; i++) {\n if (vfEvents.value[eventName][i] === fn) {\n vfEvents.value[eventName].splice(i, 1);\n break;\n }\n }\n }\n };\n\n /**\n * 向上派发事件,寻找指定组件并触发其事件\n * @param {string} componentName 目标组件名称\n * @param {string} eventName 事件名称\n * @param {any} params 事件参数\n */\n const dispatch = (componentName: string, eventName: string, params: any): void => {\n if (!instance) return;\n let parent = instance.parent as ComponentInternalInstance | null;\n let name = parent?.type?.['componentName'] as string | undefined;\n\n while (parent && (!name || name !== componentName)) {\n parent = parent.parent;\n\n if (parent) {\n name = parent.type?.['componentName'] as string | undefined;\n }\n }\n\n if (parent) {\n // 检查目标组件是否有emit$方法\n if (parent.exposed?.emit$ || (parent as any).ctx?.emit$) {\n const targetEmit$ = parent.exposed?.emit$ || parent.ctx?.emit$;\n targetEmit$.call(parent.proxy, eventName, params);\n\n // if (componentName === 'VFormRender') {\n // // 执行原生$emit,以便可以用@进行声明式事件处理\n // parent.emit(eventName, ...(Array.isArray(params) ? params : [params]));\n // }\n }\n }\n };\n\n /**\n * 向下广播事件,寻找指定组件并触发其事件\n * @param {string} componentName 目标组件名称\n * @param {string} eventName 事件名称\n * @param {any} params 事件参数\n */\n const broadcast = (componentName: string, eventName: string, params: any): void => {\n // Vue3中不再有$children属性,需要通过其他方式获取子组件\n // 使用widgetRefList或refList属性\n\n // 处理FormRender组件的widgetRefList\n const ctx = instance?.proxy as unknown as ComponentContext;\n if (ctx?.widgetRefList) {\n Object.keys(ctx.widgetRefList).forEach(refName => {\n const widget = ctx.widgetRefList[refName];\n const cmpName = widget.$options?.componentName;\n if (cmpName === componentName) {\n if (widget.emit$) {\n widget.emit$.call(widget, eventName, params);\n }\n }\n });\n }\n\n // 处理其他组件的refList\n if (ctx?.refList) {\n Object.keys(ctx.refList).forEach(refName => {\n const ref = ctx.refList[refName];\n const cmpName = ref.$options?.componentName;\n if (cmpName === componentName) {\n if (ref.emit$) {\n ref.emit$.call(ref, eventName, params);\n }\n }\n });\n }\n };\n\n /**\n * 编辑事件处理器\n * @param {string} eventName 事件名称\n * @param {any[]} eventParams 事件参数\n * @deprecated\n */\n const editEventHandler = (eventName: string, eventParams: any[], mode: string): void => {\n dispatch('SettingPanel', 'editEventHandler', [eventName, [...eventParams], mode]);\n };\n\n const onChangeEditEventHandler = (params: EditEventHandlerParams): void => {\n dispatch('SettingPanel', 'onChangeEventHandler', params);\n };\n\n return {\n vfEvents,\n editEventHandler,\n onChangeEditEventHandler,\n emit$,\n on$,\n off$,\n dispatch,\n broadcast\n };\n}\n","<template>\n <Form\n ref=\"renderForm\"\n :layout=\"labelPosition\"\n :class=\"['render-form', 'tpf-form', customClass, readModeFlag ? 'readonly-mode-form' : '']\"\n :scrollToFirstError=\"true\"\n :validateOnRuleChange=\"false\"\n :model=\"formDataModel\"\n @keydown.enter=\"handleEnterKey\"\n >\n <RenderWidgetList :parentWidget=\"null\" v-model:list=\"widgetList\" />\n </Form>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, ref, onMounted, type PropType } from 'vue';\n import { Form } from 'ant-design-vue';\n import { RenderWidgetList } from '@kp-ui/lowcode-core';\n import { useEmitter } from '@kp-ui/lowcode-core/src/utils/useEmitter';\n\n /**\n * 表单容器组件\n * 负责渲染表单及其子组件\n */\n const props = defineProps({\n context: {\n type: Object as PropType<any>,\n required: true\n }\n });\n\n const emit = defineEmits(['form-submit', 'form-cancel']);\n\n // 组件引用\n const renderForm = ref();\n const { emit$, on$, off$ } = useEmitter();\n\n // 从上下文中获取数据\n const formDataModel = computed({\n get: () => props.context.formDataModel.value,\n set: val => {\n props.context.formDataModel.value = val;\n }\n });\n const readModeFlag = computed(() => props.context.readModeFlag.value);\n const formConfig = computed(() => props.context.formConfig.value);\n const widgetList = computed(() => props.context.widgetList.value);\n const labelPosition = computed(() => props.context.labelPosition.value);\n const customClass = computed(() => props.context.customClass.value);\n\n /**\n * 处理回车键事件\n */\n const handleEnterKey = () => {\n if (formConfig.value?.isEnterSubmit === 1) {\n props.context.onFormUpdate();\n }\n };\n\n onMounted(() => {});\n\n // 暴露方法\n defineExpose({\n renderForm,\n off$,\n on$,\n emit$\n });\n</script>\n","<template>\n <slot></slot>\n</template>\n<script lang=\"tsx\" setup>\n import { useI18n, type Widget } from '@kp-ui/lowcode-core';\n import { Component, provide, watch } from 'vue';\n import { useLocaleStore } from '@kp-ui/i18n';\n import { storeToRefs } from 'pinia';\n\n defineOptions({\n name: 'LowcodeRenderProvider'\n });\n\n const props = withDefaults(\n defineProps<{\n designState?: boolean;\n getWidget: (widget: Widget) => Component;\n context: any;\n }>(),\n {\n designState: false\n }\n );\n\n const localeStore = useLocaleStore();\n const { locale } = storeToRefs(localeStore);\n const { initLocale } = useI18n();\n\n watch(\n locale,\n () => {\n initLocale(locale.value);\n },\n {\n immediate: true\n }\n );\n\n provide('designState', props.designState); // 设计态标识\n provide('getWidget', props.getWidget);\n provide('formConfig', props.context?.formConfig);\n provide('formWidgetId', props.context?.formWidgetId);\n // 提供给子组件的数据\n provide('refList', props.context?.widgetRefList);\n provide('formData', props.context?.formDataModel);\n provide('getReadMode', () => props.context?.readModeFlag.value);\n</script>\n","import { computed, nextTick, onMounted, provide, ref, useTemplateRef, watchEffect } from 'vue';\nimport {\n useFormValidation,\n FormConfig,\n Widget,\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@kp-ui/lowcode-core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport { useEmitter } from '@kp-ui/lowcode-core/src/utils/useEmitter';\nimport { useI18n, useAppRef } from '@kp-ui/lowcode-core';\n\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialogRef = useTemplateRef<any>('dynamicDialogRef');\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed<FormConfig>(() => formJsonObj.value?.formConfig || {});\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n\n // 重新构建表单数据模型\n formDataModel.value = {};\n insertCustomCode();\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialogRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialogRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n console.log({ cssCode });\n\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n formValidator,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialogRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n","import { FormConfig, Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport { FormDesigner } from '@kp-ui/lowcode-core/src/types/designer';\nimport { LayoutTypeEnum } from '@kp-ui/lowcode-core';\nimport { computed, inject, nextTick, ref, Ref } from 'vue';\n\nexport function useDesigner() {\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n const designState = inject('designState', false);\n const getWidget = inject('getWidget', (widget: Widget) => {});\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n const formData = inject('formData', ref({}));\n\n const layoutType = inject('layoutType', ref(LayoutTypeEnum.PC));\n const isPc = computed(\n () => layoutType.value === LayoutTypeEnum.PC || layoutType.value === LayoutTypeEnum.H5\n );\n\n const isBI = computed(() => layoutType.value === LayoutTypeEnum.BI);\n\n const onDragAdd = ({ newIndex }, widgetList: Widget[]) => {\n const newWidget = widgetList[newIndex];\n if (newWidget) {\n designer.value.setSelected(newWidget);\n } else {\n designer.value.setSelected(widgetList[newIndex - 1]);\n }\n };\n\n const onDragUpdate = () => {\n designer.value.emitHistoryChange();\n };\n\n /**\n * 选择子组件\n * @param widget 组件配置\n */\n const selectWidget = widget => {\n designer.value.setSelected(widget);\n };\n\n const selectedWidget = computed(() => designer.value.selectedWidget);\n\n const selected = (widgetId: string) => {\n return designer.value.selectedId === widgetId;\n };\n\n const onWidgetClick = (widget: Widget) => {\n designer.value.setSelected(widget);\n };\n\n return {\n selectedWidget,\n getWidget,\n selected,\n isPc,\n isBI,\n designState,\n formData,\n formConfig,\n designer,\n layoutType,\n onWidgetClick,\n selectWidget,\n onDragAdd,\n onDragUpdate\n };\n}\n","<template>\n <template v-if=\"designState\">\n <draggable\n v-model=\"draggableList\"\n class=\"designer-widget-list list-transition-container\"\n :class=\"[{ 'empty-list': !draggableList.length }, { 'desginer-canvas': isCanvas }]\"\n tag=\"div\"\n :animation=\"200\"\n group=\"widget\"\n handle=\".drag-handler\"\n item-key=\"id\"\n :move=\"onMove\"\n @update=\"onDragUpdate\"\n @add=\"(evt: any) => onDragAdd(evt, draggableList)\"\n >\n <template #item=\"{ element: widget, index }\">\n <div :id=\"widget.id\" class=\"transition-group-el\" :data-widget-id=\"widget.id\">\n <WidgetWrapper :widget=\"widget\" :index=\"index\" v-model:list=\"draggableList\">\n <component\n :is=\"getWidget(widget)\"\n :widget=\"widget\"\n :field=\"widget\"\n :index=\"index\"\n />\n </WidgetWrapper>\n </div>\n </template>\n <template #footer>\n <div v-if=\"!draggableList.length\" class=\"empty-drop-zone\"> 拖拽组件到此处 </div>\n </template>\n </draggable>\n </template>\n <template v-else>\n <template v-for=\"(widget, index) in draggableList\">\n <component :is=\"getWidget(widget)\" :widget=\"widget\" :field=\"widget\" :index=\"index\" />\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\n import draggable from 'vuedraggable';\n import { useDesigner, WidgetWrapper } from '@kp-ui/lowcode-core';\n import type { Widget, FormDesigner } from '@kp-ui/lowcode-core';\n\n defineOptions({\n name: 'RenderWidgetList'\n });\n\n const props = withDefaults(\n defineProps<{\n isCanvas?: boolean;\n parentWidget: Widget | FormDesigner | null;\n }>(),\n {\n isCanvas: false\n }\n );\n\n const { designer, onDragAdd, onDragUpdate, designState, getWidget } = useDesigner();\n\n const onMove = (evt: any) => {\n console.log({ evt });\n\n return designer.value.checkWidgetMove(evt);\n };\n\n const draggableList = defineModel<Widget[]>('list', {\n type: Array,\n default: () => []\n });\n</script>\n\n<style scoped lang=\"scss\">\n .designer-widget-list {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n // gap: 3px;\n &.empty-list {\n min-height: 100px;\n }\n .empty-drop-zone {\n position: absolute;\n // top: 5px;\n left: 0;\n width: 100%;\n z-index: 2;\n }\n :deep(.sortable-ghost) {\n z-index: 99;\n }\n }\n\n .list-transition-container {\n display: flex;\n flex-direction: column;\n padding: 2px;\n }\n\n .transition-group-el {\n position: relative;\n padding: 1px;\n .sortable-ghost {\n width: 100%;\n }\n }\n\n /* SortableJS 自动应用的类 */\n .ghost-placeholder {\n opacity: 0.5;\n background: #c8ebfb;\n border: 2px dashed var(--ant-primary-color);\n height: 40px;\n margin: 4px 0;\n border-radius: 4px;\n }\n\n .sortable-chosen {\n background: #fdfdfd;\n }\n\n .empty-drop-zone {\n margin: 2px 0;\n height: 90px;\n background: #f5f5f5;\n border: 1px dashed #d9d9d9;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n font-size: 14px;\n }\n .desginer-canvas {\n &:deep(.ant-form-item) {\n margin-bottom: 0;\n }\n }\n</style>\n","<template>\n <div\n class=\"widget-wrapper\"\n :class=\"{\n selected: selected(widget.id),\n 'container-wrapper': widget.category === 'container'\n }\"\n @click.stop=\"onWidgetClick(widget)\"\n @contextmenu.prevent.stop=\"onContextMenu\"\n >\n <!-- 拖动手柄 -->\n <DragBtn :selected=\"selected(widget.id)\" :widget=\"widget\" />\n\n <slot></slot>\n <!-- 右键菜单 -->\n <WidgetContextMenu\n v-if=\"contextMenuState.visible\"\n v-model:visible=\"contextMenuState.visible\"\n v-model:list=\"list\"\n :x=\"contextMenuState.x\"\n :y=\"contextMenuState.y\"\n :widget=\"widget\"\n :index=\"index\"\n :parentWidget=\"parentWidget\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { reactive } from 'vue';\n import { useDesigner, Widget, WidgetContextMenu, DragBtn } from '@kp-ui/lowcode-core';\n\n const props = defineProps<{\n widget: Widget;\n index: number;\n parentWidget?: any;\n }>();\n\n const list = defineModel<Widget[]>('list', { default: () => [] });\n const { designer, selected, onWidgetClick } = useDesigner();\n\n const contextMenuState = reactive({\n visible: false,\n x: 0,\n y: 0\n });\n\n const onContextMenu = (event: MouseEvent) => {\n contextMenuState.x = event.clientX;\n contextMenuState.y = event.clientY;\n contextMenuState.visible = true;\n };\n</script>\n\n<style lang=\"scss\" scoped>\n .widget-wrapper {\n position: relative;\n padding: 2px;\n min-height: 20px;\n cursor: pointer;\n border: 1px dashed #cccccc;\n gap: 3px;\n\n &.container-wrapper {\n border-width: 2px;\n &.selected {\n outline: solid var(--ant-primary-color);\n }\n }\n\n &.selected {\n /* background-color: rgba(24, 144, 255, 0.1); */\n outline: 2px solid var(--ant-primary-color);\n }\n\n .action-buttons {\n position: absolute;\n bottom: -2px;\n right: -2px;\n height: 22px;\n width: 22px;\n background-color: var(--ant-primary-color);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 11;\n font-size: 14px;\n\n &:hover {\n background-color: #ff4d4f;\n }\n }\n }\n</style>\n","export enum LayoutTypeEnum {\n PC = 'PC',\n H5 = 'H5',\n BI = 'BI'\n}\n","export enum WidgetTypeEnum {\n input = 'input-widget',\n textarea = 'textarea-widget',\n number = 'number-widget',\n select = 'select-widget',\n radio = 'radio-widget',\n checkbox = 'checkbox-widget',\n time = 'time-widget',\n timeRange = 'time-range-widget',\n date = 'date-widget',\n dateRange = 'date-range-widget',\n rate = 'rate-widget',\n switch = 'switch-widget',\n slider = 'slider-widget',\n color = 'color-widget',\n htmlText = 'html-text-widget',\n staticText = 'static-text-widget',\n buttonList = 'button-list-widget',\n dropdown = 'dropdown-widget',\n button = 'button-widget',\n divider = 'divider-widget',\n cascader = 'cascader-widget',\n tree = 'tree-widget',\n treeSelect = 'tree-select-widget',\n richEditor = 'rich-editor-widget',\n codeEditor = 'code-editor-widget',\n fileUpload = 'file-upload-widget',\n bpmnEditor = 'bpmn-editor-widget',\n vueRender = 'vue-render-widget',\n diyCompontent = 'diy-compontent-widget'\n}\n\nexport enum ContainerTypeEnum {\n grid = 'grid-widget',\n GridColWidget = 'grid-col-widget',\n VfCollapseWidget = 'vf-collapse-widget',\n VfBoxWidget = 'vf-box-widget',\n VfDialogWidget = 'vf-dialog-widget',\n Tab = 'tab-widget',\n DataTable = 'data-table-widget',\n GridSubFormWidget = 'grid-sub-form-widget'\n}\n\nexport enum BIWidgetTypeEnum {\n echartBar = 'echart-bar-widget',\n echartDIY = 'echart-diy-widget',\n borderWidget = 'border-widget',\n border01 = 'border-01',\n border02 = 'border-02',\n border03 = 'border-03',\n border04 = 'border-04',\n decorative01 = 'decorative-01',\n decorative02 = 'decorative-02',\n decorative03 = 'decorative-03',\n decorative04 = 'decorative-04',\n decorative05 = 'decorative-05'\n}\n\nexport enum ComponentNameEnum {\n VFormRender = 'VFormRender',\n VFormDesigner = 'VFormDesigner',\n ContainerWidget = 'ContainerWidget',\n VfBoxWidget = 'VfBoxWidget',\n VfDialogWidget = 'VfDialogWidget',\n FieldWidget = 'FieldWidget',\n PropertyEditor = 'PropertyEditor',\n OnSubFormRowAddEditor = 'OnSubFormRowAddEditor'\n}\n","export const PREVIEW_FILE_URL = 'tmgc2-filesystem/fileObject/getPreviewFileUrl?fileCode=';\n\nexport enum ButtonPositionEnum {\n CURRENT = 0,\n DIY = 1\n}\n\nexport const BUTTON_POSITION = [\n {\n label: '当前位置',\n value: 0\n },\n {\n label: '自定义位置',\n value: 1\n }\n];\n\nexport * from './LayoutTypeEnum';\nexport * from './EditorTypeEnum';\nexport * from './WidgetTypeEnum';\n","import { reactive } from 'vue';\nimport { isObject, get } from 'lodash-es';\n\nconst locale = reactive({\n lang: 'zh-CN',\n messages: {}\n});\n\ntype i18nOptionsType = {\n locale: string;\n};\n\nconst langLoaders = {\n 'zh-CN': async () => {\n const [zhCN, zhLocale, zhLocale_render, zhLocale_extension] = await Promise.all([\n import('ant-design-vue/es/locale/zh_CN'),\n import('../../lang/zh-CN'),\n import('../../lang/zh-CN_render'),\n import('../../lang/zh-CN_extension')\n ]);\n return {\n ...zhCN.default,\n ...zhLocale.default,\n ...zhLocale_render.default,\n ...zhLocale_extension.default\n };\n },\n 'en-US': async () => {\n const [enUS, enLocale, enLocale_render, enLocale_extension] = await Promise.all([\n import('ant-design-vue/es/locale/en_US'),\n import('../../lang/en-US'),\n import('../../lang/en-US_render'),\n import('../../lang/en-US_extension')\n ]);\n return {\n ...enUS.default,\n ...enLocale.default,\n ...enLocale_render.default,\n ...enLocale_extension.default\n };\n }\n};\n\nexport function createI18n(options: i18nOptionsType) {\n const methoad = {\n get messages() {\n return locale.messages;\n },\n $st(path: string, args) {\n const message = get(this.messages[locale.lang], path);\n\n if (isObject(args)) {\n let result = '';\n Object.entries(args).forEach(([key, value]) => {\n result = message.replace(`{${key}}`, value);\n });\n return result;\n }\n\n if (typeof message === 'undefined') {\n return path;\n }\n\n return typeof message === 'function'\n ? message(...args)\n : message !== null\n ? message\n : path;\n },\n\n $st2(path, path2) {\n const messages = this.messages[locale.lang];\n const message = get(messages, path);\n return message !== null ? message : get(messages, path2);\n },\n\n async setLang(lang) {\n locale.lang = lang;\n if (!(lang in locale.messages)) {\n locale.messages[lang] = {};\n }\n if (lang in langLoaders) {\n const messages = await langLoaders[lang]();\n locale.messages[lang] = messages;\n }\n locale.lang = lang;\n },\n setLangMessages(lang, messages) {\n locale.messages[lang] = {\n ...locale.messages[lang],\n ...messages\n };\n }\n };\n\n return methoad;\n}\n","import { mapActions, mapState } from 'pinia';\nimport { createI18n } from './smart-vue-i18n';\nimport { useLocaleStore } from '@kp-ui/i18n';\n\nconst i18n = createI18n({\n locale: 'zh-CN'\n});\n\nexport const translate = function (key: string): string {\n return i18n.$st(key);\n};\n\nexport const setLangMessages = (langName: string, messages: any) => {\n i18n.setLangMessages(langName, messages);\n};\n\nexport default {\n computed: {\n ...mapState(useLocaleStore, ['getLocale'])\n },\n methods: {\n ...mapActions(useLocaleStore, ['setLocale']),\n async changeLocale(langName: string) {\n await i18n.setLang(langName);\n },\n i18nt(key: string): string {\n return i18n.$st(key);\n },\n /* 如果key1不存在,则查找key2 */\n i18n2t(key1: string, key2: string): string {\n return i18n.$st2(key1, key2);\n }\n }\n};\n\nexport function useI18n() {\n const i18nt = (key: string, obj?: Record<string, any>): string => {\n return i18n.$st(key, obj);\n };\n const i18n2t = (key1: string, key2: string): string => {\n return i18n.$st2(key1, key2);\n };\n\n const initLocale = (locale: string) => {\n i18n.setLang(locale);\n };\n\n return {\n i18nt,\n i18n2t,\n initLocale\n };\n}\n\nexport { i18n };\n","import { isArray } from 'lodash-es';\n\nfunction validateDate(dateStr: string | number | Date): boolean {\n const date = new Date(typeof dateStr === 'string' ? Date.parse(dateStr) : dateStr);\n return date instanceof Date && !isNaN(date.getTime());\n}\n\nexport function formatDate1(date: string | number | Date): string {\n if (!validateDate(date)) {\n return String(date);\n }\n const d = new Date(typeof date === 'string' ? Date.parse(date) : date); //转换成Date\n const y = d.getFullYear();\n let m: string | number = d.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let day: string | number = d.getDate();\n day = day < 10 ? '0' + day : day;\n return y + '-' + m + '-' + day;\n}\n\nexport function formatDate2(date: string | number | Date): string {\n if (!validateDate(date)) {\n return String(date);\n }\n const d = new Date(typeof date === 'string' ? Date.parse(date) : date); //转换成Date\n const y = d.getFullYear();\n let m: string | number = d.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let day: string | number = d.getDate();\n day = day < 10 ? '0' + day : day;\n return y + '/' + m + '/' + day;\n}\n\nexport function formatDate3(date: string | number | Date): string {\n if (!validateDate(date)) {\n return String(date);\n }\n const d = new Date(typeof date === 'string' ? Date.parse(date) : date); //转换成Date\n const y = d.getFullYear();\n let m: string | number = d.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let day: string | number = d.getDate();\n day = day < 10 ? '0' + day : day;\n return y + '年' + m + '月' + day + '日';\n}\n\nexport function formatDate4(date: string | number | Date): string {\n if (!validateDate(date)) {\n return String(date);\n }\n const d = new Date(typeof date === 'string' ? Date.parse(date) : date); //转换成Date\n return d.toLocaleString();\n}\n\nexport function formatDate5(date: string | number | Date): string {\n if (!validateDate(date)) {\n return String(date);\n }\n const d = new Date(typeof date === 'string' ? Date.parse(date) : date); //转换成Date\n return d.toLocaleString('chinese', { hour12: false });\n}\n\n// ###,###,###,##0.######\nexport function formatNumber1(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const parts = v.toString().split('.');\n const length = parts[1]?.length || 0;\n let formatted: string;\n switch (length) {\n case 0:\n formatted = v.toFixed(0);\n break;\n case 1:\n formatted = v.toFixed(1);\n break;\n case 2:\n formatted = v.toFixed(2);\n break;\n case 3:\n formatted = v.toFixed(3);\n break;\n case 4:\n formatted = v.toFixed(4);\n break;\n case 5:\n formatted = v.toFixed(5);\n break;\n default:\n formatted = v.toFixed(6);\n }\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n//###,###,###,##0.00####\nexport function formatNumber2(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const parts = v.toString().split('.');\n const length = parts[1]?.length || 0;\n let formatted: string;\n switch (length) {\n case 0:\n case 1:\n case 2:\n formatted = v.toFixed(2);\n break;\n case 3:\n formatted = v.toFixed(3);\n break;\n case 4:\n formatted = v.toFixed(4);\n break;\n case 5:\n formatted = v.toFixed(5);\n break;\n default:\n formatted = v.toFixed(6);\n }\n\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.000000\nexport function formatNumber3(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const formatted = v.toFixed(6);\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.000\nexport function formatNumber4(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const formatted = v.toFixed(3);\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.00\nexport function formatNumber5(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const formatted = v.toFixed(2);\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0\nexport function formatNumber6(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const formatted = v.toFixed(0);\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,##0.00##%\nexport function formatNumber7(v: number): string | number {\n if (typeof v !== 'number') {\n return v;\n }\n\n const parts = v.toString().split('.');\n const length = parts[1]?.length || 0;\n let multiplied = v * 100;\n let formatted: string;\n switch (length) {\n case 0:\n case 1:\n case 2:\n formatted = multiplied.toFixed(2);\n break;\n case 3:\n formatted = multiplied.toFixed(3);\n break;\n default:\n formatted = multiplied.toFixed(4);\n }\n\n const res = formatted.replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res + '%';\n}\n\ninterface FieldNames {\n label: string;\n value: string;\n children: string;\n}\n\ninterface TreeItem {\n [key: string]: unknown;\n}\n\n/**\n * 将Cascader转义为汉字\n * @param arr 数据数组\n * @param codeList 代码列表\n * @param fieldNames 字段名称映射\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateCascaderCode = (\n arr: TreeItem[] = [],\n codeList: string[] | string[][] | undefined,\n fieldNames: FieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = '/'\n): string | undefined => {\n if (!codeList || codeList.length === 0) return;\n if (isArray(codeList[0])) {\n const res2 = (codeList as string[][]).map(item =>\n getTreeName(arr, item, fieldNames).join(emblem)\n );\n return res2.join(',');\n } else {\n const res = getTreeName(arr, codeList as string[], fieldNames);\n return res.join(emblem);\n }\n};\n\nconst getTreeName = (\n list: TreeItem[] = [],\n val: string[] = [],\n fieldNames: FieldNames = { label: 'label', value: 'value', children: 'children' }\n): string[] => {\n const nameList: string[] = [];\n list.forEach(item => {\n if (val.length === 0) return;\n if (item[fieldNames.value] === val[0]) {\n nameList.push(item[fieldNames.label] as string);\n const children = item[fieldNames.children];\n if (isArray(children)) {\n const res = getTreeName(children as TreeItem[], val.slice(1), fieldNames);\n nameList.push(...res);\n }\n }\n });\n return nameList;\n};\n\n/**\n * 将tree转义为汉字\n * @param arr 值数组\n * @param codeList 代码列表\n * @param fieldNames 字段名称映射\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateTreeToName = (\n arr: string[] = [],\n codeList: TreeItem[] | undefined,\n fieldNames: FieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = ','\n): string | undefined => {\n if (!codeList || codeList.length === 0) return;\n const str = arr.reduce<TreeItem[]>((t, v) => {\n const res = getListName(v, codeList, fieldNames);\n if (res) {\n t = [...t, res];\n }\n return t;\n }, []);\n return str.map(item => item[fieldNames.label] as string).join(emblem);\n};\n\nconst getListName = (\n val: string,\n list: TreeItem[],\n fieldNames: FieldNames\n): TreeItem | undefined => {\n let res: TreeItem | undefined;\n list.forEach(it1 => {\n if (it1[fieldNames.value] === val) {\n res = it1;\n return;\n }\n const childrenList = (it1[fieldNames.children] as TreeItem[]) || [];\n if (childrenList.length) {\n const found = getListName(val, childrenList, fieldNames);\n if (found) {\n res = found;\n }\n }\n });\n return res;\n};\n\n/**\n * 格式化尺寸,支持数字、px、%\n * @param value 尺寸值\n * @param defaultSize 默认尺寸\n * @returns 格式化后的尺寸字符串\n */\nexport function formatSize(value: string | number | undefined | null, defaultSize = ''): string {\n if (value === undefined || value === null || value === '') {\n return defaultSize;\n }\n const strValue = String(value);\n if (strValue.endsWith('px') || strValue.endsWith('%')) {\n return strValue;\n }\n if (!isNaN(Number(strValue))) {\n return `${strValue}px`;\n }\n return strValue;\n}\n","export function getFileName(path: string): string {\n // 处理Windows路径分隔符\n const normalizedPath = path.replace(/\\\\/g, '/');\n // 获取带扩展名的文件名\n const filenameWithExt = normalizedPath.split('/').pop() || '';\n // 分离文件名和扩展名\n const lastDotIndex = filenameWithExt.lastIndexOf('.');\n return lastDotIndex === -1 ? filenameWithExt : filenameWithExt.substring(0, lastDotIndex);\n}\n","import { isNull } from './util';\n\ntype RegExpName =\n | 'number'\n | 'letter'\n | 'letterAndNumber'\n | 'mobilePhone'\n | 'letterStartNumberIncluded'\n | 'noChinese'\n | 'chinese'\n | 'email'\n | 'url';\n\ninterface ValidationRule {\n label?: string;\n errorMsg?: string;\n regExp?: string;\n [key: string]: unknown;\n}\n\n// 直接存储 RegExp 对象,避免使用 eval\nconst commonRegExp: Record<RegExpName, RegExp> = {\n number: /^[-]?\\d+(\\.\\d+)?$/,\n letter: /^[A-Za-z]+$/,\n letterAndNumber: /^[A-Za-z0-9]+$/,\n mobilePhone: /^[1][3-9][0-9]{9}$/,\n letterStartNumberIncluded: /^[A-Za-z]+[A-Za-z\\d]*$/,\n noChinese: /^[^\\u4e00-\\u9fa5]+$/,\n chinese: /^[\\u4e00-\\u9fa5]+$/,\n email: /^([-_A-Za-z0-9.]+)@([_A-Za-z0-9]+\\.)+[A-Za-z0-9]{2,3}$/,\n url: /^([hH][tT]{2}[pP]:\\/\\/|[hH][tT]{2}[pP][sS]:\\/\\/)(([A-Za-z0-9-~]+)\\.)+([A-Za-z0-9-~\\/])+$/\n};\n\nexport const getRegExp = function (validatorName: RegExpName): RegExp | undefined {\n return commonRegExp[validatorName];\n};\n\n/**\n * 将正则表达式字符串转换为 RegExp 对象\n * 支持格式: '/pattern/flags' 或 'pattern'\n */\nconst parseRegExpString = (regExpStr: string): RegExp | null => {\n try {\n // 处理 /pattern/flags 格式\n const match = regExpStr.match(/^\\/(.+)\\/([gimsuy]*)$/);\n if (match) {\n return new RegExp(match[1], match[2]);\n }\n // 普通字符串作为 pattern\n return new RegExp(regExpStr);\n } catch {\n return null;\n }\n};\n\nconst validateFn = function (\n validatorName: RegExpName,\n rule: ValidationRule,\n value: unknown,\n defaultErrorMsg: string\n): Promise<void> {\n try {\n // 空值不校验\n if (isNull(value) || (typeof value === 'string' && value.length <= 0)) {\n return Promise.resolve();\n }\n\n const reg = getRegExp(validatorName);\n if (!reg) {\n return Promise.resolve();\n }\n\n if (!reg.test(String(value))) {\n const errTxt = rule.errorMsg || defaultErrorMsg;\n return Promise.reject(errTxt);\n } else {\n return Promise.resolve();\n }\n } catch (error) {\n return Promise.resolve();\n }\n};\n\ntype ValidatorFn = (rule: ValidationRule, value: unknown) => Promise<void> | void;\n\ninterface FormValidatorsType {\n number: ValidatorFn;\n letter: ValidatorFn;\n letterAndNumber: ValidatorFn;\n mobilePhone: ValidatorFn;\n noBlankStart: ValidatorFn;\n noBlankEnd: ValidatorFn;\n letterStartNumberIncluded: ValidatorFn;\n noChinese: ValidatorFn;\n chinese: ValidatorFn;\n email: ValidatorFn;\n url: ValidatorFn;\n regExp: ValidatorFn;\n}\n\nconst FormValidators: FormValidatorsType = {\n /* 数字 */\n number(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('number', rule, value, '[' + rule.label + ']包含非数字字符');\n },\n\n /* 字母 */\n letter(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('letter', rule, value, '[' + rule.label + ']包含非字母字符');\n },\n\n /* 字母和数字 */\n letterAndNumber(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('letterAndNumber', rule, value, '[' + rule.label + ']只能输入字母或数字');\n },\n\n /* 手机号码 */\n mobilePhone(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('mobilePhone', rule, value, '[' + rule.label + ']手机号码格式有误');\n },\n\n /* 禁止空白字符开头 */\n noBlankStart(_rule: ValidationRule, _value: unknown): void {\n //暂未实现\n },\n\n /* 禁止空白字符结尾 */\n noBlankEnd(_rule: ValidationRule, _value: unknown): void {\n //暂未实现\n },\n\n /* 字母开头,仅可包含数字 */\n letterStartNumberIncluded(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn(\n 'letterStartNumberIncluded',\n rule,\n value,\n '[' + rule.label + ']必须以字母开头,可包含数字'\n );\n },\n\n /* 禁止中文输入 */\n noChinese(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('noChinese', rule, value, '[' + rule.label + ']不可输入中文字符');\n },\n\n /* 必须中文输入 */\n chinese(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('chinese', rule, value, '[' + rule.label + ']只能输入中文字符');\n },\n\n /* 电子邮箱 */\n email(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('email', rule, value, '[' + rule.label + ']邮箱格式有误');\n },\n\n /* URL网址 */\n url(rule: ValidationRule, value: unknown): Promise<void> {\n return validateFn('url', rule, value, '[' + rule.label + ']URL格式有误');\n },\n\n regExp(rule: ValidationRule, value: unknown): Promise<void> {\n // 空值不校验\n if (isNull(value) || (typeof value === 'string' && value.length <= 0)) {\n return Promise.resolve();\n }\n\n const pattern = parseRegExpString(rule.regExp || '');\n if (!pattern) {\n return Promise.resolve();\n }\n\n if (!pattern.test(String(value))) {\n const errTxt = rule.errorMsg || '[' + rule.label + ']invalid value';\n return Promise.reject(errTxt);\n } else {\n return Promise.resolve();\n }\n }\n};\n\nexport default FormValidators;\n","import { useI18n } from '@kp-ui/lowcode-core';\nimport { message } from 'ant-design-vue';\nimport { computed, getCurrentInstance, inject, ref, Ref } from 'vue';\n\nexport function useAppRef(widgetRefList?: Ref<Map<string, any>>, formWidgetId?: any) {\n const { i18nt } = useI18n();\n const isRoot = formWidgetId !== undefined;\n\n if (!isRoot) {\n formWidgetId = inject('formWidgetId', '');\n }\n\n const refList = inject<Ref<Map<string, any>>>('refList', widgetRefList || ref(new Map()));\n\n const instance = getCurrentInstance();\n\n const widgetId = computed(() => instance?.exposed?.field?.options?.name as string);\n\n const initRefList = () => {\n registerToRefList();\n };\n\n const getWidgetRef = (widgetName, showError?: boolean) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n const foundRef = list.get(widgetName);\n if (!foundRef && !!showError) {\n message.error(i18nt('render.hint.refNotFound') + widgetName);\n }\n return foundRef;\n };\n\n /* 该方法用于组件重名检查!! */\n const registerToRefList = (widgetName?: symbol | string) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n list.set(widgetName || widgetId.value, {\n instance,\n proxy: instance?.proxy,\n ...instance?.appContext.config.globalProperties,\n ...instance?.exposed\n });\n };\n\n /**\n * 从引用列表中注销\n */\n const unregisterFromRefList = () => {\n const widgetId = instance?.exposed?.field?.options?.name;\n refList.value.delete(widgetId);\n };\n\n const getFormRef = () => {\n return getWidgetRef(formWidgetId);\n };\n\n return {\n refList,\n getFormRef,\n registerToRefList,\n unregisterFromRefList,\n initRefList,\n getWidgetRef\n };\n}\n","import { Ref, ref } from 'vue';\n\nimport { type FormInstance } from 'ant-design-vue';\nimport { Widget } from '@kp-ui/lowcode-core/src/types/schema';\n/**\n * 表单验证器接口\n */\nexport interface FormValidator {\n /**\n * 验证表单\n * @returns 是否验证通过\n */\n validate(): Promise<boolean>;\n\n /**\n * 验证特定字段\n * @param fieldName 字段名称\n * @returns 是否验证通过\n */\n validateField(fieldName: string): Promise<boolean>;\n\n /**\n * 重置表单验证\n */\n resetValidation(): void;\n\n /**\n * 清除表单验证\n */\n clearValidate(): void;\n}\n\n/**\n * 表单验证规则\n */\nexport interface ValidationRule {\n required?: boolean;\n message?: string;\n trigger?: string | string[];\n min?: number;\n max?: number;\n type?: string;\n pattern?: RegExp | string;\n validator?: (rule: any, value: any, callback: any) => void;\n}\n\n/**\n * 创建表单验证器\n * @param formRef 表单引用\n * @param widgetList 组件列表\n * @returns 表单验证器\n */\nexport const useFormValidation = (formRef: Ref<FormInstance>) => {\n const validationErrors = ref<Record<string, string[]>>({});\n\n /**\n * 获取字段验证规则\n * @param widget 组件配置\n * @returns 验证规则数组\n */\n const getFieldValidationRules = (widget: Widget): ValidationRule[] => {\n if (!widget || !widget.options) return [];\n\n const rules: ValidationRule[] = [];\n const options = widget.options;\n\n // 必填验证\n if (options.required) {\n rules.push({\n required: true,\n message: options.requiredMessage || `${options.label}不能为空`,\n trigger: options.validateTrigger || ['blur', 'change']\n });\n }\n\n // 正则表达式验证\n if (options.regList && options.regList.length > 0) {\n options.regList.forEach((reg: any) => {\n if (reg.pattern) {\n rules.push({\n pattern: new RegExp(reg.pattern),\n message: reg.message,\n trigger: options.validateTrigger || ['blur', 'change']\n });\n }\n });\n }\n\n // 自定义验证函数\n if (options.customValidator) {\n try {\n // 创建一个符合验证器函数签名的包装函数\n const validatorFunc = (rule: any, value: any, callback: any) => {\n try {\n const customFunc = new Function(\n 'rule',\n 'value',\n 'callback',\n options.customValidator\n );\n return customFunc(rule, value, callback);\n } catch (e) {\n console.error('自定义验证函数执行错误:', e);\n callback(new Error('验证失败'));\n }\n };\n\n rules.push({\n validator: validatorFunc,\n trigger: options.validateTrigger || ['blur', 'change']\n });\n } catch (e) {\n console.error('自定义验证函数解析错误:', e);\n }\n }\n\n return rules;\n };\n\n /**\n * 验证表单\n * @returns 是否验证通过的Promise\n */\n const validate = (): Promise<boolean> => {\n return new Promise(resolve => {\n if (!formRef.value) {\n resolve(true);\n return;\n }\n formRef.value\n .validate()\n .then(() => {\n validationErrors.value = {};\n resolve(true);\n })\n .catch((errors: any) => {\n formRef.value?.scrollToField(errors.errorFields[0].name);\n validationErrors.value = errors || {};\n resolve(false);\n });\n });\n };\n\n /**\n * 验证特定字段\n * @param fieldName 字段名称\n * @returns 是否验证通过的Promise\n */\n const validateField = (fieldName: string): Promise<boolean> => {\n return new Promise(resolve => {\n if (!formRef.value) {\n resolve(true);\n return;\n }\n\n formRef.value\n .validateFields([fieldName])\n .then(() => {\n if (validationErrors.value[fieldName]) {\n delete validationErrors.value[fieldName];\n }\n resolve(true);\n })\n .catch((error: any) => {\n if (error && error[fieldName]) {\n validationErrors.value[fieldName] = error[fieldName];\n }\n resolve(false);\n });\n });\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n if (formRef.value) {\n formRef.value.resetFields();\n }\n validationErrors.value = {};\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n if (formRef.value) {\n formRef.value.clearValidate();\n }\n validationErrors.value = {};\n };\n\n return {\n validate,\n validateField,\n resetValidation,\n clearValidate,\n validationErrors,\n getFieldValidationRules\n };\n};\n","import { ref } from 'vue';\nimport { PaginationProps } from 'ant-design-vue';\nimport { useI18n, WidgetProps } from '@kp-ui/lowcode-core';\nimport { useExecFunction } from 'tmgc2-share';\n\nexport function useDataHttp({ props }: { props: WidgetProps<any> }) {\n const { http, dataHandlerCode, dataReqHandlerCode } = props.field.options;\n\n const { i18nt } = useI18n();\n const isLoading = ref(false);\n\n const { execHttpFunction } = useExecFunction();\n const pagintion = ref<PaginationProps>({\n ...(props.widget.options.pagination as any),\n onShowSizeChange: (current, pageSize) => {\n props.field.options.pagination.pageSize = pageSize;\n props.field.options.pagination.current = 1;\n pagintion.value.current = 1;\n },\n showTotal: total => i18nt('designer.showTotal', { total })\n });\n\n const loadataSource = async (): Promise<any> => {\n try {\n isLoading.value = true;\n const data = await execHttpFunction(\n {\n http,\n dataHandlerCode,\n dataReqHandlerCode\n },\n {}\n );\n return data;\n } catch (error) {\n console.error(error);\n return {};\n } finally {\n isLoading.value = false;\n }\n };\n\n const getPagination = () => {\n return pagintion.value;\n };\n\n /**\n * 设置表格分页\n * @param pagination\n */\n const setPagination = pagination => {\n if (pagination.current !== undefined) {\n pagintion.value.current = pagination.current;\n props.field.options.pagination.current = pagination.current;\n }\n\n if (pagination.page !== undefined) {\n pagintion.value.current = pagination.page;\n props.field.options.pagination.current = pagination.page;\n }\n\n if (pagination.total !== undefined) {\n pagintion.value.total = pagination.total;\n props.field.options.pagination.total = pagination.total;\n }\n };\n\n return {\n pagintion,\n setPagination,\n getPagination,\n loadataSource,\n isLoading\n };\n}\n","import {\n ref,\n computed,\n inject,\n onMounted,\n onBeforeUnmount,\n getCurrentInstance,\n Ref,\n toRaw\n} from 'vue';\nimport FormValidators from '@kp-ui/lowcode-core/src/utils/validators';\nimport { isArray, eq, get, cloneDeep } from 'lodash-es';\nimport { FormConfig, Widget } from '@kp-ui/lowcode-core';\nimport { useI18n } from '@kp-ui/lowcode-core';\nimport { useEmitter, useAppRef } from '@kp-ui/lowcode-core';\nimport { useExecFunction } from 'tmgc2-share';\n\nexport type FieldProps<T = Widget> = {\n widget: T;\n field: T;\n designer?: any;\n parentWidget?: Widget | null;\n parentList?: T[] | null;\n indexOfParentList?: number;\n subFormRowIndex?: number;\n subFormRowId?: string;\n subFormColIndex?: number;\n};\n\n/**\n * 表单字段 Hook,提供表单字段的通用功能\n * @returns 表单字段相关的状态和方法\n */\nexport function useField<T extends Widget>(props: FieldProps<T>, isInitModelValue = true) {\n // 注入依赖\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n const formModel = inject<Ref<any>>('formData', ref({}));\n const getReadMode = inject('getReadMode', () => false);\n const isSubFormField = inject('isSubFormField', false);\n\n const getSubFormName = inject('getSubFormName', () => '');\n const designState = inject('designState', false);\n\n const { registerToRefList, getWidgetRef, getFormRef, unregisterFromRefList } = useAppRef();\n const { executeFunction, asyncExecuteFunction } = useExecFunction();\n\n const { i18nt, i18n2t } = useI18n();\n const { field } = props;\n\n const fieldEditor = ref<InstanceType<any>>(null);\n // 状态\n const oldFieldValue = ref<any>(null);\n const fieldReadonlyFlag = ref<boolean>(false);\n const loading = ref<boolean>(false);\n const rules = ref<any[]>([]);\n const uploadData = ref<Record<string, any>>({});\n const customToolbar = ref<any>(null);\n const instance = getCurrentInstance();\n const { dispatch } = useEmitter();\n\n const size = computed(() => {\n if (field?.options?.size) {\n return field.options.size;\n }\n return formConfig.value.size || 'middle';\n });\n\n const subFormName = computed(() => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const fieldModel = computed({\n get() {\n return get(formModel.value, getPropName.value);\n },\n set(value) {\n syncUpdateFormModel(value);\n }\n });\n\n const subFormData = computed(() => formModel.value[subFormName.value]);\n\n const isReadMode = computed(() => {\n return getReadMode() ? true : fieldReadonlyFlag.value;\n });\n\n /**\n * 处理字段隐藏逻辑\n * @returns 是否隐藏\n */\n const handleHidden = computed(() => {\n if (designState) {\n return false;\n }\n const { onHidden, hidden } = props.field.options;\n\n if (hidden) return true;\n if (onHidden) {\n try {\n const result = executeFunction({\n functionBody: onHidden\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch {\n return false;\n }\n }\n return false;\n });\n\n /**\n * 处理字段禁用逻辑\n * @returns 是否禁用\n */\n const handleDisabled = computed(() => {\n if (designState) {\n return false;\n }\n const { onDisabled, disabled } = props.field.options;\n if (disabled) return true;\n if (onDisabled) {\n try {\n const result = executeFunction({\n functionBody: onDisabled\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch (error) {\n console.log({ error });\n return false;\n }\n }\n return false;\n });\n\n /**\n * 在数组中查找元素\n * @param arrayObject 数组对象\n * @param element 要查找的元素\n * @returns 找到的索引,未找到返回-1\n */\n const findInArray = (arrayObject: any[], element: any) => {\n if (!Array.isArray(arrayObject)) {\n return -1;\n }\n\n let foundIdx = -1;\n arrayObject.forEach((aItem, aIdx) => {\n if (aItem === element) {\n foundIdx = aIdx;\n }\n });\n\n return foundIdx;\n };\n\n /**\n * 获取属性名称\n * @returns 属性名称\n */\n const getPropName = computed(() => {\n if (isSubFormField && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else {\n return props.field.options.name;\n }\n });\n\n /**\n * 处理组件创建事件\n */\n async function handleOnCreated() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onCreated) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onCreated\n });\n }\n }\n\n /**\n * 处理组件挂载事件\n */\n async function handleOnMounted() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (props.field.options.onMounted) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onMounted\n });\n }\n }\n\n /**\n * 刷新默认值\n */\n const refreshDefaultValue = () => {\n fieldModel.value = props.field.options.defaultValue;\n };\n\n /**\n * 清除字段规则\n */\n const clearFieldRules = () => {\n if (!props.field.formItemFlag) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n };\n\n /**\n * 构建字段规则\n */\n const buildFieldRules = () => {\n if (!props?.field.formItemFlag || props?.field.options.hidden) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n if (props.field.options.required) {\n rules.value.push({\n required: true,\n // trigger: ['blur', 'change'],\n trigger: [\n 'blur'\n ] /* 去掉change事件触发校验,change事件触发时formModel数据尚未更新,导致radio/checkbox必填校验出错!! */,\n message: props.field.options.requiredHint || i18nt('render.hint.fieldRequired')\n });\n }\n\n if (props.field.options.validation) {\n const vldName = props.field.options.validation;\n if (FormValidators[vldName]) {\n rules.value.push({\n validator: FormValidators[vldName],\n trigger: ['blur', 'change'],\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n } else {\n rules.value.push({\n validator: FormValidators['regExp'],\n trigger: ['blur', 'change'],\n regExp: vldName,\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n }\n }\n\n if (props.field.options.onValidate) {\n const customFn = (rule: any, value: any) => {\n return executeFunction({\n functionBody: props.field.options.onValidate,\n params: { rule, value },\n keys: ['rule', 'value']\n });\n };\n rules.value.push({\n validator: customFn,\n trigger: ['blur'],\n label: props.field.options.label\n });\n }\n };\n\n /**\n * 禁用字段值变动触发表单校验\n */\n const disableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.splice(0, rule.trigger.length);\n }\n });\n };\n\n /**\n * 启用字段值变动触发表单校验\n */\n const enableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.push('blur');\n rule.trigger.push('change');\n }\n });\n };\n\n /**\n * 禁用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const disableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = true;\n }\n });\n }\n };\n\n /**\n * 启用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const enableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = false;\n }\n });\n }\n };\n\n /**\n * 发送字段数据变更事件\n * @param newValue 新值\n * @param oldValue 旧值\n */\n const emitFieldDataChange = (newValue: any, oldValue: any) => {\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n\n if (!instance) return;\n\n /* 必须用dispatch向指定父组件派发消息!! */\n dispatch('VFormRender', 'fieldChange', [\n props.field.options.name,\n newValue,\n oldValue,\n subFormName.value,\n props.subFormRowIndex\n ]);\n };\n\n /**\n * 同步更新表单模型\n * @param value 值\n */\n\n const syncUpdateFormModel = value => {\n if (designState) {\n dispatch('VFormDesigner', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n field: field\n });\n //设计状态不触发事件\n return;\n }\n /* 主动触发表单的单个字段校验,用于清除字段可能存在的校验错误提示 */\n dispatch('VFormRender', 'fieldValidation', [getPropName.value]);\n const oldValue = toRaw(fieldModel.value);\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n oldValue: oldValue,\n field: field\n });\n handleOnChange(value, oldValue);\n };\n\n /**\n * 处理焦点自定义事件\n * @param event 事件对象\n */\n const handleFocusCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n oldFieldValue.value = cloneDeep(fieldModel.value); // 保存修改change之前的值\n\n if (props.field.options.onFocus) {\n executeFunction({\n functionBody: props.field.options.onFocus,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 处理失焦自定义事件\n * @param event 事件对象\n */\n const handleBlurCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onBlur) {\n executeFunction({\n functionBody: props.field.options.onBlur,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 发送附加按钮点击事件\n */\n const emitAppendButtonClick = () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onAppendButtonClick) {\n executeFunction({\n functionBody: props.field.options.onAppendButtonClick\n });\n }\n };\n\n /**\n * 处理变更事件\n * @param val 新值\n * @param oldVal 旧值\n * @param ops 选项\n */\n const handleOnChange = (val: any, oldVal: any) => {\n // 自定义onChange事件\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onChange) {\n executeFunction({\n functionBody: props.field.options.onChange,\n params: {\n value: val,\n oldValue: oldVal,\n subFormData: subFormData.value,\n rowId: props.subFormRowId\n },\n keys: ['value', 'oldValue', 'subFormData', 'rowId']\n });\n }\n };\n\n /**\n * 处理点击事件\n */\n const onClick = async () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onClick) {\n return await asyncExecuteFunction({\n functionBody: props.field.options.onClick\n });\n }\n };\n\n /**\n * 处理图标点击事件\n */\n const handleClickIcon = async () => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (handleDisabled.value) {\n return;\n }\n if (field.options.onClickIcon) {\n await asyncExecuteFunction({\n functionBody: field.options.onClickIcon\n });\n }\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return fieldEditor.value;\n };\n\n /**\n * 显示文件列表\n * @param list 文件列表\n * @returns 格式化后的文件列表\n */\n const showFileList = (list: any) => {\n if (typeof list === 'string') {\n list = JSON.parse(list);\n }\n if (!isArray(list)) return [];\n const res = list.map((item: any, uid: number) => ({\n ...item,\n name: item.fileName,\n uid\n }));\n return res;\n };\n\n /**\n * 设置值\n * @param newValue 新值\n * @param disableChangeEvent 是否禁用变更事件\n */\n const setValue = (newValue: any, disableChangeEvent = false) => {\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n if (eq(fieldModel.value, newValue)) return;\n\n const oldValue = deepClone(fieldModel.value);\n if (props.field.type === 'file-upload') {\n newValue = showFileList(newValue || []);\n // TODO\n } else if (props.field.type === 'code-editor') {\n const fieldEditor = getFieldEditor();\n if (fieldEditor) {\n fieldEditor.setValue(newValue);\n }\n }\n fieldModel.value = newValue;\n if (!disableChangeEvent) {\n emitFieldDataChange(newValue, oldValue);\n }\n };\n\n /**\n * 获取值\n * @returns 字段值\n */\n const getValue = () => {\n return fieldModel.value;\n };\n\n /**\n * 重置字段\n */\n const resetField = () => {\n const defaultValue = props.field.options.defaultValue;\n setValue(defaultValue);\n\n // 清空上传组件文件列表\n if (props.field.type === 'picture-upload' || props.field.type === 'file-upload') {\n fieldModel.value.splice(0, fieldModel.value.length);\n // handleChangeEvent(fieldModel.value);\n }\n };\n\n /**\n * 设置只读\n * @param flag 是否只读\n */\n const setReadonly = (flag: boolean) => {\n props.field.options.readonly = flag;\n };\n\n /**\n * 设置禁用\n * @param flag 是否禁用\n */\n const setDisabled = (flag: boolean) => {\n props.field.options.disabled = flag;\n };\n\n /**\n * 设置附加按钮可见性\n * @param flag 是否可见\n */\n const setAppendButtonVisible = (flag: boolean) => {\n props.field.options.appendButton = flag;\n };\n\n /**\n * 设置附加按钮禁用状态\n * @param flag 是否禁用\n */\n const setAppendButtonDisabled = (flag: boolean) => {\n props.field.options.appendButtonDisabled = flag;\n };\n\n /**\n * 设置隐藏\n * @param flag 是否隐藏\n */\n const setHidden = (flag: boolean) => {\n props.field.options.hidden = flag;\n\n if (flag) {\n // 清除组件校验规则\n clearFieldRules();\n } else {\n // 重建组件校验规则\n buildFieldRules();\n }\n };\n\n /**\n * 设置必填\n * @param flag 是否必填\n */\n const setRequired = (flag: boolean) => {\n props.field.options.required = flag;\n buildFieldRules();\n\n if (!designState && !flag) {\n // 清除必填校验提示\n clearValidate();\n }\n };\n\n /**\n * 清除字段校验提示\n */\n const clearValidate = () => {\n if (designState) {\n return;\n }\n\n getFormRef().clearValidate(getPropName.value);\n };\n\n /**\n * 获取VForm上下文\n * @returns VForm上下文\n */\n const getVfCtx = () => {\n return getFormRef().vfCtx;\n };\n\n /**\n * 设置标签\n * @param newLabel 新标签\n */\n const setLabel = (newLabel: string) => {\n props.field.options.label = newLabel;\n };\n\n /**\n * 聚焦\n */\n const focus = () => {\n const fieldEditor = getFieldEditor();\n if (fieldEditor && fieldEditor.focus) {\n fieldEditor.focus();\n }\n };\n\n /**\n * 设置上传数据\n * @param name 名称\n * @param value 值\n */\n const setUploadData = (name: string, value: any) => {\n uploadData.value[name] = value;\n };\n\n /**\n * 设置或取消设置字段只读查看模式\n * @param readonlyFlag 只读标志\n */\n const setReadMode = (readonlyFlag = true) => {\n fieldReadonlyFlag.value = readonlyFlag;\n };\n\n /**\n * 动态增加自定义css样式\n * @param className 类名\n */\n const addCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n props.field.options.customClass = [className];\n } else {\n props.field.options.customClass.push(className);\n }\n };\n const customClass = computed(() => props.field.options.customClass);\n\n /**\n * 动态移除自定义css样式\n * @param className 类名\n */\n const removeCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n return;\n }\n\n let foundIdx = -1;\n props.field.options.customClass.map((cc: string, idx: number) => {\n if (cc === className) {\n foundIdx = idx;\n }\n });\n if (foundIdx > -1) {\n props.field.options.customClass.splice(foundIdx, 1);\n }\n };\n\n const getEl = () => {\n return fieldEditor.value?.$el;\n };\n\n /**\n * 设置组件选项\n * @param optionName 选项名称\n * @param optionValue 选项值\n */\n const setWidgetOption = (optionName: string, optionValue: any) => {\n // 通用组件选项修改API\n props.field.options[optionName] = optionValue;\n };\n\n const options = computed({\n get() {\n return props.field.options;\n },\n set(value) {\n props.field.options = value;\n }\n });\n\n const initFieldModel = () => {\n const defaultValue =\n typeof props.field.options.defaultValue === 'undefined'\n ? ''\n : props.field.options.defaultValue;\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value: defaultValue,\n oldValue: toRaw(fieldModel.value),\n field: field\n });\n };\n\n // 生命周期钩子\n onMounted(async () => {\n if (isInitModelValue) {\n initFieldModel();\n }\n await registerToRefList();\n\n await handleOnCreated();\n\n await handleOnMounted();\n buildFieldRules();\n });\n\n onBeforeUnmount(() => {\n unregisterFromRefList();\n });\n\n const defineExposed = {\n i18nt,\n options,\n proxy: instance?.proxy,\n field,\n widget: field,\n fieldModel,\n fieldEditor,\n isReadMode,\n setWidgetOption,\n setReadonly,\n setDisabled,\n getVfCtx,\n setLabel,\n getEl,\n setReadMode,\n resetField,\n setValue,\n getValue,\n getFieldEditor,\n getFormRef,\n getWidgetRef,\n setHidden,\n addCssClass,\n removeCssClass,\n setRequired,\n clearValidate,\n focus\n };\n\n return {\n asyncExecuteFunction,\n executeFunction,\n options,\n customClass,\n fieldEditor,\n // 状态\n fieldModel,\n oldFieldValue,\n fieldReadonlyFlag,\n loading,\n rules,\n uploadData,\n designState,\n customToolbar,\n i18nt,\n i18n2t,\n size,\n field,\n // 计算属性\n formConfig,\n subFormName,\n\n formModel,\n isReadMode,\n\n // 方法\n handleHidden,\n handleDisabled,\n findInArray,\n getPropName,\n refreshDefaultValue,\n clearFieldRules,\n buildFieldRules,\n disableChangeValidate,\n enableChangeValidate,\n disableOptionOfList,\n enableOptionOfList,\n emitFieldDataChange,\n syncUpdateFormModel,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n emitAppendButtonClick,\n handleOnChange,\n onClick,\n handleClickIcon,\n getFieldEditor,\n showFileList,\n\n setAppendButtonVisible,\n setAppendButtonDisabled,\n\n focus,\n setUploadData,\n\n isSubFormField,\n defineExposed\n };\n}\n","import { getUuidKey } from '@kp-ui/tool';\nimport { useComRef, useRouteBackTab, routerReloadStatus, useDataQueryApi } from 'tmgc2-share';\nimport { ref } from 'vue';\n\ntype ITmgcFormParamsType = {\n formCode?: string;\n entityCode?: string;\n type?: any;\n /** 可选:传入 basicFieldsEnums 以支持动态生成表单 */\n basicFieldsEnums?: Record<string, (opts: any) => any>;\n};\n\nexport const useLowcode = (params: ITmgcFormParamsType) => {\n let { formCode, entityCode, type = 'add', basicFieldsEnums } = params;\n const isLoading = ref(false);\n const useDataQuery = useDataQueryApi();\n const vfdRef = ref();\n\n const formConfig = ref();\n const { routeBackTab } = useRouteBackTab();\n\n const insertBtn = (list: any[] = []) => {\n // 按钮插入功能已注释\n return list;\n };\n\n const getInitRenderJSON = (list: any[] = []) => {\n if (!basicFieldsEnums) {\n // 如果没有传入 basicFieldsEnums,返回空数组\n return [];\n }\n const res = list.reduce((t, v) => {\n const fn = basicFieldsEnums[v.componentType];\n if (fn) {\n const json = fn({\n name: v.entityPropertyCode,\n label: v.entityPropertyName,\n ...v.options\n });\n t = [...t, json];\n }\n return t;\n }, []);\n return res.length ? insertBtn(res) : res;\n };\n\n const getComponentJson = async (list: any[] = [], _formCode?: string) => {\n let json = { widgetList: [], formConfig: {} } as any;\n formCode = _formCode || formCode;\n if (formCode && type) {\n vfdRef.value?.setLoading(true);\n try {\n const res = await useDataQuery\n .dataQueryDetail({ code: formCode }, 'FormDefinitionManagement')\n .then(res => res.data.object || {});\n json = JSON.parse(res.frontendDefinition || '{}');\n } finally {\n vfdRef.value?.setLoading(false);\n }\n } else {\n json.widgetList = getInitRenderJSON(list);\n }\n isLoading.value = false;\n console.log('json: ', json);\n formConfig.value = json.formConfig;\n vfdRef.value!.setFormJson(json);\n return json;\n };\n\n const getFieldList = async () => {\n isLoading.value = true;\n if (!entityCode) {\n getComponentJson([]);\n return [];\n }\n\n const p = {\n pageCode: 'EntityPropertyFormItem',\n conditions: [{ fieldCode: 'entityCode', type: 'EQ', value: entityCode }],\n requiredFields: ['entityPropertyCode', 'entityPropertyName', 'valueType'],\n page: 1,\n pageSize: null,\n sorts: []\n };\n const list = await useDataQuery.execute(p).then(res => res.data.object.list);\n getComponentJson(list);\n return list;\n };\n const fieldListApi = async () => {\n const list = await getFieldList();\n return list.map(item => ({\n showName: item.entityPropertyName,\n fieldCode: item.entityPropertyCode\n }));\n };\n\n const goBack = (reloadStatus = routerReloadStatus.view, cb?: () => void) => {\n routeBackTab(reloadStatus, cb);\n };\n\n return {\n isLoading,\n goBack,\n formConfig,\n getInitRenderJSON,\n vfdRef,\n getComponentJson,\n getFieldList,\n fieldListApi\n };\n};\n","import { defineAsyncComponent, type Component } from 'vue';\nimport { getFileName } from '@kp-ui/lowcode-core';\n\nconst comps: Record<string, Component> = {};\nconst modules = import.meta.glob<{ default: Component }>('./*.vue');\n\nfor (const path in modules) {\n const cname = getFileName(path);\n comps[cname] = defineAsyncComponent(modules[path]);\n}\n\nexport default comps;\n","<template>\n <component\n v-for=\"(widget, index) in widgetList\"\n :is=\"getWidget(widget)\"\n :field=\"widget\"\n :key=\"widget.id\"\n :widget=\"widget\"\n :parent-list=\"widgetList\"\n :index-of-parent-list=\"index\"\n :parent-widget=\"widget\"\n :sub-form-row-index=\"subFormRowIndex\"\n :sub-form-row-id=\"subFormRowId\"\n >\n <template v-for=\"slot in Object.keys($slots)\" v-slot:[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\"></slot>\n </template>\n </component>\n</template>\n\n<script lang=\"ts\" setup>\n import type { Widget } from '@kp-ui/lowcode-core';\n import { inject } from 'vue';\n defineOptions({\n inheritAttrs: false,\n name: 'RenderWigetList'\n });\n\n const getWidget = inject<(widget: Widget) => any>('getWidget', () => {\n return () => null;\n });\n\n const props = withDefaults(\n defineProps<{\n subFormRowIndex?: number | undefined;\n subFormRowId?: string | undefined;\n widgetList: Widget[] | null;\n parentWidget: Widget | null;\n }>(),\n {\n parentWidget: null,\n widgetList: () => [],\n subFormRowIndex: undefined,\n subFormRowId: undefined\n }\n );\n</script>\n","<template>\n <div class=\"sub-form-container\" v-show=\"!handleHidden\">\n <div v-for=\"(subFormRowId, sfrIdx) in rowIdData\" class=\"sub-form-row\" :key=\"subFormRowId\">\n <div class=\"row-no-column\">\n <span class=\"row-number-span\">#{{ sfrIdx + 1 }}</span>\n </div>\n <div class=\"grid-sub-form-data-row\">\n <RenderWigetList\n :widgetList=\"widget.widgetList || []\"\n :parentWidget=\"widget\"\n :subFormRowIndex=\"sfrIdx\"\n :subFormRowId=\"subFormRowId\"\n />\n </div>\n <div class=\"sub-form-action-column hide-label\">\n <div class=\"action-button-column\" v-show=\"!isReadMode\">\n <a-button\n type=\"link\"\n :title=\"i18nt('render.hint.insertSubFormRow')\"\n :disabled=\"actionDisabled || insertDisabled\"\n @click=\"insertSubFormRow(sfrIdx)\"\n >\n <template #icon>\n <svg-icon icon-class=\"icon-el-plus\" />\n </template>\n </a-button>\n <a-button\n type=\"link\"\n :title=\"i18nt('render.hint.deleteSubFormRow')\"\n :disabled=\"actionDisabled || deleteDisabled\"\n @click=\"deleteSubFormRow(sfrIdx)\"\n >\n <template #icon>\n <svg-icon icon-class=\"icon-el-delete\" />\n </template>\n </a-button>\n </div>\n </div>\n </div>\n <div class=\"header-row\">\n <a-button\n block\n v-if=\"!isReadMode\"\n :disabled=\"actionDisabled || insertDisabled\"\n shape=\"round\"\n type=\"dashed\"\n size=\"small\"\n class=\"action-button\"\n @click=\"addSubFormRow\"\n :title=\"i18nt('render.hint.subFormAddActionHint')\"\n >\n <template #icon>\n <svg-icon icon-class=\"icon-el-plus\" />\n </template>\n {{ i18nt('render.hint.subFormAddAction') }}\n </a-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, ref, provide, onMounted, nextTick } from 'vue';\n import {\n deepClone,\n generateId,\n traverseFieldWidgetsOfContainer\n } from '@kp-ui/lowcode-core/src/utils/util';\n import RenderWigetList from '../RenderWigetList.vue';\n import { SvgIcon, TpfDelConfirm } from 'tmgc2-share';\n import { ComponentNameEnum, ContainerTypeEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useI18n } from '@kp-ui/lowcode-core';\n import { useField } from '@kp-ui/lowcode-core';\n import { GridSubFormWidget } from '../../desginer/widget-panel/containers';\n\n defineOptions({\n name: ContainerTypeEnum.GridSubFormWidget,\n componentName: ComponentNameEnum.ContainerWidget,\n inheritAttrs: false\n });\n\n provide('isSubFormField', true);\n provide('getSubFormName', () => props.widget.options.name);\n\n const { i18nt } = useI18n();\n const props = withDefaults(defineProps<WidgetProps<GridSubFormWidget>>(), {});\n\n const rowIdData = ref<string[]>([]);\n const fieldWidgetList = ref<any[]>([]);\n const insertDisabled = ref(false);\n const deleteDisabled = ref(false);\n const actionDisabled = ref(false);\n\n const { field, formModel, isReadMode, handleHidden, executeFunction, defineExposed } =\n useField(props);\n\n const extractFieldWidgetList = () => {\n fieldWidgetList.value = [];\n const fieldListFn = (fw: any) => {\n fieldWidgetList.value.push(fw);\n };\n traverseFieldWidgetsOfContainer(props.widget, fieldListFn);\n };\n\n const initRowIdData = (initFlag = false) => {\n rowIdData.value = [];\n const subFormModel = formModel.value[props.widget.options.name];\n if (!!subFormModel && subFormModel.length > 0) {\n subFormModel.forEach(() => {\n rowIdData.value.push('id' + generateId());\n });\n\n if (initFlag) {\n setTimeout(() => {\n handleSubFormRowChange(subFormModel);\n }, 800);\n }\n }\n };\n\n const handleSubFormRowChange = (subFormData: any) => {\n if (props.widget.options.onSubFormRowChange) {\n executeFunction({\n functionBody: props.widget.options.onSubFormRowChange,\n keys: ['subFormData'],\n params: { subFormData }\n });\n }\n };\n\n const handleSubFormRowAdd = (subFormData: any, newRowId: string) => {\n executeFunction({\n functionBody: props.widget.options.onSubFormRowAdd,\n params: {\n subFormData,\n newRowId\n },\n keys: ['subFormData', 'newRowId']\n });\n };\n\n const handleSubFormRowInsert = (subFormData: any, newRowId: string) => {\n executeFunction({\n functionBody: props.widget.options.onSubFormRowInsert,\n params: {\n subFormData,\n newRowId\n },\n keys: ['subFormData', 'newRowId']\n });\n };\n\n const handleSubFormRowDelete = (subFormData: any, deletedDataRow: any) => {\n executeFunction({\n functionBody: props.widget.options.onSubFormRowDelete,\n params: {\n subFormData,\n deletedDataRow\n },\n keys: ['subFormData', 'deletedDataRow']\n });\n };\n\n const addSubFormRow = () => {\n const newSubFormDataRow: Record<string, any> = {};\n fieldWidgetList.value.forEach(subFormItem => {\n if (subFormItem?.formItemFlag) {\n newSubFormDataRow[subFormItem.options.name] = subFormItem.options.defaultValue;\n }\n });\n\n const oldSubFormData = formModel.value[props.widget.options.name] || [];\n oldSubFormData.push(newSubFormDataRow);\n // Ensure formModel is updated if it was empty/undefined\n if (!formModel.value[props.widget.options.name]) {\n formModel.value[props.widget.options.name] = oldSubFormData;\n }\n\n const newRowId = 'id' + generateId();\n rowIdData.value.push(newRowId);\n\n nextTick(() => {\n handleSubFormRowAdd(oldSubFormData, newRowId);\n handleSubFormRowChange(oldSubFormData);\n });\n };\n\n const insertSubFormRow = (index: number) => {\n const newSubFormDataRow: Record<string, any> = {};\n fieldWidgetList.value.forEach(subFormItem => {\n if (subFormItem?.formItemFlag) {\n newSubFormDataRow[subFormItem.options.name] = subFormItem.options.defaultValue;\n }\n });\n\n const oldSubFormData = formModel.value[props.widget.options.name] || [];\n oldSubFormData.splice(index, 0, newSubFormDataRow);\n // Ensure formModel is updated\n if (!formModel.value[props.widget.options.name]) {\n formModel.value[props.widget.options.name] = oldSubFormData;\n }\n\n const newRowId = 'id' + generateId();\n rowIdData.value.splice(index, 0, newRowId);\n\n nextTick(() => {\n handleSubFormRowInsert(oldSubFormData, newRowId);\n handleSubFormRowChange(oldSubFormData);\n });\n };\n\n const deleteSubFormRow = (index: number) => {\n TpfDelConfirm({\n type: 'confirm',\n content: i18nt('render.hint.deleteSubFormRow') + '?',\n title: i18nt('render.hint.prompt'),\n okText: i18nt('render.hint.confirm'),\n cancelText: i18nt('render.hint.cancel')\n })\n .then(() => {\n const oldSubFormData = formModel.value[props.widget.options.name] || [];\n const deletedDataRow = deepClone(oldSubFormData[index]);\n oldSubFormData.splice(index, 1);\n rowIdData.value.splice(index, 1);\n\n nextTick(() => {\n handleSubFormRowDelete(oldSubFormData, deletedDataRow);\n handleSubFormRowChange(oldSubFormData);\n });\n })\n .catch(() => {});\n };\n\n const handleSubFormFirstRowAdd = () => {\n if (!!props.widget.options.showBlankRow && rowIdData.value.length === 0) {\n if (fieldWidgetList.value.length === 0) extractFieldWidgetList();\n addSubFormRow();\n }\n };\n\n onMounted(() => {\n extractFieldWidgetList();\n initRowIdData(true);\n handleSubFormFirstRowAdd();\n });\n\n defineExpose({\n ...defineExposed,\n insertDisabled,\n deleteDisabled,\n actionDisabled,\n setInsertDisabled: (flag: boolean) => {\n insertDisabled.value = flag;\n },\n setDeleteDisabled: (flag: boolean) => {\n deleteDisabled.value = flag;\n },\n setActionDisabled: (flag: boolean) => {\n actionDisabled.value = flag;\n }\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .sub-form-container {\n margin-bottom: 16px;\n text-align: left;\n background: #fafafa;\n border-radius: 8px;\n padding: 10px;\n\n .header-row {\n margin-top: 15px;\n :deep(.action-button) {\n height: 35px;\n }\n }\n\n .sub-form-row {\n display: flex;\n align-items: center;\n background: white;\n margin: 8px 0;\n border-radius: 6px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);\n\n .row-number-span {\n margin-left: 16px;\n }\n }\n }\n\n .sub-form-action-column {\n display: inline-block;\n align-items: center;\n text-align: center;\n padding: 8px;\n }\n\n .grid-sub-form-data-row {\n display: inline-block;\n flex: 1;\n padding: 10px;\n position: relative;\n &:before,\n &:after {\n content: '';\n display: inline-block;\n width: 1px;\n height: 60%;\n background: #e1e2e3;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n }\n &:before {\n left: 0;\n }\n &:after {\n right: 0;\n }\n :deep(.ant-form-item) {\n margin-bottom: 0;\n }\n }\n\n div.sub-form-action-column.hide-label {\n }\n\n div.row-no-column {\n display: flex;\n align-items: center;\n width: 50px;\n border-radius: 10px;\n background: #f1f2f3;\n padding: 5px 0;\n margin: 0 6px;\n font-size: 14px;\n color: #666;\n }\n\n .action-button-column {\n width: 140px;\n }\n</style>\n","<template>\n <a-col v-if=\"!handleHidden\" class=\"grid-cell\" v-bind=\"layoutProps\" :style=\"colHeightStyle\">\n <RenderWigetList :widgetList=\"widget.widgetList || []\" :parentWidget=\"widget\" />\n </a-col>\n</template>\n\n<script lang=\"ts\" setup>\n import RenderWigetList from '../RenderWigetList.vue';\n import { computed, ref } from 'vue';\n import { ComponentNameEnum, ContainerTypeEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useField } from '@kp-ui/lowcode-core';\n\n defineOptions({\n name: ContainerTypeEnum.GridColWidget,\n componentName: ComponentNameEnum.ContainerWidget,\n inheritAttrs: false\n });\n\n const props = withDefaults(defineProps<WidgetProps & { colHeight: number | null }>(), {\n colHeight: null\n });\n\n const colHeightStyle = computed(() => {\n return props.colHeight ? { height: props.colHeight } : {};\n });\n\n const layoutProps = ref({\n span: props.widget.options.span || 12,\n offset: props.widget.options.offset || 0,\n push: props.widget.options.push || 0,\n pull: props.widget.options.pull || 0\n });\n\n const { handleHidden, defineExposed } = useField(props, false);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .grid-cell {\n padding: 3px;\n position: relative;\n\n .form-widget-list {\n min-height: 28px;\n }\n }\n</style>\n","<template>\n <div class=\"grid-container\" v-if=\"!handleHidden\">\n <a-row :gutter=\"widget.options.gutter\">\n <GridColWidget\n v-for=\"(colWidget, colIdx) in widget.cols\"\n :key=\"colWidget.id\"\n :field=\"colWidget\"\n :widget=\"colWidget\"\n :parent-list=\"widget.cols || []\"\n :index-of-parent-list=\"colIdx\"\n :parent-widget=\"widget\"\n :col-height=\"widget.options.colHeight\"\n />\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { GridWidget } from '../../desginer/widget-panel/containers';\n import GridColWidget from './grid-col-widget.vue';\n import { ContainerTypeEnum, ComponentNameEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useField } from '@kp-ui/lowcode-core';\n\n const props = defineProps<WidgetProps<GridWidget> & { designer?: any }>();\n defineOptions({\n name: ContainerTypeEnum.grid,\n componentName: ComponentNameEnum.ContainerWidget\n });\n\n const { handleHidden, defineExposed } = useField(props, false);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .grid-container {\n }\n</style>\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface InputWidgetOptionsType extends WidgetOptions {\n type: string;\n defaultValue: string;\n placeholder: string;\n columnWidth: string;\n size: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n useModal: boolean;\n onClickIcon: string;\n //-------------------\n customClass: string[]; //自定义css类名\n // labelIconClass: null,\n // labelIconPosition: 'rear',\n maxLength: string | number | null;\n showCount: boolean;\n customLabelIcon: string;\n labelIconClass: string;\n labelIconTooltip: string;\n labelIconPosition: string;\n}\n\nexport interface InputWidget extends Widget<InputWidgetOptionsType> {}\n\nexport const input = (ops = {} as any): InputWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'input',\n icon: 'text-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n type: 'text',\n defaultValue: '',\n placeholder: '',\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n useModal: false,\n onClickIcon: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n customLabelIcon: '',\n labelIconTooltip: '',\n maxLength: null,\n showCount: false,\n //-------------------\n onCreated: '',\n onMounted: '',\n onInput: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface TextareaWidgetOptionsType extends WidgetOptions {\n rows: string | number;\n defaultValue: string;\n placeholder: string;\n columnWidth: string;\n size: string;\n labelWidth: null;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n // minLength: null,\n maxLength: string | number | null;\n showCount: boolean;\n}\n\nexport interface TextareaWidget extends Widget<TextareaWidgetOptionsType> {}\n\nexport const textarea = (ops = {} as any) => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'textarea',\n category: 'field',\n icon: 'textarea-field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n rows: 3,\n defaultValue: '',\n placeholder: '',\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n // minLength: null,\n maxLength: null,\n showCount: false,\n //-------------------\n onCreated: '',\n onMounted: '',\n onInput: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface NumberWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n placeholder: string;\n columnWidth: string | number;\n size: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: []; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n min: number;\n max: number;\n precision: number;\n step: number;\n}\n\nexport interface NumberWidget extends Widget<NumberWidgetOptionsType> {}\n\nexport const number = (ops = {} as any): NumberWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'number',\n icon: 'number-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n placeholder: '',\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n min: -99999999,\n max: 99999999,\n precision: 0,\n step: 1,\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nexport interface RadioWidgetOptionsType extends WidgetOptions {\n defaultValue: string | number | null;\n columnWidth: string | number;\n size: string;\n buttonStyle: boolean;\n border: boolean;\n labelWidth: string | number | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n dsEnabled: boolean; // 是否使用数据源数据\n labelKey: string;\n valueKey: string;\n optionItems: OptionItem[];\n http: HttpType;\n dataHandlerCode: string;\n dataReqHandlerCode: string;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | number | null;\n labelIconPosition: string;\n}\n\nexport interface RadioWidget extends Widget<RadioWidgetOptionsType> {}\n\nexport const radio = (ops = {} as any) => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'radio',\n icon: 'radio-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n columnWidth: '200px',\n size: '',\n buttonStyle: false,\n border: false,\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n dsEnabled: false, // 是否使用数据源数据\n labelKey: 'label',\n valueKey: 'value',\n optionItems: [\n { label: 'radio 1', value: 1 },\n { label: 'radio 2', value: 2 },\n { label: 'radio 3', value: 3 }\n ],\n http: {\n url: '', // '/api/tmgc2-mgt/pageFieldConfig/queryPageFieldValueOptions',\n method: 'get',\n data: {},\n params: {} // { pageCode: '${pageCode}', fieldCode: '${fieldCode}' }\n },\n dataHandlerCode: 'return data.data;\\n ',\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nexport interface CheckboxWidgetOptionsType extends WidgetOptions {\n defaultValue: string[];\n columnWidth: string | number;\n size: string | number;\n labelWidth: string | number | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n labelKey: string;\n valueKey: string;\n optionItems: OptionItem[];\n http: HttpType;\n dataHandlerCode: string;\n dataReqHandlerCode: string;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface CheckboxWidget extends Widget<CheckboxWidgetOptionsType> {}\n\nexport const checkbox = (ops = {} as any): CheckboxWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'checkbox',\n icon: 'checkbox-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: [],\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n labelKey: 'label',\n valueKey: 'value',\n optionItems: [\n { label: 'check 1', value: 1 },\n { label: 'check 2', value: 2 },\n { label: 'check 3', value: 3 }\n ],\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n dataHandlerCode: 'return data.data;\\n ',\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface SelectWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n placeholder: string;\n columnWidth: string | number;\n size: string;\n labelWidth: string;\n labelHidden: boolean;\n disabled: boolean;\n useModal: boolean;\n loadingPage: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n maxTagCount: string;\n mode: string;\n showSearch: boolean;\n dsEnabled: boolean; // 是否使用数据源数据\n labelKey: string;\n valueKey: string;\n optionItems: OptionItem[];\n http: HttpType;\n dataHandlerCode: string;\n dataReqHandlerCode: string;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n //-------------------\n}\n\nexport interface SelectWidget extends Widget<SelectWidgetOptionsType> {}\n\nexport const select = (ops = {} as any): SelectWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'select',\n icon: 'select-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n placeholder: '',\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n useModal: false,\n loadingPage: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n maxTagCount: 'responsive',\n mode: 'combobox',\n showSearch: false,\n dsEnabled: false, // 是否使用数据源数据\n labelKey: 'label',\n valueKey: 'value',\n optionItems: [\n { label: 'select 1', value: '1' },\n { label: 'select 2', value: '2' },\n { label: 'select 3', value: '3' }\n ],\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n dataHandlerCode: 'return data.data;\\n ',\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n // onRemoteQuery: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n onClickIcon: 'console.log(this,\"onClickIcon\")',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface TimeWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n placeholder: string;\n columnWidth: string | null;\n size: string;\n autoFullWidth: boolean;\n labelWidth: string;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n format: string; //时间格式\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface TimeWidget extends Widget<TimeWidgetOptionsType> {}\n\nexport const time = (ops = {} as any): TimeWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'time',\n icon: 'time-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n placeholder: '',\n columnWidth: '200px',\n size: '',\n autoFullWidth: true,\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n format: 'HH:mm:ss', //时间格式\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface TimeRangeWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n startPlaceholder: string;\n endPlaceholder: string;\n columnWidth: string;\n size: string;\n autoFullWidth: true;\n labelWidth: string | null;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n format: string; //时间格式\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface TimeRangeWidget extends Widget<TimeRangeWidgetOptionsType> {}\nexport const timeRange = (ops = {} as any): TimeRangeWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'time-range',\n icon: 'time-range-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n startPlaceholder: '',\n endPlaceholder: '',\n columnWidth: '200px',\n size: '',\n autoFullWidth: true,\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n format: 'HH:mm:ss', //时间格式\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface DateWidgetOptionsType extends WidgetOptions {\n type: string;\n defaultValue: string | number | null;\n placeholder: string;\n columnWidth: string;\n size: string;\n autoFullWidth: boolean;\n labelWidth: string | number | null;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n showTime: boolean;\n format: string; //日期显示格式\n valueFormat: string; //日期对象格式\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface DateWidget extends Widget<DateWidgetOptionsType> {}\nexport const date = (ops = {} as any): DateWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'date',\n icon: 'date-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n type: 'date',\n defaultValue: null,\n placeholder: '',\n columnWidth: '200px',\n size: '',\n autoFullWidth: true,\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n showTime: false,\n format: 'YYYY-MM-DD', //日期显示格式\n valueFormat: 'YYYY-MM-DD', //日期对象格式\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface DateRangeWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n startPlaceholder: string;\n endPlaceholder: string;\n columnWidth: string;\n size: string;\n autoFullWidth: boolean;\n labelWidth: string | null;\n labelHidden: boolean;\n readonly: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n showTime: boolean;\n format: string; //日期显示格式\n valueFormat: string; //日期对象格式\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface DateRangeWidget extends Widget<DateRangeWidgetOptionsType> {}\n\nexport const dateRange = (ops = {} as any): DateRangeWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'date-range',\n icon: 'date-range-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n startPlaceholder: '',\n endPlaceholder: '',\n columnWidth: '200px',\n size: '',\n autoFullWidth: true,\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n showTime: false,\n format: 'YYYY-MM-DD', //日期显示格式\n valueFormat: 'YYYY-MM-DD', //日期对象格式\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface SwitchComWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n columnWidth: string;\n labelWidth: string | null;\n labelHidden: false;\n disabled: false;\n hidden: false;\n holdHidden: true;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n switchWidth: number;\n checkedValue: string;\n unCheckedValue: string;\n}\n\nexport interface SwitchComWidget extends Widget<SwitchComWidgetOptionsType> {}\n\nexport const switchCom = (ops = {} as any): SwitchComWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'switch',\n icon: 'switch-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n columnWidth: '200px',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n switchWidth: 40,\n checkedValue: '1',\n unCheckedValue: '0',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface RateWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n columnWidth: string;\n allowClear: boolean;\n labelWidth: string | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n count: number;\n allowHalf: boolean;\n}\n\nexport interface RateWidget extends Widget<RateWidgetOptionsType> {}\n\nexport const rate = (ops = {} as any): RateWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'rate',\n icon: 'rate-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n columnWidth: '200px',\n allowClear: true,\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n count: 5,\n allowHalf: false,\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface ColorWidgetOptionsType extends WidgetOptions {\n defaultValue: string | null;\n columnWidth: string;\n labelWidth: string | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n}\n\nexport interface ColorWidget extends Widget<ColorWidgetOptionsType> {}\n\nexport const color = (ops = {} as any): ColorWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'color',\n icon: 'color-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: null,\n columnWidth: '200px',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface SliderWidgetOptionsType extends WidgetOptions {\n columnWidth: string;\n size: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n //-------------------\n customClass: string[]; //自定义css类名\n labelIconClass: string | null;\n labelIconPosition: string;\n min: number;\n max: number;\n step: number;\n range: boolean;\n height: string | number | null;\n}\n\nexport interface SliderWidget extends Widget<SliderWidgetOptionsType> {}\n\nexport const slider = (ops = {} as any): SliderWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'slider',\n icon: 'slider-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n columnWidth: '200px',\n size: '',\n labelWidth: null,\n labelHidden: false,\n disabled: false,\n hidden: false,\n holdHidden: true,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n //-------------------\n customClass: [], //自定义css类名\n labelIconClass: null,\n labelIconPosition: 'rear',\n min: 0,\n max: 100,\n step: 1,\n range: false,\n height: null,\n //-------------------\n onCreated: '',\n onMounted: '',\n onChange: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface StaticTextWidgetOptionsType extends WidgetOptions {\n columnWidth: string;\n hidden: boolean;\n holdHidden: boolean;\n textContent: string;\n //-------------------\n customClass: string[]; //自定义css类名\n}\n\nexport interface StaticTextWidget extends Widget<StaticTextWidgetOptionsType> {}\n\nexport const staticText = (ops = {} as any): StaticTextWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'static-text',\n icon: 'static-text',\n category: 'field',\n formItemFlag: false,\n options: {\n name: '',\n columnWidth: '200px',\n hidden: false,\n holdHidden: true,\n textContent: 'static text',\n //-------------------\n customClass: [], //自定义css类名\n //-------------------\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface HtmlTextWidgetOptionsType extends WidgetOptions {\n columnWidth: string;\n hidden: boolean;\n holdHidden: boolean;\n htmlContent: string;\n //-------------------\n customClass: string[]; //自定义css类名\n}\n\nexport interface HtmlTextWidget extends Widget<HtmlTextWidgetOptionsType> {}\n\nexport const htmlText = (ops = {} as any): HtmlTextWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'html-text',\n icon: 'html-text',\n category: 'field',\n formItemFlag: false,\n options: {\n name: '',\n columnWidth: '200px',\n hidden: false,\n holdHidden: true,\n htmlContent: '<b>html text</b>',\n //-------------------\n customClass: [], //自定义css类名\n //-------------------\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface ButtonWidgetOptionsType extends WidgetOptions {\n size: string;\n displayStyle: string;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n type: string;\n shape: string;\n danger: boolean;\n ghost: boolean;\n icon: string | null;\n //-------------------\n customClass: string[]; //自定义css类名\n}\n\nexport interface ButtonWidget extends Widget<ButtonWidgetOptionsType> {}\n\nexport const button = (ops = {} as any): ButtonWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'button',\n icon: 'button',\n category: 'field',\n formItemFlag: false,\n options: {\n name: '',\n label: '',\n size: '',\n displayStyle: 'block',\n disabled: false,\n hidden: false,\n holdHidden: true,\n type: 'primary',\n shape: '',\n danger: false,\n ghost: false,\n icon: null,\n //-------------------\n customClass: [], //自定义css类名\n //-------------------\n onCreated: '',\n onMounted: '',\n onClick: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface DividerWidgetOptionsType extends WidgetOptions {\n columnWidth: string;\n direction: string;\n contentPosition: string;\n hidden: boolean;\n holdHidden: boolean;\n //-------------------\n customClass: string[]; //自定义css类名\n}\n\nexport interface DividerWidget extends Widget<DividerWidgetOptionsType> {}\n\nexport const divider = (ops = {} as any): DividerWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'divider',\n icon: 'divider',\n category: 'field',\n formItemFlag: false,\n options: {\n name: '',\n label: '',\n columnWidth: '200px',\n direction: 'horizontal',\n contentPosition: 'center',\n hidden: false,\n holdHidden: true,\n //-------------------\n customClass: [], //自定义css类名\n //-------------------\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions, OptionItem } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface DropdownWidgetOptionsType extends WidgetOptions {\n size: string;\n displayStyle: string;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n type: string;\n shape: string;\n danger: boolean;\n ghost: boolean;\n placement: string;\n menuList: OptionItem[];\n\n //-------------------\n customClass: string[]; //自定义css类名\n}\n\nexport interface DropdownWidget extends Widget<DropdownWidgetOptionsType> {}\n\nexport const dropdown = (ops = {} as any): DropdownWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'dropdown',\n icon: 'dropdown',\n category: 'field',\n formItemFlag: false,\n options: {\n name: '',\n label: '',\n size: '',\n displayStyle: 'block',\n disabled: false,\n hidden: false,\n holdHidden: true,\n type: 'primary',\n shape: '',\n danger: false,\n ghost: false,\n placement: 'bottomLeft',\n menuList: [\n { value: '1', label: '功能1' },\n { value: '2', label: '功能2' }\n ],\n\n //-------------------\n customClass: [], //自定义css类名\n //-------------------\n onCreated: '',\n onMounted: '',\n onClick: '',\n onMenuClick: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\ninterface ButtonItem {\n name: string;\n label: string;\n type: string;\n size: string;\n shape: string;\n hidden: boolean;\n disabled: boolean;\n onClick: string;\n}\nexport interface ButtonListWidgetOptionsType extends WidgetOptions {\n flex: string;\n buttonList: ButtonItem[];\n customClass: string[];\n buttonPosition: number;\n getContainer: string;\n}\n\nexport interface ButtonListWidget extends Widget<ButtonListWidgetOptionsType> {}\n\nexport const buttonList = (ops = {} as any): ButtonListWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'button-list',\n icon: 'text-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n flex: 'flex-start',\n buttonList: [\n {\n name: 'btn23966',\n label: 'new btn',\n type: 'primary',\n size: 'default',\n shape: 'default',\n hidden: false,\n disabled: false,\n onClick: ''\n },\n {\n name: 'btn92762',\n label: 'new btn',\n type: 'primary',\n size: 'default',\n shape: 'default',\n hidden: false,\n disabled: false,\n onClick: ''\n }\n ],\n customClass: [],\n buttonPosition: 0,\n getContainer: '.addInfoLayout-footer .footerRight',\n ...ops\n }\n };\n};\n","import { input } from './basicFields/input';\nimport { textarea } from './basicFields/textarea';\nimport { number } from './basicFields/number';\nimport { radio } from './basicFields/radio';\nimport { checkbox } from './basicFields/checkbox';\nimport { select } from './basicFields/select';\nimport { time } from './basicFields/time';\nimport { timeRange } from './basicFields/timeRange';\nimport { date } from './basicFields/date';\nimport { dateRange } from './basicFields/dateRange';\nimport { switchCom } from './basicFields/switch';\nimport { rate } from './basicFields/rate';\nimport { color } from './basicFields/color';\nimport { slider } from './basicFields/slider';\nimport { staticText } from './basicFields/staticText';\nimport { htmlText } from './basicFields/htmlText';\nimport { button } from './basicFields/button';\nimport { divider } from './basicFields/divider';\nimport { dropdown } from './basicFields/dropdown';\nimport { buttonList } from './basicFields/buttonList';\n\nexport const basicFieldsEnums = {\n input,\n textarea,\n number,\n radio,\n checkbox,\n select,\n time,\n timeRange,\n date,\n dateRange,\n switch: switchCom,\n rate,\n color,\n slider,\n staticText,\n htmlText,\n button,\n buttonList,\n divider,\n dropdown\n};\n","import { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface GridWidgetOptionsType extends WidgetOptions {\n colHeight: number;\n gutter: number;\n}\nexport interface GridWidget extends Widget<GridWidgetOptionsType> {\n // internal: boolean;\n}\n\nexport const grid = (ops = {} as any): GridWidget => {\n return {\n key: getUuidKey(),\n type: 'grid',\n alias: '',\n category: 'container',\n icon: 'grid',\n cols: [],\n options: {\n name: '',\n hidden: false,\n gutter: 12,\n colHeight: null,\n customClass: [],\n ...ops\n }\n };\n};\n","import { WidgetOptions, Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface GridColOptions extends WidgetOptions {\n span: number;\n offset: number;\n push: number;\n pull: number;\n responsive: boolean;\n md: number;\n sm: number;\n xs: number;\n}\n\nexport interface GridColWidget extends Widget {\n type: 'grid-col';\n internal?: boolean;\n options: GridColOptions;\n}\n\nexport const gridCol = (ops = {} as any): GridColWidget => {\n return {\n key: getUuidKey(),\n type: 'grid-col',\n category: 'container',\n icon: 'grid-col',\n internal: true,\n widgetList: [],\n options: {\n name: '',\n hidden: false,\n span: 12,\n offset: 0,\n push: 0,\n pull: 0,\n responsive: false,\n md: 12,\n sm: 12,\n xs: 12,\n customClass: [],\n ...ops\n }\n };\n};\n","import { getUuidKey } from '@kp-ui/tool';\n\nexport const vfDialog = (ops = {} as any) => {\n return {\n key: getUuidKey(),\n type: 'vf-dialog',\n category: 'container',\n icon: 'vf-dialog',\n widgetList: [],\n options: {\n name: '',\n title: '标题',\n width: '50%',\n height: '600px',\n bodyStyle: '',\n formCode: '',\n showClose: true,\n closeOnClickModal: false,\n closeOnPressEscape: false,\n readMode: false,\n disabledMode: false,\n disabled: false,\n onDialogOpened: '',\n onDialogBeforeClose: '',\n buttonList: [\n {\n name: 'btn101563',\n label: '取消',\n type: 'default',\n size: 'default',\n ghost: 0,\n shape: 'default',\n hidden: false,\n disabled: false,\n onClick: ''\n },\n {\n name: 'btn24448',\n label: '保存',\n type: 'primary',\n size: 'default',\n ghost: 0,\n shape: 'default',\n hidden: false,\n disabled: false,\n onClick: ''\n }\n ],\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface CollapseWidgetOptionsType extends WidgetOptions {\n rightSlotCss: string[];\n unCollapseIcon: string;\n isCollapse: boolean;\n height: string | number;\n collapseIcon: string;\n}\n\nexport interface CollapseWidget extends Widget<CollapseWidgetOptionsType> {\n headerRightSlotList: Widget[];\n defaultSlotsList: Widget[];\n}\n\nexport const vfCollapse = (): CollapseWidget => {\n return {\n key: getUuidKey(),\n type: 'vf-collapse',\n category: 'container',\n icon: 'zhediemianban',\n headerRightSlotList: [],\n defaultSlotsList: [],\n options: {\n name: '',\n title: '标题',\n height: '',\n collapseIcon: 'xiangshang',\n unCollapseIcon: 'xiangxia',\n isCollapse: false,\n hidden: false,\n rightSlotCss: []\n }\n };\n};\n","import { getUuidKey } from '@kp-ui/tool';\n\nexport const vfBox = (ops = {} as any) => {\n return {\n key: getUuidKey(),\n type: 'vf-box',\n category: 'container',\n icon: 'ccgl-zhouzhuanxiang-4',\n widgetList: [],\n options: {\n name: '',\n // formCode: '',\n customClass: [],\n hidden: false,\n holdHidden: false,\n width: '100%',\n height: 120,\n rotate: 0,\n boxModel: {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n borderShow: false,\n borderStyle: 'solid',\n borderWidth: 1,\n borderColor: '#cccccc',\n borderRadius: 0,\n backgroundColor: 'transparent',\n shadowShow: false,\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n shadowBlur: 4,\n shadowSpread: 0,\n shadowColor: 'rgba(0,0,0,0.2)'\n },\n ...ops\n }\n };\n};\n","import { getUuidKey } from '@kp-ui/tool';\n\nexport const tab = (ops = {} as any) => {\n return {\n key: getUuidKey(),\n type: 'tab',\n category: 'container',\n icon: 'tab',\n displayType: 'border-card',\n tabs: [],\n options: {\n name: '',\n hidden: false,\n customClass: [],\n onTabClick: '',\n tabBarGutter: 30,\n tabPosition: 'top',\n type: 'line',\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface TabWidget extends Widget<TabWidgetOptionsType> {\n tabs: Widget[];\n}\nexport interface TabWidgetOptionsType extends WidgetOptions {\n activeTab: boolean;\n}\n\nexport const tabPane = () => {\n return {\n key: getUuidKey(),\n type: 'tab-pane',\n category: 'container',\n icon: 'tab-pane',\n internal: true,\n widgetList: [],\n options: {\n name: '',\n label: '',\n hidden: false,\n active: false,\n disabled: false,\n customClass: []\n }\n };\n};\n","import { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface GridSubFormOptions extends WidgetOptions {\n showBlankRow: boolean;\n showRowNumber: boolean;\n}\n\n// export interface SubFormOptions extends WidgetOptions {\n// showBlankRow: boolean;\n// showRowNumber: boolean;\n// labelAlign: string;\n// onSubFormRowAdd: string;\n// onSubFormRowInsert: string;\n// onSubFormRowDelete: string;\n// onSubFormRowChange: string;\n// }\nexport interface GridSubFormWidget extends Widget<GridSubFormOptions> {}\n// export interface SubFormWidget extends Widget<SubFormOptions> {}\n\nexport const gridSubForm = (ops = {} as any): GridSubFormWidget => {\n return {\n key: getUuidKey(),\n type: 'grid-sub-form',\n category: 'container',\n icon: 'grid-sub-form',\n widgetList: [],\n options: {\n name: '',\n showBlankRow: true,\n showRowNumber: true,\n hidden: false,\n customClass: [],\n ...ops\n }\n };\n};\n\n// export const subForm = (): SubFormWidget => {\n// return {\n// key: getUuidKey(),\n// type: 'sub-form',\n// category: 'container',\n// icon: 'sub-form',\n// widgetList: [],\n// options: {\n// name: '',\n// showBlankRow: true,\n// showRowNumber: true,\n// labelAlign: 'label-center-align',\n// hidden: false,\n// customClass: [],\n// onSubFormRowAdd: '',\n// onSubFormRowInsert: '',\n// onSubFormRowDelete: '',\n// onSubFormRowChange: ''\n// }\n// };\n// };\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface CascaderWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n placeholder: string;\n size: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n columnWidth: string;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n multiple: boolean;\n dsEnabled: boolean;\n labelKey: string;\n valueKey: string;\n childrenKey: string;\n http: HttpType;\n optionItems: OptionItem[];\n dataHandlerCode: string;\n dataReqHandlerCode: string;\n requiredHint: string;\n validation: string;\n validationHint: string;\n customClass: string[];\n labelIconClass: string | null;\n labelIconPosition: string;\n //-------------------\n}\n\nexport interface CascaderWidget extends Widget<CascaderWidgetOptionsType> {}\n\nexport const cascader = (ops = {} as any): CascaderWidget => {\n return {\n key: getUuidKey(),\n type: 'cascader',\n icon: 'cascader-field',\n category: 'field',\n id: ops.name,\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n placeholder: '',\n size: '',\n labelWidth: null,\n labelHidden: false,\n columnWidth: '200px',\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n multiple: false,\n dsEnabled: true,\n labelKey: 'label',\n valueKey: 'value',\n childrenKey: 'children',\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n optionItems: [\n { label: 'select 1', value: '1', children: [{ label: 'child 1', value: 11 }] },\n { label: 'select 2', value: '2' },\n { label: 'select 3', value: '3' }\n ],\n dataHandlerCode: 'return data.data;\\n ',\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n customClass: [],\n labelIconClass: null,\n labelIconPosition: 'rear',\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface TreeSelectWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n placeholder: string;\n size: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n columnWidth: string | number;\n disabled: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n multiple: boolean;\n treeDefaultExpandAll: boolean;\n dsEnabled: boolean;\n labelKey: string;\n valueKey: string;\n childrenKey: string;\n http: HttpType;\n optionItems: OptionItem[];\n dataHandlerCode: string;\n dataReqHandlerCode: string;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n customClass: string[];\n labelIconClass: string | null;\n labelIconPosition: string;\n //-------------------\n}\n\nexport interface TreeSelectWidget extends Widget<TreeSelectWidgetOptionsType> {}\n\nexport const treeSelect = (ops = {} as any): TreeSelectWidget => {\n return {\n key: getUuidKey(),\n type: 'treeSelect',\n icon: 'tree_line',\n category: 'field',\n id: ops.name,\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n placeholder: '',\n size: '',\n labelWidth: null,\n labelHidden: false,\n columnWidth: '200px',\n disabled: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n multiple: false,\n treeDefaultExpandAll: false,\n dsEnabled: true,\n labelKey: 'label',\n valueKey: 'value',\n childrenKey: 'children',\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n optionItems: [\n { label: 'select 1', value: '1', children: [{ label: 'child 1', value: 11 }] },\n { label: 'select 2', value: '2' },\n { label: 'select 3', value: '3' }\n ],\n dataHandlerCode: 'return data.data;\\n ',\n dataReqHandlerCode: `const d=data.data||{};\\n Object.keys(d).forEach(k=>{\\n if(d[k]==='null'){\\n d[k]=null\\n }\\n })\\nreturn {...data,data:d}`,\n\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n customClass: [],\n labelIconClass: null,\n labelIconPosition: 'rear',\n onCreated: '',\n onMounted: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface CodeEditorWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n columnWidth: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n readonly: boolean;\n hidden: boolean;\n holdHidden: boolean;\n allowClear: boolean;\n required: boolean;\n requiredHint: string;\n mode: string;\n customClass: string[];\n //-------------------\n}\n\nexport interface CodeEditorWidget extends Widget<CodeEditorWidgetOptionsType> {}\n\nexport const codeEditor = (ops = {} as any): CodeEditorWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'code-editor',\n icon: 'code-editor',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n columnWidth: '200px',\n labelWidth: null,\n labelHidden: false,\n readonly: false,\n hidden: false,\n holdHidden: true,\n allowClear: true,\n required: false,\n requiredHint: '',\n mode: 'javascript',\n customClass: [],\n onCreated: '',\n onMounted: '',\n onInput: '',\n onChange: '',\n onFocus: '',\n onBlur: '',\n onValidate: `\n const flag = this.$refs.fieldEditor.validateCode();\n if(flag) return Promise.resolve();\n return Promise.reject('语法校验失败');\n `,\n ...ops\n }\n };\n};\n","import type {\n Widget,\n WidgetOptions,\n OptionItem,\n HttpType\n} from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface RichEditorWidgetOptionsType extends WidgetOptions {\n placeholder: string;\n labelWidth: string | number | null;\n labelHidden: boolean;\n columnWidth: string;\n contentHeight: string;\n disabled: boolean;\n hidden: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n customClass: string[];\n labelIconClass: string | null;\n labelIconPosition: string;\n maxLength: string | number | null;\n showCount: boolean;\n //-------------------\n}\n\nexport interface RichEditorWidget extends Widget<RichEditorWidgetOptionsType> {}\n\nexport const richEditor = (ops = {} as any): RichEditorWidget => {\n return {\n key: getUuidKey(),\n type: 'rich-editor',\n icon: 'rich-editor-field',\n category: 'field',\n id: ops.name,\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n placeholder: '',\n labelWidth: null,\n labelHidden: false,\n columnWidth: '200px',\n contentHeight: '200px',\n disabled: false,\n hidden: false,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n customClass: [],\n labelIconClass: null,\n labelIconPosition: 'rear',\n maxLength: null,\n showCount: false,\n onCreated: '',\n onMounted: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface FileUploadWidgetOptionsType extends WidgetOptions {\n labelWidth: string | number | null;\n labelHidden: boolean;\n columnWidth: string | number;\n multiple: boolean;\n uploadListType: string;\n accept: string[];\n maxSize: number;\n disabled: boolean;\n hidden: boolean;\n required: boolean;\n requiredHint: string;\n validation: string;\n validationHint: string;\n showFileList: boolean;\n limit: number;\n customClass: string[];\n labelIconClass: string | null;\n labelIconPosition: string;\n //-------------------\n}\n\nexport interface FileUploadWidget extends Widget<FileUploadWidgetOptionsType> {}\n\nexport const fileUpload = (ops = {} as any): FileUploadWidget => {\n return {\n key: getUuidKey(),\n type: 'file-upload',\n icon: 'file-upload-field',\n category: 'field',\n formItemFlag: true,\n id: ops.name,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n labelWidth: null,\n labelHidden: false,\n columnWidth: '200px',\n multiple: false,\n uploadListType: 'picture-card',\n accept: ['.xls', '.xlsx', '.pdf', '.png', '.jpg'],\n maxSize: 10,\n disabled: false,\n hidden: false,\n required: false,\n requiredHint: '',\n validation: '',\n validationHint: '',\n showFileList: true,\n limit: 1,\n customClass: [],\n labelIconClass: null,\n labelIconPosition: 'rear',\n onCreated: '',\n onMounted: '',\n onBeforeUpload: '',\n onValidate: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface BpmnEditorWidgetOptionsType extends WidgetOptions {\n defaultValue: string;\n columnWidth: string;\n labelWidth: string | null;\n labelHidden: boolean;\n hidden: boolean;\n holdHidden: boolean;\n customClass: string[];\n}\n\nexport interface BpmnEditorWidget extends Widget<BpmnEditorWidgetOptionsType> {}\n\nexport const bpmnEditor = (ops = {} as any): BpmnEditorWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'bpmn-editor',\n icon: 'liucheng',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n defaultValue: '',\n columnWidth: '200px',\n labelWidth: null,\n labelHidden: false,\n hidden: false,\n holdHidden: true,\n customClass: [],\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import type { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\n\nexport interface DiyCompontentWidgetOptionsType extends WidgetOptions {\n holdHidden: boolean;\n labelWidth: string | number | null;\n labelHidden: boolean;\n customRender: string;\n //-------------------\n}\n\nexport interface DiyCompontentWidget extends Widget<DiyCompontentWidgetOptionsType> {}\n\nexport const diyCompontent = (ops = {} as any): DiyCompontentWidget => {\n return {\n key: getUuidKey(),\n id: ops.name,\n type: 'diy-compontent',\n icon: 'text-field',\n category: 'field',\n formItemFlag: true,\n options: {\n name: '',\n label: '',\n hidden: false,\n holdHidden: true,\n labelAlign: '',\n labelWidth: null,\n labelHidden: false,\n customRender: `return this.$factoryRender('',{\n\n})`,\n onCreated: '',\n onMounted: '',\n ...ops\n }\n };\n};\n","import { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { HttpConfig } from 'tmgc2-share';\nexport interface TreeOptions extends WidgetOptions {\n http: HttpConfig;\n checkable: string;\n onCreated: string;\n onMounted: string;\n onCheck: string;\n onSelect: string;\n onExpand: string;\n autoExpandParent: boolean;\n defaultExpandAll: boolean;\n dsEnabled: boolean;\n showIcon: boolean;\n showLine: boolean;\n childrenKey: string;\n valueKey: string;\n labelKey: string;\n multiple: boolean;\n holdHidden: string;\n hidden: boolean;\n columnWidth: string;\n treeData: any[];\n}\nexport interface TreeWidget extends Widget<TreeOptions> {}\n\nexport const tree = (ops = {} as any): TreeWidget => {\n return {\n key: getUuidKey(),\n type: 'tree',\n icon: 'tree_line',\n category: 'field',\n id: ops.name,\n options: {\n name: '',\n label: '',\n labelAlign: '',\n labelWidth: null,\n labelHidden: false,\n columnWidth: '200px',\n hidden: false,\n holdHidden: true,\n multiple: false,\n labelKey: 'label',\n valueKey: 'value',\n childrenKey: 'children',\n showLine: false,\n showIcon: false,\n defaultExpandAll: false,\n autoExpandParent: true,\n treeData: [],\n dsEnabled: false,\n http: {\n url: '/api/tmgc2-query/dataQuery/execute',\n method: 'post',\n data: {},\n params: {}\n },\n checkable: true,\n\n onCreated: '',\n onMounted: '',\n\n onCheck: '',\n onSelect: '',\n onExpand: '',\n ...ops\n }\n };\n};\n","import { rowSelectionType } from '@kp-ui/lowcode-core/src/types/rowSelectionType';\nimport { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nimport type { HttpConfig } from 'tmgc2-share';\n\nexport interface DataTableOptions extends WidgetOptions {\n lineHeight: number | string;\n tableHeight: number | string;\n tableWidth: number | string;\n showIndex: boolean;\n showPagination: boolean;\n border: boolean;\n tableSize: string;\n virtual: boolean;\n tableColumns: any[];\n showButtonsColumn: boolean;\n buttonsColumnWidth: number;\n operationButtons: any[];\n dsEnabled: boolean;\n http: HttpConfig;\n dataReqHandlerCode: string;\n dataHandlerCode: string;\n rowKey: string;\n childrenKey: string;\n dataSource: any[];\n onCreated: string;\n onMounted: string;\n onHideOperationButton: string;\n onDisableOperationButton: string;\n onOperationButtonClick: string;\n colorRow: boolean;\n rowSelection: rowSelectionType;\n customRow: {\n onClick: string;\n onDblclick: string;\n onMouseenter: string;\n onMouseleave: string;\n };\n onTableChange: string;\n pagination: {\n pageSizeOptions: any[];\n current: number;\n hideOnSinglePage: false;\n pageSize: number;\n total: number;\n showQuickJumper: boolean;\n showSizeChanger: boolean;\n onPageSizeChange: string;\n showTotal: (number) => string;\n };\n}\n\nexport interface DataTableWidget extends Widget<DataTableOptions> {}\n\nexport const dataTable = (ops = {} as any): DataTableWidget => {\n return {\n key: getUuidKey(),\n type: 'data-table',\n category: 'container',\n icon: 'data-table',\n options: {\n lineHeight: 50,\n\n name: '',\n label: 'data-table',\n hidden: false,\n tableHeight: '300px',\n tableWidth: '100%',\n customClass: [],\n showIndex: false,\n showPagination: true,\n border: false,\n tableSize: 'small',\n virtual: false,\n tableColumns: [\n {\n columnId: 1,\n dataIndex: 'name',\n titleSuffix: false,\n title: '姓名',\n width: 150,\n show: true,\n align: 'center',\n fixed: '',\n sorter: false,\n customRender: '',\n ellipsis: true,\n resizable: true,\n showSorterTooltip: false\n }\n ],\n showButtonsColumn: false,\n buttonsColumnTitle: '操作',\n buttonsColumnWidth: 200,\n operationButtons: [\n {\n name: 'detail',\n label: '详情',\n type: 'link',\n shape: 'default',\n size: 'small',\n hidden: false,\n disabled: false,\n onClick: ''\n }\n ],\n dsEnabled: false,\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n dataReqHandlerCode: '',\n dataHandlerCode: '',\n rowKey: '_id',\n childrenKey: 'children',\n dataSource: [],\n onCreated: '',\n onMounted: '',\n customRow: {\n onClick: '',\n onDblclick: '',\n onMouseenter: '',\n onMouseleave: ''\n },\n onTableChange: '',\n pagination: {\n pageSizeOptions: ['10', '20', '50', '100'],\n current: 1,\n hideOnSinglePage: false,\n pageSize: 20,\n total: 0,\n showQuickJumper: true,\n showSizeChanger: true,\n position: ['bottomRight'],\n showTotal: total => `共 ${total} 条`\n },\n colorRow: true,\n rowSelection: {\n hasRowSelection: false,\n preserveSelectedRowKeys: false,\n fixed: true,\n onChange: 'console.log(selectedRowKeys, selectedRows)',\n columnWidth: 32,\n checkMethod: `console.log(row);\\nreturn true;`\n },\n ...ops\n }\n };\n};\n","import { cascader } from './advanced/cascader';\nimport { treeSelect } from './advanced/tree-select';\nimport { codeEditor } from './advanced/code-editor';\nimport { richEditor } from './advanced/rich-editor';\nimport { fileUpload } from './advanced/file-upload';\nimport { bpmnEditor } from './advanced/bpmn-editor';\n// import { slot } from './advanced/slot';\nimport { diyCompontent } from './advanced/diy-compontent';\nimport { tree } from './advanced/tree';\nimport { dataTable } from './advanced/data-table';\n\nexport const advancedFieldsEnums = {\n dataTable,\n cascader,\n tree,\n treeSelect,\n richEditor,\n codeEditor,\n fileUpload,\n bpmnEditor,\n diyCompontent\n};\n","import { basicFieldsEnums } from './basicFieldsEnums';\nimport { containersEnums } from './containersEnums';\nimport { advancedFieldsEnums } from './advancedFieldsEnums';\n\nexport const containers = Object.values(containersEnums).map(fn => fn());\n\nexport const basicFields = Object.values(basicFieldsEnums).map(fn => fn());\n\nexport const advancedFields = Object.values(advancedFieldsEnums).map(fn => fn());\n\nexport const customFields = [];\n","import { ContainerTypeEnum } from '@kp-ui/lowcode-core';\nimport { defineAsyncComponent } from 'vue';\n\nexport const RenderDesignerWidgetList = {\n [ContainerTypeEnum.GridColWidget]: defineAsyncComponent(() => import('./grid-col-widget.vue')),\n [ContainerTypeEnum.grid]: defineAsyncComponent(() => import('./grid-widget.vue')),\n [ContainerTypeEnum.DataTable]: defineAsyncComponent(() => import('./data-table-widget.vue')),\n [ContainerTypeEnum.GridSubFormWidget]: defineAsyncComponent(\n () => import('./grid-sub-form-widget.vue')\n ),\n [ContainerTypeEnum.Tab]: defineAsyncComponent(() => import('./tab-widget.vue')),\n [ContainerTypeEnum.VfCollapseWidget]: defineAsyncComponent(\n () => import('./vf-collapse-widget.vue')\n ),\n [ContainerTypeEnum.VfDialogWidget]: defineAsyncComponent(\n () => import('./vf-dialog-widget.vue')\n ),\n [ContainerTypeEnum.VfBoxWidget]: defineAsyncComponent(() => import('./vf-box-widget.vue'))\n};\n","import mitt, { type Emitter, type EventType } from 'mitt';\n\ntype Events = Record<EventType, unknown>;\n\nconst instance: Emitter<Events> = mitt<Events>();\n\ninterface EventBus {\n $on: typeof instance.on;\n $off: typeof instance.off;\n $emit: typeof instance.emit;\n}\n\nconst eventBus: EventBus = {\n $on: instance.on,\n $off: instance.off,\n $emit: instance.emit\n};\n\nexport default eventBus;\n","<template>\n <div\n ref=\"fieldEditor\"\n :class=\"['button-list-container', ...customClass]\"\n :style=\"containerStyle\"\n >\n <Teleport :disabled=\"isDisabled\" :to=\"getContainer\">\n <a-space :size=\"8\">\n <a-button\n v-for=\"item in visibleButtons\"\n :key=\"item.key\"\n :type=\"item.type\"\n :size=\"item.size\"\n :danger=\"!!item.danger\"\n :ghost=\"!!item.ghost\"\n class=\"tpf-button\"\n :loading=\"item.loading\"\n :disabled=\"handleDisabled(item) || disabled || !!item.disabled\"\n @click=\"handleClick(item)\"\n >\n <template v-if=\"item.icon\">\n <SvgIcon :icon-class=\"item.icon\" class=\"button-icon\" />\n </template>\n {{ item.label }}\n </a-button>\n </a-space>\n </Teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, computed, PropType } from 'vue';\n import { SvgIcon, useExecFunction } from 'tmgc2-share';\n import type { ActionButton } from '@kp-ui/lowcode-core';\n import { ButtonPositionEnum } from '@kp-ui/lowcode-core';\n\n export default defineComponent({\n name: 'ActionButtonListRender',\n components: { SvgIcon },\n props: {\n options: {\n type: Object,\n default: () => {}\n },\n disabled: {\n type: Boolean,\n default: false\n },\n scope: {\n type: Object,\n default: () => {}\n },\n ctx: {\n type: Object,\n default: () => {}\n },\n buttonList: {\n type: Array as PropType<ActionButton[]>,\n default: () => []\n },\n customClass: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n flex: {\n type: String,\n default: 'center'\n },\n designState: {\n type: Boolean,\n default: false\n }\n },\n emits: ['on-click'],\n setup(props, { emit }) {\n const containerStyle = computed(() => ({\n '--flex': props.flex\n }));\n\n const { executeFunction, asyncExecuteFunction } = useExecFunction();\n\n const isDisabled = computed(\n () => props.options?.buttonPosition !== ButtonPositionEnum.DIY || props.designState\n );\n\n const getContainer = computed(() =>\n isDisabled.value ? 'body' : props.options?.getContainer || 'body'\n );\n\n const visibleButtons = computed(() =>\n props.buttonList\n .filter(item => item.hidden !== 1)\n .filter(item => !handleHidden(item))\n );\n\n const handleClick = async (item: ActionButton) => {\n if (props.designState) return; // 在设计状态下不处理点击事件\n if (!item.onClick) {\n emit('on-click', { item, result: true });\n return;\n }\n if (item.loading) return;\n item.loading = true;\n try {\n const result = await asyncExecuteFunction({\n functionBody: item.onClick,\n context: props.ctx,\n params: props.scope\n });\n emit('on-click', { item, result });\n } catch (error) {\n console.error('Button click handler error:', error);\n } finally {\n item.loading = false;\n }\n };\n\n const handleDisabled = (item: ActionButton): boolean => {\n if (!item.onDisabled) return false;\n\n try {\n const result = executeFunction({\n functionBody: item.onDisabled,\n context: props.ctx,\n params: props.scope\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch (error) {\n console.error('Button disabled handler error:', error);\n return false;\n }\n };\n\n const handleHidden = (item: ActionButton): boolean => {\n if (!item.onHidden) return false;\n\n try {\n return executeFunction({\n functionBody: item.onHidden,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button hidden handler error:', error);\n return false;\n }\n };\n\n return {\n getContainer,\n isDisabled,\n containerStyle,\n visibleButtons,\n handleClick,\n handleDisabled\n };\n }\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .button-list-container {\n flex: 1;\n display: flex;\n justify-content: var(--flex);\n\n .button-icon {\n margin-right: 4px;\n }\n }\n</style>\n","<template>\n <div class=\"t-bg-[#fff] t-h-full\">\n <TpfAddInfoLayout :title=\"title\">\n <VFormRender ref=\"vfdRef\" :vfCtx=\"{ _id: id, ...getLocat(), goBack }\" />\n <template #footerRight>\n <div id=\"fromBtn\"></div>\n <ActionButtonListRender\n :buttonList=\"formConfig?.buttonList || []\"\n :ctx=\"vfdRef?.context\"\n @on-click=\"handleButtonClick\"\n />\n </template>\n </TpfAddInfoLayout>\n </div>\n</template>\n\n<script lang=\"tsx\" setup>\n import { getLocat } from '@kp-ui/tool';\n import { onMounted } from 'vue';\n import { TpfAddInfoLayout } from 'tmgc2-share';\n import { useLowcode } from '@kp-ui/lowcode-core';\n import { type ActionButton } from '@kp-ui/lowcode-core';\n import ActionButtonListRender from '../ActionButtonListRender.vue';\n import VFormRender from '../../render/index.vue';\n\n const props = defineProps({\n title: {\n type: String,\n default: ''\n }\n });\n const { formCode = '', id = '', type = 'edit' } = getLocat();\n\n const { vfdRef, formConfig, getComponentJson, goBack } = useLowcode({ formCode, type });\n\n const handleButtonClick = ({ item }: { item: ActionButton }) => {\n if (item.name === 'cancelButton') {\n goBack();\n }\n };\n\n onMounted(async () => {\n await getComponentJson([]);\n });\n</script>\n\n<style lang=\"less\"></style>\n","import VFormRender from '../components/render/index.vue';\nimport { basicFieldsEnums } from '../components/desginer/widget-panel/basicFieldsEnums';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { useComRef, useRouteBackTab, routerReloadStatus, useDataQueryApi } from 'tmgc2-share';\nimport { ref } from 'vue';\ntype ITmgcFormParamsType = {\n formCode?: string;\n entityCode?: string;\n type?: any;\n};\n\nexport { VFormRender };\n\nexport const useLowcode = (params: ITmgcFormParamsType) => {\n let { formCode, entityCode, type = 'add' } = params;\n const isLoading = ref(false);\n const useDataQuery = useDataQueryApi();\n const vfdRef = useComRef(VFormRender);\n\n const formConfig = ref();\n const { routeBackTab } = useRouteBackTab();\n\n const insertBtn = (list: any[] = []) => {\n const btnId = getUuidKey();\n const btnInfo = {\n label: '提交',\n name: btnId,\n onCreated: `\n const hidden = this.getFormRef().vfCtx?.type==='view';\n this.setHidden(hidden)\n `,\n onClick: `(async()=>{\n await this.getFormRef().onFormUpdate()\n this.$message.success('保存成功')\n const onCancel = this.getFormRef().vfCtx?.onCancel\n if( typeof onCancel === 'function' ){\n onCancel()\n }\n })()`\n };\n\n list.push(basicFieldsEnums.button(btnInfo));\n return list;\n };\n\n const getInitRenderJSON = (list: any[] = []) => {\n const res = list.reduce((t, v) => {\n const fn = basicFieldsEnums[v.componentType];\n if (fn) {\n const json = fn({\n name: v.entityPropertyCode,\n label: v.entityPropertyName,\n ...v.options\n });\n t = [...t, json];\n }\n return t;\n }, []);\n return res.length ? insertBtn(res) : res;\n };\n\n const getComponentJson = async (list: any[] = [], _formCode?: string) => {\n let json = { widgetList: [], formConfig: {} } as any;\n formCode = _formCode || formCode;\n if (formCode && type) {\n vfdRef.value?.setLoading(true);\n try {\n const res = await useDataQuery\n .dataQueryDetail({ code: formCode }, 'FormDefinitionManagement')\n .then(res => res.data.object || {});\n json = JSON.parse(res.frontendDefinition || '{}');\n } finally {\n vfdRef.value?.setLoading(false);\n }\n } else {\n json.widgetList = getInitRenderJSON(list);\n }\n isLoading.value = false;\n console.log('json: ', json);\n formConfig.value = json.formConfig;\n vfdRef.value!.setFormJson(json);\n return json;\n };\n\n const getFieldList = async () => {\n isLoading.value = true;\n if (!entityCode) {\n getComponentJson([]);\n return [];\n }\n\n const p = {\n pageCode: 'EntityPropertyFormItem',\n conditions: [{ fieldCode: 'entityCode', type: 'EQ', value: entityCode }],\n requiredFields: ['entityPropertyCode', 'entityPropertyName', 'valueType'],\n page: 1,\n pageSize: null,\n sorts: []\n };\n const list = await useDataQuery.execute(p).then(res => res.data.object.list);\n getComponentJson(list);\n return list;\n };\n const fieldListApi = async () => {\n const list = await getFieldList();\n return list.map(item => ({\n showName: item.entityPropertyName,\n fieldCode: item.entityPropertyCode\n }));\n };\n\n const goBack = (reloadStatus = routerReloadStatus.view, cb?: () => void) => {\n routeBackTab(reloadStatus, cb);\n };\n\n return {\n isLoading,\n goBack,\n formConfig,\n getInitRenderJSON,\n vfdRef,\n getComponentJson,\n getFieldList,\n fieldListApi\n };\n};\n","<template>\n <TpfModal\n class=\"tpf-model design-model\"\n :destroyOnClose=\"true\"\n :title=\"options.title\"\n :bodyStyle=\"{\n height: dialogHeight,\n overflow: 'auto',\n ...JSON.parse(options.bodyStyle || '{}')\n }\"\n :draggable=\"true\"\n :centered=\"true\"\n v-model:visible=\"dialogVisible\"\n :width=\"formatSize(options.width)\"\n :mask=\"options.showModal\"\n :maskClosable=\"options.closeOnClickModal\"\n :keyboard=\"options.closeOnPressEscape\"\n @cancel=\"handleCloseEvent\"\n :left-num=\"leftNum\"\n >\n <div class=\"dialog-content\">\n <VFormRender\n ref=\"vfdRef\"\n :loading=\"isLoading\"\n :vfCtx=\"{\n ...vfCtx,\n instance: context\n }\"\n :parent-form=\"parentForm\"\n :disabled-mode=\"options.disabledMode\"\n :dynamic-creation=\"true\"\n />\n </div>\n <template #footerRight>\n <ActionButtonListRender\n :buttonList=\"options.buttonList || []\"\n :ctx=\"getFormContext()\"\n @on-click=\"handleBtnClick\"\n :disabled=\"isDisabled\"\n />\n </template>\n </TpfModal>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, computed, nextTick, onBeforeUnmount } from 'vue';\n import { TpfModal, useExecFunction } from 'tmgc2-share';\n import { formatSize } from '@kp-ui/lowcode-core/src/utils/format';\n import { VFormRender, ActionButtonListRender } from '@kp-ui/lowcode-pc';\n import { useLowcode } from '../../hooks/useLowcode';\n defineOptions({\n name: 'dynamic-dialog'\n });\n\n const props = defineProps({\n options: {\n type: Object,\n default: () => ({})\n },\n formJson: {\n type: Object\n },\n formData: {\n type: Object,\n default: () => ({})\n },\n vfCtx: {\n type: Object,\n default: () => ({})\n },\n optionData: {\n //prop传入的选项数据\n type: Object,\n default: () => ({})\n },\n globalDsv: {\n // 全局数据源变量\n type: Object,\n default: () => ({})\n },\n parentFormRef: {\n type: Object,\n default: null\n },\n extraData: {\n type: Object,\n default: () => ({})\n },\n wrapperId: {\n type: String,\n default: null\n }\n });\n\n const dialogHeight = computed(() => {\n return formatSize(props.options.height, '500px');\n });\n const leftNum = ref(null);\n\n const isDisabled = ref(false);\n const dialogVisible = ref(false);\n\n const { context, asyncExecuteFunction, executeFunction } = useExecFunction();\n const { vfdRef, isLoading, getComponentJson } = useLowcode({\n formCode: props.options.formCode,\n ...props.vfCtx\n });\n // 计算属性\n const parentForm = computed(() => {\n return {\n ...props.parentFormRef,\n parentDom: context.value,\n getParentFormRef\n };\n });\n\n // 生命周期钩子\n onBeforeUnmount(() => {\n console.log(props.parentFormRef);\n props.parentFormRef?.setChildFormRef?.(null);\n });\n\n const setLoading = status => {\n isLoading.value = status;\n };\n\n const setTitle = title => {\n props.options.title = title;\n };\n\n const beforeOpen = () => {\n dialogVisible.value = true;\n };\n\n const handleBtnClick = async ({ result }: any) => {\n if (result !== false) {\n await handleCloseEvent();\n }\n };\n\n const show = () => {\n dialogVisible.value = true;\n\n //设置readMode模式\n nextTick(async () => {\n if (props.options?.readMode) {\n vfdRef.value?.setReadMode(true);\n }\n await getComponentJson([], props.options.formCode);\n vfdRef.value?.setDialogOrDrawerRef(context.value);\n if (props.parentFormRef) {\n props.parentFormRef.setChildFormRef(vfdRef.value);\n }\n handleOpenedEvent();\n });\n };\n\n const close = async () => {\n if (props.options.onDialogBeforeClose) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogBeforeClose\n });\n }\n\n dialogVisible.value = false;\n };\n\n const handleCloseEvent = () => {\n close();\n };\n\n const handleOpenedEvent = async () => {\n if (props.options.onDialogOpened) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogOpened\n });\n }\n };\n\n const getParentFormRef = () => {\n return props.parentFormRef;\n };\n\n const updateTable = () => {\n if (props.vfCtx?.parent?.exposed?.updateTable) {\n props.vfCtx.parent.exposed.updateTable();\n }\n };\n\n const getExtraData = () => {\n return props.extraData;\n };\n\n const setleftText = number => {\n leftNum.value = number;\n };\n\n const setDisabled = status => {\n isDisabled.value = status;\n };\n\n const getFormRef = () => {\n return vfdRef.value;\n };\n\n const getFormContext = () => {\n return vfdRef.value?.context;\n };\n\n // 暴露方法给父组件\n defineExpose({\n getParentFormRef,\n getFormRef,\n setDisabled,\n setleftText,\n setLoading,\n setTitle,\n beforeOpen,\n show,\n close,\n handleCloseEvent,\n handleOpenedEvent,\n updateTable,\n getExtraData\n });\n</script>\n\n<style lang=\"less\">\n .dialog-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 300px;\n }\n</style>\n","import { computed, Ref, h, ref, watchEffect, watch } from 'vue';\nimport { VxeGridInstance } from 'vxe-table';\nimport { cloneDeep, isArray, omit } from 'lodash-es';\nimport { ActionButtonListRender } from '@kp-ui/lowcode-pc';\n\nimport { useDataHttp, useI18n, WidgetProps } from '@kp-ui/lowcode-core';\nimport {\n tranformAntTableColumnToVxetableColumn,\n tranformAntSizzVxetableSize,\n ImeTableProps,\n useExecFunction,\n CustomItemRender,\n TpfDelConfirm\n} from 'tmgc2-share';\nimport { message } from 'ant-design-vue';\ntype useTableWidgetProps = {\n props: WidgetProps;\n fieldModel: Ref<any>;\n};\n\nexport function useTableWidget<T>({ props, fieldModel }: useTableWidgetProps) {\n const tableRef = ref<VxeGridInstance>();\n const isLoading = ref(false);\n const { widget } = props;\n const { i18nt } = useI18n();\n const { executeFunction, context } = useExecFunction();\n const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({\n props\n });\n\n const columns = computed(() => {\n const leftFixedColumns: any[] = [];\n const optins = widget?.options || {};\n const { rowSelection, showIndex, tableColumns = [] } = widget?.options ?? {};\n if (rowSelection?.hasRowSelection) {\n leftFixedColumns.push({\n title: rowSelection.columnTitle,\n width: rowSelection.columnWidth,\n align: 'left',\n fixed: 'left',\n dataIndex: 'checkbox',\n type: 'checkbox'\n });\n }\n if (showIndex) {\n leftFixedColumns.push({\n title: i18nt('designer.setting.seq'),\n align: 'left',\n width: 90,\n fixed: 'left',\n maxWidth: 100,\n dataIndex: 'seq',\n resizable: true,\n type: 'seq'\n });\n }\n\n const centerColumns = tableColumns\n .filter(item => item.show)\n .map(item => {\n return {\n ...item,\n ...handleColumnItem(item),\n titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false\n };\n });\n const rightFixedColumns: any[] = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n slots: {\n default: scope => {\n return h(ActionButtonListRender, {\n buttonList: operationButtons,\n flex: 'center',\n scope: scope,\n ctx: context.value,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n });\n }\n }\n });\n }\n\n // 把customRender渲染成 bodyCell 插槽\n const _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns];\n\n return tranformAntTableColumnToVxetableColumn(_columns);\n });\n\n // 处理列配置\n const handleColumnItem = item => {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n item.minWidth = 50;\n item.maxWidth = 1200;\n if (item.isAutoWidth) {\n item.width = null;\n delete item.width;\n } else {\n item.width = isNaN(Number(item.width)) ? item.width : Number(item.width);\n }\n if (!customRenderFn) return item;\n\n return {\n ...res,\n slots: {\n default(scope) {\n const Com = executeFunction({\n source: props.field.options.name,\n functionBody: customRenderFn,\n params: {\n index: scope.rowIndex,\n record: scope.row,\n ...scope\n },\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n\n return h(CustomItemRender, { is: Com });\n }\n }\n };\n };\n\n const tableWidth = computed(() => widget.options.tableWidth);\n const tableSize = computed(() => widget.options.tableSize);\n\n const onSortChange = () => {\n initTableSoureData();\n };\n\n const rowKey = computed(() => widget.options.rowKey);\n\n const tableProps = computed<ImeTableProps>(() => {\n const {\n tableSize,\n rowKey,\n tableHeight = 300,\n border = false,\n lineHeight = 50,\n colorRow = false,\n showPagination = true\n } = widget.options;\n\n return {\n showPagination,\n size: tranformAntSizzVxetableSize(tableSize),\n height: tableHeight,\n border: border ?? false,\n data: fieldModel.value || [],\n columns: columns.value,\n sortConfig: {\n trigger: 'cell',\n remote: true,\n orders: ['ascend', 'descend', null]\n },\n rowConfig: {\n keyField: rowKey,\n isCurrent: colorRow,\n isHover: true\n },\n checkboxConfig: {\n isShiftKey: true,\n checkMethod: data => {\n return executeFunction({\n functionBody: widget.options.rowSelection?.checkMethod,\n params: data,\n keys: ['row']\n });\n }\n },\n cellConfig: {\n height: lineHeight\n }\n } as ImeTableProps;\n });\n\n const setTableRef = _tableRef => {\n tableRef.value = _tableRef;\n };\n\n const initTableSoureData = async () => {\n if (props.field.options.dsEnabled) {\n isLoading.value = true;\n try {\n const data = await loadataSource();\n const tableData = data.list || [];\n fieldModel.value = cloneDeep(tableData || []);\n setPagination(data);\n } catch (error) {\n console.error(error);\n }\n } else {\n fieldModel.value = widget.options.dataSource || [];\n setPagination({\n total: widget.options.dataSource?.length || 0\n });\n }\n isLoading.value = false;\n };\n\n type EventType = 'onDblclick' | 'onMouseenter' | 'onMouseleave' | 'onClick';\n const onRunEvent = ({ row, $event }: any, type: EventType) => {\n executeFunction({\n functionBody: widget.options.customRow[type],\n params: [row, $event],\n keys: ['record', 'event']\n });\n };\n\n const setTableData = (data: T[]) => {\n setValue(data);\n };\n\n const handleTableChange = ({ sorts }) => {\n const fn = widget.options.onTableChange;\n if (fn) {\n executeFunction({\n functionBody: fn,\n params: {\n pagination: getPagination(),\n currentDataSource: getDataSource(),\n sorter: sorts\n },\n keys: ['pagination', 'sorter', 'currentDataSource']\n });\n }\n };\n\n // 选中 checkbox回调\n const onCheckboxChange = (selectedRowInfo: any) => {\n executeFunction({\n functionBody: widget.options.rowSelection.onChange,\n keys: ['selectedRowKeys', 'selectedRows'],\n params: selectedRowInfo\n });\n };\n\n const getDataSource = () => {\n return fieldModel.value;\n };\n\n const insertTableValue = (data: T) => {\n if (!fieldModel.value) {\n fieldModel.value = [];\n }\n fieldModel.value.push(cloneDeep(data));\n };\n\n const setValue = (data: T[]) => {\n if (!isArray(data)) {\n return console.error('表格数据类型错误');\n }\n fieldModel.value = cloneDeep(data);\n };\n\n const getTableColumns = () => {\n return props.field.options.tableColumns;\n };\n\n const setTableColumns = (data: any[]) => {\n props.field.options.tableColumns = data;\n };\n\n const delSelectRow = async delKeys => {\n if (!delKeys.length) return;\n try {\n await TpfDelConfirm({ content: i18nt('确定删除选中的数据吗') });\n const newList = fieldModel.value.filter(item => !delKeys?.includes(item[rowKey.value]));\n setValue(newList);\n message.success(i18nt('操作成功'));\n } catch {}\n };\n\n const tableDefinExpoed = {\n delSelectRow,\n getTableColumns,\n setTableColumns,\n setValue,\n insertTableValue,\n setPagination,\n getDataSource,\n getPagination,\n initTableSoureData\n };\n\n watch(\n () => props.field.options.dsEnabled,\n () => {\n initTableSoureData();\n }\n );\n\n return {\n rowKey,\n onCheckboxChange,\n tableDefinExpoed,\n onSortChange,\n pagintion,\n setPagination,\n getPagination,\n handleTableChange,\n setTableData,\n showPagination: computed(() => !!props.field.options.showPagination),\n onRunEvent,\n isLoading,\n initTableSoureData,\n setTableRef,\n tableSize,\n tableWidth,\n tableProps,\n tableRef\n };\n}\n","<template>\n <div class=\"talbe-wrapper\" :style=\"{ width: tableWidth }\" v-if=\"!handleHidden\">\n <Table\n @register=\"register\"\n :tableProps=\"tableProps\"\n :loading=\"isLoading\"\n :pagination=\"pagintion\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ContainerTypeEnum, ComponentNameEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { onMounted, watchEffect } from 'vue';\n import { useVxeTable, Table } from 'tmgc2-share';\n import { useField } from '@kp-ui/lowcode-core';\n import { useTableWidget } from '../../desginer/form-widget/container-widget/useTableWidget';\n import { DataTableWidget } from '../../desginer/widget-panel/advanced';\n\n const props = defineProps<WidgetProps<DataTableWidget>>();\n defineOptions({\n name: ContainerTypeEnum.DataTable,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const { fieldModel, handleHidden, defineExposed, customClass } = useField(props);\n\n const {\n isLoading,\n tableProps,\n tableWidth,\n pagintion,\n setPagination,\n setTableRef,\n initTableSoureData,\n handleTableChange,\n onRunEvent,\n onSortChange,\n onCheckboxChange,\n tableDefinExpoed\n } = useTableWidget({\n props,\n fieldModel\n });\n\n watchEffect(() => {\n if (!props.field.options.showPagination) {\n setPagination({\n total: 0\n });\n }\n });\n\n pagintion.value.onChange = (current, pageSize) => {\n initTableSoureData();\n };\n\n const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({\n props: {\n rowKey: props.field.options.rowKey,\n hasRowSelection: props.field.options.rowSelection?.hasRowSelection,\n clickRowCheck: props.field.options.colorRow\n },\n events: {\n dataChange: params => handleTableChange({ sorts: sorts.value }),\n cellDblclick: params => onRunEvent(params, 'onDblclick'),\n cellMouseenter: params => onRunEvent(params, 'onMouseenter'),\n cellMouseleave: params => onRunEvent(params, 'onMouseleave')\n },\n callbacks: {\n onCheckboxChange,\n onSortChange,\n cellClick: params => onRunEvent(params, 'onClick')\n }\n });\n\n const getSelectedRowKeys = () => {\n return selectedRowInfo.value.selectedRowKeys;\n };\n\n const getSelectedRows = () => {\n return selectedRowInfo.value.selectedRows;\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return tableRef.value;\n };\n\n watchEffect(() => {\n if (tableRef.value) {\n setTableRef(tableRef.value);\n }\n });\n\n onMounted(() => {\n initTableSoureData();\n });\n\n defineExpose({\n ...defineExposed,\n ...tableDefinExpoed,\n delSelectRow,\n getFieldEditor,\n selectRow,\n getSelectedRowKeys,\n getSelectedRows,\n setPagination,\n sorts,\n selectedRowInfo,\n loadDataTableDataSource: initTableSoureData,\n fieldEditor: tableRef\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .talbe-wrapper {\n width: 100%;\n .vxe-grid {\n width: 100%;\n }\n &__pagination {\n margin-top: 10px;\n display: flex;\n justify-content: end;\n }\n }\n</style>\n","<template>\n <div class=\"collapse-container\" v-if=\"!handleHidden\">\n <TpfCollapse :title=\"widget.options.title\">\n <template #right>\n <div class=\"collapse-right\">\n <RenderWigetList\n :widgetList=\"headerRightSlotList || []\"\n :parentWidget=\"widget\"\n />\n </div>\n </template>\n <div\n class=\"tpf-collapse-content-wrapper\"\n :style=\"{\n height: widget.options.height || 'unset'\n }\"\n v-show=\"!widget.options.isCollapse\"\n >\n <RenderWigetList :widgetList=\"defaultSlotsList || []\" :parentWidget=\"widget\" />\n </div>\n </TpfCollapse>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { TpfCollapse } from 'tmgc2-share';\n import RenderWigetList from '../RenderWigetList.vue';\n import { computed } from 'vue';\n import { ComponentNameEnum, ContainerTypeEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useField } from '@kp-ui/lowcode-core';\n import { CollapseWidget } from '../../desginer/widget-panel/containers';\n\n defineOptions({\n name: ContainerTypeEnum.VfCollapseWidget,\n componentName: ComponentNameEnum.ContainerWidget\n });\n\n const props = defineProps<WidgetProps<CollapseWidget>>();\n\n const defaultSlotsList = computed(() => props.widget.defaultSlotsList || []);\n const headerRightSlotList = computed(() => props.widget.headerRightSlotList || []);\n const { handleHidden, defineExposed } = useField(props, false);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"less\" scoped>\n .collapse-container {\n display: flex;\n margin: 2px;\n height: 100%;\n width: 100%;\n flex: 1 0 0;\n .form-widget-list {\n min-height: 28px;\n }\n :deep(.header-right) {\n .form-widget-list {\n min-width: 200px;\n }\n }\n }\n</style>\n\n<style lang=\"less\" scoped>\n .tpf-collapse {\n :deep(.tpf-collapse-content-wrapper) {\n padding: 10px 12px;\n overflow: hidden;\n background-color: #fff;\n }\n }\n</style>\n","<template>\n <div class=\"box-container\" v-if=\"!handleHidden\" :key=\"widget.id\" :style=\"boxStyle\">\n <RenderWigetList\n :subFormRowIndex=\"subFormRowIndex\"\n :subFormRowId=\"subFormRowId\"\n :widgetList=\"widget.widgetList || []\"\n :parentWidget=\"widget\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import RenderWigetList from '../RenderWigetList.vue';\n import { computed, CSSProperties } from 'vue';\n import { ComponentNameEnum, ContainerTypeEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useField } from '@kp-ui/lowcode-core';\n\n defineOptions({\n name: ContainerTypeEnum.VfBoxWidget,\n componentName: ComponentNameEnum.VfBoxWidget\n });\n\n const props = defineProps<WidgetProps>();\n const { handleHidden, defineExposed } = useField(props, false);\n const boxStyle = computed(() => {\n const boxModel = props.widget.options.boxModel || {};\n const style = {} as CSSProperties;\n\n if (boxModel.borderShow) {\n style.borderRadius = `${boxModel.borderRadius}px`;\n style.border = `${boxModel.borderStyle} ${boxModel.borderWidth}px ${boxModel.borderColor}`;\n }\n\n // 设置内边距\n if (\n boxModel.paddingTop !== undefined ||\n boxModel.paddingRight !== undefined ||\n boxModel.paddingBottom !== undefined ||\n boxModel.paddingLeft !== undefined\n ) {\n style.padding = `${boxModel.paddingTop || 0}px ${boxModel.paddingRight || 0}px ${\n boxModel.paddingBottom || 0\n }px ${boxModel.paddingLeft || 0}px`;\n }\n\n // 设置外边距\n if (\n boxModel.marginTop !== undefined ||\n boxModel.marginRight !== undefined ||\n boxModel.marginBottom !== undefined ||\n boxModel.marginLeft !== undefined\n ) {\n style.margin = `${boxModel.marginTop || 0}px ${boxModel.marginRight || 0}px ${\n boxModel.marginBottom || 0\n }px ${boxModel.marginLeft || 0}px`;\n }\n\n return style;\n });\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"less\" scoped>\n .box-container {\n width: 100%;\n position: relative;\n }\n</style>\n","<template>\n <div :key=\"widget.id\" class=\"tab-container container-design-widget\">\n <a-tabs\n :type=\"widget.options.type\"\n :tabBarGutter=\"widget.options.tabBarGutter\"\n :tabPosition=\"widget.options.tabPosition\"\n v-model:activeKey=\"widget.options.activeTab\"\n @tab-click=\"onTabClick\"\n >\n <a-tab-pane\n v-for=\"tab in widget.tabs\"\n :tab=\"tab.options.label\"\n :key=\"tab.options.label\"\n >\n <div class=\"tab-content-wrapper\">\n <RenderWigetList :widgetList=\"tab.widgetList || []\" :parentWidget=\"tab\" />\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ComponentNameEnum, ContainerTypeEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import RenderWigetList from '../RenderWigetList.vue';\n import { TabWidget } from '../../desginer/widget-panel/containers';\n defineOptions({\n name: ContainerTypeEnum.Tab,\n componentName: ComponentNameEnum.ContainerWidget\n });\n\n const props = defineProps<WidgetProps<TabWidget>>();\n\n const onTabClick = key => {\n props.widget.options.activeTab = key;\n };\n</script>\n\n<style lang=\"scss\" scoped>\n .tab-container {\n .form-widget-list {\n min-height: 28px;\n }\n :deep(.ant-tabs) {\n &.ant-tabs-bottom .ant-tabs-nav-wrap,\n &.ant-tabs-top .ant-tabs-nav-wrap {\n padding-left: 26px;\n }\n }\n :deep(.tab-content-wrapper) {\n min-height: 100px;\n }\n }\n</style>\n","import { ContainerTypeEnum } from '@kp-ui/lowcode-core';\nimport GridSubFormWidget from './grid-sub-form-widget.vue';\nimport GridColWidget from './grid-col-widget.vue';\nimport GridWidget from './grid-widget.vue';\nimport DataTableWidget from './data-table-widget.vue';\nimport VfCollapseWidget from './vf-collapse-widget.vue';\nimport VfBoxWidget from './vf-box-widget.vue';\nimport TabWidget from './tab-widget.vue';\nexport const RenderWidgetListData = {\n [ContainerTypeEnum.GridColWidget]: GridColWidget,\n [ContainerTypeEnum.grid]: GridWidget,\n [ContainerTypeEnum.DataTable]: DataTableWidget,\n [ContainerTypeEnum.VfCollapseWidget]: VfCollapseWidget,\n [ContainerTypeEnum.GridSubFormWidget]: GridSubFormWidget,\n [ContainerTypeEnum.VfBoxWidget]: VfBoxWidget,\n [ContainerTypeEnum.Tab]: TabWidget\n};\n","import { Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport FieldComponents from '../field-widget';\nimport { Component } from 'vue';\nimport { RenderWidgetListData } from '../form-render/container-items';\n\nexport const getWidget = (widget: Widget): Component => {\n const widgets = { ...RenderWidgetListData, ...FieldComponents };\n const widgetName = widget.type + '-widget';\n return widgets[widgetName];\n};\n","<template>\n <LowcodeRenderProvider :getWidget=\"getWidget\" :context=\"formContext\">\n <div class=\"form-render-wrapper\">\n <div class=\"loading-wrapper\" v-if=\"isLoading\">\n <Skeleton :active=\"isLoading\" />\n </div>\n <RenderForm ref=\"formContainer\" :context=\"formContext\" />\n <DynamicDialog v-bind=\"dialogProps\" ref=\"dynamicDialogRef\" />\n </div>\n <Debugger v-if=\"debug\" v-model:visible=\"debugVisible\" />\n </LowcodeRenderProvider>\n</template>\n\n<script lang=\"ts\" setup>\n import { onMounted, ref, computed, useTemplateRef, watchEffect } from 'vue';\n import { Skeleton } from 'ant-design-vue';\n import { getWidget } from './useRenderWidget';\n import { getLocat } from '@kp-ui/tool';\n import {\n Debugger,\n RenderForm,\n LowcodeRenderProvider,\n useFormContext\n } from '@kp-ui/lowcode-core';\n import { DynamicDialog } from '@kp-ui/lowcode-pc';\n\n defineOptions({\n name: 'VFormRender',\n componentName: 'VFormRender',\n inheritAttrs: false\n });\n\n const debug = computed(() => getLocat().debug === '1');\n const debugVisible = ref(false);\n\n const props = withDefaults(\n defineProps<{\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n parentForm?: any;\n }>(),\n {\n vfCtx: () => ({}),\n formData: () => ({}),\n optionData: () => ({}),\n disabledMode: false,\n parentForm: null\n }\n );\n\n // 组件引用\n const formContainer = useTemplateRef('formContainer');\n\n const renderForm = computed(() => formContainer.value?.renderForm);\n\n // 组件事件\n const emit = defineEmits<{\n (e: 'form-submit', formData: any): void;\n (e: 'form-cancel'): void;\n }>();\n\n // 创建表单上下文\n const formContext = useFormContext({\n props,\n renderForm\n });\n\n //获取原生form引用\n const getNativeForm = () => {\n return formContainer.value;\n };\n const { dialogProps, emitter, isLoading, registerToRefList, formWidgetId } = formContext;\n\n // 生命周期钩子\n onMounted(() => {\n registerToRefList(formWidgetId);\n });\n\n watchEffect(() => {\n console.log(props.formJson);\n\n if (props.formJson) {\n formContext.setFormJson(props.formJson);\n }\n });\n\n // 暴露方法\n defineExpose({\n ...emitter,\n ...formContext.expose,\n getNativeForm,\n formJson: props.formJson,\n renderForm\n });\n</script>\n\n<style lang=\"less\" scoped>\n .loading-wrapper {\n min-height: 300px;\n padding: 20px;\n }\n .ant-form .ant-form-item-explain.ant-form-item-explain-connected {\n display: none;\n }\n</style>\n","import { getLocat, getUserInfo } from '@kp-ui/tool';\nimport { VxeTooltip } from 'vxe-pc-ui';\nimport dayjs from 'dayjs';\nimport 'virtual:svg-icons-register';\nimport { App } from 'vue';\n\nexport { default as VFormRender } from './src/components/render/index.vue';\n\nexport * from './src/hooks/useLowcode';\n\nexport { default as CustomPageRender } from './src/components/public/ConfigView/CustomPageRender.vue';\ninterface RegisterLowcodeCoreParams {\n app: App;\n factoryRender: (name: any, props: any, ...args: any[]) => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, factoryRender } = params;\n app.config.globalProperties.$getLocat = getLocat;\n app.config.globalProperties.$dayjs = dayjs;\n app.config.globalProperties.$getUserInfo = getUserInfo;\n app.config.globalProperties.$factoryRender = factoryRender;\n app.config.globalProperties.$openCustomerModal = ops => {\n import('./src/components/public/CustomerModal/useCustomerModal').then(\n ({ openCustomerModal }) => {\n openCustomerModal(ops, app);\n }\n );\n };\n app.component('VxeTooltip', VxeTooltip);\n};\n"],"names":["deepClone","_a","tab","_useModel","_createBlock","visible","_createVNode","_createElementBlock","_Fragment","_renderList","_unref","_openBlock","_toDisplayString","_resolveDynamicComponent","_createElementVNode","_normalizeStyle","x","y","selected","widget","_normalizeClass","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_6","_hoisted_7","instance","ref","props","__props","localeStore","useLocaleStore","locale","storeToRefs","initLocale","useI18n","watch","value","immediate","provide","designState","getWidget","context","formConfig","formWidgetId","widgetRefList","formDataModel","readModeFlag","_renderSlot","_ctx","$slots","goBack","draggable","isCanvas","_withCtx","_withModifiers","index","parentWidget","LayoutTypeEnum","WidgetTypeEnum","ContainerTypeEnum","ComponentNameEnum","ButtonPositionEnum","message","widgetId","fieldEditor","useLowcode","basicFieldsEnums","res","widgetList","subFormRowIndex","subFormRowId","_mergeProps","_withDirectives","RenderWigetList","_createTextVNode","_Teleport","_createCommentVNode","formCode","id","type","getLocat","vfdRef","getComponentJson","handleButtonClick","item","name","onMounted","TpfAddInfoLayout","title","footerRight","ActionButtonListRender","buttonList","ctx","onOnClick","VFormRender","vfCtx","_id","number","tableSize","rowKey","FieldComponents","LowcodeRenderProvider","RenderForm"],"mappings":"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"}