|
@@ -39,16 +39,16 @@
|
|
<span style="display: block" class="pl-1.5 mb-0">{{ active.taskName }}</span>
|
|
<span style="display: block" class="pl-1.5 mb-0">{{ active.taskName }}</span>
|
|
<div class="flex flex-align-center">
|
|
<div class="flex flex-align-center">
|
|
<div class="timeline-box-user flex-1">
|
|
<div class="timeline-box-user flex-1">
|
|
- <span v-if="active.id" class="text-gray-500 pl-1.5">
|
|
|
|
- {{ active.createBy }}
|
|
|
|
- </span>
|
|
|
|
|
|
+ <span v-if="active.id" class="text-gray-500 pl-1.5">
|
|
|
|
+ {{ active.createBy }}
|
|
|
|
+ </span>
|
|
<span v-if="active.type === 22">
|
|
<span v-if="active.type === 22">
|
|
- 发起的子流程<el-tooltip content="点击查看详情">
|
|
|
|
- <a class="el-button el-button--primary is-link" @click="lookSubProcess(active)">
|
|
|
|
- ({{ active.content.callProcess.split(':')[1] }})
|
|
|
|
- </a>
|
|
|
|
- </el-tooltip>
|
|
|
|
- </span>
|
|
|
|
|
|
+ 发起的子流程<!--<el-tooltip content="点击查看详情">
|
|
|
|
+ <a class="el-button el-button--primary is-link" @click="lookSubProcess(active)">
|
|
|
|
+ ({{ active.content.callProcess.split(':')[1] }})
|
|
|
|
+ </a>
|
|
|
|
+ </el-tooltip>-->
|
|
|
|
+ </span>
|
|
<div style="display: flex; gap: 6px; margin-top: 3px">
|
|
<div style="display: flex; gap: 6px; margin-top: 3px">
|
|
<FlowNodeAvatar v-for="nodeUser in active.local_nodeUserList" :key="nodeUser.id" :name="nodeUser.name" />
|
|
<FlowNodeAvatar v-for="nodeUser in active.local_nodeUserList" :key="nodeUser.id" :name="nodeUser.name" />
|
|
<FlowNodeAvatar v-for="nodeRole in active.local_nodeRoleList" :key="nodeRole.id" :name="nodeRole.name">
|
|
<FlowNodeAvatar v-for="nodeRole in active.local_nodeRoleList" :key="nodeRole.id" :name="nodeRole.name">
|
|
@@ -85,7 +85,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
-import { computed, onMounted, reactive, ref } from 'vue'
|
|
|
|
|
|
+import { computed, onMounted, type PropType, reactive, ref } from 'vue'
|
|
import FlowNodeAvatar from '@/components/Flow/FlowNodeAvatar.vue'
|
|
import FlowNodeAvatar from '@/components/Flow/FlowNodeAvatar.vue'
|
|
import FlowTypeDot from '@/components/Flow/FlowTypeDot.vue'
|
|
import FlowTypeDot from '@/components/Flow/FlowTypeDot.vue'
|
|
import { erFormPreview } from '@ER/formEditor'
|
|
import { erFormPreview } from '@ER/formEditor'
|
|
@@ -100,7 +100,7 @@ const props = defineProps({
|
|
default: false
|
|
default: false
|
|
},
|
|
},
|
|
processInfo: {
|
|
processInfo: {
|
|
- type: Object as { name: string; id: string },
|
|
|
|
|
|
+ type: Object as PropType<{ name: string; id: string }>,
|
|
default: () => ({})
|
|
default: () => ({})
|
|
}
|
|
}
|
|
})
|
|
})
|
|
@@ -128,7 +128,7 @@ const $myEmit = defineEmits(['update:modelValue'])
|
|
const queryDetail = () => {
|
|
const queryDetail = () => {
|
|
// processTaskApprovalInfo({ instanceId: props.processInfo.id })
|
|
// processTaskApprovalInfo({ instanceId: props.processInfo.id })
|
|
processTaskApprovalInfo({ instanceId: '1803659392853921794' })
|
|
processTaskApprovalInfo({ instanceId: '1803659392853921794' })
|
|
- .then(data => {
|
|
|
|
|
|
+ .then((data: any) => {
|
|
const activeList = data.processApprovals
|
|
const activeList = data.processApprovals
|
|
activeList.forEach(v => {
|
|
activeList.forEach(v => {
|
|
v.local_timestamp = v.id && formatTimestamp(v.createTime)
|
|
v.local_timestamp = v.id && formatTimestamp(v.createTime)
|
|
@@ -159,7 +159,6 @@ const queryDetail = () => {
|
|
validateForm.value.loading = false
|
|
validateForm.value.loading = false
|
|
})
|
|
})
|
|
}
|
|
}
|
|
-window.test_validateForm = validateForm
|
|
|
|
onMounted(queryDetail)
|
|
onMounted(queryDetail)
|
|
const closeDialog = () => {
|
|
const closeDialog = () => {
|
|
$myEmit('update:modelValue', false)
|
|
$myEmit('update:modelValue', false)
|
|
@@ -202,122 +201,6 @@ const localVisible = computed({
|
|
right: 16px;
|
|
right: 16px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- /* .flow-detail-container {
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: column;
|
|
|
|
- position: relative;
|
|
|
|
- height: 100%;
|
|
|
|
- overflow: hidden;
|
|
|
|
- }*/
|
|
|
|
- /*!/ 通过、不通过样式
|
|
|
|
- .flow-status-stamp {
|
|
|
|
- position: absolute;
|
|
|
|
- right: 10px;
|
|
|
|
- top: 10px;
|
|
|
|
- z-index: 99;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 头部
|
|
|
|
- .flow-header-box {
|
|
|
|
- font-weight: 400;
|
|
|
|
- font-size: 13px;
|
|
|
|
- border-bottom: 1px solid var(--el-border-color);
|
|
|
|
- padding: 0 20px;
|
|
|
|
- height: 39px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- color: var(--el-color-info);
|
|
|
|
- .action-area {
|
|
|
|
- display: flex;
|
|
|
|
- gap: 4px;
|
|
|
|
- .action-item {
|
|
|
|
- cursor: pointer;
|
|
|
|
- padding: 4px;
|
|
|
|
- border-radius: 6px;
|
|
|
|
- width: fit-content;
|
|
|
|
- height: fit-content;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 内容体
|
|
|
|
- .flow-detail-box {
|
|
|
|
- //height: calc(100% - 92px);
|
|
|
|
- //overflow: hidden;
|
|
|
|
- //overflow-y: auto;
|
|
|
|
- flex: 1;
|
|
|
|
- min-height: 0;
|
|
|
|
- padding: 0 20px;
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: column;
|
|
|
|
- height: 100%;
|
|
|
|
- .header-box {
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: column;
|
|
|
|
- justify-content: center;
|
|
|
|
- padding-bottom: 10px;
|
|
|
|
- // padding-top: 20px;
|
|
|
|
- .summary-info {
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- padding-top: 10px;
|
|
|
|
- font-size: 24px;
|
|
|
|
- .title {
|
|
|
|
- font-family: PingFangSC-Semibold, PingFang SC;
|
|
|
|
- color: var(--el-text-color-primary);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- .initiator-info {
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- margin-top: 16px;
|
|
|
|
- .begin-time {
|
|
|
|
- margin-left: 16px;
|
|
|
|
- font-weight: 350;
|
|
|
|
- color: var(--el-text-color-placeholder);
|
|
|
|
- font-size: 13px;
|
|
|
|
- -webkit-user-select: none;
|
|
|
|
- user-select: none;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- .area-divider {
|
|
|
|
- border-bottom: 1px solid var(--el-border-color);
|
|
|
|
- margin: 20px 0;
|
|
|
|
- //position: relative;
|
|
|
|
- }
|
|
|
|
- .scroll-wrap {
|
|
|
|
- position: relative;
|
|
|
|
- overflow: hidden;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- flex: 1;
|
|
|
|
- .tags-desc {
|
|
|
|
- position: absolute;
|
|
|
|
- left: 6px;
|
|
|
|
- top: 10px;
|
|
|
|
- z-index: 1;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- :deep(.zoom-scale) {
|
|
|
|
- position: absolute;
|
|
|
|
- top: 16px;
|
|
|
|
- right: 16px;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 底部
|
|
|
|
- .flow-actions {
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- justify-content: flex-end;
|
|
|
|
- height: 52px;
|
|
|
|
- //border-top: 1px solid var(--color-neutral-3);
|
|
|
|
- border-top: 1px solid var(--el-border-color-light);
|
|
|
|
- background: var(--el-bg-color);
|
|
|
|
- padding: 0 20px;
|
|
|
|
- }*/
|
|
|
|
}
|
|
}
|
|
.comment-content {
|
|
.comment-content {
|
|
user-select: none;
|
|
user-select: none;
|