Browse Source

应急演练记录集成Flow

csg6 2 days ago
parent
commit
1cc8d91dad

+ 3 - 3
.env.development

@@ -5,7 +5,7 @@
5 5
  # @LastEditTime: 2024-11-15 09:21:38
6 6
  # @FilePath: \ruoyi\.env.development
7 7
  # @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
-### 
8
+###
9 9
 # 页面标题
10 10
 VUE_APP_TITLE = 双重预防综合管理系统
11 11
 
@@ -13,8 +13,8 @@ VUE_APP_TITLE = 双重预防综合管理系统
13 13
 ENV = 'development'
14 14
 
15 15
 # 双重防御系统开发环境后台接口地址配置
16
-VUE_APP_BASE_API = 'http://101.42.248.108:17005'
17
-# VUE_APP_BASE_API = 'http://192.168.3.200:18080'
16
+# VUE_APP_BASE_API = 'http://101.42.248.108:17005'
17
+VUE_APP_BASE_API = 'http://192.168.3.200:18080'
18 18
 # VUE_APP_BASE_API = 'http://localhost:18080'
19 19
 
20 20
 

+ 4 - 1
.env.production

@@ -8,4 +8,7 @@ ENV = 'production'
8 8
 # 公司服务器
9 9
 #VUE_APP_BASE_API = 'http://39.105.121.97:18080'
10 10
 # 王宇服务器
11
-VUE_APP_BASE_API = 'http://101.42.248.108:17007'
11
+#VUE_APP_BASE_API = 'http://101.42.248.108:17007'
12
+# 本地开发编译器
13
+VUE_APP_BASE_API = 'http://192.168.3.200:18080'
14
+

+ 9 - 0
src/api/flowable/definition.js

@@ -138,3 +138,12 @@ export function exportDeployment(query) {
138 138
     params: query
139 139
   })
140 140
 }
141
+
142
+// 查看演习详情
143
+export function getInfoItem(params) {
144
+  return request({
145
+    url: '/drill/plan/getInfo',
146
+    method: "get",
147
+    params
148
+  });
149
+}

+ 9 - 0
src/views/emergencies/summarize.vue

@@ -134,6 +134,7 @@
134 134
         </el-table-column>
135 135
         <el-table-column label="操作" fixed="right" align="center" width="200">
136 136
           <template slot-scope="scope">
137
+            <!--
137 138
             <el-button
138 139
               v-if="scope.row.processStatus === 1 && scope.row.drillSummary"
139 140
               type="text"
@@ -150,6 +151,14 @@
150 151
             >
151 152
               查看
152 153
             </el-button>
154
+            -->
155
+            <el-button
156
+              type="text"
157
+              size="mini"
158
+              @click="seeItem(scope.row.id)"
159
+            >
160
+              查看
161
+            </el-button>
153 162
             <el-button type="text" size="mini" @click="del(scope.row.id)">
154 163
               删除
155 164
             </el-button>

+ 123 - 1
src/views/flowable/task/finished/detail/index.vue

@@ -11,7 +11,71 @@
11 11
           <el-col :span="16" :offset="4">
12 12
             <v-form-render ref="vFormRef" />
13 13
           </el-col>
