From 92c4a535a3e9b38346f5bb4e0e809f9d5f62bd6d Mon Sep 17 00:00:00 2001 From: TianyangZhang Date: Fri, 22 May 2026 10:17:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(wf):=20=E9=87=8D=E6=9E=84=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E6=B5=81=E7=A8=8B=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=B8=8E?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E8=A1=A8=E5=8D=95=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=8C=96=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 选择流程对话框 (myticket.vue): 左侧分类导航(图标+计数+滚动联动) + 右侧响应式卡片网格, 卡片按 14 个流程智能匹配图标, 支持关键词搜索 - 工作流侧栏 (ticketd.vue): 重写为双卡片设计, 基本信息 + 自绘时间线审批历史 (按节点类型上绿/红/灰色, suggestion 按节点色填充) - 全局结构化样式 (pages.scss): 抽屉内 el-form 卡片化 + 单列输入框最大宽度限制 (460/720px, 不影响 el-row/el-col 网格) + sticky 底部操作栏 + 抽屉头部渐变背景 - 专利表单 (patent_form.vue): 重构为 el-row 两栏网格, 技术状态从原有 el-col 拼接改为 auto-fit 响应式卡片网格 (选"是"自动展开上传, 卡片高亮), 技术文件改为 3 栏紧凑布局 - 14 个流程表单 (合同变更/人员调岗/用人需求/人员交接/离职/维修/资产入库/档案借阅/印章/宣传/会议预定/用车/平台/供应商/论文): 添加 wf-form-section 分区头, 移除冗余内联 padding 以适配全局卡片样式 Co-Authored-By: Claude Opus 4.7 (1M context) --- src/style/pages.scss | 139 ++++++++ src/views/asm/assetlogin_form.vue | 9 +- src/views/em/repair_form.vue | 29 +- src/views/hrm/contract_form.vue | 11 +- src/views/hrm/empcontract_form.vue | 5 +- src/views/hrm/empjoin_form.vue | 5 +- src/views/hrm/empneed_form.vue | 5 +- src/views/hrm/resignation_form.vue | 5 +- src/views/hrm/transfer_form.vue | 5 +- src/views/ofm/borrowfile_form.vue | 6 +- src/views/ofm/mroombooking_form.vue | 10 +- src/views/ofm/publicity_form.vue | 12 +- src/views/ofm/seal_form.vue | 4 + src/views/ofm/vehicle_form.vue | 9 +- src/views/pum/supplieraudit_form.vue | 9 +- src/views/srm/paperse_form.vue | 6 + src/views/srm/patent_form.vue | 257 +++++++++----- src/views/srm/plat_form.vue | 4 + src/views/wf/myticket.vue | 460 ++++++++++++++++++++++++- src/views/wf/ticketd.vue | 486 +++++++++++++++++++++------ 20 files changed, 1262 insertions(+), 214 deletions(-) diff --git a/src/style/pages.scss b/src/style/pages.scss index 564c8cae..906b4ce3 100644 --- a/src/style/pages.scss +++ b/src/style/pages.scss @@ -42,3 +42,142 @@ .common-main .yzm .el-button {margin-left: 10px;} .common-main .link {color: var(--el-color-primary);cursor: pointer;} .common-main .link:hover {color: var(--el-color-primary-light-3);} + +/* ============================================================ + * 工作流表单结构化样式 + * 抽屉内打开的所有 *_form.vue 流程表单统一布局规范 + * - 主区: el-main > el-form 内容卡片化、分组分区 + * - 底部: 操作按钮 sticky 底栏 + * - 侧栏: 提升与正文的视觉区分 + * ============================================================ */ +.el-drawer__body { + .el-container { + height: 100%; + background: var(--el-fill-color-light); + } + + .el-main { + padding: 18px 20px 0 20px; + overflow-y: auto; + position: relative; + } + + /* 表单卡片化 */ + .el-main > .el-form { + background: var(--el-bg-color); + border: 1px solid var(--el-border-color-lighter); + border-radius: 12px; + padding: 22px 26px 8px 22px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02); + margin-bottom: 76px; /* 给 sticky footer 让位 */ + max-width: 1240px; + margin-left: auto; + margin-right: auto; + } + + .el-main > .el-form .el-form-item { + margin-bottom: 18px; + } + .el-main > .el-form .el-form-item__label { + font-weight: 500; + color: var(--el-text-color-regular); + } + + /* 关键:除非显式 grid(el-row/el-col)或表格类输入,单列 form-item 内容控件不拉满 */ + .el-main > .el-form > .el-form-item .el-form-item__content > .el-input, + .el-main > .el-form > .el-form-item .el-form-item__content > .el-input-number, + .el-main > .el-form > .el-form-item .el-form-item__content > .el-select, + .el-main > .el-form > .el-form-item .el-form-item__content > .el-cascader, + .el-main > .el-form > .el-form-item .el-form-item__content > .el-date-editor:not(.el-date-editor--datetimerange):not(.el-date-editor--daterange) { + max-width: 460px; + width: 100%; + } + /* textarea 单独放宽,便于书写多行 */ + .el-main > .el-form > .el-form-item .el-form-item__content > .el-input.el-input--textarea, + .el-main > .el-form > .el-form-item .el-form-item__content > .el-textarea { + max-width: 720px; + } + /* 复选/单选组保持自然宽度 */ + + /* 复用:表单内分区标题 */ + .wf-form-section { + display: flex; + align-items: center; + gap: 8px; + margin: 6px 0 14px; + padding-bottom: 8px; + border-bottom: 1px solid var(--el-border-color-lighter); + } + .wf-form-section::before { + content: ""; + width: 3px; + height: 14px; + border-radius: 2px; + background: var(--el-color-primary); + } + .wf-form-section > .title { + font-size: 14px; + font-weight: 600; + color: var(--el-text-color-primary); + letter-spacing: 0.4px; + } + .wf-form-section > .desc { + font-size: 12px; + color: var(--el-text-color-secondary); + margin-left: auto; + } + + /* sticky 底部操作栏 */ + .el-main > .el-footer, + .el-main > .el-form + .el-footer, + .el-main > .el-form .el-footer { + position: sticky; + bottom: 0; + left: 0; + right: 0; + height: auto !important; + padding: 12px 22px; + background: var(--el-bg-color); + border-top: 1px solid var(--el-border-color-lighter); + box-shadow: 0 -4px 16px -10px rgba(0, 0, 0, 0.15); + display: flex; + justify-content: flex-end; + flex-wrap: wrap; + gap: 8px; + z-index: 5; + margin: 0 -20px -18px; + } + .el-main > .el-footer .el-button + .el-button, + .el-main > .el-form + .el-footer .el-button + .el-button { + margin-left: 0; + } + + /* 右侧审批栏 */ + .el-aside { + background: var(--el-fill-color-light); + border-left: 1px solid var(--el-border-color-lighter); + padding: 14px 10px 14px 14px; + overflow-y: auto; + } +} + +/* ============================================================ + * 抽屉头部美化(所有工单详情) + * ============================================================ */ +.el-drawer__header { + padding: 14px 22px !important; + margin-bottom: 0 !important; + border-bottom: 1px solid var(--el-border-color-lighter); + background: linear-gradient( + 180deg, + var(--el-bg-color) 0%, + var(--el-fill-color-light) 100% + ); +} +.el-drawer__header > h4 { + font-size: 16px !important; + font-weight: 600; + letter-spacing: 0.4px; + margin: 0; +} + diff --git a/src/views/asm/assetlogin_form.vue b/src/views/asm/assetlogin_form.vue index 3131940f..c1dd4387 100644 --- a/src/views/asm/assetlogin_form.vue +++ b/src/views/asm/assetlogin_form.vue @@ -1,7 +1,10 @@