@gct-paas/core-web 0.1.6-dev.27 → 0.1.6-dev.29

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 (68) hide show
  1. package/dist/{JsBarcode-RnOpozEb.js → JsBarcode-B8G1JOdL.js} +2 -2
  2. package/dist/{chunk-IDmDxyzJ.js → chunk-Ct_s6KuW.js} +1 -1
  3. package/dist/{cropper-C_dOG1jL.js → cropper-bPTpBuEs.js} +2 -2
  4. package/dist/{de_DE-CJzzAeJy.js → de_DE-BZzFXlpr.js} +2 -2
  5. package/dist/{defineProperty-CUGqgLrP.js → defineProperty-DlP40sZv.js} +1 -1
  6. package/dist/{diagram-config-item-reverse-DakeYOKC.js → diagram-config-item-reverse-BrNqgBib.js} +2 -2
  7. package/dist/{diagram-config-item-virtual-DUsKrH5I.js → diagram-config-item-virtual-Bn9FGUKW.js} +2 -2
  8. package/dist/{diagram-config-item-YP-9kxeG.js → diagram-config-item-yt2f0boQ.js} +2 -2
  9. package/dist/{en_US-CZgnhYn8.js → en_US-It6A0Qlv.js} +2 -2
  10. package/dist/{es_ES-Dsqh7WS7.js → es_ES-BJbF3bXC.js} +2 -2
  11. package/dist/{fr_FR-BPlWHhYG.js → fr_FR-B1zDMdgq.js} +2 -2
  12. package/dist/{hooks-DOEHCIeV.js → hooks-RP9PWeVx.js} +2 -2
  13. package/dist/icon-next-picker-5U7WV7DD.js +2 -0
  14. package/dist/index.min.css +1 -1
  15. package/dist/{ja_JP-qOWTejE-.js → ja_JP-BeLlNhW7.js} +2 -2
  16. package/dist/loader.esm.min.js +2 -2
  17. package/dist/{monaco-editor-D0b-P8-3.js → monaco-editor-BUFtpvmw.js} +2 -2
  18. package/dist/{objectSpread2-8faO3NBs.js → objectSpread2-BVaIaTAv.js} +1 -1
  19. package/dist/{overlayscrollbars-vue-RjNFbdzS.js → overlayscrollbars-vue-Cz03TUWV.js} +1 -1
  20. package/dist/{pt_PT-BY4RN87D.js → pt_PT-DO5ASB9l.js} +2 -2
  21. package/dist/{relationship-diagram-config-BNdhG6qb.js → relationship-diagram-config-m7JMzXCN.js} +2 -2
  22. package/dist/{rich-editor-BhHemdXT.js → rich-editor-CGJ4aQwn.js} +2 -2
  23. package/dist/{ru_RU-BG31-RyX.js → ru_RU-Bc7mEPDr.js} +2 -2
  24. package/dist/{tr_TR-CQAfdpaB.js → tr_TR-EKOKoMHv.js} +2 -2
  25. package/dist/useMonacoEditor-CHH2f_ss.js +2 -0
  26. package/dist/{vi_VN-DX304WvB.js → vi_VN-DElAznOD.js} +2 -2
  27. package/dist/{zh_CN-B4Hvtilh.js → zh_CN-ALcCyS44.js} +2 -2
  28. package/dist/{zh_TW-24HPBoB2.js → zh_TW-D1nSpXar.js} +2 -2
  29. package/es/components/icon-next-picker/icon-next-picker.vue_vue_type_script_setup_true_name_IconNextPicker_lang.mjs +2 -4
  30. package/es/components/label-design/components/widgets/index.mjs +4 -1
  31. package/es/components/open-select-user-modal/component/org.vue.mjs +1 -1
  32. package/es/components/open-select-user-modal/component/role.vue.mjs +1 -1
  33. package/es/components/open-select-user-modal/component/user-group.vue.mjs +1 -1
  34. package/es/components/open-select-user-modal/component/user.vue.mjs +1 -1
  35. package/es/hooks/index.d.ts +0 -1
  36. package/es/hooks/index.mjs +0 -1
  37. package/es/index.d.ts +1 -0
  38. package/es/index.mjs +5 -2
  39. package/es/locale/sys.d.ts +1 -0
  40. package/es/locale/sys.mjs +2 -1
  41. package/es/modules/data-rules-container/src/hooks/useRole.d.ts +0 -1
  42. package/es/modules/online-control/content.vue.d.ts +8 -0
  43. package/es/modules/online-control/content.vue.mjs +5 -0
  44. package/es/modules/online-control/content.vue_vue_type_script_setup_true_lang.mjs +48 -0
  45. package/es/modules/online-control/index.d.ts +8 -0
  46. package/es/modules/online-control/index.mjs +1 -0
  47. package/es/modules/online-control/model-control.d.ts +25 -0
  48. package/es/modules/online-control/model-control.mjs +61 -0
  49. package/es/modules/online-control/online-broadcast.d.ts +2 -0
  50. package/es/modules/online-control/online-broadcast.mjs +30 -0
  51. package/es/modules/online-control/online-control.const.d.ts +32 -0
  52. package/es/modules/online-control/online-control.const.mjs +36 -0
  53. package/es/modules/online-control/online-control.d.ts +63 -0
  54. package/es/modules/online-control/online-control.interface.d.ts +21 -0
  55. package/es/modules/online-control/online-control.mjs +125 -0
  56. package/es/modules/picture-cropper/src/CropperFree.vue.mjs +2 -2
  57. package/es/modules/picture-cropper/src/CropperFree.vue_vue_type_script_setup_true_name_CropperPhoto_lang.mjs +3 -4
  58. package/es/modules/picture-cropper/src/{CropperFree.vue_vue_type_style_index_0_scoped_c731e25e_lang.css → CropperFree.vue_vue_type_style_index_0_scoped_c2cff308_lang.css} +16 -16
  59. package/es/utils/confirm-util/confirm-util.d.ts +28 -0
  60. package/es/utils/confirm-util/confirm-util.mjs +79 -0
  61. package/es/utils/index.d.ts +1 -0
  62. package/es/utils/index.mjs +1 -0
  63. package/package.json +11 -11
  64. package/dist/icon-next-picker-C0WyjeeM.js +0 -2
  65. package/dist/useMonacoEditor-T3lBATMv.js +0 -2
  66. package/es/hooks/useTheme.d.ts +0 -8
  67. package/es/hooks/useTheme.mjs +0 -16
  68. /package/es/components/open-select-user-modal/component/{org.vue_vue_type_style_index_0_lang.css → user-group.vue_vue_type_style_index_0_lang.css} +0 -0