14
+
15
+          <!--从业务表单复制的弹出框代码: 应急演练 - 应急演练记录 - 编辑/查看/审核 的弹出框-->
16
+          <div style="height: 600px; overflow-y: auto" v-if="2 > 1">
17
+            <p>演习总结-已办任务:</p>
18
+            <el-input
19
+              type="textarea"
20
+              resize="none"
21
+              :autosize="{ minRows: 4, maxRows: 400 }"
22
+              placeholder="请输入演习总结"
23
+              v-model="drillSummary"
24
+            >
25
+            </el-input>
26
+            <p style="margin-top: 50px">演习过程问题及整改措施:</p>
27
+            <el-table
28
+              height="calc(100% - 350px)"
29
+              :data="summaryList"
30
+              :row-style="{ height: '0px' }"
31
+              :header-cell-style="{ 'text-align': 'center', padding: '0px' }"
32
+              :cell-style="{ 'text-align': 'center', padding: '2px' }"
33
+              style="width: 100%"
34
+            >
35
+              <el-table-column label="序号" align="center" width="50">
36
+                <template slot-scope="scope">
37
+                  <span> {{ scope.$index + 1 }}</span>
38
+                </template>
39
+              </el-table-column>
40
+
41
+              <el-table-column label="问题描述" align="center">
42
+                <template slot-scope="scope">
43
+                  <span v-show="summaryType">{{ scope.row.problemsInfo || '-' }}</span>
44
+                </template>
45
+              </el-table-column>
46
+              <el-table-column label="整改措施" align="center">
47
+                <template slot-scope="scope">
48
+                  <span v-show="summaryType">{{ scope.row.rectificationInfo || '-' }}</span>
49
+
50
+                </template>
51
+              </el-table-column>
52
+              <el-table-column label="责任人" align="center">
53
+                <template slot-scope="scope">
54
+                  <span  >{{ scope.row.personLiableName || '-' }}</span>
55
+                </template>
56
+              </el-table-column>
57
+              <el-table-column label="整改期限" align="center">
58
+                <template slot-scope="scope">
59
+                  <span>{{ scope.row.rectificationTerm || '-' }}</span>
60
+
61
+                </template>
62
+              </el-table-column>
63
+              <el-table-column label="整改人" align="center">
64
+                <template slot-scope="scope">
65
+                  <span v-show="summaryType">{{ scope.row.rectificationByName || '-' }}</span>
66
+                </template>
67
+              </el-table-column>
68
+              <el-table-column label="整改时间" align="center" width="160">
69
+                <template slot-scope="scope">
70
+                  <span v-show="summaryType">{{ scope.row.rectificationTime }}</span>
71
+                </template>
72
+              </el-table-column>
73
+            </el-table>
74
+          </div>
75
+
14 76
         </el-tab-pane>
77
+
78
+
15 79
         <!--流程流转记录-->
16 80
         <el-tab-pane label="流转记录" name="2">
17 81
           <el-col :span="16" :offset="4">
@@ -64,7 +128,7 @@
64 128
 
65 129
 <script>
66 130
 import {flowRecord} from "@/api/flowable/finished";
67
-import {getProcessVariables, flowXmlAndNode} from "@/api/flowable/definition";
131
+import {getProcessVariables, flowXmlAndNode, getInfoItem} from "@/api/flowable/definition";
68 132
 import BpmnViewer from '@/components/Process/viewer';
69 133
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
70 134
 
