From 3208a76868bc59c9781b1d51f677c55ff7502337 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 20 Jun 2026 07:01:20 -0700 Subject: [PATCH 1/2] =?UTF-8?q?chore(lint):=20=E8=B0=83=E6=95=B4=20lint=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=B9=B6=E4=BF=AE=E5=A4=8D=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierignore | 1 + .stylelintignore | 1 + eslint.config.mjs | 4 +++- package.json | 2 +- .../home/components/picker/picker-dialog.scss | 5 +++- .../components/input/MentionPicker.vue | 2 +- .../MessageTemplateSendForm.vue | 4 +++- src/views/pay/order/OrderDetail.vue | 6 +++-- src/views/pay/refund/RefundDetail.vue | 2 +- src/views/pay/transfer/TransferDetail.vue | 2 +- stylelint.config.js | 24 ++++++++++++++++++- 11 files changed, 43 insertions(+), 10 deletions(-) diff --git a/.prettierignore b/.prettierignore index f68ea8694..c8c675f13 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,5 +7,6 @@ /src/types/env.d.ts /src/types/auto-components.d.ts /src/types/auto-imports.d.ts +/src/components/Tinyflow/ui/** /docs/**/* CHANGELOG diff --git a/.stylelintignore b/.stylelintignore index aa605b498..9e4560d6b 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -3,4 +3,5 @@ public/* /dist* /src/types/env.d.ts +/src/components/Tinyflow/ui/** /docs/**/* diff --git a/eslint.config.mjs b/eslint.config.mjs index 34d95ac59..3389e8191 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -17,7 +17,8 @@ export default tseslint.config( 'test/unit/coverage/', 'node_modules/', 'src/main.ts', - 'src/types/auto-components.d.ts' + 'src/types/auto-components.d.ts', + 'src/components/Tinyflow/ui/**' ] }, @@ -61,6 +62,7 @@ export default tseslint.config( 'vue/attributes-order': 'off', 'vue/one-component-per-file': 'off', 'vue/html-closing-bracket-newline': 'off', + 'vue/html-indent': 'off', // Vue 模板缩进交给 Prettier,避免格式化规则互相拉扯。 'vue/max-attributes-per-line': 'off', 'vue/multiline-html-element-content-newline': 'off', 'vue/singleline-html-element-content-newline': 'off', diff --git a/package.json b/package.json index 2f229eac0..d1283c8a9 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "lint": "pnpm lint:eslint:check && pnpm lint:style:check && pnpm lint:format:check", "lint:eslint": "eslint --fix ./src --cache --cache-location node_modules/.cache/eslint/", "lint:eslint:check": "eslint ./src --cache --cache-location node_modules/.cache/eslint/", - "lint:format": "prettier --write --loglevel warn --cache --cache-location node_modules/.cache/prettier/.prettier-cache \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:format": "prettier --write --log-level warn --cache --cache-location node_modules/.cache/prettier/.prettier-cache \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", "lint:format:check": "prettier --check --cache --cache-location node_modules/.cache/prettier/.prettier-cache \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", "lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", "lint:style:check": "stylelint \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", diff --git a/src/views/im/home/components/picker/picker-dialog.scss b/src/views/im/home/components/picker/picker-dialog.scss index 7f9943a8e..f976e9e35 100644 --- a/src/views/im/home/components/picker/picker-dialog.scss +++ b/src/views/im/home/components/picker/picker-dialog.scss @@ -1,5 +1,7 @@ // IM 选择类弹窗的公共样式 mixin // 每个业务壳在自己的 \ No newline at end of file + diff --git a/src/components/Verifition/src/Verify/index.ts b/src/components/Verifition/src/Verify/index.ts index e027ab3fd..ae82ca767 100644 --- a/src/components/Verifition/src/Verify/index.ts +++ b/src/components/Verifition/src/Verify/index.ts @@ -2,4 +2,4 @@ import VerifySlide from './VerifySlide.vue' import VerifyPoints from './VerifyPoints.vue' import VerifyPictureWord from './VerifyPictureWord.vue' -export { VerifySlide, VerifyPoints, VerifyPictureWord } \ No newline at end of file +export { VerifySlide, VerifyPoints, VerifyPictureWord } diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json index c98c97236..5f23e91af 100644 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json +++ b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json @@ -1254,11 +1254,11 @@ "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] }, "properties": [ - { - "name": "value", - "type": "Integer", - "isBody": true - } + { + "name": "value", + "type": "Integer", + "isBody": true + } ] }, { diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js index d1796d3f4..650150e14 100644 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js +++ b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js @@ -23,20 +23,20 @@ export default function customTranslate(translations) { return function (template, replacements) { - replacements = replacements || {}; + replacements = replacements || {} // 将模板和翻译字典的键统一转换为小写进行匹配 - const lowerTemplate = template.toLowerCase(); - const translation = Object.keys(translations).find(key => key.toLowerCase() === lowerTemplate); + const lowerTemplate = template.toLowerCase() + const translation = Object.keys(translations).find((key) => key.toLowerCase() === lowerTemplate) // 如果找到匹配的翻译,使用翻译后的模板 if (translation) { - template = translations[translation]; + template = translations[translation] } // 替换模板中的占位符 return template.replace(/{([^}]+)}/g, function (_, key) { // 如果替换值存在,返回替换值;否则返回原始占位符 - return replacements[key] !== undefined ? replacements[key] : `{${key}}`; - }); - }; -} \ No newline at end of file + return replacements[key] !== undefined ? replacements[key] : `{${key}}` + }) + } +} diff --git a/src/components/bpmnProcessDesigner/package/theme/index.scss b/src/components/bpmnProcessDesigner/package/theme/index.scss index 240476027..c320d0833 100644 --- a/src/components/bpmnProcessDesigner/package/theme/index.scss +++ b/src/components/bpmnProcessDesigner/package/theme/index.scss @@ -2,14 +2,15 @@ @use './process-panel.scss'; $success-color: #4eb819; -$primary-color: #409EFF; -$danger-color: #F56C6C; +$primary-color: #409eff; +$danger-color: #f56c6c; $cancel-color: #909399; .process-viewer { position: relative; - border: 1px solid #EFEFEF; - background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') repeat!important; + border: 1px solid #efefef; + background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') + repeat !important; .success-arrow { fill: $success-color; @@ -23,7 +24,7 @@ $cancel-color: #909399; .success.djs-connection { .djs-visual path { - stroke: $success-color!important; + stroke: $success-color !important; //marker-end: url(#sequenceflow-end-white-success)!important; } } @@ -36,82 +37,84 @@ $cancel-color: #909399; .success.djs-shape { .djs-visual rect { - stroke: $success-color!important; - fill: $success-color!important; - fill-opacity: 0.15!important; + stroke: $success-color !important; + fill: $success-color !important; + fill-opacity: 0.15 !important; } .djs-visual polygon { - stroke: $success-color!important; + stroke: $success-color !important; } .djs-visual path:nth-child(2) { - stroke: $success-color!important; - fill: $success-color!important; + stroke: $success-color !important; + fill: $success-color !important; } .djs-visual circle { - stroke: $success-color!important; - fill: $success-color!important; - fill-opacity: 0.15!important; + stroke: $success-color !important; + fill: $success-color !important; + fill-opacity: 0.15 !important; } } .primary.djs-shape { .djs-visual rect { - stroke: $primary-color!important; - fill: $primary-color!important; - fill-opacity: 0.15!important; + stroke: $primary-color !important; + fill: $primary-color !important; + fill-opacity: 0.15 !important; } .djs-visual polygon { - stroke: $primary-color!important; + stroke: $primary-color !important; } .djs-visual circle { - stroke: $primary-color!important; - fill: $primary-color!important; - fill-opacity: 0.15!important; + stroke: $primary-color !important; + fill: $primary-color !important; + fill-opacity: 0.15 !important; } } .danger.djs-shape { .djs-visual rect { - stroke: $danger-color!important; - fill: $danger-color!important; - fill-opacity: 0.15!important; + stroke: $danger-color !important; + fill: $danger-color !important; + fill-opacity: 0.15 !important; } .djs-visual polygon { - stroke: $danger-color!important; + stroke: $danger-color !important; } .djs-visual circle { - stroke: $danger-color!important; - fill: $danger-color!important; - fill-opacity: 0.15!important; + stroke: $danger-color !important; + fill: $danger-color !important; + fill-opacity: 0.15 !important; } } .cancel.djs-shape { .djs-visual rect { - stroke: $cancel-color!important; - fill: $cancel-color!important; - fill-opacity: 0.15!important; + stroke: $cancel-color !important; + fill: $cancel-color !important; + fill-opacity: 0.15 !important; } .djs-visual polygon { - stroke: $cancel-color!important; + stroke: $cancel-color !important; } .djs-visual circle { - stroke: $cancel-color!important; - fill: $cancel-color!important; - fill-opacity: 0.15!important; + stroke: $cancel-color !important; + fill: $cancel-color !important; + fill-opacity: 0.15 !important; } } } -.process-viewer .djs-tooltip-container, .process-viewer .djs-overlay-container, .process-viewer .djs-palette { +.process-viewer .djs-tooltip-container, +.process-viewer .djs-overlay-container, +.process-viewer .djs-palette { display: none; } diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index dab1bebb7..56aa33456 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -167,8 +167,8 @@ service.interceptors.response.use( cb() }) requestList = [] - if ((config!.headers || {}).isEncrypt){ - (config!.headers || {}).isEncrypted = true + if ((config!.headers || {}).isEncrypt) { + ;(config!.headers || {}).isEncrypted = true } return service(config) } catch (e) { diff --git a/src/hooks/web/useWatermark.ts b/src/hooks/web/useWatermark.ts index 028926b43..aa604e0f1 100644 --- a/src/hooks/web/useWatermark.ts +++ b/src/hooks/web/useWatermark.ts @@ -8,7 +8,7 @@ export function useWatermark(appendEl: HTMLElement | null = document.body) { const id = domSymbol.toString() const appStore = useAppStore() let watermarkStr = '' - + const clear = () => { const domId = document.getElementById(id) if (domId) { diff --git a/src/layout/components/Logo/src/Logo.vue b/src/layout/components/Logo/src/Logo.vue index 7f3ce88d8..c22c950df 100644 --- a/src/layout/components/Logo/src/Logo.vue +++ b/src/layout/components/Logo/src/Logo.vue @@ -27,7 +27,10 @@ onMounted(() => { watch( () => collapse.value, (collapse: boolean) => { - if (getLayoutRenderMode(unref(layout)) === 'topLeft' || getLayoutRenderMode(unref(layout)) === 'cutMenu') { + if ( + getLayoutRenderMode(unref(layout)) === 'topLeft' || + getLayoutRenderMode(unref(layout)) === 'cutMenu' + ) { show.value = true return } diff --git a/src/layout/components/Menu/src/Menu.vue b/src/layout/components/Menu/src/Menu.vue index 8a3730543..c04fea2cc 100644 --- a/src/layout/components/Menu/src/Menu.vue +++ b/src/layout/components/Menu/src/Menu.vue @@ -8,11 +8,7 @@ import { hasOneShowingChild } from './helper' import { isUrl } from '@/utils/is' import { useDesign } from '@/hooks/web/useDesign' import { createRouteLocation, resolveDynamicPath } from '@/utils/routeParams' -import { - isHeaderNavLayout, - isHorizontalMenuLayout, - isTwoColumnLayout -} from '@/utils/layout' +import { isHeaderNavLayout, isHorizontalMenuLayout, isTwoColumnLayout } from '@/utils/layout' import { cloneDeep } from 'lodash-es' import { pathResolve } from '@/utils/routerHelper' import { @@ -69,8 +65,9 @@ export default defineComponent({ const menuRef = ref>() - const menuMode = computed((): 'vertical' | 'horizontal' => - props.mode || (isHorizontalMenuLayout(unref(layout)) ? 'horizontal' : 'vertical') + const menuMode = computed( + (): 'vertical' | 'horizontal' => + props.mode || (isHorizontalMenuLayout(unref(layout)) ? 'horizontal' : 'vertical') ) const collapse = computed(() => appStore.getCollapse) @@ -102,7 +99,8 @@ export default defineComponent({ const routers = computed(() => { const sourceRouters = - props.menus || (props.split ? permissionStore.getMenuTabRouters : permissionStore.getRouters) + props.menus || + (props.split ? permissionStore.getMenuTabRouters : permissionStore.getRouters) if (!props.rootOnly) { return sourceRouters } @@ -113,7 +111,10 @@ export default defineComponent({ const { meta, path } = unref(currentRoute) const currentPath = (meta.activeMenu as string) || path if (props.rootOnly) { - return permissionStore.getMenuRootPath || getRootMenuActivePath(permissionStore.getRouters, currentPath) + return ( + permissionStore.getMenuRootPath || + getRootMenuActivePath(permissionStore.getRouters, currentPath) + ) } // if set path, the sidebar will highlight the path you set if (meta.activeMenu) { @@ -134,7 +135,10 @@ export default defineComponent({ props.theme === 'header' ? 'var(--el-color-primary)' : 'var(--left-menu-text-active-color)' ) - const getFirstChildPath = (route: AppRouteRecordRaw, parentPath: string): string | undefined => { + const getFirstChildPath = ( + route: AppRouteRecordRaw, + parentPath: string + ): string | undefined => { const firstChild = route.children?.find((child) => !child.meta?.hidden) if (!firstChild) { return undefined @@ -218,7 +222,8 @@ export default defineComponent({ const setSplitMenus = (targetPath: string) => { const rootInfo = getRootMenuRoute(permissionStore.getRouters, targetPath) - const rootPath = rootInfo?.fullPath || getRootMenuActivePath(permissionStore.getRouters, targetPath) + const rootPath = + rootInfo?.fullPath || getRootMenuActivePath(permissionStore.getRouters, targetPath) const rootRoute = rootInfo?.route const children = rootRoute?.children?.length ? cloneDeep(rootRoute.children).map((child) => { @@ -386,7 +391,8 @@ export default defineComponent({ } const targetPath = props.rootOnly && routeInfo?.route.children?.length - ? ((routeInfo.route.redirect as string) || getFirstChildPath(routeInfo.route, routeInfo.fullPath)) + ? (routeInfo.route.redirect as string) || + getFirstChildPath(routeInfo.route, routeInfo.fullPath) : index if (targetPath) { @@ -541,9 +547,13 @@ export default defineComponent({ 'h-[100%] overflow-hidden flex-col bg-[var(--left-menu-bg-color)]', { 'w-[var(--left-menu-min-width)]': - unref(collapse) && !isTwoColumnLayout(unref(layout)) && unref(menuMode) !== 'horizontal', + unref(collapse) && + !isTwoColumnLayout(unref(layout)) && + unref(menuMode) !== 'horizontal', 'w-[var(--left-menu-max-width)]': - !unref(collapse) && !isTwoColumnLayout(unref(layout)) && unref(menuMode) !== 'horizontal' + !unref(collapse) && + !isTwoColumnLayout(unref(layout)) && + unref(menuMode) !== 'horizontal' } ]} style={{ @@ -642,13 +652,12 @@ $prefix-cls: #{$namespace}-menu; height: calc(var(--top-tool-height)) !important; min-width: 0; flex-shrink: 1; - overflow-x: hidden; - overflow-y: hidden; + overflow: hidden; :deep(.#{$elNamespace}-menu--horizontal) { height: calc(var(--top-tool-height)); - border-bottom: none; min-width: 100%; + border-bottom: none; // 重新设置底部高亮颜色 & > .#{$elNamespace}-sub-menu.is-active { .#{$elNamespace}-sub-menu__title { diff --git a/src/layout/components/Menu/src/components/useRenderMenuItem.tsx b/src/layout/components/Menu/src/components/useRenderMenuItem.tsx index 61f572bf1..11d617810 100644 --- a/src/layout/components/Menu/src/components/useRenderMenuItem.tsx +++ b/src/layout/components/Menu/src/components/useRenderMenuItem.tsx @@ -33,14 +33,12 @@ export const useRenderMenuItem = () => if ( !children.length || - oneShowingChild && - (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) && - !meta?.alwaysShow + (oneShowingChild && + (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) && + !meta?.alwaysShow) ) { return ( - + {{ default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta) }} diff --git a/src/layout/components/Menu/src/menuRoute.ts b/src/layout/components/Menu/src/menuRoute.ts index 9fa511bfe..27015061f 100644 --- a/src/layout/components/Menu/src/menuRoute.ts +++ b/src/layout/components/Menu/src/menuRoute.ts @@ -58,9 +58,9 @@ export const getRootMenuRoute = ( } } -export const getRootMenuActivePath = ( - routes: AppRouteRecordRaw[], - targetPath: string -): string => { - return getRootMenuRoute(routes, targetPath)?.fullPath || getRootPath(normalizeMenuTargetPath(targetPath)) +export const getRootMenuActivePath = (routes: AppRouteRecordRaw[], targetPath: string): string => { + return ( + getRootMenuRoute(routes, targetPath)?.fullPath || + getRootPath(normalizeMenuTargetPath(targetPath)) + ) } diff --git a/src/layout/components/TabMenu/src/TabMenu.vue b/src/layout/components/TabMenu/src/TabMenu.vue index 83dcc2d9d..83c1b2281 100644 --- a/src/layout/components/TabMenu/src/TabMenu.vue +++ b/src/layout/components/TabMenu/src/TabMenu.vue @@ -12,10 +12,7 @@ import { useDesign } from '@/hooks/web/useDesign' import { isUrl } from '@/utils/is' import { createRouteLocation } from '@/utils/routeParams' import { getRootPath, isHeaderMixedNavLayout, isTwoColumnLayout } from '@/utils/layout' -import { - getRootMenuRoute, - normalizeMenuTargetPath -} from '@/layout/components/Menu/src/menuRoute' +import { getRootMenuRoute, normalizeMenuTargetPath } from '@/layout/components/Menu/src/menuRoute' const { getPrefixCls, variables } = useDesign() @@ -58,7 +55,9 @@ export default defineComponent({ return getRootMenuRoute(unref(routers), targetPath) }) - const rootPath = computed(() => unref(activeRootInfo)?.fullPath || getRootPath(unref(currentMenuPath))) + const rootPath = computed( + () => unref(activeRootInfo)?.fullPath || getRootPath(unref(currentMenuPath)) + ) const activeRootRoute = computed(() => unref(activeRootInfo)?.route) @@ -125,7 +124,9 @@ export default defineComponent({ const isSameMenuRouters = (left: AppRouteRecordRaw[], right: AppRouteRecordRaw[]): boolean => { return ( left.length === right.length && - left.every((route, index) => route.path === right[index]?.path && route.name === right[index]?.name) + left.every( + (route, index) => route.path === right[index]?.path && route.name === right[index]?.name + ) ) } @@ -219,7 +220,8 @@ export default defineComponent({ const children = getVisibleChildren(item) if (children.length) { if (newPath === oldPath || !unref(showMenu)) { - showMenu.value = unref(fixedMenu) || unref(headerMixed) || unref(twoColumn) ? true : !unref(showMenu) + showMenu.value = + unref(fixedMenu) || unref(headerMixed) || unref(twoColumn) ? true : !unref(showMenu) } if (unref(showMenu)) { setExtraMenuRouters(buildExtraMenuRouters(children, unref(tabActive))) diff --git a/src/layout/components/TagsView/src/TagsView.vue b/src/layout/components/TagsView/src/TagsView.vue index 855984746..2635b3757 100644 --- a/src/layout/components/TagsView/src/TagsView.vue +++ b/src/layout/components/TagsView/src/TagsView.vue @@ -171,7 +171,8 @@ const moveToTarget = (currentTag: RouteLocationNormalizedLoaded) => { } else { // find preTag and nextTag const currentIndex: number = tagList.findIndex( - (item) => (item?.to as RouteLocationNormalizedLoaded | undefined)?.fullPath === currentTag.fullPath + (item) => + (item?.to as RouteLocationNormalizedLoaded | undefined)?.fullPath === currentTag.fullPath ) if (currentIndex < 0) return const tgsRefs = document.getElementsByClassName(`${prefixCls}__item`) @@ -376,10 +377,10 @@ watch( {{ t(item?.meta?.title as string) + - (item?.meta?.titleSuffix ? ` (${item?.meta?.titleSuffix})` : '') + (item?.meta?.titleSuffix ? ` (${item?.meta?.titleSuffix})` : '') }} {hasTenantVisitPermission.value ? : undefined} -
+
{screenfull.value ? ( diff --git a/src/layout/components/UserInfo/src/components/LockDialog.vue b/src/layout/components/UserInfo/src/components/LockDialog.vue index 7257be16d..c719c2a9b 100644 --- a/src/layout/components/UserInfo/src/components/LockDialog.vue +++ b/src/layout/components/UserInfo/src/components/LockDialog.vue @@ -91,7 +91,7 @@ const handleLock = async () => { diff --git a/src/views/im/home/pages/conversation/components/input/MessageInput.vue b/src/views/im/home/pages/conversation/components/input/MessageInput.vue index 2093ae823..a588a21a7 100644 --- a/src/views/im/home/pages/conversation/components/input/MessageInput.vue +++ b/src/views/im/home/pages/conversation/components/input/MessageInput.vue @@ -364,7 +364,7 @@ function collectFromEditor(root: HTMLElement): { text: string; atUserIds: number * 3. 二次防御:collectFromEditor 走 trim,可能比 syncEditorState 更严格(例如全 ZWSP),仍空就 return * 4. 清空 + 同步状态:先清 innerHTML 再 syncEditorState 让 placeholder / canSend 一起回归 * (顺序很重要:先清后 sync,否则 sync 看到旧内容会误判) - * 5. 上送:atUserIds 非空才传,避免发空数组;quote 由 clearConversationDraft 前抓取,确保引用条立即消失 + * 5. 上送:atUserIds 非空才传,避免发空数组;quote 由 clearConversationDraft 前抓取,确保引用条立即消失 */ async function handleSend(options?: { receipt?: boolean }) { const editor = editorRef.value @@ -1171,8 +1171,9 @@ async function onVideoPicked(e: Event) { .message-input__tool:deep(svg) { font-size: 18px !important; color: var(--el-text-color-regular) !important; - fill: currentColor !important; + fill: currentcolor !important; } + .message-input__tool:hover, .message-input__tool:hover:deep(svg) { color: var(--el-color-primary) !important; @@ -1180,10 +1181,10 @@ async function onVideoPicked(e: Event) { /* 用 data-empty 而非 :empty:浏览器在删空后会留下
,:empty 不命中;data-empty 由 syncEditorState 维护 */ .message-input__editor[data-empty]::before { - content: attr(data-placeholder); + position: absolute; color: var(--el-text-color-placeholder); pointer-events: none; - position: absolute; + content: attr(data-placeholder); } /* @ token 走主色高亮;contenteditable=false 让 backspace 整段删而不是逐字符 */ diff --git a/src/views/im/home/pages/conversation/components/input/VoiceRecorder.vue b/src/views/im/home/pages/conversation/components/input/VoiceRecorder.vue index 769c5e154..933ba2e02 100644 --- a/src/views/im/home/pages/conversation/components/input/VoiceRecorder.vue +++ b/src/views/im/home/pages/conversation/components/input/VoiceRecorder.vue @@ -54,15 +54,7 @@ diff --git a/src/views/im/manager/statistics/components/UserTrendChart.vue b/src/views/im/manager/statistics/components/UserTrendChart.vue index d218d8e34..304b4a855 100644 --- a/src/views/im/manager/statistics/components/UserTrendChart.vue +++ b/src/views/im/manager/statistics/components/UserTrendChart.vue @@ -40,11 +40,19 @@ const buildOption = (dates: string[], reg: number[], act: number[]): echarts.ECh ], series: [ { - name: '新增注册', type: 'bar', yAxisIndex: 0, data: reg, - itemStyle: { color: '#E6A23C' }, barMaxWidth: 24 + name: '新增注册', + type: 'bar', + yAxisIndex: 0, + data: reg, + itemStyle: { color: '#E6A23C' }, + barMaxWidth: 24 }, { - name: '日活', type: 'line', yAxisIndex: 1, smooth: true, data: act, + name: '日活', + type: 'line', + yAxisIndex: 1, + smooth: true, + data: act, itemStyle: { color: '#F56C6C' } } ] diff --git a/src/views/im/manager/statistics/index.vue b/src/views/im/manager/statistics/index.vue index 2bd52404c..706d45682 100644 --- a/src/views/im/manager/statistics/index.vue +++ b/src/views/im/manager/statistics/index.vue @@ -64,8 +64,8 @@ onMounted(async () => { padding: 16px; &__hero { - margin-bottom: 16px; padding: 4px 2px; + margin-bottom: 16px; } &__hero-title { diff --git a/src/views/im/utils/conversation.ts b/src/views/im/utils/conversation.ts index 96f7e8e19..a95f956b3 100644 --- a/src/views/im/utils/conversation.ts +++ b/src/views/im/utils/conversation.ts @@ -6,7 +6,13 @@ // 2. fallbackName 由调用方传入(典型来源:Conversation.lastSenderDisplayName 快照),透传到 getSenderDisplayName 内部,算不出真名时兜底 // ==================================================================== -import { ImConversationType, ImContentType, isFriendChatTip, isGroupNotification, isRtcCallTip } from './constants' +import { + ImConversationType, + ImContentType, + isFriendChatTip, + isGroupNotification, + isRtcCallTip +} from './constants' import { getCardLabelInfo, parseMessage, @@ -21,7 +27,11 @@ import { type TipSegment } from './message' import { getSenderDisplayName } from './user' -import { resolveFriendNotificationText, resolveGroupNotificationText, resolveRtcCallLastContent } from './message' +import { + resolveFriendNotificationText, + resolveGroupNotificationText, + resolveRtcCallLastContent +} from './message' import type { Message } from '../home/types' /** 会话主键:`type-targetId` 拼成稳定字符串,给 v-for :key、active 比对、map key 等场景共用 */ @@ -73,10 +83,7 @@ export function buildRecallTipSegments( if (!senderId) { return [tipText(`${senderDisplayName || '对方'} 撤回了一条消息`)] } - return [ - tipMention(senderId, senderDisplayName || '对方'), - tipText(' 撤回了一条消息') - ] + return [tipMention(senderId, senderDisplayName || '对方'), tipText(' 撤回了一条消息')] } /** 撤回提示文案:自己撤回固定文案,对方撤回带 sender 名(实时算 + fallbackName 兜底) */ diff --git a/src/views/im/utils/emoji.ts b/src/views/im/utils/emoji.ts index 2a25315e8..6154f8d28 100644 --- a/src/views/im/utils/emoji.ts +++ b/src/views/im/utils/emoji.ts @@ -5,17 +5,134 @@ * Unicode emoji 选中后由调用方插入到输入框走 TEXT 通道,不走 FACE 内容类型 */ export const IM_EMOJI_LIST: string[] = [ - '😀', '😁', '😂', '🤣', '😃', '😄', '😅', '😆', '😉', '😊', - '😋', '😎', '😍', '😘', '😗', '😙', '😚', '🙂', '🤗', '🤩', - '🤔', '🤨', '😐', '😑', '😶', '🙄', '😏', '😣', '😥', '😮', - '🤐', '😯', '😪', '😫', '😴', '😌', '😛', '😜', '😝', '🤤', - '😒', '😓', '😔', '😕', '🙃', '🤑', '😲', '☹️', '🙁', '😖', - '😞', '😟', '😤', '😢', '😭', '😦', '😧', '😨', '😩', '🤯', - '😬', '😰', '😱', '🥵', '🥶', '😳', '🤪', '😵', '😡', '😠', - '🤬', '😷', '🤒', '🤕', '🤢', '🤮', '🤧', '😇', '🤠', '🥳', - '👍', '👎', '👌', '✌️', '🤞', '🤟', '🤘', '🤙', '👈', '👉', - '👆', '👇', '✋', '🤚', '🖐', '🖖', '👋', '🤝', '🙏', '💪', - '❤️', '🧡', '💛', '💚', '💙', '💜', '🖤', '💔', '💕', '💖', - '🎉', '🎊', '🎁', '🎂', '🍰', '🌹', '🌷', '🌸', '🎵', '🎶', - '⭐', '🌟', '✨', '💫', '🔥', '💯', '✅', '❌', '⚠️', '❓' + '😀', + '😁', + '😂', + '🤣', + '😃', + '😄', + '😅', + '😆', + '😉', + '😊', + '😋', + '😎', + '😍', + '😘', + '😗', + '😙', + '😚', + '🙂', + '🤗', + '🤩', + '🤔', + '🤨', + '😐', + '😑', + '😶', + '🙄', + '😏', + '😣', + '😥', + '😮', + '🤐', + '😯', + '😪', + '😫', + '😴', + '😌', + '😛', + '😜', + '😝', + '🤤', + '😒', + '😓', + '😔', + '😕', + '🙃', + '🤑', + '😲', + '☹️', + '🙁', + '😖', + '😞', + '😟', + '😤', + '😢', + '😭', + '😦', + '😧', + '😨', + '😩', + '🤯', + '😬', + '😰', + '😱', + '🥵', + '🥶', + '😳', + '🤪', + '😵', + '😡', + '😠', + '🤬', + '😷', + '🤒', + '🤕', + '🤢', + '🤮', + '🤧', + '😇', + '🤠', + '🥳', + '👍', + '👎', + '👌', + '✌️', + '🤞', + '🤟', + '🤘', + '🤙', + '👈', + '👉', + '👆', + '👇', + '✋', + '🤚', + '🖐', + '🖖', + '👋', + '🤝', + '🙏', + '💪', + '❤️', + '🧡', + '💛', + '💚', + '💙', + '💜', + '🖤', + '💔', + '💕', + '💖', + '🎉', + '🎊', + '🎁', + '🎂', + '🍰', + '🌹', + '🌷', + '🌸', + '🎵', + '🎶', + '⭐', + '🌟', + '✨', + '💫', + '🔥', + '💯', + '✅', + '❌', + '⚠️', + '❓' ] diff --git a/src/views/im/utils/group.ts b/src/views/im/utils/group.ts index 2118a5c8a..ac360537a 100644 --- a/src/views/im/utils/group.ts +++ b/src/views/im/utils/group.ts @@ -43,9 +43,7 @@ interface CellRect { } /** 单格的最终绘制内容 */ -type Cell = - | { kind: 'image'; img: HTMLImageElement } - | { kind: 'color'; text: string; bg: string } +type Cell = { kind: 'image'; img: HTMLImageElement } | { kind: 'color'; text: string; bg: string } /** * 把群成员头像拼成一张方形群头像 dataURL,按 1 ~ 9 张走九宫格变体布局 @@ -135,11 +133,7 @@ async function resolveCell(member: GroupAvatarMember): Promise { } /** 把单个 Cell 画到 ctx 上指定格子里;image 走 cover 裁剪保比例,color 走 fillRect + 居中文字 */ -function drawCell( - ctx: CanvasRenderingContext2D, - rect: CellRect, - cell: Cell -): void { +function drawCell(ctx: CanvasRenderingContext2D, rect: CellRect, cell: Cell): void { const { x, y, w, h } = rect if (cell.kind === 'image') { drawImageCover(ctx, cell.img, x, y, w, h) diff --git a/src/views/infra/demo/demo01/Demo01ContactForm.vue b/src/views/infra/demo/demo01/Demo01ContactForm.vue index d32a702ac..2cfd732ea 100644 --- a/src/views/infra/demo/demo01/Demo01ContactForm.vue +++ b/src/views/infra/demo/demo01/Demo01ContactForm.vue @@ -62,13 +62,13 @@ const formData = ref({ sex: undefined, birthday: undefined, description: undefined, - avatar: undefined, + avatar: undefined }) const formRules = reactive({ name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], birthday: [{ required: true, message: '出生年不能为空', trigger: 'blur' }], - description: [{ required: true, message: '简介不能为空', trigger: 'blur' }], + description: [{ required: true, message: '简介不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -122,7 +122,7 @@ const resetForm = () => { sex: undefined, birthday: undefined, description: undefined, - avatar: undefined, + avatar: undefined } formRef.value?.resetFields() } diff --git a/src/views/infra/demo/demo01/index.vue b/src/views/infra/demo/demo01/index.vue index 82adc2843..5f6a77f53 100644 --- a/src/views/infra/demo/demo01/index.vue +++ b/src/views/infra/demo/demo01/index.vue @@ -18,12 +18,7 @@ /> - + { // 删除的二次确认 await message.delConfirm() await Demo01ContactApi.deleteDemo01ContactList(checkedIds.value) - checkedIds.value = []; + checkedIds.value = [] message.success(t('common.delSuccess')) - await getList(); + await getList() } catch {} } const checkedIds = ref([]) const handleRowCheckboxChange = (records: Demo01Contact[]) => { - checkedIds.value = records.map((item) => item.id); + checkedIds.value = records.map((item) => item.id) } /** 导出按钮操作 */ diff --git a/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue b/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue index c34bf9fb1..27902110a 100644 --- a/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue +++ b/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue @@ -58,13 +58,13 @@ const formData = ref({ name: undefined, sex: undefined, birthday: undefined, - description: undefined, + description: undefined }) const formRules = reactive({ name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], birthday: [{ required: true, message: '出生日期不能为空', trigger: 'blur' }], - description: [{ required: true, message: '简介不能为空', trigger: 'blur' }], + description: [{ required: true, message: '简介不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -117,7 +117,7 @@ const resetForm = () => { name: undefined, sex: undefined, birthday: undefined, - description: undefined, + description: undefined } formRef.value?.resetFields() } diff --git a/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue b/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue index 4959c00d7..7cca99d18 100644 --- a/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue +++ b/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue @@ -34,12 +34,12 @@ const formData = ref({ id: undefined, studentId: undefined, name: undefined, - score: undefined, + score: undefined }) const formRules = reactive({ studentId: [{ required: true, message: '学生编号不能为空', trigger: 'blur' }], name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], - score: [{ required: true, message: '分数不能为空', trigger: 'blur' }], + score: [{ required: true, message: '分数不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -49,7 +49,7 @@ const open = async (type: string, id?: number, studentId?: number) => { dialogTitle.value = t('action.' + type) formType.value = type resetForm() - formData.value.studentId = studentId as any + formData.value.studentId = studentId as any // 修改时,设置数据 if (id) { formLoading.value = true @@ -70,7 +70,7 @@ const submitForm = async () => { // 提交请求 formLoading.value = true try { - const data = formData.value as unknown as Demo03Course + const data = formData.value as unknown as Demo03Course if (formType.value === 'create') { await Demo03StudentApi.createDemo03Course(data) message.success(t('common.createSuccess')) @@ -92,7 +92,7 @@ const resetForm = () => { id: undefined, studentId: undefined, name: undefined, - score: undefined, + score: undefined } formRef.value?.resetFields() } diff --git a/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue b/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue index 8a6846a89..7afbf75fe 100644 --- a/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue +++ b/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue @@ -72,7 +72,7 @@ diff --git a/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue b/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue index c74d00f6b..52f694701 100644 --- a/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue +++ b/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue @@ -34,12 +34,12 @@ const formData = ref({ id: undefined, studentId: undefined, name: undefined, - teacher: undefined, + teacher: undefined }) const formRules = reactive({ studentId: [{ required: true, message: '学生编号不能为空', trigger: 'blur' }], name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], - teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }], + teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -49,7 +49,7 @@ const open = async (type: string, id?: number, studentId?: number) => { dialogTitle.value = t('action.' + type) formType.value = type resetForm() - formData.value.studentId = studentId as any + formData.value.studentId = studentId as any // 修改时,设置数据 if (id) { formLoading.value = true @@ -70,7 +70,7 @@ const submitForm = async () => { // 提交请求 formLoading.value = true try { - const data = formData.value as unknown as Demo03Grade + const data = formData.value as unknown as Demo03Grade if (formType.value === 'create') { await Demo03StudentApi.createDemo03Grade(data) message.success(t('common.createSuccess')) @@ -92,7 +92,7 @@ const resetForm = () => { id: undefined, studentId: undefined, name: undefined, - teacher: undefined, + teacher: undefined } formRef.value?.resetFields() } diff --git a/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue b/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue index 2a04f3c8d..bafd753f6 100644 --- a/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue +++ b/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue @@ -72,7 +72,7 @@ diff --git a/src/views/infra/demo/demo03/erp/index.vue b/src/views/infra/demo/demo03/erp/index.vue index 0b30b6898..b8b66748d 100644 --- a/src/views/infra/demo/demo03/erp/index.vue +++ b/src/views/infra/demo/demo03/erp/index.vue @@ -18,12 +18,7 @@ /> - + { // 删除的二次确认 await message.delConfirm() await Demo03StudentApi.deleteDemo03StudentList(checkedIds.value) - checkedIds.value = []; + checkedIds.value = [] message.success(t('common.delSuccess')) - await getList(); + await getList() } catch {} } const checkedIds = ref([]) const handleRowCheckboxChange = (records: Demo03Student[]) => { - checkedIds.value = records.map((item) => item.id); + checkedIds.value = records.map((item) => item.id) } /** 导出按钮操作 */ diff --git a/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue b/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue index 46cf6e929..1b32d3b52 100644 --- a/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue +++ b/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue @@ -69,13 +69,13 @@ const formData = ref({ name: undefined, sex: undefined, birthday: undefined, - description: undefined, + description: undefined }) const formRules = reactive({ name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], birthday: [{ required: true, message: '出生日期不能为空', trigger: 'blur' }], - description: [{ required: true, message: '简介不能为空', trigger: 'blur' }], + description: [{ required: true, message: '简介不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -149,7 +149,7 @@ const resetForm = () => { name: undefined, sex: undefined, birthday: undefined, - description: undefined, + description: undefined } formRef.value?.resetFields() } diff --git a/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue b/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue index 23766baae..bca79f5fc 100644 --- a/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue +++ b/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue @@ -45,7 +45,7 @@ const formData = ref([]) const formRules = reactive({ studentId: [{ required: true, message: '学生编号不能为空', trigger: 'blur' }], name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], - score: [{ required: true, message: '分数不能为空', trigger: 'blur' }], + score: [{ required: true, message: '分数不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -75,7 +75,7 @@ const handleAdd = () => { id: undefined, studentId: undefined, name: undefined, - score: undefined, + score: undefined } row.studentId = props.studentId as any formData.value.push(row) diff --git a/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue b/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue index df64a7f77..2968862d4 100644 --- a/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue +++ b/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue @@ -25,7 +25,7 @@ const formData = ref({}) const formRules = reactive({ studentId: [{ required: true, message: '学生编号不能为空', trigger: 'blur' }], name: [{ required: true, message: '名字不能为空', trigger: 'blur' }], - teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }], + teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref diff --git a/src/views/infra/demo/demo03/normal/index.vue b/src/views/infra/demo/demo03/normal/index.vue index 894631701..d42b41748 100644 --- a/src/views/infra/demo/demo03/normal/index.vue +++ b/src/views/infra/demo/demo03/normal/index.vue @@ -18,12 +18,7 @@ /> - + { // 删除的二次确认 await message.delConfirm() await Demo03StudentApi.deleteDemo03StudentList(checkedIds.value) - checkedIds.value = []; + checkedIds.value = [] message.success(t('common.delSuccess')) - await getList(); + await getList() } catch {} } const checkedIds = ref([]) const handleRowCheckboxChange = (records: Demo03Student[]) => { - checkedIds.value = records.map((item) => item.id); + checkedIds.value = records.map((item) => item.id) } /** 导出按钮操作 */ diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue index 81a053109..1fa56ad62 100644 --- a/src/views/iot/device/device/index.vue +++ b/src/views/iot/device/device/index.vue @@ -173,7 +173,10 @@
-
{{ item.deviceName }}
+
{{ item.deviceName }}
产品标识 - + {{ item.productKey }}
diff --git a/src/views/iot/rule/scene/form/configs/MainConditionInnerConfig.vue b/src/views/iot/rule/scene/form/configs/MainConditionInnerConfig.vue index 109fb22e8..85066444e 100644 --- a/src/views/iot/rule/scene/form/configs/MainConditionInnerConfig.vue +++ b/src/views/iot/rule/scene/form/configs/MainConditionInnerConfig.vue @@ -95,8 +95,7 @@ />
标量事件值填裸值(如 - normal);结构体/数组事件值填合法 - JSON(如 + normal);结构体/数组事件值填合法 JSON(如 {"level":"high"}
diff --git a/src/views/iot/utils/sceneRule.ts b/src/views/iot/utils/sceneRule.ts index 6b7ff59c1..618d58be3 100644 --- a/src/views/iot/utils/sceneRule.ts +++ b/src/views/iot/utils/sceneRule.ts @@ -242,10 +242,7 @@ function createCurrentTimeParamRule(getOperator: () => string): FormItemRule { * @param path 错误提示前缀 * @returns 错误信息,通过则返回 null */ -export function validateTriggerCondition( - condition: TriggerCondition, - path: string -): string | null { +export function validateTriggerCondition(condition: TriggerCondition, path: string): string | null { if (!condition.type) { return `${path}: 条件类型不能为空` } diff --git a/src/views/mall/promotion/combination/activity/CombinationActivityForm.vue b/src/views/mall/promotion/combination/activity/CombinationActivityForm.vue index 5b6e582ba..70e95649c 100644 --- a/src/views/mall/promotion/combination/activity/CombinationActivityForm.vue +++ b/src/views/mall/promotion/combination/activity/CombinationActivityForm.vue @@ -135,7 +135,11 @@ const open = async (type: string, id?: number) => { const data = (await CombinationActivityApi.getCombinationActivity( id )) as CombinationActivityApi.CombinationActivityVO - await getSpuDetails(data.spuId!, data.products?.map((sku) => sku.skuId), data.products) + await getSpuDetails( + data.spuId!, + data.products?.map((sku) => sku.skuId), + data.products + ) formRef.value.setValues(data) } finally { formLoading.value = false diff --git a/src/views/mall/promotion/seckill/activity/SeckillActivityForm.vue b/src/views/mall/promotion/seckill/activity/SeckillActivityForm.vue index 486b71dda..cb36226df 100644 --- a/src/views/mall/promotion/seckill/activity/SeckillActivityForm.vue +++ b/src/views/mall/promotion/seckill/activity/SeckillActivityForm.vue @@ -144,7 +144,11 @@ const open = async (type: string, id?: number) => { const data = (await SeckillActivityApi.getSeckillActivity( id )) as SeckillActivityApi.SeckillActivityVO - await getSpuDetails(data.spuId!, data.products?.map((sku) => sku.skuId), data.products) + await getSpuDetails( + data.spuId!, + data.products?.map((sku) => sku.skuId), + data.products + ) formRef.value.setValues(data) } finally { formLoading.value = false diff --git a/src/views/mall/trade/config/index.vue b/src/views/mall/trade/config/index.vue index 5d4955d37..490b97b5f 100644 --- a/src/views/mall/trade/config/index.vue +++ b/src/views/mall/trade/config/index.vue @@ -114,7 +114,9 @@ - 分销海报图片,按上传顺序从左往右依次为个人分享海报商品推广海报拼团推广海报 + 分销海报图片,按上传顺序从左往右依次为个人分享海报商品推广海报拼团推广海报 diff --git a/src/views/mall/trade/order/form/OrderPickUpForm.vue b/src/views/mall/trade/order/form/OrderPickUpForm.vue index ccc6c1db9..444de364d 100644 --- a/src/views/mall/trade/order/form/OrderPickUpForm.vue +++ b/src/views/mall/trade/order/form/OrderPickUpForm.vue @@ -54,10 +54,10 @@ const orderDetails = ref({}) /** 打开弹窗 */ const open = async (pickUpVerifyCode: string) => { resetForm() - if(pickUpVerifyCode != null){ - formData.value.pickUpVerifyCode = pickUpVerifyCode; + if (pickUpVerifyCode != null) { + formData.value.pickUpVerifyCode = pickUpVerifyCode await getOrderByPickUpVerifyCode() - }else{ + } else { dialogVisible.value = true } } diff --git a/src/views/member/user/detail/UserAccountInfo.vue b/src/views/member/user/detail/UserAccountInfo.vue index fad174a86..237ce4155 100644 --- a/src/views/member/user/detail/UserAccountInfo.vue +++ b/src/views/member/user/detail/UserAccountInfo.vue @@ -70,8 +70,8 @@ withDefaults(defineProps<{ user: UserApi.UserVO; wallet: WalletApi.WalletVO; col justify-content: space-between; .el-descriptions__label { - width: 120px; display: block; + width: 120px; text-align: left; } diff --git a/src/views/member/user/detail/UserBasicInfo.vue b/src/views/member/user/detail/UserBasicInfo.vue index ac2dd2c76..fb6881ca1 100644 --- a/src/views/member/user/detail/UserBasicInfo.vue +++ b/src/views/member/user/detail/UserBasicInfo.vue @@ -163,8 +163,8 @@ withDefaults(defineProps<{ user: UserApi.UserVO; mode?: string }>(), { justify-content: space-between; .el-descriptions__label { - width: 120px; display: block; + width: 120px; text-align: left; } diff --git a/src/views/mes/dv/checkplan/CheckPlanMachineryList.vue b/src/views/mes/dv/checkplan/CheckPlanMachineryList.vue index 44563aabc..3fefdfaeb 100644 --- a/src/views/mes/dv/checkplan/CheckPlanMachineryList.vue +++ b/src/views/mes/dv/checkplan/CheckPlanMachineryList.vue @@ -17,7 +17,12 @@ - +