@@ -1,2 +1,2 @@
1
- /*! @gct-paas/core-web v0.1.6-dev.27 */
2
- import{t as e}from"./objectSpread2-8faO3NBs.js";var l={placeholder:"請選擇時間"},a={lang:e({placeholder:"請選擇日期",yearPlaceholder:"請選擇年份",quarterPlaceholder:"請選擇季度",monthPlaceholder:"請選擇月份",weekPlaceholder:"請選擇周",rangePlaceholder:["開始日期","結束日期"],rangeYearPlaceholder:["開始年份","結束年份"],rangeMonthPlaceholder:["開始月份","結束月份"],rangeQuarterPlaceholder:["開始季度","結束季度"],rangeWeekPlaceholder:["開始周","結束周"]},{locale:"zh_TW",today:"今天",now:"此刻",backToToday:"返回今天",ok:"確定",timeSelect:"選擇時間",dateSelect:"選擇日期",weekSelect:"選擇周",clear:"清除",month:"月",year:"年",previousMonth:"上個月 (翻頁上鍵)",nextMonth:"下個月 (翻頁下鍵)",monthSelect:"選擇月份",yearSelect:"選擇年份",decadeSelect:"選擇年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH時mm分ss秒",previousYear:"上一年 (Control鍵加左方向鍵)",nextYear:"下一年 (Control鍵加右方向鍵)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世紀",nextCentury:"下一世紀"}),timePickerLocale:e({},l)};a.lang.ok="確 定";var r="${label}不是一個有效的${type}",t={locale:"zh-tw",Pagination:{items_per_page:"條/頁",jump_to:"跳至",jump_to_confirm:"確定",page:"頁",prev_page:"上一頁",next_page:"下一頁",prev_5:"向前 5 頁",next_5:"向後 5 頁",prev_3:"向前 3 頁",next_3:"向後 3 頁"},DatePicker:a,TimePicker:l,Calendar:a,global:{placeholder:"請選擇"},Table:{filterTitle:"篩選器",filterConfirm:"確定",filterReset:"重置",filterEmptyText:"無篩選項",selectAll:"全部選取",selectInvert:"反向選取",selectNone:"清空所有",selectionAll:"全選所有",sortTitle:"排序",expand:"展開行",collapse:"關閉行",triggerDesc:"點擊降序",triggerAsc:"點擊升序",cancelSort:"取消排序"},Modal:{okText:"確定",cancelText:"取消",justOkText:"知道了"},Popconfirm:{okText:"確定",cancelText:"取消"},Transfer:{searchPlaceholder:"搜尋資料",itemUnit:"項目",itemsUnit:"項目",remove:"删除",selectCurrent:"全選當頁",removeCurrent:"删除當頁",selectAll:"全選所有",removeAll:"删除全部",selectInvert:"反選當頁"},Upload:{uploading:"正在上傳...",removeFile:"刪除檔案",uploadError:"上傳失敗",previewFile:"檔案預覽",downloadFile:"下载文件"},Empty:{description:"無此資料"},Icon:{icon:"圖標"},Text:{edit:"編輯",copy:"複製",copied:"複製成功",expand:"展開"},PageHeader:{back:"返回"},Form:{optional:"(可選)",defaultValidateMessages:{default:"字段驗證錯誤${label}",required:"請輸入${label}",enum:"${label}必須是其中一個[${enum}]",whitespace:"${label}不能為空字符",date:{format:"${label}日期格式無效",parse:"${label}不能轉換為日期",invalid:"${label}是一個無效日期"},types:{string:r,method:r,array:r,object:r,number:r,date:r,boolean:r,integer:r,float:r,regexp:r,email:r,url:r,hex:r},string:{len:"${label}須為${len}個字符",min:"${label}最少${min}個字符",max:"${label}最多${max}個字符",range:"${label}須在${min}-${max}字符之間"},number:{len:"${label}必須等於${len}",min:"${label}最小值為${min}",max:"${label}最大值為${max}",range:"${label}須在${min}-${max}之間"},array:{len:"須為${len}個${label}",min:"最少${min}個${label}",max:"最多${max}個${label}",range:"${label}數量須在${min}-${max}之間"},pattern:{mismatch:"${label}與模式不匹配${pattern}"}}},Image:{preview:"預覽"}};export{t as default};
1
+ /*! @gct-paas/core-web v0.1.6-dev.29 */
2
+ import{t as e}from"./objectSpread2-BVaIaTAv.js";var l={placeholder:"請選擇時間"},a={lang:e({placeholder:"請選擇日期",yearPlaceholder:"請選擇年份",quarterPlaceholder:"請選擇季度",monthPlaceholder:"請選擇月份",weekPlaceholder:"請選擇周",rangePlaceholder:["開始日期","結束日期"],rangeYearPlaceholder:["開始年份","結束年份"],rangeMonthPlaceholder:["開始月份","結束月份"],rangeQuarterPlaceholder:["開始季度","結束季度"],rangeWeekPlaceholder:["開始周","結束周"]},{locale:"zh_TW",today:"今天",now:"此刻",backToToday:"返回今天",ok:"確定",timeSelect:"選擇時間",dateSelect:"選擇日期",weekSelect:"選擇周",clear:"清除",month:"月",year:"年",previousMonth:"上個月 (翻頁上鍵)",nextMonth:"下個月 (翻頁下鍵)",monthSelect:"選擇月份",yearSelect:"選擇年份",decadeSelect:"選擇年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH時mm分ss秒",previousYear:"上一年 (Control鍵加左方向鍵)",nextYear:"下一年 (Control鍵加右方向鍵)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世紀",nextCentury:"下一世紀"}),timePickerLocale:e({},l)};a.lang.ok="確 定";var r="${label}不是一個有效的${type}",t={locale:"zh-tw",Pagination:{items_per_page:"條/頁",jump_to:"跳至",jump_to_confirm:"確定",page:"頁",prev_page:"上一頁",next_page:"下一頁",prev_5:"向前 5 頁",next_5:"向後 5 頁",prev_3:"向前 3 頁",next_3:"向後 3 頁"},DatePicker:a,TimePicker:l,Calendar:a,global:{placeholder:"請選擇"},Table:{filterTitle:"篩選器",filterConfirm:"確定",filterReset:"重置",filterEmptyText:"無篩選項",selectAll:"全部選取",selectInvert:"反向選取",selectNone:"清空所有",selectionAll:"全選所有",sortTitle:"排序",expand:"展開行",collapse:"關閉行",triggerDesc:"點擊降序",triggerAsc:"點擊升序",cancelSort:"取消排序"},Modal:{okText:"確定",cancelText:"取消",justOkText:"知道了"},Popconfirm:{okText:"確定",cancelText:"取消"},Transfer:{searchPlaceholder:"搜尋資料",itemUnit:"項目",itemsUnit:"項目",remove:"删除",selectCurrent:"全選當頁",removeCurrent:"删除當頁",selectAll:"全選所有",removeAll:"删除全部",selectInvert:"反選當頁"},Upload:{uploading:"正在上傳...",removeFile:"刪除檔案",uploadError:"上傳失敗",previewFile:"檔案預覽",downloadFile:"下载文件"},Empty:{description:"無此資料"},Icon:{icon:"圖標"},Text:{edit:"編輯",copy:"複製",copied:"複製成功",expand:"展開"},PageHeader:{back:"返回"},Form:{optional:"(可選)",defaultValidateMessages:{default:"字段驗證錯誤${label}",required:"請輸入${label}",enum:"${label}必須是其中一個[${enum}]",whitespace:"${label}不能為空字符",date:{format:"${label}日期格式無效",parse:"${label}不能轉換為日期",invalid:"${label}是一個無效日期"},types:{string:r,method:r,array:r,object:r,number:r,date:r,boolean:r,integer:r,float:r,regexp:r,email:r,url:r,hex:r},string:{len:"${label}須為${len}個字符",min:"${label}最少${min}個字符",max:"${label}最多${max}個字符",range:"${label}須在${min}-${max}字符之間"},number:{len:"${label}必須等於${len}",min:"${label}最小值為${min}",max:"${label}最大值為${max}",range:"${label}須在${min}-${max}之間"},array:{len:"須為${len}個${label}",min:"最少${min}個${label}",max:"最多${max}個${label}",range:"${label}數量須在${min}-${max}之間"},pattern:{mismatch:"${label}與模式不匹配${pattern}"}}},Image:{preview:"預覽"}};export{t as default};
@@ -1,6 +1,5 @@
1
1
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, resolveComponent, toDisplayString, unref, vModelText, withCtx, withDirectives } from "vue";
2
2
  import { cloneDeep, debounce } from "lodash-es";
