Merge branch 'minJeecg' into 'master'

Min jeecg

See merge request cxcxt/jeecguniapp!3
This commit is contained in:
闵 年泽 2025-05-19 10:13:46 +08:00
commit 5421bc9c9f
2 changed files with 134 additions and 13 deletions

View File

@ -51,3 +51,18 @@ export function getHisProcessNodeInfo(config : Object) { // 获取历史节点
}) })
} }
export function getNodePositionInfo(config : Object) {
return http({
url: '/act/task/getNodePositionInfo',
method: 'GET',
data: config
})
}
export function getHisInfo(config : Object) {
return http({
url: '/act/task/processHistoryList',
method: 'GET',
data: config
})
}

View File

@ -9,14 +9,38 @@
</route> </route>
<template> <template>
<PageLayout nav-title="流程办理"> <PageLayout nav-title="流程办理">
<wd-tabs v-model="tab" swipeable color="#39b54a" autoLineWidth> <wd-tabs v-model="tab" color="#39b54a" autoLineWidth>
<wd-tab title="单据"> <wd-tab title="单据">
</wd-tab> </wd-tab>
<wd-tab title="任务处理"> <wd-tab title="任务处理">
<view class="content">内容2</view> <view class="content">内容2</view>
</wd-tab> </wd-tab>
<wd-tab title="流程图"> <wd-tab title="流程图">
<img :src="imgPath" style="border:2px;cursor:hand;" alt="流程图" usemap="#planetmap"> <view class="container">
<view style="margin-bottom: 20px;height: 400px;overflow: hidden;overflow-y: auto;overflow-x: auto;background-color: #fff;">
<img :src="imgPath" style="border:2px;cursor:hand;" alt="流程图" usemap="#planetmap">
<!-- <map name="planetmap">
<template v-for="(item, key, index) in nodePositionInfo.positionList">
<area shape="rect" :coords="item.coords" title="Venus" @touchstart="showNodeInfo(nodePositionInfo.hisTasks,item.id)">
</template>
</map> -->
</view>
<wd-card title="流程历史追踪" type="rectangle">
<wd-steps :active="completedNum" vertical>
<wd-step v-for="item in dataSource" >
<template #title>
<view class="content shadow-blur text-sm bg-green">
<text>流程节点{{item.name=='start'?'开始':item.name}}<br></text>
<text>负责人{{item.assigneeName}}<br></text>
<text>开始时间{{item.startTime}}<br></text>
<text>结束时间{{item.endTime}}<br></text>
<text>{{item.deleteReason}}</text>
</view>
</template>
</wd-step>
</wd-steps>
</wd-card>
</view>
</wd-tab> </wd-tab>
</wd-tabs> </wd-tabs>
</PageLayout> </PageLayout>
@ -24,7 +48,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { import {
ref ref,
computed
} from 'vue' } from 'vue'
import { import {
onLoad, onLoad,
@ -38,23 +63,34 @@
} from '@/store' } from '@/store'
import { import {
getProcessNodeInfo, getProcessNodeInfo,
getHisProcessNodeInfo getHisProcessNodeInfo,
getNodePositionInfo,
getHisInfo
} from '@/api/process' } from '@/api/process'
import { import {
getEnvBaseUrl getEnvBaseUrl
} from '@/utils/index' } from '@/utils/index'
import { json } from 'stream/consumers'; import { json } from 'stream/consumers';
import qs from 'qs';
const formData = ref({}) const formData = ref({})
const nodePositionInfo = ref({})
const dataSource = ref([])
const path = ref('') //url const path = ref('') //url
const appStore = useAppStore(); const appStore = useAppStore();
const tab = ref(0) const tab = ref(0)
const completedNum = ref(0);
const handleClickLeft = () => { const handleClickLeft = () => {
uni.navigateBack() uni.navigateBack()
} }
const showNodeInfo= (data,taskId)=>{
console.log(data)
// this.$refs.nodeInfoModel.close();
// this.$refs.nodeInfoModel.showInfo(data,taskId);
}
onLoad((options) => { onLoad((options) => {
let useData = JSON.parse(options.data); let useData = JSON.parse(options.data);
@ -78,21 +114,91 @@
path.value = tempFormUrl; //url path.value = tempFormUrl; //url
} }
}) })
console.log(useData)
getNodePositionInfo({processInstanceId:useData.processInstanceId}).then((res)=>{
console.log(res)
if (res.success) {
nodePositionInfo.value = res.result
console.log(res)
}
})
getHisInfo({processInstanceId:useData.processInstanceId}).then((res)=>{
console.log(res)
if (res.success) {
console.log(res)
dataSource.value = res.result.records
completedNum.value = res.result.records.length-1
}
})
}) })
const imgPath = () => { const imgPath = computed(()=>{
var params = JSON.stringify({ var params = qs.stringify({
'processInstanceId': formData.procInsId 'processInstanceId': formData.value.procInsId
}) })
let url = `${getEnvBaseUrl()}/act/task/traceImage?${params}`; let url = `${getEnvBaseUrl()}/act/task/traceImage?${params}`;
console.log(url) console.log(url)
return url; return url;
} })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .wd-tabs__line{ ::v-deep .wd-tabs__line{
background: #39b54a; background: #39b54a;
} }
::v-deep .wd-step.is-finished .wd-step__icon-outer{
border-color: #39b54a;
color: #fff;
background-color: #39b54a;
}
::v-deep .wd-step.is-process .wd-step__icon-outer{
border-color: #f0f0f0;
color: #fff;
background-color: #f0f0f0;
}
.container {
padding: 5px 0 5px;
min-height: 100vh;
background-color: #f7f7f7;
}
.bg-green {
background-color: #39b54a;
color: #fff;
}
.content{
padding: 5px 25px 5px 15px;
}
.shadow-blur{
position: relative;
}
.shadow-blur::before {
content: "";
display: block;
background: inherit;
-webkit-filter: blur(5px);
filter: blur(5px);
position: absolute;
width: 100%;
height: 100%;
top: 5px;
left: 5px;
z-index: -1;
opacity: .4;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
border-radius: inherit;
-webkit-transform: scale(1);
transform: scale(1);
}
.text-sm{
font-size: 12px;
}
</style> </style>