diff --git a/src/assets/icons/read-all.svg b/src/assets/icons/read-all.svg new file mode 100644 index 0000000..5f94c0f --- /dev/null +++ b/src/assets/icons/read-all.svg @@ -0,0 +1 @@ + diff --git a/src/assets/styles/main.scss b/src/assets/styles/main.scss index ab5e585..fade497 100644 --- a/src/assets/styles/main.scss +++ b/src/assets/styles/main.scss @@ -115,3 +115,16 @@ h4.subtitle { margin-right: 4px; margin-bottom: 2px; } + +/* 修复表格幻影省略号(2026-10-10):.ivu-table-cell 基础样式自带 text-overflow:ellipsis, + tooltip 列(.ivu-tooltip 行内块包装 + width:100%)与操作列(图标外包 Tooltip)未溢出也常显「...」。 + 恢复组件预期的块级/flex 渲染层级即可;内层 .ivu-table-cell-tooltip-content 的真省略号与 + 悬浮 tooltip 不受影响(已在 dev:mock 实测:短内容无省略号、长标题正常截断+悬浮提示)。 */ +/* 两条同为 3 类特异性(0,3,0):后者居后胜出 → tooltip 列(.ivu-table-cell-tooltip)最终 flex + (组件预期布局),操作列裸 .ivu-tooltip 包装取 block。 */ +.ivu-table .ivu-table-cell > .ivu-tooltip { + display: block; +} +.ivu-table .ivu-table-cell > .ivu-table-cell-tooltip { + display: flex; +} diff --git a/src/components/NoticeUpload.vue b/src/components/NoticeUpload.vue index 56032b2..28d9b1e 100644 --- a/src/components/NoticeUpload.vue +++ b/src/components/NoticeUpload.vue @@ -92,16 +92,18 @@ export default { display: block; .upload-row { display: flex; - align-items: center; + align-items: flex-start; /* 提示语与按钮首行对齐(列表换行后不再垂直居中整块) */ } :deep(.ivu-upload) { display: inline-flex; + flex-wrap: wrap; /* 允许内部列表换行 */ align-items: center; } /* 文件列表整体另起一行,每项独占一行,不再与按钮挤在一起 */ :deep(.ivu-upload-list) { display: block; - margin-top: 8px; + width: 100%; /* 文件列表整体独占下一行 */ + margin-top: 4px; } :deep(.ivu-upload-list-file) { padding: 4px 0; @@ -110,7 +112,7 @@ export default { margin-left: 10px; color: #f90; font-size: 12px; - line-height: 1; + line-height: 32px; /* 与默认 Button 等高,紧贴按钮右侧 */ } } diff --git a/src/types/notice.ts b/src/types/notice.ts index fa3fc77..6d74906 100644 --- a/src/types/notice.ts +++ b/src/types/notice.ts @@ -64,6 +64,10 @@ export interface NoticeVo { smsFlag: number; /** 接收人列表(JSON) */ receiveList: string | null; + /** 附件ID串("1,2,3";后端 Lombok 序列化名为 upFile,对齐旧 .NET UpFile 语义) */ + upFile?: string | null; + /** @deprecated 旧 .NET 接口的 PascalCase 附件字段,仅作读取兼容 */ + UpFile?: string | null; createBy: string | null; createTime: string | null; updateBy: string | null; diff --git a/src/utils/index.ts b/src/utils/index.ts index bdf6523..89b558d 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -100,7 +100,7 @@ export default class Utils { "div", { class: `operating-btn iconfont ${iconClass}`, - onClick: callback, + onClick: disabled ? null : callback, }, null, ), diff --git a/src/views/notice/NoticeAccept.vue b/src/views/notice/NoticeAccept.vue index 4209eca..840044b 100644 --- a/src/views/notice/NoticeAccept.vue +++ b/src/views/notice/NoticeAccept.vue @@ -5,6 +5,7 @@ import { Message, Tooltip } from "view-ui-plus"; import { noticeApi } from "@/api/module/notice"; import type { NoticeDetailVo, NoticeQuery, NoticeVo, NoticePageResult } from "@/types/notice"; import FilePreviewModal from "@/components/FilePreviewModal.vue"; +import SvgIcon from "@/components/SvgIcon.vue"; import Utils from "@/utils"; /* ============ 左侧列表 ============ */ @@ -111,7 +112,7 @@ function openPreview(item: { name?: string; filename?: string; fileid?: number; }; } -/* 附件图标(按扩展名,图标名对齐旧版 matchSuffix → icon-word/excel/ppt/pdf1/txt/tupian1/yasuo/weizhi) */ +/* 附件图标(按扩展名,图标名对齐旧版 matchSuffix → icon-word/excel/ppt/pdf1/txt/tupian/yasuo/weizhi) */ function getFileIcon(name: string) { const suffix = String(name || "").split(".").pop()?.toLowerCase() || ""; if (["doc", "docx", "wps"].includes(suffix)) return "icon-word"; @@ -119,7 +120,8 @@ function getFileIcon(name: string) { if (["ppt", "pptx"].includes(suffix)) return "icon-ppt"; if (["pdf"].includes(suffix)) return "icon-pdf1"; if (["txt"].includes(suffix)) return "icon-txt"; - if (["jpg", "jpeg", "png", "gif", "bmp"].includes(suffix)) return "icon-tupian1"; + // 平台 icons.css 的 icon-tupian 是线性「图片」图标;icon-tupian1 是旧彩色图转单色,看不出是图片 + if (["jpg", "jpeg", "png", "gif", "bmp"].includes(suffix)) return "icon-tupian"; if (["zip", "rar"].includes(suffix)) return "icon-yasuo"; return "icon-weizhi"; } @@ -171,7 +173,7 @@ function shortDate(date: string) {
未读{{ page.unreadCount || 0 }}条 - +
-

来源:{{ detail.DeptName }}

-

发布人:{{ detail.TeaName }}

-

发布时间:{{ detail.EditDate }}

+

来源:{{ detail.DeptName }}

+

发布人:{{ detail.TeaName }}

+

发布时间:{{ detail.EditDate }}

- 附件:{{ (detail.ChaoSend || []).length }}个 + 附件:{{ (detail.ChaoSend || []).length }}个 全部下载

@@ -306,12 +308,6 @@ function shortDate(date: string) { } .clear-icon { cursor: pointer; - font-size: 18px; - color: var(--text-3); - transition: color 0.15s; - &:hover { - color: var(--brand); - } } } .search-box { @@ -443,6 +439,13 @@ function shortDate(date: string) { p { margin: 0; } + /* 标签两端撑开:冒号纵向对齐、值从同一列起(宽度取「发布时间」4 字) */ + .meta-label { + display: inline-block; + width: 4em; + text-align: justify; + text-align-last: justify; + } .to-file { margin-left: 8px; color: var(--brand); diff --git a/src/views/notice/NoticeCc.vue b/src/views/notice/NoticeCc.vue index 7bd26b7..d6102f5 100644 --- a/src/views/notice/NoticeCc.vue +++ b/src/views/notice/NoticeCc.vue @@ -1,34 +1,26 @@