diff --git a/src/assets/svg-icon/library-tabs/catalog-active.svg b/src/assets/svg-icon/library-tabs/catalog-active.svg new file mode 100644 index 0000000..7c9863d --- /dev/null +++ b/src/assets/svg-icon/library-tabs/catalog-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/catalog-default.svg b/src/assets/svg-icon/library-tabs/catalog-default.svg new file mode 100644 index 0000000..bf5c569 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/catalog-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/device-active.svg b/src/assets/svg-icon/library-tabs/device-active.svg new file mode 100644 index 0000000..5a34889 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/device-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/device-default.svg b/src/assets/svg-icon/library-tabs/device-default.svg new file mode 100644 index 0000000..f6ce32c --- /dev/null +++ b/src/assets/svg-icon/library-tabs/device-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/process-active.svg b/src/assets/svg-icon/library-tabs/process-active.svg new file mode 100644 index 0000000..596b1cb --- /dev/null +++ b/src/assets/svg-icon/library-tabs/process-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/process-default.svg b/src/assets/svg-icon/library-tabs/process-default.svg new file mode 100644 index 0000000..6e557aa --- /dev/null +++ b/src/assets/svg-icon/library-tabs/process-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/qualification-active.svg b/src/assets/svg-icon/library-tabs/qualification-active.svg new file mode 100644 index 0000000..7e4b4bb --- /dev/null +++ b/src/assets/svg-icon/library-tabs/qualification-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/qualification-default.svg b/src/assets/svg-icon/library-tabs/qualification-default.svg new file mode 100644 index 0000000..c052589 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/qualification-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/risk-active.svg b/src/assets/svg-icon/library-tabs/risk-active.svg new file mode 100644 index 0000000..bd54c5b --- /dev/null +++ b/src/assets/svg-icon/library-tabs/risk-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/risk-default.svg b/src/assets/svg-icon/library-tabs/risk-default.svg new file mode 100644 index 0000000..369f391 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/risk-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/rule-active.svg b/src/assets/svg-icon/library-tabs/rule-active.svg new file mode 100644 index 0000000..8669964 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/rule-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/rule-default.svg b/src/assets/svg-icon/library-tabs/rule-default.svg new file mode 100644 index 0000000..e4bb139 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/rule-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/standard-active.svg b/src/assets/svg-icon/library-tabs/standard-active.svg new file mode 100644 index 0000000..4d608c4 --- /dev/null +++ b/src/assets/svg-icon/library-tabs/standard-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/library-tabs/standard-default.svg b/src/assets/svg-icon/library-tabs/standard-default.svg new file mode 100644 index 0000000..e79071c --- /dev/null +++ b/src/assets/svg-icon/library-tabs/standard-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/menu/ai-read.svg b/src/assets/svg-icon/menu/ai-read.svg new file mode 100644 index 0000000..086b87a --- /dev/null +++ b/src/assets/svg-icon/menu/ai-read.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/menu/ai-review.svg b/src/assets/svg-icon/menu/ai-review.svg index a967ebb..a09258d 100644 --- a/src/assets/svg-icon/menu/ai-review.svg +++ b/src/assets/svg-icon/menu/ai-review.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/assets/svg-icon/menu/library.svg b/src/assets/svg-icon/menu/library.svg index 09f2517..d777a36 100644 --- a/src/assets/svg-icon/menu/library.svg +++ b/src/assets/svg-icon/menu/library.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/svg-icon/menu/resource-library.svg b/src/assets/svg-icon/menu/resource-library.svg new file mode 100644 index 0000000..d777a36 --- /dev/null +++ b/src/assets/svg-icon/menu/resource-library.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/menu/smart-proposal.svg b/src/assets/svg-icon/menu/smart-proposal.svg index 35cc9a5..387c00d 100644 --- a/src/assets/svg-icon/menu/smart-proposal.svg +++ b/src/assets/svg-icon/menu/smart-proposal.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/components/custom/file-upload-button.vue b/src/components/custom/file-upload-button.vue index 032b782..a464cbf 100644 --- a/src/components/custom/file-upload-button.vue +++ b/src/components/custom/file-upload-button.vue @@ -189,7 +189,10 @@ function triggerUpload() { const el = uploadInstRef.value?.$el; if (el) { const input = el.querySelector('input[type="file"]') as HTMLInputElement; - input?.click(); + if (input) { + input.value = ''; + input.click(); + } } } diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 3025350..daefdd2 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -45,7 +45,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'layout.base', meta: { title: 'ai-assistant', - i18nKey: 'route.ai-assistant' + i18nKey: 'route.ai-assistant', + localIcon: 'menu-ai-read' }, children: [ { @@ -54,7 +55,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'view.ai-assistant_ai-read', meta: { title: 'ai-assistant_ai-read', - i18nKey: 'route.ai-assistant_ai-read' + i18nKey: 'route.ai-assistant_ai-read', + localIcon: 'menu-ai-read' } } ] @@ -65,7 +67,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'layout.base', meta: { title: 'ai-review', - i18nKey: 'route.ai-review' + i18nKey: 'route.ai-review', + localIcon: 'menu-ai-review' }, children: [ { @@ -73,7 +76,8 @@ export const generatedRoutes: GeneratedRoute[] = [ path: '/ai-review/tech-proposal', meta: { title: 'ai-review_tech-proposal', - i18nKey: 'route.ai-review_tech-proposal' + i18nKey: 'route.ai-review_tech-proposal', + localIcon: 'menu-ai-review' }, children: [ { @@ -186,6 +190,42 @@ export const generatedRoutes: GeneratedRoute[] = [ ] } ] + }, + { + name: 'ai-review_tech-proposal-redesign_content-check', + path: '/ai-review/tech-proposal-redesign/content-check', + component: 'view.ai-review_tech-proposal-redesign_content-check', + meta: { + title: 'ai-review_tech-proposal-redesign_content-check', + i18nKey: 'route.ai-review_tech-proposal-redesign_content-check' + } + }, + { + name: 'ai-review_tech-proposal-redesign_regular-analysis', + path: '/ai-review/tech-proposal-redesign/regular-analysis', + component: 'view.ai-review_tech-proposal-redesign_regular-analysis', + meta: { + title: 'ai-review_tech-proposal-redesign_regular-analysis', + i18nKey: 'route.ai-review_tech-proposal-redesign_regular-analysis' + } + }, + { + name: 'ai-review_tech-proposal-redesign_responsive-check', + path: '/ai-review/tech-proposal-redesign/responsive-check', + component: 'view.ai-review_tech-proposal-redesign_responsive-check', + meta: { + title: 'ai-review_tech-proposal-redesign_responsive-check', + i18nKey: 'route.ai-review_tech-proposal-redesign_responsive-check' + } + }, + { + name: 'ai-review_tech-proposal-redesign_reupload', + path: '/ai-review/tech-proposal-redesign/reupload', + component: 'view.ai-review_tech-proposal-redesign_reupload', + meta: { + title: 'ai-review_tech-proposal-redesign_reupload', + i18nKey: 'route.ai-review_tech-proposal-redesign_reupload' + } } ] }, @@ -195,7 +235,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'view.ai-review_tech-proposal-redesign', meta: { title: 'ai-review_tech-proposal-redesign', - i18nKey: 'route.ai-review_tech-proposal-redesign' + i18nKey: 'route.ai-review_tech-proposal-redesign', + localIcon: 'menu-ai-review' }, children: [ { @@ -274,7 +315,7 @@ export const generatedRoutes: GeneratedRoute[] = [ meta: { title: 'home', i18nKey: 'route.home', - icon: 'mdi:monitor-dashboard', + localIcon: 'menu-dashboard', order: 1 } }, @@ -306,7 +347,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'layout.base', meta: { title: 'library', - i18nKey: 'route.library' + i18nKey: 'route.library', + localIcon: 'menu-library' }, children: [ { @@ -333,7 +375,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'view.library_resource-library', meta: { title: 'library_resource-library', - i18nKey: 'route.library_resource-library' + i18nKey: 'route.library_resource-library', + localIcon: 'menu-resource-library' } }, { @@ -470,7 +513,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'layout.base', meta: { title: 'smart-proposal', - i18nKey: 'route.smart-proposal' + i18nKey: 'route.smart-proposal', + localIcon: 'menu-smart-proposal' }, children: [ { @@ -479,7 +523,8 @@ export const generatedRoutes: GeneratedRoute[] = [ component: 'view.smart-proposal_tech-proposal', meta: { title: 'smart-proposal_tech-proposal', - i18nKey: 'route.smart-proposal_tech-proposal' + i18nKey: 'route.smart-proposal_tech-proposal', + localIcon: 'menu-smart-proposal' }, children: [ { diff --git a/src/views/ai-review/tech-proposal-redesign/index.vue b/src/views/ai-review/tech-proposal-redesign/index.vue index c58f05a..4d006bb 100644 --- a/src/views/ai-review/tech-proposal-redesign/index.vue +++ b/src/views/ai-review/tech-proposal-redesign/index.vue @@ -1,5 +1,5 @@ @@ -516,6 +723,7 @@ onMounted(async () => { type="button" @click="switchLibrary(tab.key)" > + {{ tab.label }} @@ -524,8 +732,66 @@ onMounted(async () => {

{{ heroTitle }}

-
- +
+
+ +
+
+
+ + + +
+ +
+
+ +
+
{ 下载模版

- - -
- - - - - - -
-
-
+
{ clearable @input="refreshCurrentList" /> - - 新增规则 -
@@ -814,6 +1139,9 @@ onMounted(async () => { .resource-tab { min-width: 86px; height: 38px; + display: inline-flex; + align-items: center; + justify-content: center; border: 0; border-radius: 999px; background: transparent; @@ -823,24 +1151,22 @@ onMounted(async () => { font-weight: 700; cursor: pointer; - &::before { - content: '▣'; - margin-right: 6px; - color: #7f8792; - font-size: 12px; - } - &.active { background: #fff; color: #222; box-shadow: 0 6px 16px rgba(20, 24, 35, 0.1); - - &::before { - color: #ff8a1f; - } } } +.resource-tab-icon { + width: 18px; + height: 18px; + display: block; + margin-right: 8px; + flex: 0 0 18px; + object-fit: contain; +} + .resource-hero { margin: 0 0 22px; text-align: center; @@ -865,6 +1191,101 @@ onMounted(async () => { box-shadow: 0 34px 70px rgba(23, 28, 42, 0.08); } +.resource-rule-library { + width: min(760px, 100%); + margin: 0 auto 12px; +} + +.resource-rule-source-switch { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + margin-bottom: 10px; +} + +.resource-rule-source-card { + min-height: 72px; + border: 1px solid #dfe6f0; + border-radius: 10px; + background: #fff; + padding: 12px 14px; + text-align: left; + cursor: pointer; + transition: + border-color 0.16s ease, + background 0.16s ease, + box-shadow 0.16s ease; + + strong { + display: block; + margin-bottom: 6px; + color: #1f2a3d; + font-size: 18px; + line-height: 1.2; + } + + p { + margin: 0; + color: #6f7c90; + font-size: 12px; + line-height: 1.35; + } + + &.active { + border-color: #ffcc92; + background: #fff9f1; + box-shadow: inset 0 0 0 1px rgba(255, 157, 35, 0.18); + } +} + +.resource-rule-filter-bar { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + gap: 8px; + border: 1px solid #dfe6f0; + border-radius: 10px; + background: #f7f9fc; + padding: 10px; +} + +.resource-rule-filter-left { + display: grid; + grid-template-columns: 1.2fr 0.7fr 0.7fr; + gap: 8px; + + &.custom { + grid-template-columns: 1fr; + } +} + +.resource-rule-add { + width: 30px; + height: 30px; + border: 1px solid #ffcc92; + border-radius: 8px; + background: #fff5e8; + color: #d87a19; + padding: 0; + font-size: 18px; + font-weight: 700; + line-height: 1; + box-shadow: 0 4px 10px rgba(255, 141, 31, 0.16); + cursor: pointer; + + &:hover { + background: #ffedd7; + } +} + +:deep(.resource-rule-filter-bar .n-input), +:deep(.resource-rule-filter-bar .n-base-selection) { + --n-height: 32px !important; + --n-border-radius: 8px !important; + --n-font-size: 12px !important; + background: #fff; +} + .resource-fields { display: grid; grid-template-columns: repeat(2, 1fr); @@ -1013,6 +1434,53 @@ onMounted(async () => { padding-bottom: 30px; } +.resource-rule-library + .n-spin-body, +.resource-rule-library ~ .n-spin .template-category-grid { + width: min(760px, 100%); +} + +.rule-card { + min-height: 92px; + border-radius: 10px; + padding: 11px 12px 10px 34px; + + strong { + margin-bottom: 6px; + font-size: 12px; + } + + p { + margin-bottom: 4px; + font-size: 12px; + line-height: 1.35; + } + + &.rule-card-custom { + min-height: 110px; + } + + &.is-locked { + border-color: #f3d0d0; + } +} + +.rule-lock-state { + min-height: auto !important; + margin: 4px 0 0 !important; + color: #758197 !important; + font-size: 12px !important; + + em { + color: #c9781f; + font-style: normal; + font-weight: 700; + } +} + +.rule-card.is-locked .rule-lock-state em { + color: #c05050; +} + .template-card { position: relative; min-height: 102px; @@ -1116,6 +1584,12 @@ onMounted(async () => { transform: translateY(-1px); } + &:disabled { + color: rgba(255, 186, 108, 0.52); + cursor: not-allowed; + transform: none; + } + &:last-child:hover { background: rgba(240, 107, 134, 0.2); color: #ffb4c2; @@ -1182,9 +1656,9 @@ onMounted(async () => { :global(.resource-result-drawer .outline-row) { min-height: 56px; display: grid; - grid-template-columns: 1fr auto; + grid-template-columns: minmax(0, 1fr) 210px; align-items: center; - gap: 24px; + column-gap: 20px; padding: 0 28px; border-bottom: 1px solid #eceef2; color: #2f3745; @@ -1200,7 +1674,11 @@ onMounted(async () => { :global(.resource-result-drawer .outline-row span) { position: relative; + min-width: 0; padding-left: 16px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } :global(.resource-result-drawer .outline-row span::before) { @@ -1231,28 +1709,44 @@ onMounted(async () => { } :global(.resource-result-drawer .outline-actions) { - display: flex; + width: 210px; + display: grid; + grid-template-columns: 64px 64px 44px; align-items: center; - gap: 14px; + justify-content: end; + justify-items: center; + column-gap: 12px; white-space: nowrap; } -:global(.resource-result-drawer .outline-actions .n-button) { - --n-text-color: #ff8a1f !important; - --n-text-color-hover: #ff6f1d !important; - --n-text-color-pressed: #ff6f1d !important; - --n-color-hover: transparent !important; - --n-color-pressed: transparent !important; - min-width: auto; - height: auto; +:global(.resource-result-drawer .outline-action-btn) { + width: 100%; + height: 28px; + border: 0; + border-radius: 6px; + background: transparent; + color: #ff7b19; padding: 0; font-size: 13px; font-weight: 700; + text-align: center; + cursor: pointer; + transition: + background 0.16s ease, + color 0.16s ease; } -:global(.resource-result-drawer .outline-actions .n-button:last-child) { - --n-text-color: #ff6f1d !important; - --n-text-color-hover: #ff4d00 !important; +:global(.resource-result-drawer .outline-action-btn:hover) { + background: rgba(255, 138, 31, 0.1); + color: #ff5f00; +} + +:global(.resource-result-drawer .outline-action-btn.danger) { + color: #ff4d00; +} + +:global(.resource-result-drawer .outline-action-btn.danger:hover) { + background: rgba(255, 77, 0, 0.1); } :global(.resource-result-drawer .n-drawer-header) { @@ -1283,6 +1777,173 @@ onMounted(async () => { border: 0; } +:global(.rule-detail-drawer) { + width: min(640px, 100vw) !important; + border-left: 1px solid #dde2ec; + box-shadow: -8px 0 22px rgba(17, 24, 39, 0.1); +} + +:global(.rule-detail-drawer .n-drawer-header) { + height: 50px; + padding: 0 24px !important; + border-bottom: 1px solid #edf0f5 !important; +} + +:global(.rule-detail-drawer .n-drawer-header__main) { + color: #111827; + font-size: 18px; + font-weight: 800; +} + +:global(.rule-detail-drawer .n-drawer-header__close) { + width: 22px; + height: 22px; + border-radius: 6px; + background: #e6e7ea; + color: #777d86; +} + +:global(.rule-detail-drawer .n-drawer-body-content-wrapper) { + padding: 16px 24px !important; +} + +:global(.rule-detail-drawer .n-drawer-footer) { + height: 70px; + padding: 0 24px !important; + border-top: 1px solid #edf0f5; +} + +:global(.rule-detail-drawer .n-drawer-footer .n-button:first-child) { + min-width: 56px; + height: 34px; + border-color: #d8dde8; + border-radius: 8px; + background: #fff; + color: #4b5563; +} + +:global(.rule-detail-drawer .n-drawer-footer .n-button:not(:first-child)) { + min-width: 72px; + height: 34px; + border: 0; + border-radius: 8px; + background: linear-gradient(180deg, #ff9f22 0%, #ff8614 100%); + color: #fff; + font-weight: 700; +} + +:global(.rule-detail-panel) { + display: grid; + gap: 12px; +} + +:global(.rule-detail-panel .n-form-item) { + margin-bottom: 0; +} + +:global(.rule-detail-panel .n-form-item-label) { + min-height: auto; + padding: 0 0 6px !important; + color: #4b5563; + font-size: 13px; + font-weight: 700; +} + +:global(.rule-detail-panel .required-mark .n-form-item-label::after) { + content: ' *'; + color: #ff7d1f; +} + +:global(.rule-detail-panel .n-input), +:global(.rule-detail-panel .n-base-selection) { + --n-height: 36px !important; + --n-border: 1px solid #d8dde8 !important; + --n-border-hover: 1px solid #d8dde8 !important; + --n-border-focus: 1px solid #ffcc92 !important; + --n-border-radius: 8px !important; + --n-box-shadow-focus: 0 0 0 2px rgba(255, 138, 31, 0.12) !important; +} + +:global(.rule-detail-kind) { + height: 34px; + display: flex; + align-items: center; + border: 1px solid #e2d4c2; + border-radius: 8px; + background: #fffaf2; + padding: 0 10px; +} + +:global(.rule-detail-kind-tag) { + height: 24px; + display: inline-flex; + align-items: center; + border-radius: 7px; + background: #fff0df; + color: #c56d1b; + padding: 0 10px; + font-size: 12px; + font-style: normal; +} + +:global(.rule-detail-name-shell) { + position: relative; + width: 100%; +} + +:global(.rule-detail-name-shell .n-input__input-el) { + padding-right: 72px; +} + +:global(.rule-detail-name-count) { + position: absolute; + right: 10px; + top: 50%; + color: #8e96a3; + font-size: 12px; + font-style: normal; + transform: translateY(-50%); + pointer-events: none; +} + +:global(.rule-detail-config-block .n-form-item-blank) { + display: block; +} + +:global(.rule-detail-config-box) { + min-height: 46px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + border: 1px solid #dbe4f2; + border-radius: 9px; + background: #f9fbff; + padding: 0 10px; +} + +:global(.rule-detail-config-status) { + color: #52607a; + font-size: 13px; + font-weight: 600; +} + +:global(.rule-detail-view-rules) { + height: 30px; + border: 1px solid #7da2f2; + border-radius: 8px; + background: #f3f7ff; + color: #285fd8; + padding: 0 12px; + font-size: 13px; + font-weight: 700; + cursor: pointer; +} + +:global(.rule-detail-view-rules:hover) { + background: #eaf1ff; +} + @media (max-width: 900px) { .resource-tabs { width: 100%; @@ -1292,6 +1953,8 @@ onMounted(async () => { .resource-fields, .rule-fields, + .resource-rule-source-switch, + .resource-rule-filter-left, .template-category-grid { grid-template-columns: 1fr; } diff --git a/src/views/smart-proposal/tech-proposal/document-edit/index.vue b/src/views/smart-proposal/tech-proposal/document-edit/index.vue index 29fc514..0722efb 100644 --- a/src/views/smart-proposal/tech-proposal/document-edit/index.vue +++ b/src/views/smart-proposal/tech-proposal/document-edit/index.vue @@ -13,6 +13,7 @@ import { startGenerateDocument, updateTechProposal } from '@/service/api/tech-proposal'; +import { useAppStore } from '@/store/modules/app'; import { useRouterPush } from '@/hooks/common/router'; import { localStg } from '@/utils/storage'; import ImportModal from '../modules/import-modal.vue'; @@ -67,8 +68,24 @@ interface DocConvertManifestPart { } const route = useRoute(); +const appStore = useAppStore(); const { routerBack, routerPushByKey } = useRouterPush(); const isViewMode = computed(() => route.query.mode === 'view'); +const didEnableFullContent = ref(false); + +function enterFullContent() { + if (!appStore.fullContent) { + appStore.toggleFullContent(); + didEnableFullContent.value = true; + } +} + +function restoreFullContent() { + if (didEnableFullContent.value && appStore.fullContent) { + appStore.toggleFullContent(); + } + didEnableFullContent.value = false; +} // 从路由获取方案ID const proposalId = ref(Number(route.query.id || route.params.id || 0)); @@ -1883,6 +1900,7 @@ const loadProposalInfo = async () => { // 页面加载时检查是否已有生成的文档 onMounted(() => { + enterFullContent(); loadProposalInfo(); checkExistingDocument(); if (!isViewMode.value) { @@ -1898,6 +1916,7 @@ onMounted(() => { }); onActivated(() => { + enterFullContent(); if (!isViewMode.value) { previewContainerRef.value?.removeEventListener('click', handlePreviewClick); previewContainerRef.value?.addEventListener('click', handlePreviewClick); @@ -1919,6 +1938,7 @@ onActivated(() => { }); onDeactivated(() => { + restoreFullContent(); const container = previewContainerRef.value; if (container) { container.removeEventListener('scroll', handleScroll); @@ -1938,6 +1958,7 @@ onDeactivated(() => { // 组件卸载时清理滚动监听 onUnmounted(() => { + restoreFullContent(); const container = previewContainerRef.value; if (container) { container.removeEventListener('scroll', handleScroll); @@ -1969,12 +1990,16 @@ onUnmounted(() => {
@@ -2204,7 +2229,7 @@ onUnmounted(() => { - + {