- P1 通道:view-ui-plus 锁 1.3.24(A 类 loader + vite /static dev 代理核验,五档/断源降级走查) - P2 回收:删本地 layout.css/icons.css(+bak) 并清 main.ts import;骨架六类对齐 + 品牌色 var(--brand) 化;index CSS 779→393kB - P3 操作列:新增 utils/tableActions.ts(同构 UserBase,7 函数+2 表,无 AUTO_MODE);7 页迁 actionColumn text 形态;旧 operatingHandle/operatingTextHandle 薄封装保留、签名不变 - P4 外观:接入三态头像 avatar.ts+UserAvatar.vue(同步自 YschTheme),顶栏裸 img 替换;外观三键红线零写 - 失效注释订正(layout.vue/def-editor)
This commit is contained in:
@@ -433,7 +433,7 @@ onMounted(async () => {
|
||||
.embed-sec-h > span:first-child { position: relative; padding-left: 9px; }
|
||||
.embed-sec-h > span:first-child::before {
|
||||
content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
|
||||
width: 3px; height: 13px; border-radius: 2px; background: #2d8cf0;
|
||||
width: 3px; height: 13px; border-radius: 2px; background: var(--brand);
|
||||
}
|
||||
/* 两处切换器(视图 / 口径)现同排在标题行,同为 iView small button group、几何与配色一致
|
||||
(活动态 #0d9488、非活动 #515a6e/#dcdee2)。⚠️ 两者都落在 .embed-sec-h(600) 内 ⇒ 会继承粗体,
|
||||
@@ -462,7 +462,7 @@ onMounted(async () => {
|
||||
}
|
||||
.embed-step.is-done .embed-step-dot { background: #19be6b; box-shadow: 0 0 0 1px #b7ebc9; }
|
||||
.embed-step.is-reject .embed-step-dot { background: #ed4014; box-shadow: 0 0 0 1px #ffd2c9; }
|
||||
.embed-step.is-active .embed-step-dot { background: #2d8cf0; box-shadow: 0 0 0 3px rgba(45, 140, 240, .18); }
|
||||
.embed-step.is-active .embed-step-dot { background: var(--brand); box-shadow: 0 0 0 3px rgba(45, 140, 240, .18); }
|
||||
.embed-step-body { flex: 1; min-width: 0; }
|
||||
.embed-step-head { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; flex-wrap: wrap; }
|
||||
.embed-step-name { font-size: 14px; font-weight: 600; }
|
||||
|
||||
@@ -458,7 +458,7 @@ watch(() => route.query, () => load());
|
||||
rx="8"
|
||||
:class="{ 'node-active': nodeState(n) === 'active' }"
|
||||
:fill="nodeState(n) === 'rejected' ? '#fff1f0' : '#fff'"
|
||||
:stroke="STATE_STROKE[nodeState(n) || ''] || '#2d8cf0'"
|
||||
:style="{ stroke: STATE_STROKE[nodeState(n) || ''] || 'var(--brand)' }"
|
||||
:stroke-width="nodeState(n) === 'active' ? 2.5 : 1.5" />
|
||||
<text :x="pos(n).x + pos(n).w / 2"
|
||||
:y="pos(n).y + (nameLines(n).length >= 2 ? 25 : 27)"
|
||||
|
||||
@@ -7,6 +7,7 @@ import MyConfirm from "@/components/MyConfirm";
|
||||
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
|
||||
import { OperatorEnum } from "@/types";
|
||||
import { flowApi, INSTANCE_STATUS, INSTANCE_STATUS_COLOR } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const router = useRouter();
|
||||
@@ -23,14 +24,14 @@ const columns = [
|
||||
{ title: "当前节点", key: "currentNodes", width: 150 },
|
||||
{ title: "提交时间", width: 170, render: (h: any, p: any) => h("span", (p.row.submitTime || "").replace("T", " ")) },
|
||||
{ title: "办结时间", width: 170, render: (h: any, p: any) => h("span", (p.row.finishTime || "").replace("T", " ") || "-") },
|
||||
{ title: "操作", width: 180, align: "center", fixed: "right", render: (h: any, p: any) => {
|
||||
const btns = [Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.instanceId}?pid=101`))];
|
||||
if (p.row.status === 10) {
|
||||
btns.push(Utils.operatingHandle(h, "撤回", "icon-yaohao", () => onWithdraw(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "催办", "icon-fasong", () => onUrge(p.row)));
|
||||
}
|
||||
return btns;
|
||||
} },
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "detail", label: "详情", icon: "icon-browse", on: (r: any) => router.push(`/instance/${r.instanceId}?pid=101`) },
|
||||
{ key: "withdraw", label: "撤回", icon: "icon-yaohao", on: (r: any) => onWithdraw(r), when: (r: any) => r.status === 10, danger: true },
|
||||
{ key: "urge", label: "催办", icon: "icon-fasong", on: (r: any) => onUrge(r), when: (r: any) => r.status === 10 },
|
||||
],
|
||||
{ mode: "text", width: 180, fixed: "right" },
|
||||
),
|
||||
];
|
||||
|
||||
// dataApi 返回 Method(alova usePagination 负责发送与解包),不能调 .send()
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useRouter } from "vue-router";
|
||||
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
|
||||
import { OperatorEnum } from "@/types";
|
||||
import { flowApi, TASK_STATUS, TASK_STATUS_COLOR, INSTANCE_STATUS } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const router = useRouter();
|
||||
@@ -22,8 +23,7 @@ const todoColumns = [
|
||||
{ title: "当前节点", key: "nodeName", width: 160 },
|
||||
{ title: "提交人", width: 100, render: (h: any, p: any) => h("span", p.row.submitterName || p.row.assigneeName || "-") },
|
||||
{ title: "到达时间", width: 170, render: (h: any, p: any) => h("span", (p.row.arriveTime || "").replace("T", " ")) },
|
||||
{ title: "操作", width: 100, align: "center", fixed: "right", render: (h: any, p: any) =>
|
||||
Utils.operatingHandle(h, "办理", "icon-edit", () => goHandle(p.row)) },
|
||||
actionColumn([{ key: "handle", label: "办理", icon: "icon-edit", on: (r: any) => goHandle(r) }], { mode: "text", width: 100, fixed: "right" }),
|
||||
];
|
||||
|
||||
const doneColumns = [
|
||||
@@ -45,8 +45,7 @@ const doneColumns = [
|
||||
{ title: "意见", key: "opinion", minWidth: 120 },
|
||||
{ title: "办理时间", width: 170, render: (h: any, p: any) => h("span", (p.row.handleTime || "").replace("T", " ")) },
|
||||
{ title: "办件状态", width: 100, render: (h: any, p: any) => h("span", INSTANCE_STATUS[p.row.instanceStatus] || p.row.instanceStatus) },
|
||||
{ title: "操作", width: 100, align: "center", fixed: "right", render: (h: any, p: any) =>
|
||||
Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.instanceId}?pid=100`)) },
|
||||
actionColumn([{ key: "detail", label: "详情", icon: "icon-browse", on: (r: any) => router.push(`/instance/${r.instanceId}?pid=100`) }], { mode: "text", width: 100, fixed: "right" }),
|
||||
];
|
||||
|
||||
// 抄送行是 NOTIFY 知会(非任务):无 taskId/status,直接跳办件详情
|
||||
@@ -56,8 +55,7 @@ const ccColumns = [
|
||||
{ title: "抄送节点", key: "nodeName", width: 160 },
|
||||
{ title: "抄送时间", width: 170, render: (h: any, p: any) => h("span", (p.row.sentTime || "").replace("T", " ")) },
|
||||
{ title: "办件状态", width: 100, render: (h: any, p: any) => h("span", INSTANCE_STATUS[p.row.instanceStatus] || p.row.instanceStatus || "-") },
|
||||
{ title: "操作", width: 100, align: "center", fixed: "right", render: (h: any, p: any) =>
|
||||
Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.instanceId}?pid=100`)) },
|
||||
actionColumn([{ key: "detail", label: "详情", icon: "icon-browse", on: (r: any) => router.push(`/instance/${r.instanceId}?pid=100`) }], { mode: "text", width: 100, fixed: "right" }),
|
||||
];
|
||||
|
||||
// dataApi 返回 Method(alova usePagination 负责发送与解包),不能调 .send()
|
||||
|
||||
@@ -7,6 +7,7 @@ import { Message } from "view-ui-plus";
|
||||
import MyConfirm from "@/components/MyConfirm";
|
||||
import UserSelectInput from "@/components/UserSelectInput.vue";
|
||||
import { flowApi } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const tab = ref("apps");
|
||||
@@ -91,22 +92,16 @@ const deptColumns = [
|
||||
h("Tag", { props: { color: p.row.status === 0 ? "green" : "gray" } },
|
||||
() => (p.row.status === 0 ? "启用" : "停用")),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
width: 260,
|
||||
align: "center",
|
||||
render: (h: any, p: any) => [
|
||||
Utils.operatingHandle(h, "成员", "icon-yonghu", () => onMembers(p.row)),
|
||||
h("span", { style: "display:inline-block;width:10px" }),
|
||||
Utils.operatingHandle(h, "改名", "icon-edit", () => onRename(p.row)),
|
||||
h("span", { style: "display:inline-block;width:10px" }),
|
||||
p.row.status === 0
|
||||
? Utils.operatingHandle(h, "停用", "icon-stop", () => onDeptStatus(p.row, false))
|
||||
: Utils.operatingHandle(h, "启用", "icon-play", () => onDeptStatus(p.row, true)),
|
||||
h("span", { style: "display:inline-block;width:10px" }),
|
||||
Utils.operatingHandle(h, "删除", "icon-shanchu", () => onDelete(p.row)),
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "members", label: "成员", icon: "icon-yonghu", on: (r: any) => onMembers(r) },
|
||||
{ key: "rename", label: "改名", icon: "icon-edit", on: (r: any) => onRename(r) },
|
||||
{ key: "disable", label: "停用", icon: "icon-stop", on: (r: any) => onDeptStatus(r, false), when: (r: any) => r.status === 0, danger: true },
|
||||
{ key: "enable", label: "启用", icon: "icon-play", on: (r: any) => onDeptStatus(r, true), when: (r: any) => r.status !== 0 },
|
||||
{ key: "del", label: "删除", icon: "icon-shanchu", on: (r: any) => onDelete(r), danger: true },
|
||||
],
|
||||
},
|
||||
{ mode: "text", width: 180 },
|
||||
),
|
||||
];
|
||||
|
||||
async function loadDepts() {
|
||||
@@ -361,7 +356,7 @@ onMounted(() => {
|
||||
<Table :columns="[
|
||||
{ title: '用户ID', key: 'userId', width: 100 },
|
||||
{ title: '姓名', key: 'userName' },
|
||||
{ title: '操作', width: 90, align: 'center', render: (h, p) => Utils.operatingHandle(h, '移除', 'icon-shanchu', () => onMemberRemove(p.row)) },
|
||||
actionColumn([{ key: 'remove', label: '移除', icon: 'icon-shanchu', on: (r: any) => onMemberRemove(r), danger: true }], { mode: 'text', width: 90 }),
|
||||
]" :data="members" :loading="memberLoading" size="small" max-height="360" no-data-text="暂无成员" />
|
||||
<template #footer>
|
||||
<Button @click="memberVisible = false">关闭</Button>
|
||||
|
||||
@@ -7,6 +7,7 @@ import MyConfirm from "@/components/MyConfirm";
|
||||
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
|
||||
import { OperatorEnum } from "@/types";
|
||||
import { flowApi } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const LOG_STATUS: Record<number, string> = { 0: "待推/重试中", 1: "成功", 2: "死信" };
|
||||
@@ -29,10 +30,14 @@ const regColumns = [
|
||||
{ title: "回调地址", key: "callbackUrl", minWidth: 240 },
|
||||
{ title: "订阅事件", key: "eventTypes", width: 200, render: (h: any, p: any) => h("span", p.row.eventTypes || "全部") },
|
||||
{ title: "状态", width: 80, align: "center", render: (h: any, p: any) => h("Tag", { color: p.row.status === 0 ? "green" : "gray" }, () => (p.row.status === 0 ? "启用" : "停用")) },
|
||||
{ title: "操作", width: 140, align: "center", fixed: "right", render: (h: any, p: any) => [
|
||||
Utils.operatingHandle(h, p.row.status === 0 ? "停用" : "启用", p.row.status === 0 ? "icon-stop" : "icon-shiyong", () => onRegStatus(p.row, p.row.status === 0)),
|
||||
Utils.operatingHandle(h, "重置secret", "icon-shezhi", () => onResetSecret(p.row)),
|
||||
] },
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "disable", label: "停用", icon: "icon-stop", on: (r: any) => onRegStatus(r, true), when: (r: any) => r.status === 0, danger: true },
|
||||
{ key: "enable", label: "启用", icon: "icon-shiyong", on: (r: any) => onRegStatus(r, false), when: (r: any) => r.status !== 0 },
|
||||
{ key: "resetSecret", label: "重置secret", icon: "icon-shezhi", on: (r: any) => onResetSecret(r) },
|
||||
],
|
||||
{ mode: "text", width: 140, fixed: "right" },
|
||||
),
|
||||
];
|
||||
|
||||
// ---- 推送日志 ----
|
||||
@@ -64,8 +69,7 @@ const hungColumns = [
|
||||
{ title: "重试", key: "retryCount", width: 70, align: "center", render: (h: any, p: any) => h("Tag", { color: "orange" }, () => `${p.row.retryCount} 次`) },
|
||||
{ title: "末次结果", key: "lastError", minWidth: 220, render: (h: any, p: any) => h("span", p.row.lastError || p.row.lastHttpStatus || "-") },
|
||||
{ title: "下次重推", width: 160, render: (h: any, p: any) => h("span", (p.row.nextRetryTime || "").replace("T", " ") || "-") },
|
||||
{ title: "操作", width: 120, align: "center", fixed: "right", render: (h: any, p: any) =>
|
||||
Utils.operatingHandle(h, "标记死信", "icon-ashbin", () => onMarkDead(p.row)) },
|
||||
actionColumn([{ key: "markDead", label: "标记死信", icon: "icon-ashbin", on: (r: any) => onMarkDead(r), danger: true }], { mode: "text", width: 120, fixed: "right" }),
|
||||
];
|
||||
|
||||
async function loadRegs() {
|
||||
|
||||
@@ -8,6 +8,7 @@ import { Message } from "view-ui-plus";
|
||||
import MyConfirm from "@/components/MyConfirm";
|
||||
import SourceDrawer from "@/views/flow/components/SourceDrawer.vue";
|
||||
import { flowApi } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const router = useRouter();
|
||||
@@ -40,26 +41,24 @@ const columns = [
|
||||
} },
|
||||
{ title: "GUID", key: "flowGuid", width: 200 },
|
||||
{ title: "发布时间", width: 160, render: (h: any, p: any) => h("span", (p.row.publishTime || "").replace("T", " ") || "-") },
|
||||
{ title: "操作", width: 310, align: "center", fixed: "right", render: (h: any, p: any) => {
|
||||
const btns: any[] = [];
|
||||
if (p.row.status === 0) {
|
||||
btns.push(Utils.operatingHandle(h, "编辑", "icon-edit", () => onEdit(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "发布", "icon-fasong", () => onPublish(p.row)));
|
||||
} else if (p.row.status === 1) {
|
||||
btns.push(Utils.operatingHandle(h, "升版本", "icon-tianjia", () => onNewVersion(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "停用", "icon-stop", () => onOffline(p.row)));
|
||||
} else if (p.row.status === 2) {
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "edit", label: "编辑", icon: "icon-edit", on: (r: any) => onEdit(r), when: (r: any) => r.status === 0 },
|
||||
{ key: "publish", label: "发布", icon: "icon-fasong", on: (r: any) => onPublish(r), when: (r: any) => r.status === 0 },
|
||||
{ key: "newVersion", label: "升版本", icon: "icon-tianjia", on: (r: any) => onNewVersion(r), when: (r: any) => r.status === 1 },
|
||||
// 停用:破坏性动作(已发布→停用),danger 沉底并进「更多」
|
||||
{ key: "offline", label: "停用", icon: "icon-stop", on: (r: any) => onOffline(r), when: (r: any) => r.status === 1, danger: true },
|
||||
// 与「停用」对称的专用启用通道(后端 /def/enable:仅停用版→已发布,重跑发布校验;
|
||||
// 草稿不走这里,草稿用「发布」)
|
||||
btns.push(Utils.operatingHandle(h, "启用", "icon-play", () => onEnable(p.row)));
|
||||
}
|
||||
// 元数据原地编辑(2026-10-10 议题2):改名称/归属应用不升版本(含已发布/停用)
|
||||
btns.push(Utils.operatingHandle(h, "编辑信息", "icon-bianji", () => onEditMeta(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "图示", "icon-tupian", () => onDiagram(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "源码", "icon-liebiao", () => onSource(p.row)));
|
||||
btns.push(Utils.operatingHandle(h, "版本历史", "icon-shijian", () => onVersions(p.row)));
|
||||
return btns;
|
||||
} },
|
||||
{ key: "enable", label: "启用", icon: "icon-play", on: (r: any) => onEnable(r), when: (r: any) => r.status === 2 },
|
||||
// 元数据原地编辑(2026-10-10 议题2):改名称/归属应用不升版本(含已发布/停用)
|
||||
{ key: "editMeta", label: "编辑信息", icon: "icon-bianji", on: (r: any) => onEditMeta(r) },
|
||||
{ key: "diagram", label: "图示", icon: "icon-tupian", on: (r: any) => onDiagram(r) },
|
||||
{ key: "source", label: "源码", icon: "icon-liebiao", on: (r: any) => onSource(r) },
|
||||
{ key: "versions", label: "版本历史", icon: "icon-shijian", on: (r: any) => onVersions(r) },
|
||||
],
|
||||
{ mode: "text", width: 180, fixed: "right" },
|
||||
),
|
||||
];
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -7,6 +7,7 @@ import MyConfirm from "@/components/MyConfirm";
|
||||
import { OperatorEnum } from "@/types";
|
||||
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
|
||||
import { flowApi, INSTANCE_STATUS, INSTANCE_STATUS_COLOR } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const router = useRouter();
|
||||
@@ -22,14 +23,14 @@ const columns = [
|
||||
h("Tag", { color: INSTANCE_STATUS_COLOR[p.row.status] || "gray" }, () => INSTANCE_STATUS[p.row.status] || p.row.status) },
|
||||
{ title: "提交人", key: "submitterName", width: 100 },
|
||||
{ title: "提交时间", width: 160, render: (h: any, p: any) => h("span", (p.row.submitTime || "").replace("T", " ")) },
|
||||
{ title: "操作", width: 170, align: "center", fixed: "right", render: (h: any, p: any) => [
|
||||
Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.id}?pid=102`)),
|
||||
h("span", { style: "display:inline-block;width:10px" }),
|
||||
// 仅审批中的办件可能挂在条件分支节点(重跑入口对非挂起办件会得到业务错提示)
|
||||
p.row.status === 10
|
||||
? Utils.operatingHandle(h, "重跑路由", "icon-play", () => onReroute(p.row))
|
||||
: h("span"),
|
||||
] },
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "detail", label: "详情", icon: "icon-browse", on: (r: any) => router.push(`/instance/${r.id}?pid=102`) },
|
||||
// 仅审批中的办件可能挂在条件分支节点(重跑入口对非挂起办件会得到业务错提示)
|
||||
{ key: "reroute", label: "重跑路由", icon: "icon-play", on: (r: any) => onReroute(r), when: (r: any) => r.status === 10 },
|
||||
],
|
||||
{ mode: "text", width: 170, fixed: "right" },
|
||||
),
|
||||
];
|
||||
|
||||
/** 重跑路由(2026-09-24 §4.4):重新调判断服务,成功即按出口续走;仍失败回业务错(办件继续挂起) */
|
||||
|
||||
@@ -6,6 +6,7 @@ import { ref, onMounted } from "vue";
|
||||
import { Message } from "view-ui-plus";
|
||||
import MyConfirm from "@/components/MyConfirm";
|
||||
import { flowApi } from "@/api/module/flow";
|
||||
import { actionColumn } from "@/utils/tableActions";
|
||||
import Utils from "@/utils";
|
||||
|
||||
const loading = ref(false);
|
||||
@@ -30,19 +31,14 @@ const columns = [
|
||||
render: (h: any, p: any) =>
|
||||
h("Tag", { color: p.row.status === 1 ? "green" : "gray" }, () => (p.row.status === 1 ? "启用" : "停用")),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
width: 150,
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
render: (h: any, p: any) => [
|
||||
Utils.operatingHandle(h, "编辑", "icon-edit", () => onEdit(p.row)),
|
||||
h("span", { style: "display:inline-block;width:10px" }),
|
||||
p.row.status === 1
|
||||
? Utils.operatingHandle(h, "停用", "icon-stop", () => onDisable(p.row))
|
||||
: Utils.operatingHandle(h, "启用", "icon-play", () => onEnable(p.row)),
|
||||
actionColumn(
|
||||
[
|
||||
{ key: "edit", label: "编辑", icon: "icon-edit", on: (r: any) => onEdit(r) },
|
||||
{ key: "disable", label: "停用", icon: "icon-stop", on: (r: any) => onDisable(r), when: (r: any) => r.status === 1, danger: true },
|
||||
{ key: "enable", label: "启用", icon: "icon-play", on: (r: any) => onEnable(r), when: (r: any) => r.status !== 1 },
|
||||
],
|
||||
},
|
||||
{ mode: "text", width: 150, fixed: "right" },
|
||||
),
|
||||
];
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -55,7 +55,7 @@ function onOpen(e: MouseEvent): void {
|
||||
transition: all 0.15s;
|
||||
}
|
||||
.node-card:hover {
|
||||
border-color: #2d8cf0;
|
||||
border-color: var(--brand);
|
||||
}
|
||||
.node-card.error {
|
||||
border-color: #ed4014;
|
||||
@@ -72,7 +72,7 @@ function onOpen(e: MouseEvent): void {
|
||||
height: 26px;
|
||||
border-radius: 6px;
|
||||
background: #e8f3ff;
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
@@ -90,7 +90,7 @@ function renameOutlet(i: number, v: string): void {
|
||||
}
|
||||
.ol-title {
|
||||
text-align: center;
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
@@ -139,7 +139,7 @@ function renameOutlet(i: number, v: string): void {
|
||||
}
|
||||
.ol-col-no {
|
||||
flex: none;
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
}
|
||||
@@ -150,12 +150,12 @@ function renameOutlet(i: number, v: string): void {
|
||||
border-radius: 6px;
|
||||
padding: 2px 8px;
|
||||
font-size: 12px;
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
font-weight: 600;
|
||||
}
|
||||
.ol-outlet:focus {
|
||||
outline: none;
|
||||
border-color: #2d8cf0;
|
||||
border-color: var(--brand);
|
||||
}
|
||||
.ol-col-del {
|
||||
flex: none;
|
||||
@@ -170,8 +170,8 @@ function renameOutlet(i: number, v: string): void {
|
||||
.ol-add {
|
||||
margin-top: 12px;
|
||||
border-style: dashed;
|
||||
color: #2d8cf0;
|
||||
border-color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
border-color: var(--brand);
|
||||
background: transparent;
|
||||
width: auto;
|
||||
padding: 0 16px;
|
||||
@@ -182,7 +182,7 @@ function renameOutlet(i: number, v: string): void {
|
||||
.ol-add:hover {
|
||||
background: #f0faff;
|
||||
color: #2b85e4;
|
||||
border-color: #2d8cf0;
|
||||
border-color: var(--brand);
|
||||
}
|
||||
.ol-issue {
|
||||
text-align: center;
|
||||
|
||||
@@ -75,8 +75,8 @@ function pick(kind: "approval" | "parallel" | "notify" | "condition"): void {
|
||||
height: 22px;
|
||||
border-radius: 50%;
|
||||
background: #fff;
|
||||
border: 1px solid #2d8cf0;
|
||||
color: #2d8cf0;
|
||||
border: 1px solid var(--brand);
|
||||
color: var(--brand);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -90,7 +90,7 @@ function pick(kind: "approval" | "parallel" | "notify" | "condition"): void {
|
||||
}
|
||||
.plus-wrap:hover .plus-btn {
|
||||
opacity: 1;
|
||||
background: #2d8cf0;
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
box-shadow: 0 0 0 4px rgba(45, 140, 240, 0.15);
|
||||
}
|
||||
@@ -117,7 +117,7 @@ function pick(kind: "approval" | "parallel" | "notify" | "condition"): void {
|
||||
font-size: 12px;
|
||||
}
|
||||
.mi-icon.approval {
|
||||
background: #2d8cf0;
|
||||
background: var(--brand);
|
||||
}
|
||||
.mi-icon.notify {
|
||||
background: #13a8a8;
|
||||
|
||||
@@ -536,7 +536,7 @@ onUnmounted(() => window.removeEventListener("beforeunload", onBeforeUnload));
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/* 撑满布局壳可视区:100vh − 56(顶栏) − 56(面包屑 .path-nav) − 24(main-container 下内边距)
|
||||
(实测值,见 layout.css .header-container/.path-nav/.base-wrap-main .main-container) */
|
||||
(实测值,见通道 base.layout.css .header-container/.path-nav/.base-wrap-main .main-container) */
|
||||
height: calc(100vh - 136px);
|
||||
background: #f5f7fa;
|
||||
}
|
||||
@@ -562,7 +562,7 @@ onUnmounted(() => window.removeEventListener("beforeunload", onBeforeUnload));
|
||||
font-size: 18px;
|
||||
}
|
||||
.hd-back:hover {
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
}
|
||||
.hd-title {
|
||||
font-size: 15px;
|
||||
|
||||
@@ -129,9 +129,9 @@ function fmtTime(v: string | null | undefined): string {
|
||||
padding: 2px 8px;
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
color: #2d8cf0;
|
||||
color: var(--brand);
|
||||
background: #f0f7ff;
|
||||
border-left: 3px solid #2d8cf0;
|
||||
border-left: 3px solid var(--brand);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.line { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
|
||||
|
||||
Reference in New Issue
Block a user