url
zxl
11 小时以前 4cb034bd628af1ec98b35b39cb25a49cd19fe048
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<template>
  <view class="content"> 
 
    <BottomTabBar active="progress" />
    <web-view v-if="url" :src="url"></web-view>
  </view>
</template>
 
<script>
import BottomTabBar from '@/components/BottomTabBar.vue'
import LogTimeLine from '@/components/log-time-line.vue'
import config from '@/utils/config.js'
export default {
  name: 'TaskProcess',
  components: { BottomTabBar, LogTimeLine },
  data() {
    return {
      url:'',
    }
  },
  onLoad(query) {
    // 封装解码工具函数
    const decodeValue = (value) => {
      if (typeof value !== 'string' || value === '') return '';
      try {
        return decodeURIComponent(value);
      } catch (e) {
        console.error('参数解码失败:', e, '原始值:', value);
        return value;
      }
    };
    // 需要拼接必要的参数 来通过验证 
    let token = uni.getStorageSync('token') || '';
    const isView = query.isView === 'true' || query.isView === true;
    const pageName = isView ? 'web-view-entry' : 'web-view-send';
    
    let deployId = 'deployId=' + decodeValue(query.deployId)
    let taskId = 'taskId=' + decodeValue(query.taskId)
    let procInsId = 'procInsId=' + decodeValue(query.procInsId)
    let projectName = 'projectName=' + decodeValue(query.projectName)
    let flowName = 'flowName=' + decodeValue(query.flowName)
    let processName = 'processName=' + decodeValue(query.processName)
 
    console.log(deployId, taskId, procInsId, projectName, flowName, processName)
    
    // 一次性构建完整的 URL,避免多次触发 web-view 加载
    const fullUrl = `${config.webViewUrl}${pageName}?token=${token}&${deployId}&${taskId}&${procInsId}&${projectName}&${flowName}&${processName}`;
    
    console.log('Final WebView URL:', fullUrl)
    
    // 延迟一小段时间赋值,确保页面渲染完成后再加载 web-view,解决第一次加载不出来的问题
    setTimeout(() => {
      this.url = fullUrl;
    }, 100);
  },
  methods: {
 
    /**
     * 返回上一页
     */
    handleBack() {
      uni.navigateBack();
    }
  }
}
</script>
 
<style scoped>
.content {
  width: 100%;
  min-height: 100vh;
  background-color: #f5f7fa;
  padding-bottom: 120rpx;
}
 
 
</style>