@@ -76,6 +140,23 @@ export default {
76 140
   props: {},
77 141
   data() {
78 142
     return {
143
+      //应急演练表单-开始
144
+      summaryType: 0,
145
+      summaryAlert: false,
146
+      summaryList: [
147
+        {
148
+          problemsInfo: '',
149
+          rectificationInfo: '',
150
+          personLiable: '',
151
+          rectificationTerm: '',
152
+          rectificationBy: '',
153
+          rectificationTime: ''
154
+        }
155
+      ],
156
+      drillSummary: '',
157
+      userList: [],
158
+      //应急演练表单-结束
159
+
79 160
       // 模型xml数据
80 161
       flowData: {},
81 162
       activeName: '1',
@@ -145,6 +226,29 @@ export default {
145 226
       if (taskId) {
146 227
         // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
147 228
         getProcessVariables(taskId).then(res => {
229
+
230
+          /*
231
+          {
232
+            "msg": "操作成功",
233
+            "code": 200,
234
+            "data": {
235
+              "businessKey": "f85678973e874f439beba667e05ca0ef",
236
+                "businessName": "应急演练记录",
237
+                "businessFlag": "drill_plan",
238
+                "INITIATOR": 1
239
+            }
240
+          }
241
+           */
242
+          console.log('代办任务-接口响应信息', res.data)
243
+          if(res.data && res.data.businessKey){
244
+            this.seeItem(res.data.businessKey);
245
+            console.log('代办任务-接口响应信息', res.data.businessKey)
246
+            //根据 res.data.businessFlag 判断显示哪个DIV
247
+            // ……
248
+            // ……
249
+            // ……
250
+          }
251
+
148 252
           // 回显表单
149 253
           this.$nextTick(() => {
150 254
             this.$refs.vFormRef.setFormJson(res.data.formJson);
@@ -160,6 +264,24 @@ export default {
160 264
         });
161 265
       }
162 266
     },
267
+
268
+    //查看演习
269
+    seeItem (id) {
270
+      this.summaryType = 2
271
+      this.title = '查看详情'
272
+      getInfoItem({ id: id }).then((res) => {
273
+        if (res.code === 200) {
274
+          if (res.data.drillRectificationProblemsList) {
275
+            this.summaryList = res.data.drillRectificationProblemsList
276
+          }
277
+
278
+          this.drillSummary = res.data.drillSummary
279
+
280
+        }
281
+      });
282
+      this.summaryAlert = true
283
+    },
284
+
163 285
     /** 返回页面 */
164 286
     goBack() {
165 287
       // 关闭当前标签页并返回上个页面

+ 125 - 2
src/views/flowable/task/myProcess/detail/index.vue

@@ -2,7 +2,7 @@
2 2
   <div class="app-container">
3 3
     <el-card class="box-card">
4 4
       <div slot="header" class="clearfix">
5
-        <span class="el-icon-document">已发任务</span>
5
+        <span class="el-icon-document">已发任务-详情</span>
6 6
         <el-button style="float: right;" size="mini" type="danger" @click="goBack">关闭</el-button>
7 7
       </div>
8 8
       <el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick">
@@ -11,6 +11,69 @@
11 11
           <el-col :span="16" :offset="4">
12 12
             <v-form-render ref="vFormRef" />
13 13
           </el-col>
14
+
15
+
16
+       <div style="height: 700px; overflow-y: auto" v-if="2 > 1">
17
+        <p>演习总结-已发任务:</p>
18
+        <el-input
19
+          type="textarea"
20
+          resize="none"
21
+          :autosize="{ minRows: 4, maxRows: 400 }"
22
+          placeholder="请输入演习总结"
23
+          v-model="drillSummary"
24
+        >
25
+        </el-input>
26
+        <p style="margin-top: 50px">演习过程问题及整改措施:</p>
27
+        <el-table
28
+          height="calc(100% - 350px)"
29
+          :data="summaryList"
30
+          :row-style="{ height: '0px' }"
31
+          :header-cell-style="{ 'text-align': 'center', padding: '0px' }"
32
+          :cell-style="{ 'text-align': 'center', padding: '2px' }"
33
+          style="width: 100%"
34
+        >
35
+          <el-table-column label="序号" align="center" width="50">
36
+            <template slot-scope="scope">
37
+              <span> {{ scope.$index + 1 }}</span>
38
+            </template>
39
+          </el-table-column>
40
+
41
+          <el-table-column label="问题描述" align="center">
42
+            <template slot-scope="scope">
43
+              <span v-show="summaryType">{{ scope.row.problemsInfo || '-' }}</span>
44
+            </template>
45
+          </el-table-column>
46
+          <el-table-column label="整改措施" align="center">
47
+            <template slot-scope="scope">
48
+              <span v-show="summaryType">{{ scope.row.rectificationInfo || '-' }}</span>
49
+            </template>
50
+          </el-table-column>
51
+          <el-table-column label="责任人" align="center">
52
+            <template slot-scope="scope">
53
+              <span v-show="summaryType">{{ scope.row.personLiableName || '-' }}</span>
54
+            </template>
55
+          </el-table-column>
56
+          <el-table-column label="整改期限" align="center">
57
+            <template slot-scope="scope">
58
+              <span v-show="summaryType">{{ scope.row.rectificationTerm || '-' }}</span>
59
+            </template>
60
+          </el-table-column>
61
+          <el-table-column label="整改人" align="center">
62
+            <template slot-scope="scope">
63
+              <span v-show="summaryType">{{ scope.row.rectificationByName || '-' }}</span>
64
+            </template>
65
+          </el-table-column>
66
+          <el-table-column label="整改时间" align="center" width="160">
67
+            <template slot-scope="scope">
68
+              <span v-show="summaryType">{{ scope.row.rectificationTime }}</span>
69
+            </template>
70
+          </el-table-column>
71
+
72
+        </el-table>
73
+      </div>
74
+
75
+
76
+
14 77
         </el-tab-pane>
15 78
         <!--流程流转记录-->
16 79
         <el-tab-pane label="流转记录" name="2">
@@ -65,7 +128,7 @@
65 128
 
66 129
 <script>
67 130
 import {flowRecord} from "@/api/flowable/finished";
68
-import {getProcessVariables, flowXmlAndNode} from "@/api/flowable/definition";
131
+import {getProcessVariables, flowXmlAndNode, getInfoItem} from "@/api/flowable/definition";
69 132
 import BpmnViewer from '@/components/Process/viewer';
70 133
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
71 134
 
@@ -77,6 +140,25 @@ export default {
77 140
   props: {},
78 141
   data() {
79 142
     return {
143
+
144
+      //应急演练表单-开始
145
+      summaryType: 0,
146
+      summaryAlert: false,
147
+      summaryList: [
148
+        {
149
+          problemsInfo: '',
150
+          rectificationInfo: '',
151
+          personLiable: '',
152
+          rectificationTerm: '',
153
+          rectificationBy: '',
154
+          rectificationTime: ''
155
+        }
156
+      ],
157
+      drillSummary: '',
158
+      userList: [],
159
+      //应急演练表单-结束
160
+
161
+      dialogVisible: true,
80 162
       // 模型xml数据
81 163
       flowData: {},
82 164
       activeName: '1',
@@ -142,6 +224,28 @@ export default {
142 224
         // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
143 225
         getProcessVariables(taskId).then(res => {
144 226
           this.$nextTick(() => {
227
+            /*
228
+          {
229
+            "msg": "操作成功",
230
+            "code": 200,
231
+            "data": {
232
+              "businessKey": "f85678973e874f439beba667e05ca0ef",
233
+                "businessName": "应急演练记录",
234
+                "businessFlag": "drill_plan",
235
+                "INITIATOR": 1
236
+            }
237
+          }
238
+           */
239
+            console.log('代办任务-接口响应信息', res.data)
240
+            if(res.data && res.data.businessKey){
241
+              this.seeItem(res.data.businessKey);
242
+              console.log('代办任务-接口响应信息', res.data.businessKey)
243
+              //根据 res.data.businessFlag 判断显示哪个DIV
244
+              // ……
245
+              // ……
246
+              // ……
247
+            }
248
+
145 249
             // 回显表单
146 250
             this.$refs.vFormRef.setFormJson(res.data.formJson);
147 251
             this.$nextTick(() => {
@@ -156,6 +260,25 @@ export default {
156 260
         });
157 261
       }
158 262
     },
263
+
264
+
265
+    //查看演习
266
+    seeItem (id) {
267
+      this.summaryType = 2
268
+      this.title = '查看详情'
269
+      getInfoItem({ id: id }).then((res) => {
270
+        if (res.code === 200) {
271
+          if (res.data.drillRectificationProblemsList) {
272
+            this.summaryList = res.data.drillRectificationProblemsList
273
+          }
274
+
275
+          this.drillSummary = res.data.drillSummary
276
+
277
+        }
278
+      });
279
+      this.summaryAlert = true
280
+    },
281
+
159 282
     /** 返回页面 */
160 283
     goBack() {
161 284
       // 关闭当前标签页并返回上个页面

+ 12 - 4
src/views/flowable/task/myProcess/send/index.vue

@@ -118,18 +118,26 @@ export default {
118 118
         // 根据当前任务或者流程设计配置的下一步节点 todo 暂时未涉及到考虑网关、表达式和多节点情况
119 119
         getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => {
120 120
           const data = res.data;
121
+          console.log('流程发起时获取下一节点接口返回的数据=>',data)
121 122
           if (data) {
122 123
             this.formData = formData;
123 124
             if (data.dataType === 'dynamic') {
124
-              if (data.type === 'assignee') { // 指定人员
125
+                // 指定人员
126
+              if (data.type === 'assignee') {
125 127
                 this.checkSendUser = true;
126 128
                 this.checkType = "single";
127
-              } else if (data.type === 'candidateUsers') {  // 候选人员(多个)
129
+              }
130
+              // 候选人员(多个)
131
+              else if (data.type === 'candidateUsers') {
128 132
                 this.checkSendUser = true;
129 133
                 this.checkType = "multiple";
130
-              } else if (data.type === 'candidateGroups') { // 指定组(所属角色接收任务)
134
+              }
135
+              // 指定组(所属角色接收任务)
136
+              else if (data.type === 'candidateGroups') {
131 137
                 this.checkSendRole = true;
132
-              } else { // 会签
138
+              }
139
+              // 会签
140
+              else {
133 141
                 // 流程设计指定的 elementVariable 作为会签人员列表
134 142
                 this.multiInstanceVars = data.vars;
135 143
                 this.checkSendUser = true;

+ 129 - 4
src/views/flowable/task/todo/detail/index.vue

@@ -2,7 +2,7 @@
2 2
   <div class="app-container">
3 3
     <el-card class="box-card">
4 4
       <div slot="header" class="clearfix">
5
-        <span class="el-icon-document">待办任务</span>
5
+        <span class="el-icon-document">待办任务-审核面板</span>
6 6
         <el-tag style="margin-left:10px">发起人:{{ startUser }}</el-tag>
7 7
         <el-tag>任务节点:{{ taskName }}</el-tag>
8 8
         <el-button style="float: right;" size="mini" type="danger" @click="goBack">关闭</el-button>
@@ -12,8 +12,71 @@
12 12
         <el-tab-pane label="表单信息" name="1">
13 13
           <el-col :span="16" :offset="4">
14 14
             <v-form-render ref="vFormRef" />
15
+
16
+
17
+            <!--从业务表单复制的弹出框代码: 应急演练 - 应急演练记录 - 编辑/查看/审核 的弹出框-->
18
+            <div style="height: 600px; overflow-y: auto" v-if="2 > 1">
19
+              <p>演习总结:</p>
20
+              <el-input
21
+                type="textarea"
22
+                resize="none"
23
+                :autosize="{ minRows: 4, maxRows: 400 }"
24
+                placeholder="请输入演习总结"
25
+                v-model="drillSummary"
26
+              >
27
+              </el-input>
28
+              <p style="margin-top: 50px">演习过程问题及整改措施:</p>
29
+              <el-table
30
+                height="calc(100% - 350px)"
31
+                :data="summaryList"
32
+                :row-style="{ height: '0px' }"
33
+                :header-cell-style="{ 'text-align': 'center', padding: '0px' }"
34
+                :cell-style="{ 'text-align': 'center', padding: '2px' }"
35
+                style="width: 100%"
36
+              >
37
+                <el-table-column label="序号" align="center" width="50">
38
+                  <template slot-scope="scope">
39
+                    <span> {{ scope.$index + 1 }}</span>
40
+                  </template>
41
+                </el-table-column>
42
+
43
+                <el-table-column label="问题描述" align="center">
44
+                  <template slot-scope="scope">
45
+                    <span v-show="summaryType">{{ scope.row.problemsInfo || '-' }}</span>
46
+                  </template>
47
+                </el-table-column>
48
+                <el-table-column label="整改措施" align="center">
49
+                  <template slot-scope="scope">
50
+                    <span v-show="summaryType">{{ scope.row.rectificationInfo || '-' }}</span>
51
+
52
+                  </template>
53
+                </el-table-column>
54
+                <el-table-column label="责任人" align="center">
55
+                  <template slot-scope="scope">
56
+                    <span  >{{ scope.row.personLiableName || '-' }}</span>
57
+                  </template>
58
+                </el-table-column>
59
+                <el-table-column label="整改期限" align="center">
60
+                  <template slot-scope="scope">
61
+                    <span>{{ scope.row.rectificationTerm || '-' }}</span>
62
+
63
+                  </template>
64
+                </el-table-column>
65
+                <el-table-column label="整改人" align="center">
66
+                  <template slot-scope="scope">
67
+                    <span v-show="summaryType">{{ scope.row.rectificationByName || '-' }}</span>
68
+                  </template>
69
+                </el-table-column>
70
+                <el-table-column label="整改时间" align="center" width="160">
71
+                  <template slot-scope="scope">
72
+                    <span v-show="summaryType">{{ scope.row.rectificationTime }}</span>
73
+                  </template>
74
+                </el-table-column>
75
+              </el-table>
76
+            </div>
15 77
             <div style="margin-left:10%;margin-bottom: 20px;font-size: 14px;">
16
-              <el-button type="primary" @click="handleComplete">审 批</el-button>
78
+              <el-button type="primary" @click="handleComplete">审 批-FLowable的按钮</el-button>
79
+              <el-button type="danger" @click="handleReject">驳 回-FLowable的按钮</el-button>
17 80
             </div>
18 81
           </el-col>
19 82
         </el-tab-pane>
@@ -67,7 +130,7 @@
67 130
         </el-tab-pane>
68 131
       </el-tabs>
69 132
       <!--审批任务-->
70
-      <el-dialog :title="completeTitle" :visible.sync="completeOpen" width="60%" append-to-body>
133
+      <el-dialog :title="completeTitle" :visible.sync="completeOpen" width="40%" append-to-body>
71 134
         <el-form ref="taskForm" :model="taskForm">
72 135
           <el-form-item prop="targetKey">
73 136
             <flow-user v-if="checkSendUser" :checkType="checkType" @handleUserSelect="handleUserSelect"></flow-user>
@@ -121,7 +184,7 @@
121 184
 import {flowRecord} from "@/api/flowable/finished";
122 185
 import FlowUser from '@/components/flow/User'
123 186
 import FlowRole from '@/components/flow/Role'
124
-import {flowXmlAndNode} from "@/api/flowable/definition";
187
+import {flowXmlAndNode, getInfoItem} from "@/api/flowable/definition";
125 188
 import {
126 189
   complete,
127 190
   rejectTask,
@@ -133,6 +196,7 @@ import {
133 196
 } from "@/api/flowable/todo";
134 197
 import BpmnViewer from '@/components/Process/viewer';
135 198
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
199
+// import {getInfoItem} from "@/api/emergencies";
136 200
 
137 201
 export default {
138 202
   name: "Record",
@@ -145,6 +209,24 @@ export default {
145 209
   data() {
146 210
     return {
147 211
       eventName: "click",
212
+
213
+      //应急演练表单-开始
214
+      summaryType: 0,
215
+      summaryAlert: false,
216
+      summaryList: [
217
+        {
218
+          problemsInfo: '',
219
+          rectificationInfo: '',
220
+          personLiable: '',
221
+          rectificationTerm: '',
222
+          rectificationBy: '',
223
+          rectificationTime: ''
224
+        }
225
+      ],
226
+      drillSummary: '',
227
+      userList: [],
228
+      //应急演练表单-结束
229
+
148 230
       // 流程数据
149 231
       flowData: {},
150 232
       activeName: '1',
@@ -198,6 +280,8 @@ export default {
198 280
     }
199 281
   },
200 282
   methods: {
283
+
284
+
201 285
     handleClick(tab, event) {
202 286
       if (tab.name === '3') {
203 287
         flowXmlAndNode({procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId}).then(res => {
@@ -258,8 +342,32 @@ export default {
258 342
     /** 流程节点表单 */
259 343
     getFlowTaskForm(taskId) {
260 344
       if (taskId) {
345
+
261 346
         // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
262 347
         flowTaskForm({taskId: taskId}).then(res => {
348
+
349
+          /*
350
+            {
351
+              "msg": "操作成功",
352
+              "code": 200,
353
+              "data": {
354
+                "businessKey": "f85678973e874f439beba667e05ca0ef",
355
+                  "businessName": "应急演练记录",
356
+                  "businessFlag": "drill_plan",
357
+                  "INITIATOR": 1
358
+              }
359
+            }
360
+             */
361
+          console.log('代办任务-接口响应信息', res.data)
362
+          if(res.data && res.data.businessKey){
363
+            this.seeItem(res.data.businessKey);
364
+            console.log('代办任务-接口响应信息', res.data.businessKey)
365
+            //根据 res.data.businessFlag 判断显示哪个DIV
366
+            // ……
367
+            // ……
368
+            // ……
369
+          }
370
+
263 371
           // 回显表单
264 372
           this.$refs.vFormRef.setFormJson(res.data.formJson);
265 373
           this.formJson = res.data.formJson;
@@ -275,6 +383,23 @@ export default {
275 383
       }
276 384
     },
277 385
 
386
+    //查看演习
387
+    seeItem (id) {
388
+      this.summaryType = 2
389
+      this.title = '查看详情'
390
+      getInfoItem({ id: id }).then((res) => {
391
+        if (res.code === 200) {
392
+          if (res.data.drillRectificationProblemsList) {
393
+            this.summaryList = res.data.drillRectificationProblemsList
394
+          }
395
+
396
+          this.drillSummary = res.data.drillSummary
397
+
398
+        }
399
+      });
400
+      this.summaryAlert = true
401
+    },
402
+
278 403
     /** 委派任务 */
279 404
     handleDelegate() {
280 405
       this.taskForm.delegateTaskShow = true;