3
- import { usePlatformConfigStore } from "@gct-paas/core";
4
3
  import { Empty, Form } from "ant-design-vue";
5
4
  import { IconNamespaceEnum, IconNext, useIconAsset, useIconPark, useIconPlatform } from "@gct-paas/core-components";
6
5
  import "overlayscrollbars-vue";
@@ -77,7 +76,6 @@ var icon_next_picker_vue_vue_type_script_setup_true_name_IconNextPicker_lang_def
77
76
  "update:background"
78
77
  ],
79
78
  setup(__props, { emit: __emit }) {
80
- const { themeSetting } = usePlatformConfigStore();
81
79
  const props = __props;
82
80
  const emit = __emit;
83
81
  const { getIconAssetCats } = useIconAsset();
@@ -298,7 +296,7 @@ var icon_next_picker_vue_vue_type_script_setup_true_name_IconNextPicker_lang_def
298
296
  default: withCtx(() => [createElementVNode("ul", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(catIcons.value, (icon) => {
299
297
  return openBlock(), createElementBlock("li", {
300
298
  key: icon.name,
301
- style: normalizeStyle({ "--background": __props.background || unref(themeSetting).themeColor }),
299
+ style: normalizeStyle({ "--background": __props.background || "var(--gct-color-primary)" }),
302
300
  class: normalizeClass({ "icon-picker-next--selected": icon.id === __props.value }),
303
301
  title: icon.name,
304
302
  "data-id": icon.id,
@@ -358,7 +356,7 @@ var icon_next_picker_vue_vue_type_script_setup_true_name_IconNextPicker_lang_def
358
356
  }, 8, ["spinning"])]),
359
357
  default: withCtx(() => [createElementVNode("div", {
360
358
  class: normalizeClass(["icon-picker-next__trigger cursor-pointer", { "icon-picker-next--selected": __props.value }]),
361
- style: normalizeStyle({ "--background": __props.background || unref(themeSetting).themeColor })
359
+ style: normalizeStyle({ "--background": __props.background || "var(--gct-color-primary)" })
362
360
  }, [__props.value ? (openBlock(), createBlock(unref(IconNext), {
363
361
  key: 0,
364
362
  value: __props.value,
@@ -1,3 +1,4 @@
1
+ import { PRINT_ELE_TYPE } from "../../constants/CommonPrintElems.mjs";
1
2
  import { BarCode_exports } from "./BarCode.vue.mjs";
2
3
  import { HorizontalLine_exports } from "./HorizontalLine.vue.mjs";
3
4
  import { Icon_exports } from "./Icon.vue.mjs";
@@ -20,6 +21,7 @@ var widgets = /* @__PURE__ */ Object.assign({
20
21
  "./VerticalLine.vue": VerticalLine_exports,
21
22
  "./richText.vue": richText_exports
22
23
  });
24
+ var widgetTypeAliases = { ReactAngle: [PRINT_ELE_TYPE.RECTANGLE] };
23
25
  var toKebabCase = (value) => {
24
26
  return value.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
25
27
  };
@@ -39,7 +41,8 @@ for (const path in widgets) {
39
41
  toKebabCase(componentName),
40
42
  toKebabCase(fileName),
41
43
  toUpperSnakeCase(componentName),
42
- toUpperSnakeCase(fileName)
44
+ toUpperSnakeCase(fileName),
45
+ ...widgetTypeAliases[fileName] || []
43
46
  ]).forEach((name) => {
44
47
  if (!name) return;
45
48
  comps[name] = component;
@@ -1,5 +1,5 @@
1
1
  import org_vue_vue_type_script_setup_true_name_waiting_area_org_lang_default from "./org.vue_vue_type_script_setup_true_name_waiting-area-org_lang.mjs";
2
- import './org.vue_vue_type_style_index_0_lang.css';/* empty css */
2
+ import './user-group.vue_vue_type_style_index_0_lang.css';/* empty css */
3
3
  //#region src/components/open-select-user-modal/component/org.vue
4
4
  var org_default = org_vue_vue_type_script_setup_true_name_waiting_area_org_lang_default;
5
5
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import role_vue_vue_type_script_setup_true_name_waiting_area_role_lang_default from "./role.vue_vue_type_script_setup_true_name_waiting-area-role_lang.mjs";
2
- import './org.vue_vue_type_style_index_0_lang.css';/* empty css */
2
+ import './user-group.vue_vue_type_style_index_0_lang.css';/* empty css */
3
3
  //#region src/components/open-select-user-modal/component/role.vue
4
4
  var role_default = role_vue_vue_type_script_setup_true_name_waiting_area_role_lang_default;
5
5
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import user_group_vue_vue_type_script_setup_true_name_waiting_area_user_group_lang_default from "./user-group.vue_vue_type_script_setup_true_name_waiting-area-user-group_lang.mjs";
2
- import './org.vue_vue_type_style_index_0_lang.css';/* empty css */
2
+ import './user-group.vue_vue_type_style_index_0_lang.css';/* empty css */
3
3
  //#region src/components/open-select-user-modal/component/user-group.vue
4
4
  var user_group_default = user_group_vue_vue_type_script_setup_true_name_waiting_area_user_group_lang_default;
5
5
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.mjs";
2
2
  import user_vue_vue_type_script_setup_true_name_waiting_area_user_lang_default from "./user.vue_vue_type_script_setup_true_name_waiting-area-user_lang.mjs";
3
- import './user.vue_vue_type_style_index_1_scoped_c546c256_lang.css';import './org.vue_vue_type_style_index_0_lang.css';/* empty css */
3
+ import './user.vue_vue_type_style_index_1_scoped_c546c256_lang.css';import './user-group.vue_vue_type_style_index_0_lang.css';/* empty css */
4
4
  /* empty css */
5
5
  //#region src/components/open-select-user-modal/component/user.vue
6
6
  var user_default = /* @__PURE__ */ _plugin_vue_export_helper_default(user_vue_vue_type_script_setup_true_name_waiting_area_user_lang_default, [["__scopeId", "data-v-c546c256"]]);
@@ -1,5 +1,4 @@
1
1
  export { useLocale } from './useLocale';
2
- export { useTheme } from './useTheme';
3
2
  export { UseDragByLine } from './useDragLine';
4
3
  export * from './useKeyParser';
5
4
  export { useTreeList } from './useTreeList';
@@ -1,5 +1,4 @@
1
1
  import "./useLocale.mjs";
2
- import "./useTheme.mjs";
3
2
  import "./useDragLine.mjs";
4
3
  import "./useKeyParser.mjs";
5
4
  import "./useTreeList.mjs";
package/es/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from './modules/gct-dnd';
10
10
  export * from './modules/gct-form';
11
11
  export * from './modules/gct-table';
12
12
  export * from './modules/global-modal';
13
+ export * from './modules/online-control';
13
14
  export * from './modules/picture-cropper';
14
15
  export * from './modules/picture-preview';
15
16
  export * from './modules/print-tmpl';
package/es/index.mjs CHANGED
@@ -48,11 +48,11 @@ import base_button_default from "./components/base-button/base-button.vue.mjs";
48
48
  import basic_button_default from "./components/basic-button/basic-button.vue.mjs";
49
49
  import double_input_default from "./components/double-input/double-input.vue.mjs";
50
50
  import copy_module_key_default from "./components/copy-module-key/copy-module-key.vue.mjs";
51
+ import { ConfirmUtil } from "./utils/confirm-util/confirm-util.mjs";
51
52
  import { MessageUtil } from "./utils/message-util/message-util.mjs";
52
53
  import { validateFieldDefaultForLength, validateFieldDefaultForValue, validateLengthRange } from "./utils/model-entity/model-entity.mjs";
53
54
  import { monacoLoader } from "./utils/monaco-loader/monaco-loader.mjs";
54
55
  import { useLocale } from "./hooks/useLocale.mjs";
55
- import { useTheme } from "./hooks/useTheme.mjs";
56
56
  import { UseDragByLine } from "./hooks/useDragLine.mjs";
57
57
  import { useKeyParser } from "./hooks/useKeyParser.mjs";
58
58
  import { useTreeList } from "./hooks/useTreeList.mjs";
@@ -150,6 +150,8 @@ import GctDndItem from "./modules/gct-dnd/components/gct-dnd-item/gct-dnd-item.m
150
150
  import { GctDndDropLine } from "./modules/gct-dnd/components/gct-dnd-drop-line/gct-dnd-drop-line.mjs";
151
151
  import GctDndContainer from "./modules/gct-dnd/components/gct-dnd-container/gct-dnd-container.mjs";
152
152
  import "./modules/gct-dnd/index.mjs";
153
+ import { OnlineControl } from "./modules/online-control/online-control.mjs";
154
+ import "./modules/online-control/index.mjs";
153
155
  import Cropper_default from "./modules/picture-cropper/src/Cropper.vue.mjs";
154
156
  import CopperFreeModal_default from "./modules/picture-cropper/src/CopperFreeModal.vue.mjs";
155
157
  import CopperModal_default from "./modules/picture-cropper/src/CopperModal.vue.mjs";
@@ -172,6 +174,7 @@ import { coreWebCreateAppVue } from "./create-app-vue.mjs";
172
174
  import { coreWebSetupApp } from "./setup-app.mjs";
173
175
  //#region src/index.ts
174
176
  function onInit() {
177
+ _gct.confirm = new ConfirmUtil();
175
178
  _gct.message = new MessageUtil();
176
179
  _gct.openUtil = overlay;
177
180
  _gct.register.editor = new EditorRegister();
@@ -180,4 +183,4 @@ function onInit() {
180
183
  }
181
184
  onInit();
182
185
  //#endregion
183
- export { base_button_default as BaseButton, basic_button_default as BasicButton, basic_grid_default as BasicGrid, BasicModal, BatchSelectList, BoolOptions, ButtonTextEnum, CONTENT_TYPE, category_modal_default as CategoryModal, category_sider_default as CategorySider, Ch_FieldTypeName, Ch_Operator, Ch_Perm_Operator, Ch_SystemVars, Ch_ValueType, CodeEditor, color_editor_default as ColorEditor, ColorPicker_default as ColorPicker, ComponentTypeEnum, ControllerKey, CopperFreeModal_default as CopperFreeModal, CopperModal_default as CopperModal, copy_module_key_default as CopyModuleKey, CropperAvatar_default as CropperAvatar, CropperFree_default as CropperFree, Cropper_default as CropperImage, DATA_TYPE, DataRoleSetTabsEnum, data_rules_container_default as DataRulesContainer, DataRulesModal, DataTypeOptions, DateSystemEnum, DateSystemKeys, DesignSaveTip, DesignStepCheck, DesignViewLayout, double_input_default as DoubleInput, EditFormController, EditorController, EditorRegister, EditorRegisterConst, EditorType, embed_grid_default as EmbedGrid, FIELD_SEPARATOR, FORM_CONTROLLER_INJECT_TAG, FieldCascader_default as FieldCascader, field_role_container_default as FieldRoleContainer, FieldUpload, form_alert_default as FormAlert, FormCollapseController, FormCollapsePaneController, FormCollapsePaneState, FormCollapseState, FormEditItemController, FormEditItemState, FormGroupController, FormGroupState, FormHiddenItemController, FormItemBasicController, FormItemBasicState, FormItemController, FormItemRegister, FormItemState, FormLineController, FormLineState, FormState, FormTabController, FormTabPaneController, FormTabPaneState, FormTabState, full_screen_default as FullScreen, GCT_DND_INSERT_POS, GctDndContainer, GctDndDropLine, GctDndItem, GctFormCollapseModel, GctFormCollapsePaneModel, GctFormController, GctFormGroupModel, GctFormHiddenItemModel, GctFormItemModel, GctFormLineModel, GctFormTabModel, GctFormTabPaneModel, GctFormTitleGroupModel, GctTableController, grid_btns_default as GridBtns, grid_pagination_default as GridPagination, highlight_default as HightLight, i18n_modal_default as I18Modal, i18n_select_btn_default as I18nSelectBtn, i18n_select_input_default as I18nSelectInput, i18n_select_input_form_default as I18nSelectInputForm, i18n_select_textarea_default as I18nSelectTextarea, i18n_select_textarea_form_default as I18nSelectTextareaForm, icon_tooltip_default as IconTooltip, picture_preview_default as ImagePreview, ImageUpload, panelComps as LabelDesignControlComps, designer_default as LabelDesigner, label_params_select_default as LabelParamsSelect, Lang, MODEL_SEPARATOR, MessageUtil, ModalNameEditor, ModalTypeEnum, modal_wrapper_default as ModalWrapper, ModelCascader, MonacoEditor, MonacoEditor$1 as MonacoEditor1, MultiOperatorTypes, number_range_default as NumberRange, OperatorTypeEnum, OverlayController, PRINT_ELE_TYPE, paas_bpmn_log_default as PaasBpmnLog, Prop, QR_CODE_TYPE, RangTypeEnum, RelationTypeEnum, SceneType, SearchTypeEnum, select_user_modal_default as SelectUserModal, serial_number_container_default as SerialNumberContainer, ShrinkPanel, stage_canvas_default as StageCanvas, stage_view_default as StageView, TableActionItemController, TableEditItemController, TableEditItemState, TableEditorRegister, TableITemState, TableItemController, TableRowController, TableRowState, TableState, Theme, TreeEx, tree_select_ex_default as TreeSelectEx, UseDragByLine, PickType as UserPickType, UserSystemEnum, UserSystemKeys, ValueTypeEnum, ViewContainer, Vue3GridDndItem, WUJIE_FORMULA_EVENTS, calcTreeChildLevel, coreWebCreateAppVue, coreWebSetupApp, createImgPreview, dropNode, filterTreeData, findRecursiveChild, findTreePathById, gctFieldSortPopover, gctFieldTreeSelect, gctFormItemEditorProps, getCmpConfig, getController, getForeignKeyChainFromJointKey, getLeafModelKeyFromJointKey, getRecursiveModelTreeData, getRootModelKeyFromJointKey, getSpecificationsForSize, getValue, print_tmpl_modal_default as labelTmplModal, loadLabelInfo, modalConfirm, monacoLoader, openFormulaEditor, openSelectUserModal, overlay, recursiveIterate, recursiveTransfer, renderColTitle, renderOptionLabel, setIdentify, setValue, sizeOpt, transformCoordinateByDpi, transformsize, useAntTableScrollHeight, useController, useEditFormController, useEditorConsole, useEditorConsoleInner, useForm, useFormItemController, useFormValue, useGctFormValue, useGctFormValueByText, useI18nSelect, useKeyParser, useModalPicker as useLabelModalPicker, useLocale, useModal, useModalContext, useModalDragMove, useModalInner, useModalPicker$1 as useModalPicker, usePage, usePrinter, useProp, useTableController, useTheme, useTreeList, validateFieldDefaultForLength, validateFieldDefaultForValue, validateLengthRange, widthEditorInstall, withInstall };
186
+ export { base_button_default as BaseButton, basic_button_default as BasicButton, basic_grid_default as BasicGrid, BasicModal, BatchSelectList, BoolOptions, ButtonTextEnum, CONTENT_TYPE, category_modal_default as CategoryModal, category_sider_default as CategorySider, Ch_FieldTypeName, Ch_Operator, Ch_Perm_Operator, Ch_SystemVars, Ch_ValueType, CodeEditor, color_editor_default as ColorEditor, ColorPicker_default as ColorPicker, ComponentTypeEnum, ConfirmUtil, ControllerKey, CopperFreeModal_default as CopperFreeModal, CopperModal_default as CopperModal, copy_module_key_default as CopyModuleKey, CropperAvatar_default as CropperAvatar, CropperFree_default as CropperFree, Cropper_default as CropperImage, DATA_TYPE, DataRoleSetTabsEnum, data_rules_container_default as DataRulesContainer, DataRulesModal, DataTypeOptions, DateSystemEnum, DateSystemKeys, DesignSaveTip, DesignStepCheck, DesignViewLayout, double_input_default as DoubleInput, EditFormController, EditorController, EditorRegister, EditorRegisterConst, EditorType, embed_grid_default as EmbedGrid, FIELD_SEPARATOR, FORM_CONTROLLER_INJECT_TAG, FieldCascader_default as FieldCascader, field_role_container_default as FieldRoleContainer, FieldUpload, form_alert_default as FormAlert, FormCollapseController, FormCollapsePaneController, FormCollapsePaneState, FormCollapseState, FormEditItemController, FormEditItemState, FormGroupController, FormGroupState, FormHiddenItemController, FormItemBasicController, FormItemBasicState, FormItemController, FormItemRegister, FormItemState, FormLineController, FormLineState, FormState, FormTabController, FormTabPaneController, FormTabPaneState, FormTabState, full_screen_default as FullScreen, GCT_DND_INSERT_POS, GctDndContainer, GctDndDropLine, GctDndItem, GctFormCollapseModel, GctFormCollapsePaneModel, GctFormController, GctFormGroupModel, GctFormHiddenItemModel, GctFormItemModel, GctFormLineModel, GctFormTabModel, GctFormTabPaneModel, GctFormTitleGroupModel, GctTableController, grid_btns_default as GridBtns, grid_pagination_default as GridPagination, highlight_default as HightLight, i18n_modal_default as I18Modal, i18n_select_btn_default as I18nSelectBtn, i18n_select_input_default as I18nSelectInput, i18n_select_input_form_default as I18nSelectInputForm, i18n_select_textarea_default as I18nSelectTextarea, i18n_select_textarea_form_default as I18nSelectTextareaForm, icon_tooltip_default as IconTooltip, picture_preview_default as ImagePreview, ImageUpload, panelComps as LabelDesignControlComps, designer_default as LabelDesigner, label_params_select_default as LabelParamsSelect, Lang, MODEL_SEPARATOR, MessageUtil, ModalNameEditor, ModalTypeEnum, modal_wrapper_default as ModalWrapper, ModelCascader, MonacoEditor, MonacoEditor$1 as MonacoEditor1, MultiOperatorTypes, number_range_default as NumberRange, OnlineControl, OperatorTypeEnum, OverlayController, PRINT_ELE_TYPE, paas_bpmn_log_default as PaasBpmnLog, Prop, QR_CODE_TYPE, RangTypeEnum, RelationTypeEnum, SceneType, SearchTypeEnum, select_user_modal_default as SelectUserModal, serial_number_container_default as SerialNumberContainer, ShrinkPanel, stage_canvas_default as StageCanvas, stage_view_default as StageView, TableActionItemController, TableEditItemController, TableEditItemState, TableEditorRegister, TableITemState, TableItemController, TableRowController, TableRowState, TableState, Theme, TreeEx, tree_select_ex_default as TreeSelectEx, UseDragByLine, PickType as UserPickType, UserSystemEnum, UserSystemKeys, ValueTypeEnum, ViewContainer, Vue3GridDndItem, WUJIE_FORMULA_EVENTS, calcTreeChildLevel, coreWebCreateAppVue, coreWebSetupApp, createImgPreview, dropNode, filterTreeData, findRecursiveChild, findTreePathById, gctFieldSortPopover, gctFieldTreeSelect, gctFormItemEditorProps, getCmpConfig, getController, getForeignKeyChainFromJointKey, getLeafModelKeyFromJointKey, getRecursiveModelTreeData, getRootModelKeyFromJointKey, getSpecificationsForSize, getValue, print_tmpl_modal_default as labelTmplModal, loadLabelInfo, modalConfirm, monacoLoader, openFormulaEditor, openSelectUserModal, overlay, recursiveIterate, recursiveTransfer, renderColTitle, renderOptionLabel, setIdentify, setValue, sizeOpt, transformCoordinateByDpi, transformsize, useAntTableScrollHeight, useController, useEditFormController, useEditorConsole, useEditorConsoleInner, useForm, useFormItemController, useFormValue, useGctFormValue, useGctFormValueByText, useI18nSelect, useKeyParser, useModalPicker as useLabelModalPicker, useLocale, useModal, useModalContext, useModalDragMove, useModalInner, useModalPicker$1 as useModalPicker, usePage, usePrinter, useProp, useTableController, useTreeList, validateFieldDefaultForLength, validateFieldDefaultForValue, validateLengthRange, widthEditorInstall, withInstall };
@@ -56,5 +56,6 @@ declare const _default: {
56
56
  upload: string;
57
57
  width: string;
58
58
  height: string;
59
+ operation: string;
59
60
  };
60
61
  export default _default;
package/es/locale/sys.mjs CHANGED
@@ -58,7 +58,8 @@ var sys_default = {
58
58
  noMoreData: "没有更多数据了",
59
59
  upload: "上传",
60
60
  width: "宽度",
61
- height: "高度"
61
+ height: "高度",
62
+ operation: "操作"
62
63
  };
63
64
  //#endregion
64
65
  export { sys_exports };
@@ -4,5 +4,4 @@ export declare function useRole(): {
4
4
  Update: boolean;
5
5
  Delete: boolean;
6
6
  }>;
7
- inEDHRApp: import('vue').ComputedRef<boolean>;
8
7
  };
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ /** 强制登出目标时间戳(毫秒) */
3
+ startRunTime: number;
4
+ /** 倒计时结束后的登出回调 */
5
+ loginOutEvent: () => void;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import content_vue_vue_type_script_setup_true_lang_default from "./content.vue_vue_type_script_setup_true_lang.mjs";
2
+ //#region src/modules/online-control/content.vue
3
+ var content_default = content_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { content_default as default };
@@ -0,0 +1,48 @@
1
+ import { createElementBlock, defineComponent, onUnmounted, openBlock, ref, toDisplayString } from "vue";
2
+ //#region src/modules/online-control/content.vue?vue&type=script&setup=true&lang.ts
3
+ var _hoisted_1 = { class: "text-[##797A7D]" };
4
+ var content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ __name: "content",
6
+ props: {
7
+ startRunTime: {},
8
+ loginOutEvent: { type: Function }
9
+ },
10
+ setup(__props) {
11
+ /**
12
+ * 无操作超时倒计时内容组件
13
+ *
14
+ * 根据 startRunTime(强制登出目标时间戳)每秒刷新剩余「分 秒」,
15
+ * 倒计时归零后调用 loginOutEvent 执行登出。
16
+ */
17
+ const props = __props;
18
+ /** 展示用剩余时间文案,如「 3 分 25 秒」 */
19
+ const lastTime = ref("");
20
+ /**
21
+ * 根据 startRunTime 计算并更新剩余时间
22
+ *
23
+ * @returns {boolean} 是否已超时(true 表示应触发登出)
24
+ */
25
+ function setTimer() {
26
+ const earlyTime = (props.startRunTime - (/* @__PURE__ */ new Date()).getTime()) / 1e3;
27
+ if (earlyTime < 0) return true;
28
+ lastTime.value = ` ${Math.floor(earlyTime / 60)} 分 ${Math.floor(earlyTime % 60)} 秒`;
29
+ return false;
30
+ }
31
+ setTimer();
32
+ /** 每秒刷新倒计时,归零后清除定时器并登出 */
33
+ const timer = setInterval(() => {
34
+ if (setTimer()) {
35
+ clearInterval(timer);
36
+ props.loginOutEvent();
37
+ }
38
+ }, 1e3);
39
+ onUnmounted(() => {
40
+ clearInterval(timer);
41
+ });
42
+ return (_ctx, _cache) => {
43
+ return openBlock(), createElementBlock("div", _hoisted_1, " 在指定时间间隔内未操作页面,即将在" + toDisplayString(lastTime.value) + "后自动断开连接 ", 1);
44
+ };
45
+ }
46
+ });
47
+ //#endregion
48
+ export { content_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 在线会话控制模块入口
3
+ *
4
+ * 提供基于平台安全设置的「无操作自动登出」能力,支持多标签页状态同步。
5
+ *
6
+ * @export
7
+ */
8
+ export { OnlineControl } from './online-control';
@@ -0,0 +1 @@
1
+ import "./online-control.mjs";
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 警告弹窗控制器
3
+ *
4
+ * @export
5
+ * @class ModelControl
6
+ */
7
+ export declare class ModelControl {
8
+ /** 当前是否有警告弹窗在展示 */
9
+ static show: boolean;
10
+ /** ant-design-vue Modal 实例,用于 destroy 关闭 */
11
+ static modalVm: IObject | null;
12
+ /**
13
+ * 展示无操作超时警告弹窗
14
+ *
15
+ * startRunTime 传入「强制登出时刻」= startRunTime + earlyAlarm,
16
+ * 供 content 组件展示剩余分秒倒计时。
17
+ */
18
+ static showModel(): void;
19
+ /**
20
+ * 关闭警告弹窗
21
+ *
22
+ * 由本页用户操作或其他标签页 GCT_SAVELOGIN 消息触发。
23
+ */
24
+ static closeModel(): void;
25
+ }
@@ -0,0 +1,61 @@
1
+ import { GCT_EVENT_TYPE } from "./online-control.const.mjs";
2
+ import content_default from "./content.vue.mjs";
3
+ import { onlineBroadcast } from "./online-broadcast.mjs";
4
+ import { OnlineControl } from "./online-control.mjs";
5
+ import { h } from "vue";
6
+ import { t } from "@gct-paas/core";
7
+ import { Modal as Modal$1 } from "ant-design-vue";
8
+ //#region src/modules/online-control/model-control.ts
9
+ /**
10
+ * 无操作超时警告弹窗控制
11
+ *
12
+ * 负责展示「即将自动断开连接」的 Modal,渲染倒计时内容组件,
13
+ * 并在用户点击「保持登录」时广播同步、恢复活动监听。
14
+ */
15
+ /**
16
+ * 警告弹窗控制器
17
+ *
18
+ * @export
19
+ * @class ModelControl
20
+ */
21
+ var ModelControl = class {
22
+ /** 当前是否有警告弹窗在展示 */
23
+ static show = false;
24
+ /** ant-design-vue Modal 实例,用于 destroy 关闭 */
25
+ static modalVm = null;
26
+ /**
27
+ * 展示无操作超时警告弹窗
28
+ *
29
+ * startRunTime 传入「强制登出时刻」= startRunTime + earlyAlarm,
30
+ * 供 content 组件展示剩余分秒倒计时。
31
+ */
32
+ static showModel() {
33
+ this.show = true;
34
+ this.modalVm = Modal$1.warning({
35
+ title: t("sys.tip"),
36
+ content: () => h(content_default, {
37
+ startRunTime: OnlineControl.startRunTime + OnlineControl.earlyAlarm * 1e3,
38
+ loginOutEvent: OnlineControl.loginOutEvent
39
+ }),
40
+ okText: t("sys.app.maintainLoginStatus"),
41
+ onOk() {
42
+ onlineBroadcast.postMessage({ type: GCT_EVENT_TYPE.GCT_SAVELOGIN });
43
+ OnlineControl.addListener();
44
+ }
45
+ });
46
+ }
47
+ /**
48
+ * 关闭警告弹窗
49
+ *
50
+ * 由本页用户操作或其他标签页 GCT_SAVELOGIN 消息触发。
51
+ */
52
+ static closeModel() {
53
+ this.show = false;
54
+ if (this.modalVm) {
55
+ this.modalVm.destroy();
56
+ this.modalVm = null;
57
+ }
58
+ }
59
+ };
60
+ //#endregion
61
+ export { ModelControl };
@@ -0,0 +1,2 @@
1
+ /** 全局广播频道实例,频道名见 {@link BROADCAST} */
2
+ export declare const onlineBroadcast: BroadcastChannel;
@@ -0,0 +1,30 @@
1
+ import { BROADCAST, GCT_EVENT_TYPE } from "./online-control.const.mjs";
2
+ import { ModelControl } from "./model-control.mjs";
3
+ import { OnlineControl } from "./online-control.mjs";
4
+ //#region src/modules/online-control/online-broadcast.ts
5
+ /**
6
+ * 跨标签页会话状态广播
7
+ *
8
+ * 基于 BroadcastChannel 在同源多标签页间同步用户活动、保持登录及登出事件,
9
+ * 确保任一标签页的操作能重置全局无操作倒计时,避免重复弹窗或状态不一致。
10
+ */
11
+ /** 全局广播频道实例,频道名见 {@link BROADCAST} */
12
+ var onlineBroadcast = new BroadcastChannel(BROADCAST);
13
+ /**
14
+ * 处理其他标签页发来的会话控制消息
15
+ */
16
+ onlineBroadcast.onmessage = (msg) => {
17
+ if (msg.data.type === GCT_EVENT_TYPE.GCT_MOUSEMOVE)
18
+ /** 其他标签页有用户操作,重置本页无操作倒计时 */
19
+ OnlineControl.startTimer();
20
+ if (msg.data.type === GCT_EVENT_TYPE.GCT_SAVELOGIN) {
21
+ /** 其他标签页点击了「保持登录」,关闭本页警告弹窗并恢复监听 */
22
+ ModelControl.closeModel();
23
+ OnlineControl.addListener();
24
+ }
25
+ if (msg.data.type === GCT_EVENT_TYPE.GCT_LOGINOUT)
26
+ /** 其他标签页已登出,本页同步跳转至登录页 */
27
+ location.href = `${location.origin}/paas-front/portal#/login`;
28
+ };
29
+ //#endregion
30
+ export { onlineBroadcast };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 在线会话控制常量定义
3
+ *
4
+ * 包含跨标签页广播频道名及消息事件类型枚举。
5
+ *
6
+ * @export
7
+ */
8
+ /** BroadcastChannel 频道名,所有标签页通过该频道同步会话状态 */
9
+ export declare const BROADCAST: string;
10
+ /**
11
+ * 跨标签页广播消息类型
12
+ *
13
+ * @export
14
+ * @enum {number}
15
+ */
16
+ export declare enum GCT_EVENT_TYPE {
17
+ /**
18
+ * 鼠标/键盘活动事件
19
+ * 任一标签页检测到用户操作后广播,用于重置各标签页的无操作倒计时
20
+ */
21
+ GCT_MOUSEMOVE = "mousemove",
22
+ /**
23
+ * 保持登录事件
24
+ * 用户确认继续登录或初始化监听时广播,用于关闭警告弹窗并恢复监听
25
+ */
26
+ GCT_SAVELOGIN = "savelogin",
27
+ /**
28
+ * 登出事件
29
+ * 超时或用户确认登出后广播,各标签页统一跳转至登录页
30
+ */
31
+ GCT_LOGINOUT = "loginout"
32
+ }
@@ -0,0 +1,36 @@
1
+ //#region src/modules/online-control/online-control.const.ts
2
+ /**
3
+ * 在线会话控制常量定义
4
+ *
5
+ * 包含跨标签页广播频道名及消息事件类型枚举。
6
+ *
7
+ * @export
8
+ */
9
+ /** BroadcastChannel 频道名,所有标签页通过该频道同步会话状态 */
10
+ var BROADCAST = "gct-online";
11
+ /**
12
+ * 跨标签页广播消息类型
13
+ *
14
+ * @export
15
+ * @enum {number}
16
+ */
17
+ var GCT_EVENT_TYPE = /* @__PURE__ */ function(GCT_EVENT_TYPE) {
18
+ /**
19
+ * 鼠标/键盘活动事件
20
+ * 任一标签页检测到用户操作后广播,用于重置各标签页的无操作倒计时
21
+ */
22
+ GCT_EVENT_TYPE["GCT_MOUSEMOVE"] = "mousemove";
23
+ /**
24
+ * 保持登录事件
25
+ * 用户确认继续登录或初始化监听时广播,用于关闭警告弹窗并恢复监听
26
+ */
27
+ GCT_EVENT_TYPE["GCT_SAVELOGIN"] = "savelogin";
28
+ /**
29
+ * 登出事件
30
+ * 超时或用户确认登出后广播,各标签页统一跳转至登录页
31
+ */
32
+ GCT_EVENT_TYPE["GCT_LOGINOUT"] = "loginout";
33
+ return GCT_EVENT_TYPE;
34
+ }({});
35
+ //#endregion
36
+ export { BROADCAST, GCT_EVENT_TYPE };
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 在线会话控制器
3
+ *
4
+ * 根据平台安全设置(无操作保留时长、提前预警时长)监听用户活动,
5
+ * 超时前弹出警告,倒计时结束后强制登出;多标签页通过 BroadcastChannel 同步状态。
6
+ *
7
+ * @export
8
+ * @class OnlineControl
9
+ */
10
+ export declare class OnlineControl {
11
+ /** 警告弹窗应弹出的目标时间戳(毫秒) */
12
+ static startRunTime: number;
13
+ /** 无操作保留总时长(秒),来自 securitySetting.noOpRetainHour + noOpRetainMinute */
14
+ static noOpRetain: number;
15
+ /** 提前预警时长(秒),弹窗内倒计时即为该时长,来自 earlyAlarmMinute + earlyAlarmSecond */
16
+ static earlyAlarm: number;
17
+ /** 轮询检测是否到达预警时间的定时器 ID */
18
+ static timer: string | number | null;
19
+ /**
20
+ * 初始化并开始监听用户活动
21
+ *
22
+ * 从平台配置读取安全策略,换算为秒后写入静态字段;
23
+ * 仅当 noOpRetain > 0 时启用监听,并广播 GCT_SAVELOGIN 同步其他标签页。
24
+ */
25
+ static runListener(): void;
26
+ /**
27
+ * 注册用户活动监听器
28
+ *
29
+ * 监听 mousemove、keydown,并通过 throttleMoverEvent 节流处理;
30
+ * 立即调用一次 throttleMoverEvent,使首次加载也计入活动并重置倒计时。
31
+ */
32
+ static addListener(): void;
33
+ /**
34
+ * 启动或重置无操作检测定时器
35
+ *
36
+ * 计算 startRunTime = 当前时间 + (noOpRetain - earlyAlarm),
37
+ * 即「总无操作时长减去预警时长」后应弹出警告的时刻;
38
+ * 每 3 秒轮询一次,到达该时刻后触发 emitMoverEvent。
39
+ *
40
+ * 跳过条件:timer 未就绪、未配置保留时长、或当前页面在 iframe 内(个别嵌入页不启用)。
41
+ */
42
+ static startTimer(): void;
43
+ /**
44
+ * 到达无操作阈值,弹出警告弹窗
45
+ *
46
+ * 移除活动监听,避免弹窗展示期间重复触发;由 ModelControl 负责 UI 与后续登出。
47
+ */
48
+ static emitMoverEvent(): void;
49
+ /** 移除 document 上的 mousemove / keydown 监听 */
50
+ static removeListener(): void;
51
+ /**
52
+ * 关闭控制器
53
+ *
54
+ * 清除轮询定时器并移除活动监听,用于登出或模块卸载场景。
55
+ */
56
+ static closeControl(): void;
57
+ /**
58
+ * 执行登出
59
+ *
60
+ * 仅在警告弹窗仍展示时生效:广播 GCT_LOGINOUT 同步其他标签页,并调用 AuthUtil 登出。
61
+ */
62
+ static loginOutEvent(): void;
63
+ }
@@ -0,0 +1,21 @@
1
+ import { GCT_EVENT_TYPE } from './online-control.const';
2
+ /**
3
+ * 跨标签页广播消息体
4
+ *
5
+ * @export
6
+ * @interface BroadcastConfig
7
+ */
8
+ export interface BroadcastConfig {
9
+ /**
10
+ * 消息类型,见 {@link GCT_EVENT_TYPE}
11
+ *
12
+ * @type {GCT_EVENT_TYPE}
13
+ */
14
+ type: GCT_EVENT_TYPE;
15
+ /**
16
+ * 附加数据,当前各事件类型均未使用,预留扩展
17
+ *
18
+ * @type {IObject}
19
+ */
20
+ data?: IObject;
21
+ }