style: 提交环节改成与节点卡片同形的卡片,序号 0、无排序删除按钮

This commit is contained in:
2026-11-01 16:41:45 +08:00
parent 5d16c7f566
commit 07141566a3
2 changed files with 61 additions and 38 deletions
@@ -0,0 +1,59 @@
<!-- 提交环节卡片:与节点卡片同形,序号 0,无排序/删除(ADR 0016) -->
<template>
<a-card size="small" class="node-card">
<template #title>
<span>0. 提交</span>
<a-tag color="green" style="margin-left: 8px">提交环节</a-tag>
</template>
<a-form layout="vertical">
<a-row :gutter="16">
<a-col :md="12" :sm="24">
<a-form-item label="提交时的附件要求">
<a-radio-group
:value="mode"
size="small"
@update:value="(value) => emit('update:mode', value)"
>
<a-radio-button value="FOLLOW">跟随代码</a-radio-button>
<a-radio-button value="ON">必须上传</a-radio-button>
<a-radio-button value="OFF">不必上传</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :md="12" :sm="24">
<a-form-item label="说明">
<span class="ele-text-secondary">
链首只读节点,不产生待办、不参与流程推进。
</span>
</a-form-item>
</a-col>
</a-row>
<div class="submit-tip">
「跟随代码」沿用单据实现里声明的附件要求;选「必须上传」或「不必上传」
后,本环节会作为链首节点随流程一起发布。
</div>
</a-form>
</a-card>
</template>
<script lang="ts" setup>
const emit = defineEmits<{
(e: 'update:mode', mode: string): void;
}>();
defineProps<{
// FOLLOW 跟随代码 / ON 必须上传 / OFF 不必上传
mode: string;
}>();
</script>
<style lang="less" scoped>
.node-card {
margin-bottom: 12px;
}
.submit-tip {
color: rgba(0, 0, 0, 0.45);
font-size: 12px;
}
</style>
+2 -38
View File
@@ -61,19 +61,7 @@
</a-button>
</a-space>
</div>
<div class="submit-stage">
<div class="submit-stage-header">
<span class="submit-stage-title">提交环节</span>
<a-radio-group v-model:value="submitMode" size="small">
<a-radio-button value="FOLLOW">跟随代码</a-radio-button>
<a-radio-button value="ON">必须上传附件</a-radio-button>
<a-radio-button value="OFF">不必上传附件</a-radio-button>
</a-radio-group>
</div>
<div class="submit-stage-tip">
「跟随代码」沿用单据实现里声明的附件要求;选定后本环节作为链首只读节点发布,不产生待办。
</div>
</div>
<submit-card v-model:mode="submitMode" />
<a-empty
v-if="!nodes.length"
description="该流程尚未发布,点击「载入出厂模板」开始编辑"
@@ -150,6 +138,7 @@
} from '@/api/approval/flow';
import { listApprovalOrganizations } from '@/api/approval/directory';
import NodeCard from './components/node-card.vue';
import SubmitCard from './components/submit-card.vue';
import { nodeTypeLabel } from './constants';
import type {
ApprovalFlow,
@@ -386,31 +375,6 @@
font-weight: 400;
}
.submit-stage {
margin-bottom: 12px;
padding: 12px;
background: rgba(0, 0, 0, 0.02);
border: 1px dashed rgba(0, 0, 0, 0.12);
border-radius: 6px;
}
.submit-stage-header {
display: flex;
align-items: center;
justify-content: space-between;
}
.submit-stage-title {
color: rgba(0, 0, 0, 0.85);
font-weight: 500;
}
.submit-stage-tip {
margin-top: 6px;
color: rgba(0, 0, 0, 0.45);
font-size: 12px;
}
.flow-add {
margin-bottom: 12px;
}