-
-
-
疯狂的牛子Li
+
+
+ {{ info.nodeName }}
+
+
+ {{ info.createTime }}
+
+
+
+
+
+
+
+ {{ info.createByName }}
+
+
+
+
+
+
+ {{ diffUpdateTimeString }}前更新
+
+
-
处理时间: 2022-01-01
diff --git a/apps/web-antd/src/views/workflow/components/approval-content.vue b/apps/web-antd/src/views/workflow/components/approval-content.vue
new file mode 100644
index 00000000..8db040d0
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/approval-content.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/approval-modal.vue b/apps/web-antd/src/views/workflow/components/approval-modal.vue
new file mode 100644
index 00000000..b9177e12
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/approval-modal.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/approval-panel.vue b/apps/web-antd/src/views/workflow/components/approval-panel.vue
new file mode 100644
index 00000000..da4c29f5
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/approval-panel.vue
@@ -0,0 +1,520 @@
+
+
+
+
+
+
+
+
+ handleLoadInfo(task)">
+
+
+
+
+
+
+
+
+
{{ task.flowName }}
+
+
+
+
+
+
+
{{ task.createByName }}
+
+
+
+ 流程分类: {{ task.categoryName }}
+
+
+
+
+ 提交时间: {{ task.createTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 撤销申请
+
+
+ 重新编辑
+
+
+ 删除
+
+
+
+ 通过
+
+ 终止
+
+
+ 驳回
+
+
+
+
+
+ 其他
+
+
+
+
+
+
+
+
+
+ 流程干预
+ updateAssigneeModalApi.open()">
+ 修改办理人
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/approval-rejection-modal.vue b/apps/web-antd/src/views/workflow/components/approval-rejection-modal.vue
new file mode 100644
index 00000000..c7b6855a
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/approval-rejection-modal.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/approval-timeline-item.vue b/apps/web-antd/src/views/workflow/components/approval-timeline-item.vue
new file mode 100644
index 00000000..f6b26f7f
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/approval-timeline-item.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.nodeName }}
+
+
+
{{ item.approveName }}
+
{{ item.updateTime }}
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/approval-timeline.vue b/apps/web-antd/src/views/workflow/components/approval-timeline.vue
index 68f34f34..0e344fcc 100644
--- a/apps/web-antd/src/views/workflow/components/approval-timeline.vue
+++ b/apps/web-antd/src/views/workflow/components/approval-timeline.vue
@@ -1,50 +1,21 @@
-
-
-
-
-
-
-
发起人
-
疯狂的牛子Li
-
2022-01-01 12:00:00
-
- 这里是备注信息
-
-
-
+
+
diff --git a/apps/web-antd/src/views/workflow/components/copy-component.vue b/apps/web-antd/src/views/workflow/components/copy-component.vue
new file mode 100644
index 00000000..6b95687a
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/copy-component.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +{{ userListModel.length - props.ellipseNumber }}
+
+
+
+
选择人员
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/flow-designer.vue b/apps/web-antd/src/views/workflow/components/flow-designer.vue
new file mode 100644
index 00000000..1f678f4c
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/flow-designer.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/flow-info-modal.vue b/apps/web-antd/src/views/workflow/components/flow-info-modal.vue
new file mode 100644
index 00000000..034d1565
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/flow-info-modal.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/flow-interfere-modal.vue b/apps/web-antd/src/views/workflow/components/flow-interfere-modal.vue
new file mode 100644
index 00000000..38b6d66c
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/flow-interfere-modal.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+ {{ taskInfo.nodeName }}
+
+
+ {{ taskInfo.nodeCode }}
+
+
+ {{ taskInfo.createTime }}
+
+
+ {{ taskInfo.instanceId }}
+
+
+ {{ taskInfo.version }}
+
+
+ {{ taskInfo.businessId }}
+
+
+
+
+
+
+
+ addSignatureModalApi.open()">加签
+ reductionSignatureModalApi.open()">
+ 减签
+
+
+ transferModalApi.open()">转办
+ 终止
+
+
+
diff --git a/apps/web-antd/src/views/workflow/components/helper.tsx b/apps/web-antd/src/views/workflow/components/helper.tsx
new file mode 100644
index 00000000..a4ec7a41
--- /dev/null
+++ b/apps/web-antd/src/views/workflow/components/helper.tsx
@@ -0,0 +1,60 @@
+import { defineComponent, h, ref } from 'vue';
+
+import { Modal } from 'ant-design-vue';
+import dayjs from 'dayjs';
+import duration from 'dayjs/plugin/duration';
+import relativeTime from 'dayjs/plugin/relativeTime';
+
+import ApprovalContent from './approval-content.vue';
+
+export interface ApproveWithReasonModalProps {
+ title: string;
+ description: string;
+ onOk: (reason: string) => void;
+}
+
+/**
+ * 带审批意见的confirm
+ * @param props props
+ */
+export function approveWithReasonModal(props: ApproveWithReasonModalProps) {
+ const { onOk, title, description } = props;
+ const content = ref('');
+ Modal.confirm({
+ title,
+ content: h(
+ defineComponent({
+ setup() {
+ return () =>
+ h(ApprovalContent, {
+ description,
+ value: content.value,
+ 'onUpdate:value': (v) => (content.value = v),
+ });
+ },
+ }),
+ ),
+ centered: true,
+ okButtonProps: { danger: true },
+ onOk: () => onOk(content.value),
+ });
+}
+
+dayjs.extend(duration);
+dayjs.extend(relativeTime);
+/**
+ * 计算相差的时间
+ * @param dateTime 时间字符串
+ * @returns 相差的时间
+ */
+export function getDiffTimeString(dateTime: string) {
+ // 计算相差秒数
+ const diffSeconds = dayjs().diff(dayjs(dateTime), 'second');
+ /**
+ * 转为时间显示(x月 x天)
+ * https://dayjs.fenxianglu.cn/category/duration.html#%E4%BA%BA%E6%80%A7%E5%8C%96
+ *
+ */
+ const diffText = dayjs.duration(diffSeconds, 'seconds').humanize();
+ return diffText;
+}
diff --git a/apps/web-antd/src/views/workflow/components/index.ts b/apps/web-antd/src/views/workflow/components/index.ts
index c1694380..4155011d 100644
--- a/apps/web-antd/src/views/workflow/components/index.ts
+++ b/apps/web-antd/src/views/workflow/components/index.ts
@@ -1,2 +1,30 @@
+export { default as applyModal } from './apply-modal.vue';
export { default as ApprovalCard } from './approval-card.vue';
+/**
+ * 审批同意
+ */
+export { default as approvalModal } from './approval-modal.vue';
+export { default as ApprovalPanel } from './approval-panel.vue';
+/**
+ * 审批驳回
+ */
+export { default as approvalRejectionModal } from './approval-rejection-modal.vue';
export { default as ApprovalTimeline } from './approval-timeline.vue';
+/**
+ * 选择抄送人
+ */
+export { default as CopyComponent } from './copy-component.vue';
+
+/**
+ * 详情信息 modal
+ */
+export { default as flowInfoModal } from './flow-info-modal.vue';
+/**
+ * 流程干预 modal
+ */
+export { default as flowInterfereModal } from './flow-interfere-modal.vue';
+
+/**
+ * 选人 支持单选/多选
+ */
+export { default as userSelectModal } from './user-select-modal.vue';
diff --git a/apps/web-antd/src/views/workflow/components/rejection.png b/apps/web-antd/src/views/workflow/components/rejection.png
deleted file mode 100644
index 7ed92204a3babc314baf39e4c569170bdbbfa6d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 26804
zcmYhiWl&sQ6Ry2+4b0%K!QI{6-8B$`yZfLS2#^GKcPF@$puq_i+=7STZr?obIj8FT
zF*Q~5W7b}4@7>+^)py5esw=!fCqV}Q;Ej@^tTq6^$-zDVDl+Vsw_ESSVP9~b+6vM@
z?IhVD08jx+vQoN!=6{3H(#iCiUxntyj7qB-(ZFeC)#2rk$7meWGr6CtYa|Npfv67Q
zIFhM|KS&6cFvD4C+JJw8r7mhT7olxP_(;KwTTJY%9GmbsBMb99N~N8Xq3RlH>EpWI
zYe%(5wYi6n!6EYdtDaM0dcjBR`%fXLCkr={suV=L6KUG*U4%B=Qz(mT7{DGvABO2b
zH^`C#_ybr91LHs;F+{NF!WCjvL=S>Q03v`TL)_EtNGQ~YW*due(+JTo5+q;;d~TQh
zyj$|*sj6dFWgiICpG35v6#7|CbKbDqa-$?3Q=mdosAs|eHxSUp8Jmmv{xu5t4DPdr
z-l2lT%BjUUXTMQsSXQ@;D*X-f(aaveZe6bs>h2EwK0V#3IJ+J$>xu|joP!
D3>!Tqu7+ddqP3;
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