From 5884a3125c8a77cfe1b5f93d3ded90c22ee76c22 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Tue, 16 Dec 2025 22:22:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BE=85=E5=8A=9E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/biz/entity/BizCalendarFlow.java | 2 +- .../modules/biz/entity/BizListItem.java | 25 +++- .../modules/biz/entity/BizMailReceived.java | 2 +- .../biz/web/BizListItemController.java | 4 +- web-vue/packages/biz/api/biz/listItem.ts | 1 + .../packages/biz/views/biz/listItem/form.vue | 24 ++- .../packages/biz/views/biz/listItem/list.vue | 9 -- .../packages/biz/views/biz/mailInfo/index.vue | 6 +- .../account/form.vue | 0 .../account/formImport.vue | 0 .../account/list.vue | 0 .../biz/views/biz/settingInfo/index.vue | 32 ++++ .../biz/{ => settingInfo}/quickLogin/form.vue | 0 .../biz/{ => settingInfo}/quickLogin/list.vue | 0 .../header/components/notify/NoticeInfo.vue | 10 +- .../desktop/analysis/components/BizApps.vue | 137 ++++++++++++++++++ .../analysis/components/DynamicInfo.vue | 2 +- .../analysis/components/ProjectCard.vue | 3 - .../analysis/components/WarningAlert.vue | 135 ++++++++++++++++- .../analysis/components/info/WarningInfo.vue | 2 - .../layouts/views/desktop/analysis/index.vue | 129 +---------------- .../workbench/components/listItem/form.vue | 8 +- .../workbench/components/listItem/list.vue | 14 +- 23 files changed, 374 insertions(+), 171 deletions(-) rename web-vue/packages/biz/views/biz/{mailInfo => settingInfo}/account/form.vue (100%) rename web-vue/packages/biz/views/biz/{mailInfo => settingInfo}/account/formImport.vue (100%) rename web-vue/packages/biz/views/biz/{mailInfo => settingInfo}/account/list.vue (100%) create mode 100644 web-vue/packages/biz/views/biz/settingInfo/index.vue rename web-vue/packages/biz/views/biz/{ => settingInfo}/quickLogin/form.vue (100%) rename web-vue/packages/biz/views/biz/{ => settingInfo}/quickLogin/list.vue (100%) create mode 100644 web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCalendarFlow.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCalendarFlow.java index 1536e69a..91ae0514 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCalendarFlow.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCalendarFlow.java @@ -34,7 +34,7 @@ import java.io.Serial; @Column(name = "operation_type", attrName = "operationType", label = "操作类型", isQuery = false), @Column(name = "status_name", attrName = "statusName", label = "操作状态", isQuery = false), @Column(name = "flow_content", attrName = "flowContent", label = "流程内容", isQuery = false), -}, orderBy = "a.calendar_flow_id DESC" +}, orderBy = "a.create_time DESC" ) @Data public class BizCalendarFlow extends DataEntity implements Serializable { diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java index 74760e65..a57efcd6 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java @@ -37,12 +37,13 @@ import java.io.Serial; @Column(name = "avatar", attrName = "avatar", label = "头像图标", isUpdate = false, isUpdateForce = true), @Column(name = "title", attrName = "title", label = "通知标题", queryType = QueryType.LIKE), @Column(name = "title_delete", attrName = "titleDelete", label = "是否删除"), - @Column(name = "datetime", attrName = "datetime", label = "发送时间", isQuery = false), + @Column(name = "datetime", attrName = "datetime", label = "发送时间"), @Column(name = "type", attrName = "type", label = "类型标识"), @Column(name = "read_flag", attrName = "readFlag", label = "是否已读"), @Column(name = "description", attrName = "description", label = "描述信息", isQuery = false), @Column(name = "click_close", attrName = "clickClose", label = "是否关闭"), @Column(name = "extra", attrName = "extra", label = "待办状态"), + @Column(name = "extra_desc", attrName = "extraDesc", label = "待办意见"), @Column(name = "color", attrName = "color", label = "颜色值", isQuery = false), @Column(name = "update_time", attrName = "updateTime", label = "更新时间", isQuery = false), @Column(name = "login_user", attrName = "loginUser", label = "接收用户"), @@ -69,6 +70,7 @@ public class BizListItem extends DataEntity implements Serializable private String description; // 描述信息 private String clickClose; // 是否关闭 private String extra; // 待办状态 + private String extraDesc; //待办意见 private String color; // 颜色值 private Date updateTime; // 更新时间 private String loginUser; @@ -82,15 +84,15 @@ public class BizListItem extends DataEntity implements Serializable @ExcelFields({ @ExcelField(title = "创建时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), @ExcelField(title = "唯一标识", attrName = "id", align = Align.CENTER, sort = 20), - @ExcelField(title = "头像图标", attrName = "avatar", align = Align.CENTER, sort = 30), @ExcelField(title = "通知标题", attrName = "title", align = Align.CENTER, sort = 40), - @ExcelField(title = "是否删除", attrName = "titleDelete", align = Align.CENTER, sort = 50), - @ExcelField(title = "发送时间", attrName = "datetime", align = Align.CENTER, sort = 60, dataFormat = "yyyy-MM-dd"), - @ExcelField(title = "类型标识", attrName = "type", align = Align.CENTER, sort = 70), - @ExcelField(title = "是否已读", attrName = "readFlag", align = Align.CENTER, sort = 80), + @ExcelField(title = "是否删除", attrName = "titleDelete", dictType = "is_open", align = Align.CENTER, sort = 50), + @ExcelField(title = "到期时间", attrName = "datetime", align = Align.CENTER, sort = 60, dataFormat = "yyyy-MM-dd"), + @ExcelField(title = "所属类型", attrName = "type", dictType = "msg_type", align = Align.CENTER, sort = 70), + @ExcelField(title = "是否已读", attrName = "readFlag", dictType = "is_open", align = Align.CENTER, sort = 80), @ExcelField(title = "描述信息", attrName = "description", align = Align.CENTER, sort = 90), - @ExcelField(title = "是否关闭", attrName = "clickClose", align = Align.CENTER, sort = 100), + @ExcelField(title = "是否关闭", attrName = "clickClose", dictType = "is_open", align = Align.CENTER, sort = 100), @ExcelField(title = "待办状态", attrName = "extra", align = Align.CENTER, sort = 110), + @ExcelField(title = "待办意见", attrName = "extraDesc", align = Align.CENTER, sort = 120), }) public BizListItem() { this(null); @@ -116,4 +118,13 @@ public class BizListItem extends DataEntity implements Serializable sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); } + + public Date getDateTime_gte() { + return sqlMap.getWhere().getValue("datetime", QueryType.GTE); + } + + public void setDateTime_gte(Date createTime) { + sqlMap.getWhere().and("datetime", QueryType.GTE, createTime); + } + } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailReceived.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailReceived.java index a6f5d349..939ce845 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailReceived.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailReceived.java @@ -52,7 +52,7 @@ import java.io.Serial; columns = { @Column(name = "account_name", attrName = "accountName", label = "配置名称"), }), -}, orderBy = "a.id DESC" +}, orderBy = "a.create_time DESC" ) @Data public class BizMailReceived extends DataEntity implements Serializable { diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java index e31034c7..e2cbdb7b 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java @@ -1,6 +1,7 @@ package com.jeesite.modules.biz.web; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -97,7 +98,7 @@ public class BizListItemController extends BaseController { @ResponseBody public String save(@Validated BizListItem bizListItem) { User user = UserUtils.getUser(); - if (bizListItem.getType().equals("3")){ + if (bizListItem.getType().equals("3")) { User loginUser = UserUtils.getByLoginCode(bizListItem.getLoginUser()); bizListItem.setUserName(loginUser.getUserName()); } @@ -178,6 +179,7 @@ public class BizListItemController extends BaseController { listItem.setClickClose("0"); listItem.setTitleDelete("0"); listItem.setType(type.getCode()); + listItem.setDateTime_gte(new Date()); if (type.getCode().equals("3")) { listItem.setLoginUser(user.getLoginCode()); } diff --git a/web-vue/packages/biz/api/biz/listItem.ts b/web-vue/packages/biz/api/biz/listItem.ts index 24f178f3..2df5eebc 100644 --- a/web-vue/packages/biz/api/biz/listItem.ts +++ b/web-vue/packages/biz/api/biz/listItem.ts @@ -23,6 +23,7 @@ export interface BizListItem extends BasicModel { description: string; // 描述信息 clickClose?: string; // 是否关闭 extra?: string; // 待办状态 + extraDesc?: string; // 待办意见 color?: string; // 颜色值 updateTime: string; // 更新时间 ftenantId?: string; // 租户id diff --git a/web-vue/packages/biz/views/biz/listItem/form.vue b/web-vue/packages/biz/views/biz/listItem/form.vue index 3fa22e98..7bb9a466 100644 --- a/web-vue/packages/biz/views/biz/listItem/form.vue +++ b/web-vue/packages/biz/views/biz/listItem/form.vue @@ -34,7 +34,7 @@ const { t } = useI18n('biz.listItem'); const { showMessage } = useMessage(); const { meta } = unref(router.currentRoute); - + const ustatus = ref('0'); const types = ref(''); const record = ref({} as BizListItem); @@ -88,6 +88,28 @@ required: true, colProps: { md: 24, lg: 24 }, }, + { + label: t('是否关闭'), + field: 'clickClose', + defaultValue: ustatus.value, + component: 'Select', + componentProps: { + dictType: 'is_open', + allowClear: true, + }, + required: true, + }, + { + label: t('是否删除'), + field: 'titleDelete', + defaultValue: ustatus.value, + component: 'Select', + componentProps: { + dictType: 'is_open', + allowClear: true, + }, + required: true, + }, { label: t('内容信息'), field: 'description', diff --git a/web-vue/packages/biz/views/biz/listItem/list.vue b/web-vue/packages/biz/views/biz/listItem/list.vue index 6f14d1b2..1004164e 100644 --- a/web-vue/packages/biz/views/biz/listItem/list.vue +++ b/web-vue/packages/biz/views/biz/listItem/list.vue @@ -185,14 +185,6 @@ width: 130, align: 'left', dictType: 'is_open', - }, - { - title: t('内容信息'), - dataIndex: 'description', - key: 'a.description', - sorter: true, - width: 225, - align: 'left', }, { title: t('接收用户'), @@ -256,7 +248,6 @@ confirm: handleDelete.bind(this, record), }, auth: 'biz:listItem:edit', - ifShow: record.clickClose == '9' }, ], }; diff --git a/web-vue/packages/biz/views/biz/mailInfo/index.vue b/web-vue/packages/biz/views/biz/mailInfo/index.vue index 8aec0bad..27380b67 100644 --- a/web-vue/packages/biz/views/biz/mailInfo/index.vue +++ b/web-vue/packages/biz/views/biz/mailInfo/index.vue @@ -10,9 +10,6 @@ - - - @@ -22,8 +19,7 @@ import MailSent from './sent/list.vue'; import MailReceived from './received/list.vue'; import MailAttachments from './attachments/list.vue'; - import MailAccount from './account/list.vue'; - + const activeKey = ref('1'); diff --git a/web-vue/packages/biz/views/biz/mailInfo/account/form.vue b/web-vue/packages/biz/views/biz/settingInfo/account/form.vue similarity index 100% rename from web-vue/packages/biz/views/biz/mailInfo/account/form.vue rename to web-vue/packages/biz/views/biz/settingInfo/account/form.vue diff --git a/web-vue/packages/biz/views/biz/mailInfo/account/formImport.vue b/web-vue/packages/biz/views/biz/settingInfo/account/formImport.vue similarity index 100% rename from web-vue/packages/biz/views/biz/mailInfo/account/formImport.vue rename to web-vue/packages/biz/views/biz/settingInfo/account/formImport.vue diff --git a/web-vue/packages/biz/views/biz/mailInfo/account/list.vue b/web-vue/packages/biz/views/biz/settingInfo/account/list.vue similarity index 100% rename from web-vue/packages/biz/views/biz/mailInfo/account/list.vue rename to web-vue/packages/biz/views/biz/settingInfo/account/list.vue diff --git a/web-vue/packages/biz/views/biz/settingInfo/index.vue b/web-vue/packages/biz/views/biz/settingInfo/index.vue new file mode 100644 index 00000000..ed6cad06 --- /dev/null +++ b/web-vue/packages/biz/views/biz/settingInfo/index.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/quickLogin/form.vue b/web-vue/packages/biz/views/biz/settingInfo/quickLogin/form.vue similarity index 100% rename from web-vue/packages/biz/views/biz/quickLogin/form.vue rename to web-vue/packages/biz/views/biz/settingInfo/quickLogin/form.vue diff --git a/web-vue/packages/biz/views/biz/quickLogin/list.vue b/web-vue/packages/biz/views/biz/settingInfo/quickLogin/list.vue similarity index 100% rename from web-vue/packages/biz/views/biz/quickLogin/list.vue rename to web-vue/packages/biz/views/biz/settingInfo/quickLogin/list.vue diff --git a/web-vue/packages/core/layouts/default/header/components/notify/NoticeInfo.vue b/web-vue/packages/core/layouts/default/header/components/notify/NoticeInfo.vue index 69cb6f4c..226b40c3 100644 --- a/web-vue/packages/core/layouts/default/header/components/notify/NoticeInfo.vue +++ b/web-vue/packages/core/layouts/default/header/components/notify/NoticeInfo.vue @@ -58,6 +58,7 @@ const [register, { closeModal }] = useModalInner(async (data: any) => { if (!data) return; NoticeList.value = Array.isArray(data) ? data[0] : data; + TodoValue.value = NoticeList.value.extraDesc|| ''; }); const getTypeText = (type: string) => { @@ -77,8 +78,8 @@ const params = { id: NoticeList.value?.id ?? '', - extra: TodoValue.value ?? {}, - readFlag: true, + extraDesc: TodoValue.value ?? {}, + readFlag: '1', }; try { const res = await bizListItemSflow(params); @@ -171,12 +172,11 @@ box-shadow: 0 1px 3px rgba(0,0,0,0.05); } - /* 数据库格式展示样式 - 优化字体和间距 */ .db-content { margin: 0; font-family: 'Consolas', 'Monaco', 'Courier New', monospace; - white-space: pre-wrap; /* 保留换行和空格 */ - word-break: break-all; /* 防止长文本溢出 */ + white-space: pre-wrap; + word-break: break-all; color: #333; } diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue new file mode 100644 index 00000000..0b0b27e1 --- /dev/null +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue @@ -0,0 +1,137 @@ + + + + + \ No newline at end of file diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/DynamicInfo.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/DynamicInfo.vue index e2289921..bfdba368 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/DynamicInfo.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/DynamicInfo.vue @@ -133,7 +133,7 @@ export default defineComponent({ /* 列表滚动容器 - 完全紧贴边缘 */ .dynamic-list-container { - height: 30vh; + height: 33vh; overflow-y: auto; padding: 4px 0; /* 仅保留上下内边距,左右为0 */ box-sizing: border-box; diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue index 8b203cbe..8699a412 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue @@ -46,15 +46,12 @@ import { defineComponent, onMounted, ref } from 'vue'; import { Card } from 'ant-design-vue'; import { Icon } from '@jeesite/core/components/Icon'; -import { useRouter } from 'vue-router'; import { BizProjectInfo, bizProjectInfoListAll } from '@jeesite/biz/api/biz/projectInfo'; export default defineComponent({ components: { Card, CardGrid: Card.Grid, Icon }, setup() { const listData = ref([]); - const router = useRouter(); - const getDataList = async () => { try { const params = { projectStatus: '2' }; diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/WarningAlert.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/WarningAlert.vue index 2043d595..d4d933ad 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/WarningAlert.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/WarningAlert.vue @@ -46,12 +46,35 @@ {{ item.triggerTime }} {{ item.alertType }} - - {{ item.alertTitle }} + + + + {{ item.alertTitle || '--' }} + + + + +
+
{{ fullContent }}
+
+
+ @@ -78,6 +101,35 @@ const statusOptions = ref([ ]); const currentStatus = ref('0'); // 默认选中未处理 +// 新增:预警标题悬浮提示相关 +const showContentTooltip = ref(false); +const fullContent = ref(''); +const tooltipTop = ref(0); +const tooltipLeft = ref(0); + +// 新增:显示完整标题 +const showFullContent = (content: string, event: MouseEvent) => { + // 内容为空或无截断时不显示提示 + if (!content) return; + + const target = event.target as HTMLElement; + // 判断内容是否被截断(容器宽度 < 内容宽度) + if (target.scrollWidth <= target.clientWidth) return; + + // 直接赋值原始内容,不做任何格式化处理 + fullContent.value = content; + // 定位提示框(鼠标位置偏移,避免遮挡鼠标) + tooltipTop.value = event.clientY + 10; + tooltipLeft.value = event.clientX + 10; + showContentTooltip.value = true; +}; + +// 新增:隐藏提示框 +const hideFullContent = () => { + showContentTooltip.value = false; + fullContent.value = ''; +}; + // 处理状态切换(新增方法) const handleStatusChange = (status: string) => { if (currentStatus.value === status) return; // 避免重复请求 @@ -176,12 +228,12 @@ onMounted(() => { /* 列表外层容器:移除边框 + 滚动核心样式 + 极致紧凑 */ .alert-list-container { width: 100%; - height: 35vh; /* 限制最大高度,超出滚动 */ + height: 32vh; /* 限制最大高度,超出滚动 */ overflow-y: auto; /* 垂直滚动 */ overflow-x: hidden; /* 隐藏横向滚动 */ padding: 0; /* 移除内边距 */ margin: 0; /* 移除外边距 */ - background: transparent; /* 透明背景,贴合Card */ + background: transparent; } /* 空数据/加载提示 */ @@ -258,7 +310,7 @@ onMounted(() => { text-overflow: ellipsis; } -/* 预警标题(最后,自适应宽度,超长省略) */ +/* 预警标题(仅修改这部分样式) */ .alert-title { width: 155px; /* 固定宽度,可根据需求调整(比如200px/400px) */ flex-shrink: 0; /* 关键:禁止宽度被压缩,保证固定宽度生效 */ @@ -267,6 +319,79 @@ onMounted(() => { overflow: hidden; /* 隐藏超出宽度的内容 */ text-overflow: ellipsis; /* 超出显示省略号 */ margin-left: 4px; /* 保留与类型的微小间距 */ + cursor: pointer; +} + +/* 新增:标题文本样式 - 确保省略号生效 */ +.title-text { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + padding: 0 4px; +} + +/* 新增:自定义提示框样式 */ +.custom-tooltip { + position: fixed; + background: #1f2937; + color: #ffffff; + padding: 12px 16px; + border-radius: 8px; + max-width: 500px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + font-size: 14px; + line-height: 1.6; + z-index: 9999; + animation: fadeIn 0.2s ease-in-out; + max-height: 400px; + overflow-y: auto; +} + +.tooltip-content { + font-family: "Consolas", "Monaco", "Courier New", monospace; + white-space: pre-wrap; + word-wrap: break-word; + color: #e5e7eb; + margin: 0; + padding: 0; +} + +.custom-tooltip::-webkit-scrollbar { + width: 4px; +} + +.custom-tooltip::-webkit-scrollbar-track { + background: #2d3748; + border-radius: 2px; +} + +.custom-tooltip::-webkit-scrollbar-thumb { + background: #4a5568; + border-radius: 2px; +} + +.tooltip-arrow { + position: absolute; + top: -8px; + left: 10px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 8px solid #1f2937; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(5px); + } + to { + opacity: 1; + transform: translateY(0); + } } /* 滚动条样式优化 */ diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/info/WarningInfo.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/info/WarningInfo.vue index e6fc3a8e..236b054d 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/info/WarningInfo.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/info/WarningInfo.vue @@ -108,8 +108,6 @@ import { useMessage } from '@jeesite/core/hooks/web/useMessage'; import { BasicModal, useModalInner } from '@jeesite/core/components/Modal'; import { BizWarningAlert, bizWarningAlertSave } from '@jeesite/biz/api/biz/warningAlert'; - - export default defineComponent({ components: { BasicModal }, emits: ['modalClose'], diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/index.vue b/web-vue/packages/core/layouts/views/desktop/analysis/index.vue index f82e1ea3..e8daf46b 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/index.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/index.vue @@ -4,18 +4,7 @@
- - -
-
- - - - {{ app.systemName }} -
-
-
- +
@@ -34,42 +23,17 @@ import { ref, onMounted } from 'vue'; import { Card } from 'ant-design-vue'; import { PageWrapper } from '@jeesite/core/components/Page'; -import { useRouter } from 'vue-router'; import WorkbenchHeader from './components/WorkbenchHeader.vue'; + +import BizApps from './components/BizApps.vue'; import ProjectCard from './components/ProjectCard.vue'; import DynamicInfo from './components/DynamicInfo.vue'; import QuickLogin from './components/QuickLogin.vue'; import WarningAlert from './components/WarningAlert.vue'; -import { BizQuickLogin, bizQuickLoginListAll } from '@jeesite/biz/api/biz/quickLogin'; - const loading = ref(true); -const appList = ref([]); - -const router = useRouter(); - -const goToMorePage = (app : BizQuickLogin) => { - router.push(app.homepageUrl); -}; - -const fetchAppList = async () => { - try { - const params = { - isEnabled: '1', - systemType: '1' - }; - const result = await bizQuickLoginListAll(params); - appList.value = result || []; - } catch (error) { - console.error('获取应用列表失败:', error); - appList.value = []; - } -}; - -// 优化 loading 逻辑,避免闪屏 onMounted(() => { const timer = setTimeout(() => { - fetchAppList(); loading.value = false; clearTimeout(timer); }, 800); @@ -167,91 +131,4 @@ onMounted(() => { flex-direction: column; height: 100%; } - -// 常用应用Card样式 - 重点优化 -.common-app-card { - width: 100%; - margin: 4px 0; - border-radius: 8px; - flex-shrink: 0; // 确保不被压缩 - - // 移除Card默认的内边距,让内容更紧凑 - :deep(.ant-card-body) { - padding: 8px 12px !important; // 减小卡片内部边距 - } - - // 应用列表容器 - 占满整行 - .app-list { - display: flex; - flex-wrap: wrap; // 超出自动换行 - gap: 8px; // 从12px改为8px - width: 100%; - padding: 4px 0; // 从8px改为4px - - // 移除inline-flex,改用flex确保布局稳定 - .app-item { - display: flex; - flex-direction: column; - align-items: center; - gap: 4px; - padding: 6px 10px; // 从8px 16px改为6px 10px - flex: 0 0 auto; // 固定宽度,不拉伸 - - // 按钮重置 - .app-btn { - padding: 0; - height: auto; - - &:hover, - &:focus { - background: transparent; - } - } - - // 应用图标样式 - .app-icon { - width: 40px; - height: 28px; - object-fit: contain; - border-radius: 8px; - border: 1px solid #b3d9f2; - padding: 2px; - transition: border-color 0.2s ease; - } - - &:hover .app-icon { - border-color: #7cb9e8; - } - - // 应用文字样式 - .app-text { - font-size: 12px; - color: #333; - white-space: nowrap; - font-weight: 500; - text-align: center; - } - } - } -} - -// 响应式适配 -@media (max-width: 768px) { - .common-app-card .app-list { - gap: 6px; - - .app-item { - padding: 4px 8px; - - .app-icon { - width: 36px; - height: 24px; - } - - .app-text { - font-size: 11px; - } - } - } -} diff --git a/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/form.vue b/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/form.vue index 0ceacab1..1bf8de8b 100644 --- a/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/form.vue +++ b/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/form.vue @@ -66,9 +66,15 @@ componentProps: { maxlength: 8, }, - required: true, colProps: { md: 24, lg: 24 }, }, + { + label: t('待办意见'), + field: 'extraDesc', + component: 'InputTextArea', + required: true, + colProps: { md: 24, lg: 24 }, + }, { label: t('是否关闭'), field: 'clickClose', diff --git a/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/list.vue b/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/list.vue index b95a492c..deff1584 100644 --- a/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/list.vue +++ b/web-vue/packages/core/layouts/views/desktop/workbench/components/listItem/list.vue @@ -161,6 +161,14 @@ width: 225, align: 'left', }, + { + title: t('待办意见'), + dataIndex: 'extraDesc', + key: 'a.extra_desc', + sorter: true, + width: 225, + align: 'left', + }, { title: t('是否关闭'), dataIndex: 'clickClose', @@ -207,7 +215,7 @@ confirm: handleDelete.bind(this, record), }, auth: 'biz:listItem:edit', - ifShow: record.clickClose == '9' + ifShow: record.titleDelete == '1' }, ], }; @@ -219,7 +227,7 @@ ...params, type : '3', loginUser : userinfo.value.loginCode , - }; + }; }, columns: tableColumns, actionColumn: actionColumn, @@ -248,7 +256,7 @@ url: ctxAdminPath + '/biz/listItem/exportData', params: { ... getForm().getFieldsValue(), - createUser: userinfo.value.loginCode , + loginUser: userinfo.value.loginCode , } }); loading.value = false;