From 7b73a23568bc734f67791bfa896dd0fb831c6697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Mon, 4 Aug 2025 15:11:18 +0800 Subject: [PATCH 01/16] =?UTF-8?q?fix:=20loading=E7=BB=84=E4=BB=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E8=AF=AD=EF=BC=9Blookup=E7=BB=84=E4=BB=B6ID?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=B8=8D=E5=9B=BA=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom-class-editor.component.tsx | 5 +++-- .../composition/use-external-component.ts | 4 ++-- .../button-edit/src/components/text-edit.component.tsx | 1 + .../components/combo-list/src/combo-list.component.tsx | 7 ++++++- .../input-group/src/components/text-edit.component.tsx | 1 + .../src/components/language-contents.component.tsx | 4 +++- .../language-textbox/src/language-textbox.component.tsx | 2 +- .../ui-vue/components/loading/src/loading.component.tsx | 4 ---- .../ui-vue/components/loading/src/loading.service.tsx | 9 ++++++++- .../lookup/src/components/modal-container.component.tsx | 4 ++-- .../lookup/src/components/modal-container.props.ts | 1 + .../src/components/search-bar/search-bar.component.tsx | 5 +++-- .../lookup/src/components/search-bar/search-bar.props.ts | 1 + .../components/lookup/src/composition/use-search-bar.tsx | 1 + .../ui-vue/components/lookup/src/lookup.component.tsx | 6 +++--- .../components/lookup/src/schema/lookup.schema.json | 1 + .../src/composition/entity/base-property.ts | 2 +- 17 files changed, 38 insertions(+), 20 deletions(-) diff --git a/packages/designer/src/components/components/form-designer/components/custom-class-editor/custom-class-editor.component.tsx b/packages/designer/src/components/components/form-designer/components/custom-class-editor/custom-class-editor.component.tsx index 6e22859b43f..36616ae9c1c 100644 --- a/packages/designer/src/components/components/form-designer/components/custom-class-editor/custom-class-editor.component.tsx +++ b/packages/designer/src/components/components/form-designer/components/custom-class-editor/custom-class-editor.component.tsx @@ -27,9 +27,10 @@ export default defineComponent({ const cssEditorRef = ref(); /** 自定义样式Dom */ - formSchema.module.customClass ??= {}; + // formSchema.module.customClass ??= {}; // 在旧版本浏览器中不支持此语法 + formSchema.module.customClass = formSchema.module?.customClass || {}; - const cssFilePath = ref(formSchema.module.customStyleFile || ''); + // const cssFilePath = ref(formSchema.module.customStyleFile || ''); const { customClass } = formSchema.module; /** 当前编辑器内的样式代码 */ diff --git a/packages/designer/src/components/components/form-designer/components/external-component-panel/composition/use-external-component.ts b/packages/designer/src/components/components/form-designer/components/external-component-panel/composition/use-external-component.ts index fed8f4e9bea..0bd409bda4c 100644 --- a/packages/designer/src/components/components/form-designer/components/external-component-panel/composition/use-external-component.ts +++ b/packages/designer/src/components/components/form-designer/components/external-component-panel/composition/use-external-component.ts @@ -14,7 +14,7 @@ export default function (): UseExternalComponent { const metadataService = new MetadataService(); const module = formSchemaUtils.getModule(); - module.externalComponents ??= []; + module.externalComponents = module.externalComponents || []; const externalComponents: Ref = ref(module.externalComponents); function getComponents(): Ref { @@ -67,7 +67,7 @@ export default function (): UseExternalComponent { metadataContent }; lookupDataSourceConverter.convertTo(propertyValue, 'dataSource', [metadata]); - helpPropertyValue.dialog ??= {}; + helpPropertyValue.dialog = helpPropertyValue.dialog || {}; helpPropertyValue.dialog.title = metadataContent.name; const { newId, newName } = getNewIdAndName(metadataContent.code, metadataContent.name); propertyValue.editor.id = newId; diff --git a/packages/ui-vue/components/button-edit/src/components/text-edit.component.tsx b/packages/ui-vue/components/button-edit/src/components/text-edit.component.tsx index 325d1eac799..cce87a19775 100644 --- a/packages/ui-vue/components/button-edit/src/components/text-edit.component.tsx +++ b/packages/ui-vue/components/button-edit/src/components/text-edit.component.tsx @@ -41,6 +41,7 @@ export default function ( return () => { return ') { + dropdownIcon.value = ''; + } + const isMultiSelect = computed(() => props.multiSelect); const comboEditorWidth = computed(() => { @@ -159,7 +164,7 @@ export default defineComponent({ readonly={readonly.value} forcePlaceholder={props.forcePlaceholder} editable={editable.value} - buttonContent={props.dropDownIcon} + buttonContent={dropdownIcon.value} placeholder={props.placeholder === '请选择' ? getLocaleValue('comboList.placeholder') : props.placeholder} enableClear={enableClear.value} maxLength={props.maxLength} diff --git a/packages/ui-vue/components/input-group/src/components/text-edit.component.tsx b/packages/ui-vue/components/input-group/src/components/text-edit.component.tsx index e5731f7bafb..df6c1540f1d 100644 --- a/packages/ui-vue/components/input-group/src/components/text-edit.component.tsx +++ b/packages/ui-vue/components/input-group/src/components/text-edit.component.tsx @@ -48,6 +48,7 @@ export default function ( return () => ( , default: [] }, - modelValue: { type: Object, default: null } + modelValue: { type: Object, default: null }, + id: { type: String, default: '' } }, emits: ['update:modelValue'], setup(props, context) { @@ -25,6 +26,7 @@ export default defineComponent({
{ data.value[item.code] = value; diff --git a/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx b/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx index 89eeeb6a39f..e0dd9419a7e 100644 --- a/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx +++ b/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx @@ -88,7 +88,7 @@ export default defineComponent({ onChange={onDisplayTextChange} placement={'auto'} popupMinWidth={365}> - {showPopover.value && } + {showPopover.value && } ; } } diff --git a/packages/ui-vue/components/loading/src/loading.component.tsx b/packages/ui-vue/components/loading/src/loading.component.tsx index f265142ec59..0577508a869 100644 --- a/packages/ui-vue/components/loading/src/loading.component.tsx +++ b/packages/ui-vue/components/loading/src/loading.component.tsx @@ -26,7 +26,6 @@ export default defineComponent({ props: loadingProps, emits: ['closed', 'hidden'] as (string[] & ThisType) | undefined, setup(props: LoadingProps, context: SetupContext) { - const { t } = useI18n(); /** 加载样式 */ const loadingStyleDom = LOADING_STYLES; /** 是否展示加载信息 */ @@ -52,9 +51,6 @@ export default defineComponent({ // watch(()=>props.type,(newType)=>{ // type.value = newType; // }); - if (message.value === '正在加载,请稍候...') { - message.value = t('loading.message'); - } let loadingId = ""; diff --git a/packages/ui-vue/components/loading/src/loading.service.tsx b/packages/ui-vue/components/loading/src/loading.service.tsx index 6040829abee..4f5f6044670 100644 --- a/packages/ui-vue/components/loading/src/loading.service.tsx +++ b/packages/ui-vue/components/loading/src/loading.service.tsx @@ -1,8 +1,9 @@ /* eslint-disable no-use-before-define */ -import { Ref, createApp, onMounted, onUnmounted, ref } from 'vue'; +import { App, Ref, createApp, onMounted, onUnmounted, ref } from 'vue'; import FLoading from './loading.component'; import { LoadingProps } from './loading.props'; import { LocaleService } from '@farris/ui-vue/components/locale'; +import { useI18n } from 'vue-i18n'; let currentLoadingInstanceID = -1; const loadingInstances: { [key: number]: Ref } = {}; @@ -22,6 +23,12 @@ function initInstance(props?: any): Ref> { currentLoadingInstanceID = newInstanceId; const appInstance = createApp({ setup() { + const { t } = useI18n(); + const message = ref(props.message); + if (message.value === '正在加载,请稍候...') { + message.value = t('loading.message'); + } + const loadingInstance = ref(); onUnmounted(() => { if (canChangePosition) { diff --git a/packages/ui-vue/components/lookup/src/components/modal-container.component.tsx b/packages/ui-vue/components/lookup/src/components/modal-container.component.tsx index f932342f841..dac66286e5e 100644 --- a/packages/ui-vue/components/lookup/src/components/modal-container.component.tsx +++ b/packages/ui-vue/components/lookup/src/components/modal-container.component.tsx @@ -192,8 +192,8 @@ export default defineComponent({ parentRef={ modalContainerRef.value} ref={selectedListRef} idField={lookupOptions.idField}>} {props.showCascadeControl && }
- - + + ; } diff --git a/packages/ui-vue/components/lookup/src/components/modal-container.props.ts b/packages/ui-vue/components/lookup/src/components/modal-container.props.ts index 6544a903cff..9b4edb1fb09 100644 --- a/packages/ui-vue/components/lookup/src/components/modal-container.props.ts +++ b/packages/ui-vue/components/lookup/src/components/modal-container.props.ts @@ -3,6 +3,7 @@ import { UserDataService } from '../composition/use-user-data'; import { UseHttpComposition } from '../composition/use-http'; export const lookupModalContainerProps = { + id: { type: String }, title: { type: String }, height: { type: Number, default: 50 }, draggable: { type: Boolean, default: true }, diff --git a/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.component.tsx b/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.component.tsx index e65125b83e4..c76ac03b52b 100644 --- a/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.component.tsx +++ b/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.component.tsx @@ -13,7 +13,7 @@ export default defineComponent({ props: searchBarProps, emits: ["search"], setup(props: SearchBarProps, context) { - + const searchIcon = ''; const useHttpComposition = inject(LOOKUP_HTTP_COMPOSITION) as UseHttpComposition; const { queryState } = useHttpComposition.lookupStates; @@ -97,7 +97,7 @@ export default defineComponent({ >
- '} + diff --git a/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.props.ts b/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.props.ts index 6aeacf3d87e..c07406e9022 100644 --- a/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.props.ts +++ b/packages/ui-vue/components/lookup/src/components/search-bar/search-bar.props.ts @@ -5,6 +5,7 @@ export const searchBarProps = { fields: { type: Array, default: () => [] }, showAllColumns: { type: Boolean, default: true }, isNavigation: { type: Boolean, default: false }, + id: { type: String, default: '' } }; export type SearchBarProps = ExtractPropTypes; diff --git a/packages/ui-vue/components/lookup/src/composition/use-search-bar.tsx b/packages/ui-vue/components/lookup/src/composition/use-search-bar.tsx index 1f81d4886b9..8c968c11fcc 100644 --- a/packages/ui-vue/components/lookup/src/composition/use-search-bar.tsx +++ b/packages/ui-vue/components/lookup/src/composition/use-search-bar.tsx @@ -57,6 +57,7 @@ export function useSearchbar(props: LookupProps, isNavigation: boolean, lookupSt if (props.enableSearchBar && searchFields.value.length > 0) { return
'; + const popupIcon = ''; const popupOpenIcon = ''; const elementRef = ref(); @@ -288,7 +288,7 @@ export default defineComponent({ useHttpComposition={useHttpComposition} userDataService={userDataService} useDialog={{ cancelDialog, submitDialog }} showSelectedList={showSelections.value} selectionsManager={selectionsManager} showIncludeChildNodes={{ show: showIncludeChildNodes.value, value: props.includeChildNodesValue }} - showCascadeControl={showCascadeControl.value} isMaximized={isMaximized.value} locales={lookupLocales}> + showCascadeControl={showCascadeControl.value} isMaximized={isMaximized.value} locales={lookupLocales} id={props.id}> {{ default: () => ( Date: Mon, 4 Aug 2025 15:26:51 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=20=E6=B6=88=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E7=BB=84=E4=BB=B6=E8=AF=A2=E9=97=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/message-content/static-content.component.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx b/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx index 0bb3c28dd24..67371bd1225 100644 --- a/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx +++ b/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx @@ -14,8 +14,9 @@ export default function ( ) { const exception = ref(props.exceptionInfo); const messageBoxIconClass = computed(() => { + const messageTypeCode = messageType.value === 'question' ? 'warning': messageType.value; const classObject = { 'f-icon': true } as Record; - const iconClass = `f-icon-${messageType.value}`; + const iconClass = `f-icon-${messageTypeCode}`; classObject[iconClass] = true; return classObject; }); -- Gitee From 989de41db6a6996ff5087bcddda4ea0772e42751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Mon, 4 Aug 2025 20:10:09 +0800 Subject: [PATCH 03/16] =?UTF-8?q?fix:=20messagerBox=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8B=96=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui-vue/components/message-box/src/message-box.component.tsx | 2 +- .../ui-vue/components/message-box/src/message-box.service.tsx | 1 + packages/ui-vue/components/modal/src/composition/type.ts | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/ui-vue/components/message-box/src/message-box.component.tsx b/packages/ui-vue/components/message-box/src/message-box.component.tsx index 8d1f2b6d195..3dee9cf178e 100644 --- a/packages/ui-vue/components/message-box/src/message-box.component.tsx +++ b/packages/ui-vue/components/message-box/src/message-box.component.tsx @@ -46,7 +46,7 @@ export default defineComponent({ }); const messageBoxContainerStyle = computed(() => { - const styleObject = {} as Record; + const styleObject = {cursor: 'default'} as Record; if (messageType.value === 'prompt') { styleObject.padding = '0.5rem 0.5rem 1rem 1.5rem'; } else if (messageType.value === 'error') { diff --git a/packages/ui-vue/components/message-box/src/message-box.service.tsx b/packages/ui-vue/components/message-box/src/message-box.service.tsx index 92410333570..75e08b37891 100644 --- a/packages/ui-vue/components/message-box/src/message-box.service.tsx +++ b/packages/ui-vue/components/message-box/src/message-box.service.tsx @@ -63,6 +63,7 @@ export default class MessageBoxService { fitContent: true, showMaxButton: false, draggable: true, + dragHandle: '.modal-tips', render: () => { return ; } diff --git a/packages/ui-vue/components/modal/src/composition/type.ts b/packages/ui-vue/components/modal/src/composition/type.ts index 0512b650a55..f8ad528362e 100644 --- a/packages/ui-vue/components/modal/src/composition/type.ts +++ b/packages/ui-vue/components/modal/src/composition/type.ts @@ -28,6 +28,7 @@ export interface ModalOptions { fitContent?: boolean; buttons?: ModalButton[]; draggable?: boolean; + dragHandle?: string | HTMLElement; resizeable?: boolean; showMaxButton?: boolean; showCloseButton?: boolean; -- Gitee From 3449c7fe6cfa5f5e74e64fb12f24bd30b5be93f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Mon, 4 Aug 2025 20:12:15 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix:=20=E4=BB=A3=E7=A0=81=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E4=BB=B6=E5=8A=A0=E8=BD=BDVUE=E7=89=88?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/code-editor/src/code-editor.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/code-editor/components/code-editor/src/code-editor.component.tsx b/packages/code-editor/components/code-editor/src/code-editor.component.tsx index c54dfa112b0..2b5b6db3f07 100644 --- a/packages/code-editor/components/code-editor/src/code-editor.component.tsx +++ b/packages/code-editor/components/code-editor/src/code-editor.component.tsx @@ -60,7 +60,7 @@ export default defineComponent({ function initMonaco() { if (!loadPromise) { loadPromise = new Promise((resolve) => { - const baseUrl = '/platform/common/web/assets/monaco'; + const baseUrl = '/platform/common/web/monaco'; const onGotAmdLoader: any = () => { (window as any).require.config({ paths: { 'vs': `${baseUrl}/vs` }, -- Gitee From 4ed7fb825bcbf7977bf55b2595a6e2c9c8e561b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 08:51:23 +0800 Subject: [PATCH 05/16] =?UTF-8?q?fix:=20=E8=8B=B1=E6=96=87=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E9=A1=B9=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui-vue/components/message-box/src/locales/ui/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui-vue/components/message-box/src/locales/ui/en.json b/packages/ui-vue/components/message-box/src/locales/ui/en.json index d77d134ca2f..e396f76f87d 100644 --- a/packages/ui-vue/components/message-box/src/locales/ui/en.json +++ b/packages/ui-vue/components/message-box/src/locales/ui/en.json @@ -28,7 +28,7 @@ "copy": "Copy Details", "copySuccess": "Copy Succeeded!", "copyFailed": "Replication Failed!", - "roger": "Got It." + "roger": "OK" } } } \ No newline at end of file -- Gitee From 8396d9f27e9dc2d13b8508430b5b356b3f2a59b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 10:30:36 +0800 Subject: [PATCH 06/16] =?UTF-8?q?fix:=20combo-list=20=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E5=A2=9E=E5=8A=A0ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui-vue/components/combo-list/src/combo-list.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui-vue/components/combo-list/src/combo-list.component.tsx b/packages/ui-vue/components/combo-list/src/combo-list.component.tsx index 24872962884..c7971a8aac6 100644 --- a/packages/ui-vue/components/combo-list/src/combo-list.component.tsx +++ b/packages/ui-vue/components/combo-list/src/combo-list.component.tsx @@ -36,7 +36,7 @@ export default defineComponent({ let displayTextStore = ''; const { dataSource, displayText, editable, modelValue, getSelectedItemsByDisplayText, getItemsByDisplayText } = useDataSource(props); - const dropdownIcon = ref(props.dropdownIcon); + const dropdownIcon = ref(props.dropDownIcon); if (dropdownIcon.value === '') { dropdownIcon.value = ''; } -- Gitee From c5dec97d5e3c072970465e12a9c4db8cb10d5845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 11:49:14 +0800 Subject: [PATCH 07/16] =?UTF-8?q?fix:=20lookup=E7=BB=84=E4=BB=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E8=AF=AD=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui-vue/components/lookup/src/composition/use-locales.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui-vue/components/lookup/src/composition/use-locales.ts b/packages/ui-vue/components/lookup/src/composition/use-locales.ts index feef9a98863..daa33bd659b 100644 --- a/packages/ui-vue/components/lookup/src/composition/use-locales.ts +++ b/packages/ui-vue/components/lookup/src/composition/use-locales.ts @@ -52,7 +52,7 @@ export function useLookupLocales(props: LookupProps): LookupLocaleData { const tabs = { datalist: getLocaleValue('lookup.datalist') || '数据列表', - favorite: getLocaleValue('lookup.favorite') || '收藏', + favorite: getLocaleValue('lookup.favorites') || '收藏夹', }; const buttons = { -- Gitee From 5ba403bfa25eec92b9d8cae15acb375d2d145bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 12:22:25 +0800 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=E6=97=A5=E6=9C=9F=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=A4=9A=E8=AF=AD=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../date-picker-container/date-picker-container.component.tsx | 2 +- .../src/components/date-range/date-range.component.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ui-vue/components/date-picker/src/components/date-picker-container/date-picker-container.component.tsx b/packages/ui-vue/components/date-picker/src/components/date-picker-container/date-picker-container.component.tsx index c96502d589d..ec50d7cac93 100644 --- a/packages/ui-vue/components/date-picker/src/components/date-picker-container/date-picker-container.component.tsx +++ b/packages/ui-vue/components/date-picker/src/components/date-picker-container/date-picker-container.component.tsx @@ -1307,7 +1307,7 @@ export default defineComponent({ {enablePeriod.value && selectMode.value === 'day' &&
} - 确定 + {props.locales.buttons.commit}
} diff --git a/packages/ui-vue/components/date-picker/src/components/date-range/date-range.component.tsx b/packages/ui-vue/components/date-picker/src/components/date-range/date-range.component.tsx index dca75e3e5ea..9bc57e4a2d0 100644 --- a/packages/ui-vue/components/date-picker/src/components/date-range/date-range.component.tsx +++ b/packages/ui-vue/components/date-picker/src/components/date-range/date-range.component.tsx @@ -195,7 +195,7 @@ export default defineComponent({ }; onMounted(() => { - + nameOfMonths.value = props.locales.monthLabels; }); function onMouseEnter() { -- Gitee From 7b95a796651e7aba7728b955c771850b9db1710a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 15:59:07 +0800 Subject: [PATCH 09/16] =?UTF-8?q?fix:=20messagerBox=E3=80=81=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E7=BB=84=E4=BB=B6=E5=A4=9A=E8=AF=AD=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/composition/use-locales.ts | 50 +++++++++---------- .../components/footer/footer.component.tsx | 7 +++ .../src/composition/use-locales.ts | 2 + .../message-box/src/locales/ui/en.json | 1 + .../message-box/src/locales/ui/zh-CHS.json | 1 + .../message-box/src/locales/ui/zh-CHT.json | 1 + .../components/modal/src/modal.component.tsx | 7 +++ 7 files changed, 44 insertions(+), 25 deletions(-) diff --git a/packages/ui-vue/components/date-picker/src/composition/use-locales.ts b/packages/ui-vue/components/date-picker/src/composition/use-locales.ts index 33dcc169b47..9bb9117568b 100644 --- a/packages/ui-vue/components/date-picker/src/composition/use-locales.ts +++ b/packages/ui-vue/components/date-picker/src/composition/use-locales.ts @@ -80,31 +80,31 @@ export function useDatePickerLocale(props: DatePickerProps): DatePickerLocale { }; const quickSelectors = { - today: getValue('datepicker.quickSelectItems.today'), - yesterday: getValue('datepicker.quickSelectItems.yesterday'), - tomorrow: getValue('datepicker.quickSelectItems.tomorrow'), - thisMonday: getValue('datepicker.quickSelectItems.thisMonday'), - nextMonday: getValue('datepicker.quickSelectItems.nextMonday'), - firstDayOfMonth: getValue('datepicker.quickSelectItems.firstDayOfMonth'), - lastDayOfMonth: getValue('datepicker.quickSelectItems.lastDayOfMonth'), - firstDayOfLastMonth: getValue('datepicker.quickSelectItems.firstDayOfLastMonth'), - lastDayOfLastMonth: getValue('datepicker.quickSelectItems.lastDayOfLastMonth'), - firstDayOfYear: getValue('datepicker.quickSelectItems.firstDayOfYear'), - lastDayOfYear: getValue('datepicker.quickSelectItems.lastDayOfYear'), - firstDayOfQuarter: getValue('datepicker.quickSelectItems.firstDayOfQuarter'), - lastDayOfQuarter: getValue('datepicker.quickSelectItems.lastDayOfQuarter'), - thisWeek: getValue('datepicker.quickSelectItems.thisWeek'), - lastWeek: getValue('datepicker.quickSelectItems.lastWeek'), - nextWeek: getValue('datepicker.quickSelectItems.nextWeek'), - past7Days: getValue('datepicker.quickSelectItems.past7Days'), - past30Days: getValue('datepicker.quickSelectItems.past30Days'), - thisMonth: getValue('datepicker.quickSelectItems.thisMonth'), - lastMonth: getValue('datepicker.quickSelectItems.lastMonth'), - thisQuarter: getValue('datepicker.quickSelectItems.thisQuarter'), - lastQuarter: getValue('datepicker.quickSelectItems.lastQuarter'), - thisYear: getValue('datepicker.quickSelectItems.thisYear'), - lastYear: getValue('datepicker.quickSelectItems.lastYear'), - recent3Months: getValue('datepicker.quickSelectItems.recent3Months') + today: getValue('datepicker.quickSelectors.today'), + yesterday: getValue('datepicker.quickSelectors.yesterday'), + tomorrow: getValue('datepicker.quickSelectors.tomorrow'), + thisMonday: getValue('datepicker.quickSelectors.thisMonday'), + nextMonday: getValue('datepicker.quickSelectors.nextMonday'), + firstDayOfMonth: getValue('datepicker.quickSelectors.firstDayOfMonth'), + lastDayOfMonth: getValue('datepicker.quickSelectors.lastDayOfMonth'), + firstDayOfLastMonth: getValue('datepicker.quickSelectors.firstDayOfLastMonth'), + lastDayOfLastMonth: getValue('datepicker.quickSelectors.lastDayOfLastMonth'), + firstDayOfYear: getValue('datepicker.quickSelectors.firstDayOfYear'), + lastDayOfYear: getValue('datepicker.quickSelectors.lastDayOfYear'), + firstDayOfQuarter: getValue('datepicker.quickSelectors.firstDayOfQuarter'), + lastDayOfQuarter: getValue('datepicker.quickSelectors.lastDayOfQuarter'), + thisWeek: getValue('datepicker.quickSelectors.thisWeek'), + lastWeek: getValue('datepicker.quickSelectors.lastWeek'), + nextWeek: getValue('datepicker.quickSelectors.nextWeek'), + past7Days: getValue('datepicker.quickSelectors.past7Days'), + past30Days: getValue('datepicker.quickSelectors.past30Days'), + thisMonth: getValue('datepicker.quickSelectors.thisMonth'), + lastMonth: getValue('datepicker.quickSelectors.lastMonth'), + thisQuarter: getValue('datepicker.quickSelectors.thisQuarter'), + lastQuarter: getValue('datepicker.quickSelectors.lastQuarter'), + thisYear: getValue('datepicker.quickSelectors.thisYear'), + lastYear: getValue('datepicker.quickSelectors.lastYear'), + recent3Months: getValue('datepicker.quickSelectors.recent3Months') }; return { diff --git a/packages/ui-vue/components/message-box/src/components/footer/footer.component.tsx b/packages/ui-vue/components/message-box/src/components/footer/footer.component.tsx index 1e1df50e4c4..7c2f664c92f 100644 --- a/packages/ui-vue/components/message-box/src/components/footer/footer.component.tsx +++ b/packages/ui-vue/components/message-box/src/components/footer/footer.component.tsx @@ -34,6 +34,13 @@ export default function ( const renderCopyButton = getCopyButton(props, useCopyComposition, useFeedbackComposition, locales); + if (okButtonText.value === '关闭') { + okButtonText.value = locales.close; + } else if (okButtonText.value === '知道了') { + okButtonText.value = locales.exception.roger; + } + + function onClickCancelButton($event: MouseEvent) { if (messageType.value === 'question') { context.emit('reject'); diff --git a/packages/ui-vue/components/message-box/src/composition/use-locales.ts b/packages/ui-vue/components/message-box/src/composition/use-locales.ts index 99128dc23a4..a18f4d856c9 100644 --- a/packages/ui-vue/components/message-box/src/composition/use-locales.ts +++ b/packages/ui-vue/components/message-box/src/composition/use-locales.ts @@ -3,6 +3,7 @@ import { MessageBoxProps } from "../message-box.props"; export interface MessageBoxLocaleData { yes: string; + close: string; no: string; ok: string; cancel: string; @@ -33,6 +34,7 @@ export function useMessagerLocales(props: MessageBoxProps): MessageBoxLocaleData return { yes: getValue('messageBox.yes') || '是', no: getValue('messageBox.no') ||'否', + close: getValue('messageBox.close') || '关闭', ok: getValue('messageBox.ok', props.okButtonText, '确定') ||'确定', cancel: getValue('messageBox.cancel', props.cancelButtonText, '取消') || '取消', title: getValue('messageBox.title') || '系统提示', diff --git a/packages/ui-vue/components/message-box/src/locales/ui/en.json b/packages/ui-vue/components/message-box/src/locales/ui/en.json index e396f76f87d..853a333bdd3 100644 --- a/packages/ui-vue/components/message-box/src/locales/ui/en.json +++ b/packages/ui-vue/components/message-box/src/locales/ui/en.json @@ -3,6 +3,7 @@ "yes": "Yes", "no": "No", "ok": "OK", + "close": "Close", "cancel": "Cancel", "title": "System Information", "errorTitle": "Error Information", diff --git a/packages/ui-vue/components/message-box/src/locales/ui/zh-CHS.json b/packages/ui-vue/components/message-box/src/locales/ui/zh-CHS.json index 8de228c9e7c..dff8681f923 100644 --- a/packages/ui-vue/components/message-box/src/locales/ui/zh-CHS.json +++ b/packages/ui-vue/components/message-box/src/locales/ui/zh-CHS.json @@ -3,6 +3,7 @@ "yes": "是", "no": "否", "ok": "确定", + "close": "关闭", "cancel": "取消", "title": "系统提示", "errorTitle": "错误提示", diff --git a/packages/ui-vue/components/message-box/src/locales/ui/zh-CHT.json b/packages/ui-vue/components/message-box/src/locales/ui/zh-CHT.json index 8126b3ba39b..12ea9c1e8dc 100644 --- a/packages/ui-vue/components/message-box/src/locales/ui/zh-CHT.json +++ b/packages/ui-vue/components/message-box/src/locales/ui/zh-CHT.json @@ -3,6 +3,7 @@ "yes": "是", "no": "否", "ok": "確定", + "close": "關閉", "cancel": "取消", "title": "係統提示", "errorTitle": "錯誤提示", diff --git a/packages/ui-vue/components/modal/src/modal.component.tsx b/packages/ui-vue/components/modal/src/modal.component.tsx index 7a65d0a351f..2592c3fc581 100644 --- a/packages/ui-vue/components/modal/src/modal.component.tsx +++ b/packages/ui-vue/components/modal/src/modal.component.tsx @@ -21,6 +21,7 @@ import { useResizeable } from './composition/use-resizeable'; import { useDraggable } from './composition/use-draggable'; import './modal.scss'; import { useEnter, useEsc } from './composition/use-shortcut'; +import { useI18n } from 'vue-i18n'; export default defineComponent({ name: 'FModal', @@ -46,6 +47,12 @@ export default defineComponent({ const containment = ref(props.containment || null); const modalContainerRef = ref(); + const { t } = useI18n(); + if(title.value === '错误提示') { + title.value = t('messageBox.errorTitle'); + } + + const hasModal = ref(false); function close($event: MouseEvent, accept?: boolean) { -- Gitee From 150c4cc92721c1f550ced6f488a5d7d702ca9e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 16:56:15 +0800 Subject: [PATCH 10/16] =?UTF-8?q?fix:=20timepicker=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/time-picker/src/locales/ui/en.json | 10 ++++++++++ .../components/time-picker/src/locales/ui/zh-CHS.json | 10 ++++++++++ .../components/time-picker/src/locales/ui/zh-CHT.json | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 packages/ui-vue/components/time-picker/src/locales/ui/en.json create mode 100644 packages/ui-vue/components/time-picker/src/locales/ui/zh-CHS.json create mode 100644 packages/ui-vue/components/time-picker/src/locales/ui/zh-CHT.json diff --git a/packages/ui-vue/components/time-picker/src/locales/ui/en.json b/packages/ui-vue/components/time-picker/src/locales/ui/en.json new file mode 100644 index 00000000000..862a2e3a386 --- /dev/null +++ b/packages/ui-vue/components/time-picker/src/locales/ui/en.json @@ -0,0 +1,10 @@ +{ + "timePicker": { + "placeholder": "Please select a time", + "time": { + "hour": "Hour", + "minute": "Minute", + "seconds": "Second" + } + } +} \ No newline at end of file diff --git a/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHS.json b/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHS.json new file mode 100644 index 00000000000..86966cd8c84 --- /dev/null +++ b/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHS.json @@ -0,0 +1,10 @@ +{ + "timePicker": { + "placeholder": "请选择时间", + "time": { + "hour": "时", + "minute": "分", + "seconds": "秒" + } + } +} \ No newline at end of file diff --git a/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHT.json b/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHT.json new file mode 100644 index 00000000000..8e23d83b46e --- /dev/null +++ b/packages/ui-vue/components/time-picker/src/locales/ui/zh-CHT.json @@ -0,0 +1,10 @@ +{ + "timePicker": { + "placeholder": "請選擇時間", + "time": { + "hour": "時", + "minute": "分", + "seconds": "秒" + } + } +} \ No newline at end of file -- Gitee From 87d580cb097afc3ba2fab809392be8493da7c0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Tue, 5 Aug 2025 20:12:53 +0800 Subject: [PATCH 11/16] =?UTF-8?q?fix:=20=E5=A4=9A=E8=AF=AD=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=98=93=E7=94=A8=E6=80=A7=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/language-contents.component.tsx | 11 +++++++++-- .../language-textbox.design.component.tsx | 5 ++++- .../src/language-textbox.component.tsx | 6 +++++- .../static-content.component.tsx | 9 ++++++++- .../message-box/src/composition/use-locales.ts | 8 +++++--- .../message-box/src/message-box.component.tsx | 1 + .../message-box/src/message-box.service.tsx | 2 +- .../notify/src/components/toast.component.tsx | 17 +++++++++++++---- 8 files changed, 46 insertions(+), 13 deletions(-) diff --git a/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx b/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx index b9aed7e3497..580073636ee 100644 --- a/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx +++ b/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx @@ -1,4 +1,4 @@ -import { defineComponent, ref, watch } from "vue"; +import { defineComponent, nextTick, onMounted, ref, watch } from "vue"; import { FInputGroup } from "@farris/ui-vue/components/input-group"; import { LanguageItem } from "../types"; @@ -14,9 +14,16 @@ export default defineComponent({ const languages = ref(props.languages); const data = ref(props.modelValue); + const inputsRef = ref(); + + onMounted(()=> { + setTimeout(() => { + inputsRef.value?.querySelector('input')?.focus(); + }, 130); + }); return () => { - return
    + return
      { languages.value?.map((item: LanguageItem) => { return
    • diff --git a/packages/ui-vue/components/language-textbox/src/designer/language-textbox.design.component.tsx b/packages/ui-vue/components/language-textbox/src/designer/language-textbox.design.component.tsx index de1b72153fa..b1c674f1516 100644 --- a/packages/ui-vue/components/language-textbox/src/designer/language-textbox.design.component.tsx +++ b/packages/ui-vue/components/language-textbox/src/designer/language-textbox.design.component.tsx @@ -4,6 +4,9 @@ import { useLanguageTextboxDesignerRules } from './use-language-textbox.rules'; export default defineComponent({ name: 'FLanguageTextboxDesign', + props: { + placeholder: { type: String, default: '' } + }, setup(props, context) { const elementRef = ref(); @@ -23,7 +26,7 @@ export default defineComponent({ return () => { return
      - +
      diff --git a/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx b/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx index e0dd9419a7e..d534972e7fe 100644 --- a/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx +++ b/packages/ui-vue/components/language-textbox/src/language-textbox.component.tsx @@ -5,7 +5,7 @@ import FButtonEdit from '@farris/ui-vue/components/button-edit'; import { languageTextBoxProps } from "./language-textbox.props"; import LanguageContents from "./components/language-contents.component"; import { LanguageItem } from "./types"; -import { useI18n } from 'vue-i18n' +import { useI18n } from 'vue-i18n'; export default defineComponent({ name: 'FLanguageTextbox', @@ -18,6 +18,10 @@ export default defineComponent({ const displayText = computed(() => modelValue.value?.[currentLang.value]); const buttonEditorRef = ref(); + watch(() => props.modelValue, (newValue) => { + modelValue.value = newValue; + }); + const updateLangOrder = (langValue: LanguageItem[]) => { if (langValue?.length <= 1) { return; diff --git a/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx b/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx index 67371bd1225..2530e9d81ab 100644 --- a/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx +++ b/packages/ui-vue/components/message-box/src/components/message-content/static-content.component.tsx @@ -49,6 +49,13 @@ export default function ( const renderMessageDetail = getMessageDetailRender(); + const wrapStyles = computed(() => { + if (locales.locale === 'en') { + return { wordBreak: 'keep-all', overflowWrap: 'break-word' }; + } + return {}; + }); + return () => { return ( <> @@ -56,7 +63,7 @@ export default function (
      diff --git a/packages/ui-vue/components/message-box/src/composition/use-locales.ts b/packages/ui-vue/components/message-box/src/composition/use-locales.ts index a18f4d856c9..68407c165ef 100644 --- a/packages/ui-vue/components/message-box/src/composition/use-locales.ts +++ b/packages/ui-vue/components/message-box/src/composition/use-locales.ts @@ -18,12 +18,13 @@ export interface MessageBoxLocaleData { copySuccess: string; copyFailed: string; roger: string; - } + }, + locale: string; } export function useMessagerLocales(props: MessageBoxProps): MessageBoxLocaleData{ - const { t:getLocaleValue } = useI18n(); + const { t:getLocaleValue, locale } = useI18n(); function getValue(localeKey, propertyValue?: string, defaultValue?: string) { if (propertyValue === defaultValue) { return getLocaleValue(localeKey); @@ -48,6 +49,7 @@ export function useMessagerLocales(props: MessageBoxProps): MessageBoxLocaleData copySuccess: getValue('messageBox.exception.copySuccess') || '复制成功', copyFailed: getValue('messageBox.exception.copyFailed') || '复制失败', roger: getValue('messageBox.exception.roger') || '知道了' - } + }, + locale: locale.value }; } diff --git a/packages/ui-vue/components/message-box/src/message-box.component.tsx b/packages/ui-vue/components/message-box/src/message-box.component.tsx index 3dee9cf178e..9f04b53686e 100644 --- a/packages/ui-vue/components/message-box/src/message-box.component.tsx +++ b/packages/ui-vue/components/message-box/src/message-box.component.tsx @@ -79,6 +79,7 @@ export default defineComponent({ return () => { return (
      + {!props.exceptionInfo &&
      }
      {renderContent()}
      diff --git a/packages/ui-vue/components/message-box/src/message-box.service.tsx b/packages/ui-vue/components/message-box/src/message-box.service.tsx index 75e08b37891..7accc169ef7 100644 --- a/packages/ui-vue/components/message-box/src/message-box.service.tsx +++ b/packages/ui-vue/components/message-box/src/message-box.service.tsx @@ -63,7 +63,7 @@ export default class MessageBoxService { fitContent: true, showMaxButton: false, draggable: true, - dragHandle: '.modal-tips', + dragHandle: '.messager-draggable', render: () => { return ; } diff --git a/packages/ui-vue/components/notify/src/components/toast.component.tsx b/packages/ui-vue/components/notify/src/components/toast.component.tsx index 590f8f486ea..cc465f0b7ee 100644 --- a/packages/ui-vue/components/notify/src/components/toast.component.tsx +++ b/packages/ui-vue/components/notify/src/components/toast.component.tsx @@ -16,6 +16,7 @@ import { computed, defineComponent, ref, SetupContext, watch } from 'vue'; import { NotifyButton, NotifyData } from '../notify.props'; import { ToastProps, toastProps } from './toast.props'; +import { useI18n } from 'vue-i18n'; export default defineComponent({ @@ -23,6 +24,7 @@ export default defineComponent({ props: toastProps, emits: ['close', 'click'] as (string[] & ThisType) | undefined, setup: (props: ToastProps, context: SetupContext) => { + const {locale, t} = useI18n(); const animateIn = ref(props.animate); const animateEnd = 'fadeOut'; const toast = computed(() => { @@ -65,6 +67,13 @@ export default defineComponent({ const shouldShowButtonsInTitle = computed(() => !!toast.value.buttons || !!context.slots.default); + const wrapStyles = computed(() => { + if (locale.value === 'en') { + return { wordBreak: 'keep-all', overflowWrap: 'break-word' }; + } + return {}; + }); + function onCloseToast($event: Event) { $event.stopPropagation(); $event.preventDefault(); @@ -109,7 +118,7 @@ export default defineComponent({ return (
      {shouldShowCloseButton.value && ( - )} @@ -122,18 +131,18 @@ export default defineComponent({ {shouldShowTitle.value && ( <> -

      +

      {shouldShowButtonsInTitle.value && renderNotifyButtons()} )} {shouldShowMessageOnly.value && (toast.value.buttons ? (
      - +
      {renderNotifyButtons()}
      ) : ( - + ))}
      -- Gitee From e938f848bdd54d0ec0309bee5b3a6e29df1f075b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Wed, 6 Aug 2025 11:11:55 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20modal=E5=86=85=E7=BD=AE=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=94=AF=E6=8C=81=E5=A4=9A=E8=AF=AD=EF=BC=9Bnotify=20?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui-vue/components/modal/src/modal.component.tsx | 4 ++-- packages/ui-vue/components/notify/src/notify.service.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ui-vue/components/modal/src/modal.component.tsx b/packages/ui-vue/components/modal/src/modal.component.tsx index 2592c3fc581..3b67f362203 100644 --- a/packages/ui-vue/components/modal/src/modal.component.tsx +++ b/packages/ui-vue/components/modal/src/modal.component.tsx @@ -75,7 +75,7 @@ export default defineComponent({ const defaultButtons: ModalButton[] = [ { name: 'cancel', - text: '取消', + text: t('messageBox.cancel') || '取消', class: 'btn btn-secondary', handle: ($event: MouseEvent) => { close($event, false); @@ -83,7 +83,7 @@ export default defineComponent({ }, { name: 'accept', - text: '确定', + text: t('messageBox.ok') || '确定', class: 'btn btn-primary', handle: ($event: MouseEvent) => { close($event, true); diff --git a/packages/ui-vue/components/notify/src/notify.service.tsx b/packages/ui-vue/components/notify/src/notify.service.tsx index 4e2300e0cab..2adaa70fcf8 100644 --- a/packages/ui-vue/components/notify/src/notify.service.tsx +++ b/packages/ui-vue/components/notify/src/notify.service.tsx @@ -23,7 +23,7 @@ export default class NotifyService { // 获取完全转义后的内容(含 < > & 等字符转义) const escapedContent = container.innerHTML; return escapedContent - .replace(/ /g, ' ') // 普通空格转义 + // .replace(/ /g, ' ') // 普通空格转义 .replace(/\\n/g, '
      ') // 保留换行 .replace(/\\t/g, '    ') // 保留制表符 .replace(/\\r/g, ''); // 移除回车(通常不需要单独处理) -- Gitee From f476f873c62e56c7af439642c616de4f0f3c1d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Wed, 6 Aug 2025 17:15:55 +0800 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20lookup=20=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E5=B7=B2=E7=9F=A5=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../language-contents.component.tsx | 2 +- .../components/popup-container.component.tsx | 2 +- .../lookup/src/composition/use-treenode.ts | 12 ++-- .../lookup/src/composition/use-user-data.ts | 3 +- .../converters/lookup-property.converter.ts | 6 +- .../property-config/lookup.property-config.ts | 2 +- packages/ui-vue/docs/assets/i18n/ui/en.json | 69 ++++++++++++++----- .../ui-vue/docs/assets/i18n/ui/zh-CHS.json | 37 ++++++++++ .../ui-vue/docs/assets/i18n/ui/zh-CHT.json | 37 ++++++++++ 9 files changed, 141 insertions(+), 29 deletions(-) diff --git a/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx b/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx index 580073636ee..3ccc3a7341a 100644 --- a/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx +++ b/packages/ui-vue/components/language-textbox/src/components/language-contents.component.tsx @@ -13,7 +13,7 @@ export default defineComponent({ setup(props, context) { const languages = ref(props.languages); - const data = ref(props.modelValue); + const data = ref(props.modelValue || {}); const inputsRef = ref(); onMounted(()=> { diff --git a/packages/ui-vue/components/lookup/src/components/popup-container.component.tsx b/packages/ui-vue/components/lookup/src/components/popup-container.component.tsx index 0c27ec26307..2ac302383ef 100644 --- a/packages/ui-vue/components/lookup/src/components/popup-container.component.tsx +++ b/packages/ui-vue/components/lookup/src/components/popup-container.component.tsx @@ -87,7 +87,7 @@ export default defineComponent({ return () => { return
      - {lookupOptions.multiSelect && renderSearchBar()} + {renderSearchBar()} {renderDataComponent.value()} {/*
      */}
      ; diff --git a/packages/ui-vue/components/lookup/src/composition/use-treenode.ts b/packages/ui-vue/components/lookup/src/composition/use-treenode.ts index de69cb33106..c45905d2b2b 100644 --- a/packages/ui-vue/components/lookup/src/composition/use-treenode.ts +++ b/packages/ui-vue/components/lookup/src/composition/use-treenode.ts @@ -175,17 +175,15 @@ export function useTreeNode(lookupStates: LookupStates, useCheckPropsComposition lookupState.flattenTreeNodes?.push(...children); } - /* nextTick(() => { gridRef.addChildrenToNode(children, parentId); - const itemIds = lookupStates.selectionState.value?.map(item => item[lookupOptions.idField]) ?? []; - const selectedIds = children - .filter(child => itemIds.includes(child.id)) - .map(child => child.id); + // const itemIds = lookupStates.selectionState.value?.map(item => item[lookupOptions.idField]) ?? []; + // const selectedIds = children + // .filter(child => itemIds.includes(child.id)) + // .map(child => child.id); - selectedIds.length && gridRef.selectItemByIds(selectedIds); + // selectedIds.length && gridRef.selectItemByIds(selectedIds); }); - */ } diff --git a/packages/ui-vue/components/lookup/src/composition/use-user-data.ts b/packages/ui-vue/components/lookup/src/composition/use-user-data.ts index 77908960a11..325b244b4da 100644 --- a/packages/ui-vue/components/lookup/src/composition/use-user-data.ts +++ b/packages/ui-vue/components/lookup/src/composition/use-user-data.ts @@ -36,7 +36,8 @@ export function useUserData(props: LookupProps, useHttpComposition: UseHttpCompo const {lookupOptions} = lookupStates; const dataKey = computed(() => { - return encrypt(lookupOptions.userDataKey || props.id); + const key = lookupOptions.userDataKey || props.id; + return key ? encrypt(key): ''; }); const userDataState = reactive({ key: dataKey.value, data: {} }); diff --git a/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts b/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts index a1c40d71f64..a7f6ca6b6c9 100644 --- a/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts +++ b/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts @@ -33,14 +33,16 @@ export const lookupDefaultConverter = { return schema.editor[propertyKey] || 'default'; } - if (propertyKey === 'placeholder') { + if (propertyKey === 'placeholder') { return schema.editor['placeholder'] || '请选择'; } - return schema.editor[propertyKey]; }, convertTo: (schema: Record, propertyKey: string, propertyValue: any) => { schema.editor[propertyKey] = propertyValue; + if(propertyKey === 'multiSelect' && !propertyValue) { + schema.editor['enableCascade'] = false; + } } }; diff --git a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts index ed5c60ef954..4a8c43715d7 100644 --- a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts +++ b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts @@ -834,7 +834,7 @@ export class LookupPropertyConfig extends InputBaseProperty { $converter: lookupDefaultConverter, title: "显示级联选择控件", type: "boolean", - visible: !!editorOptions.enableCascade && this.isTree(editorOptions) + visible: !!editorOptions.enableCascade && this.isTree(editorOptions) }, cascadeValue: { description: "级联选择默认状态", diff --git a/packages/ui-vue/docs/assets/i18n/ui/en.json b/packages/ui-vue/docs/assets/i18n/ui/en.json index 594050f6750..367aba0928c 100644 --- a/packages/ui-vue/docs/assets/i18n/ui/en.json +++ b/packages/ui-vue/docs/assets/i18n/ui/en.json @@ -3,6 +3,14 @@ "selectedStart": "Selected: ", "selectedEnd": " items" }, + "timePicker": { + "placeholder": "Please select a time", + "time": { + "hour": "Hour", + "minute": "Minute", + "seconds": "Second" + } + }, "tabs": { "more": "More", "leftButton": "Left", @@ -56,22 +64,22 @@ } }, "pagination": { - "message": "Total {1} items ", + "message": "Total {1} Items ", "totalInfo": { - "firstText": "total", - "lastText": "items" + "firstText": "Total", + "lastText": "Items" }, "pageList": { - "firstText": "display", - "lastText": "items" + "firstText": "Display", + "lastText": "Items" }, - "previous": "previous", - "next": "next", + "previous": "Previous", + "next": "Next", "goto": { - "prefix": "go to", + "prefix": "Go to", "suffix": "" }, - "show": "show" + "show": "Display" }, "numberSpinner": { "placeholder": "Please enter the number", @@ -84,6 +92,7 @@ "yes": "Yes", "no": "No", "ok": "OK", + "close": "Close", "cancel": "Cancel", "title": "System Information", "errorTitle": "Error Information", @@ -109,7 +118,7 @@ "copy": "Copy Details", "copySuccess": "Copy Succeeded!", "copyFailed": "Replication Failed!", - "roger": "Got It." + "roger": "OK" } }, "lookup": { @@ -207,7 +216,7 @@ } }, "eventParameter": { - "title": "parameter editor", + "title": "Parameter Editor", "ok": "confirm", "cancel": "cancel", "workFlowClass": { @@ -287,6 +296,34 @@ "clearSelections": "Clear All", "delete": "Delete", "selected": "Selected,Days" + }, + "quickSelectors": { + "today": "Today", + "yesterday": "Yesterday", + "tomorrow": "Tomorrow", + "thisMonday": "This Monday", + "nextMonday": "Next Monday", + "firstDayOfMonth": "First Day of Month", + "lastDayOfMonth": "Last Day of Month", + "firstDayOfLastMonth": "First Day of Last Month", + "lastDayOfLastMonth": "Last Day of Last Month", + "firstDayOfYear": "First Day of Year", + "lastDayOfYear": "Last Day of Year", + "firstDayOfQuarter": "First Day of Quarter", + "lastDayOfQuarter": "Last Day of Quarter", + "thisWeek": "This Week", + "lastWeek": "Last Week", + "nextWeek": "Next Week", + "past7Days": "Past 7 Days", + "past30Days": "Past 30 Days", + "thisMonth": "This Month", + "lastMonth": "Last Month", + "thisQuarter": "This Quarter", + "lastQuarter": "Last Quarter", + "thisYear": "This Year", + "lastYear": "Last Year", + "recent3Months": "Recent 3 Months", + "recent6Months": "Recent 6 Months" } }, "datagrid": { @@ -295,7 +332,7 @@ "pagination": { "previousLabel": "Prev Page", "nextLabel": "Next Page", - "message": "Total {1} items", + "message": "Total {1} Items", "pagelist": { "firstText": "Display", "lastText": "items" @@ -305,7 +342,7 @@ "title": "Conditions", "reset": "Reset", "clear": "Clear", - "clearAll": "Clear all conditions", + "clearAll": "Clear All Conditions", "setting": "Settings", "nofilter": "[ Empty ]", "checkAll": "Check All", @@ -398,11 +435,11 @@ "clear": "Empty" }, "summary": { - "title": "current page summary" + "title": "Current Page Summary" }, - "loadingMessage": "loading", + "loadingMessage": "Loading", "commandColumn": { - "title": "operate" + "title": "Operation" } }, "condition": { diff --git a/packages/ui-vue/docs/assets/i18n/ui/zh-CHS.json b/packages/ui-vue/docs/assets/i18n/ui/zh-CHS.json index 9dd0f0d7909..a392099f2cb 100644 --- a/packages/ui-vue/docs/assets/i18n/ui/zh-CHS.json +++ b/packages/ui-vue/docs/assets/i18n/ui/zh-CHS.json @@ -3,6 +3,14 @@ "selectedStart": "已选:", "selectedEnd": "项数据" }, + "timePicker": { + "placeholder": "请选择时间", + "time": { + "hour": "时", + "minute": "分", + "seconds": "秒" + } + }, "tabs": { "more": "更多", "leftButton": "向左", @@ -84,6 +92,7 @@ "yes": "是", "no": "否", "ok": "确定", + "close": "关闭", "cancel": "取消", "title": "系统提示", "errorTitle": "错误提示", @@ -287,6 +296,34 @@ "clearSelections": "清空", "delete": "删除", "selected": "已选,天" + }, + "quickSelectors": { + "today": "今天", + "yesterday": "昨天", + "tomorrow": "明天", + "thisMonday": "本周一", + "nextMonday": "下周一", + "firstDayOfMonth": "本月初", + "lastDayOfMonth": "本月末", + "firstDayOfLastMonth": "上月初", + "lastDayOfLastMonth": "上月末", + "firstDayOfYear": "今年初", + "lastDayOfYear": "今年末", + "firstDayOfQuarter": "本季度初", + "lastDayOfQuarter": "本季度末", + "thisWeek": "本周", + "lastWeek": "上周", + "nextWeek": "下周", + "past7Days": "过去7天", + "past30Days": "过去30天", + "thisMonth": "本月", + "lastMonth": "上月", + "thisQuarter": "本季度", + "lastQuarter": "上季度", + "thisYear": "今年", + "lastYear": "去年", + "recent3Months": "最近3个月", + "recent6Months": "最近6个月" } }, "datagrid": { diff --git a/packages/ui-vue/docs/assets/i18n/ui/zh-CHT.json b/packages/ui-vue/docs/assets/i18n/ui/zh-CHT.json index 27ad9b3f040..99b80ae74b4 100644 --- a/packages/ui-vue/docs/assets/i18n/ui/zh-CHT.json +++ b/packages/ui-vue/docs/assets/i18n/ui/zh-CHT.json @@ -3,6 +3,14 @@ "selectedStart": "已選:", "selectedEnd": "項數據" }, + "timePicker": { + "placeholder": "請選擇時間", + "time": { + "hour": "時", + "minute": "分", + "seconds": "秒" + } + }, "tabs": { "more": { "more": "更多", @@ -86,6 +94,7 @@ "yes": "是", "no": "否", "ok": "確定", + "close": "關閉", "cancel": "取消", "title": "係統提示", "errorTitle": "錯誤提示", @@ -285,6 +294,34 @@ "clearSelections": "清空", "delete": "刪除", "selected": "已選,天" + }, + "quickSelectors": { + "today": "今天", + "yesterday": "昨天", + "tomorrow": "明天", + "thisMonday": "本周壹", + "nextMonday": "下周壹", + "firstDayOfMonth": "本月初", + "lastDayOfMonth": "本月末", + "firstDayOfLastMonth": "上月初", + "lastDayOfLastMonth": "上月末", + "firstDayOfYear": "今年初", + "lastDayOfYear": "今年末", + "firstDayOfQuarter": "本季度初", + "lastDayOfQuarter": "本季度末", + "thisWeek": "本周", + "lastWeek": "上周", + "nextWeek": "下周", + "past7Days": "過去7天", + "past30Days": "過去30天", + "thisMonth": "本月", + "lastMonth": "上月", + "thisQuarter": "本季度", + "lastQuarter": "上季度", + "thisYear": "今年", + "lastYear": "去年", + "recent3Months": "最近3個月", + "recent6Months": "最近6個月" } }, "datagrid": { -- Gitee From 27acf8de8eca9b8b5d852e0204c151c2c54422b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Wed, 6 Aug 2025 17:46:53 +0800 Subject: [PATCH 14/16] =?UTF-8?q?fix:=20lookup=E7=BA=A7=E8=81=94=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=8E=92=E9=99=A4=E7=A6=81=E6=AD=A2=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=B8=AD=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui-vue/components/lookup/src/composition/use-treegrid.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui-vue/components/lookup/src/composition/use-treegrid.tsx b/packages/ui-vue/components/lookup/src/composition/use-treegrid.tsx index 5e0b1d7e883..a684626249a 100644 --- a/packages/ui-vue/components/lookup/src/composition/use-treegrid.tsx +++ b/packages/ui-vue/components/lookup/src/composition/use-treegrid.tsx @@ -73,7 +73,7 @@ export function useTreegrid(props: LookupProps, context: SetupContext) { const { cascadeValue } = lookupOptions; if (isEnableCascadeCheck() && cascadeValue !== CascadeEnum.Disable) { const selectedNodes = getTreeNodeWithCascadeValue(nodeId, cascadeValue, isChecked); - return selectedNodes.map(node => node.id); + return selectedNodes.filter(node => node.selectable || node.selectable === undefined).map(node => node.id); } return []; } -- Gitee From 7761e49f05d801201c25f080958c5fdcbe7ef1c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Wed, 6 Aug 2025 19:36:16 +0800 Subject: [PATCH 15/16] =?UTF-8?q?fix:=20Lookup=E8=AE=BE=E8=AE=A1=E6=97=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=9D=A2=E6=9D=BF=E5=B7=B2=E7=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converters/lookup-property.converter.ts | 4 ++++ .../src/property-config/lookup.property-config.ts | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts b/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts index a7f6ca6b6c9..d14d9e6e983 100644 --- a/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts +++ b/packages/ui-vue/components/lookup/src/property-config/converters/lookup-property.converter.ts @@ -43,6 +43,10 @@ export const lookupDefaultConverter = { if(propertyKey === 'multiSelect' && !propertyValue) { schema.editor['enableCascade'] = false; } + + if(propertyKey === 'openType' && propertyValue === 'Popup') { + schema.editor['showSelections'] = false; + } } }; diff --git a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts index 4a8c43715d7..dcd010bb573 100644 --- a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts +++ b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts @@ -490,7 +490,7 @@ export class LookupPropertyConfig extends InputBaseProperty { $converter: lookupDefaultConverter, title: "显示已选记录", type: "boolean", - visible: !!editorOptions.multiSelect + visible: !!editorOptions.multiSelect && editorOptions.openType!== 'Popup' }, separator: { description: "多选分隔符", @@ -549,8 +549,8 @@ export class LookupPropertyConfig extends InputBaseProperty { showNavigatiorWidth(editorOptions: any) { const isDoubleList = this.getDisplayType(editorOptions).startsWith('NAV'); - if (isDoubleList) { - return editorOptions.showNavigation === undefined ? true : !!editorOptions.showNavigation; + if (isDoubleList && editorOptions.openType !=='Popup') { + return (editorOptions.showNavigation === undefined ? true : !!editorOptions.showNavigation); } return false; } @@ -594,7 +594,8 @@ export class LookupPropertyConfig extends InputBaseProperty { $converter: lookupDialogOptionsConverter, editor: { ...this.numberEditor, - min: this.showNavigatiorWidth(propertyData.editor) ? 520 : 300 + min: this.showNavigatiorWidth(propertyData.editor) ? 520 : 300, + max: 9999 } }, height: { @@ -604,7 +605,8 @@ export class LookupPropertyConfig extends InputBaseProperty { $converter: lookupDialogOptionsConverter, editor: { ...this.numberEditor, - min: 200 + min: 200, + max: 9999 } }, showNavigation: { @@ -827,7 +829,7 @@ export class LookupPropertyConfig extends InputBaseProperty { refreshPanelAfterChanged: true, title: "启用级联选择", type: "boolean", - visible: this.isTree(editorOptions) && !!editorOptions.multiSelect + visible: this.isTree(editorOptions) && !!editorOptions.multiSelect && editorOptions.openType!== 'Popup' }, showCascadeControl: { description: "显示级联选择控件", -- Gitee From 04bf897d0e2608c54fcf785bc33c3de3b45ade53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=A7=80=E6=89=8D?= Date: Thu, 7 Aug 2025 10:17:30 +0800 Subject: [PATCH 16/16] =?UTF-8?q?fix:=20timepicker=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/time-picker/src/composition/use-locales.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/ui-vue/components/time-picker/src/composition/use-locales.ts b/packages/ui-vue/components/time-picker/src/composition/use-locales.ts index ddb6d6a8c73..1a7aaf0c77a 100644 --- a/packages/ui-vue/components/time-picker/src/composition/use-locales.ts +++ b/packages/ui-vue/components/time-picker/src/composition/use-locales.ts @@ -1,5 +1,5 @@ +import { useI18n } from "vue-i18n"; import { TimePickerProps } from "../time-picker.props"; -import { LocaleService } from '@farris/ui-vue/components/locale'; export interface TimePickerLocaleData { placeholder: string; @@ -11,9 +11,10 @@ export interface TimePickerLocaleData { } export function useTimePickerLocale(props: TimePickerProps): TimePickerLocaleData { + const { t: getLocaleValue } = useI18n(); function getValue(localeKey, propertyValue?: string, defaultValue?: string): any { if (!propertyValue || propertyValue === defaultValue) { - return LocaleService.getLocaleValue(localeKey); + return getLocaleValue(localeKey); } return propertyValue || ''; } -- Gitee