Commit 6810617c2d76911dd165e39ce970134d0689b8ea

Authored by youxiw2000
2 parents 95009f99 664bbcdc

m

Showing 26 changed files with 1023 additions and 583 deletions
trash-common/src/main/java/com/trash/common/utils/file/MimeTypeUtils.java
... ... @@ -34,7 +34,9 @@ public class MimeTypeUtils
34 34 // pdf
35 35 "pdf" ,
36 36 //activiti
37   - "bpmn", "bar" };
  37 + "bpmn", "bar",
  38 + // video
  39 + "mp4", "avi"};
38 40  
39 41 public static String getExtension(String prefix)
40 42 {
... ...
trash-ui/src/api/caseOfflineInfo.js
... ... @@ -3,13 +3,14 @@ import {getArea,} from "@/api/dict";
3 3  
4 4  
5 5 import {getToken} from "@/utils/auth";
  6 +import {listReplyApprovalProcess} from "@/api/casefile/replyApprovalProcess";
6 7  
7 8 export default {
8 9 name: "CaseOffline",
9 10 props: {
10 11 businessKey: {
11 12 type: String
12   - }
  13 + },
13 14 },
14 15 data() {
15 16 return {
... ... @@ -80,13 +81,28 @@ export default {
80 81 showPic: false,
81 82 picImage: null,
82 83 slides: [],
  84 + img: [],
  85 + slide1: [],
  86 + videoSrc: [],
  87 + openImg: false,
  88 + replyApprovalProcessList:[],
83 89 };
84 90 },
85 91 created() {
  92 + let id = this.businessKey.split(":");
  93 +
  94 + if (id.length == 2) {
  95 + this.businessKey = id[1];
  96 + } else {
  97 + this.businessKey = id;
  98 + }
86 99 getArea().then(res => {
87 100 this.areas = res.result;
88 101 this.handleUpdate();
89 102 });
  103 + listReplyApprovalProcess({tableName: "workflow_caseoffline:"+this.businessKey}).then(response => {
  104 + this.replyApprovalProcessList = response.rows;
  105 + });
90 106 },
91 107 methods: {
92 108 getSite(item) {
... ... @@ -115,16 +131,20 @@ export default {
115 131 showSlides(path) {
116 132 return process.env.VUE_APP_BASE_API + path;
117 133 },
  134 + showVideo(path) {
  135 + return process.env.VUE_APP_BASE_API + path;
  136 + },
  137 + openImage(path) {
  138 + this.img = [];
  139 + this.openImg = true;
  140 + let files = path.split(",");
  141 + for(let i=0;i<files.length;i++){
  142 + this.img.push(files[i]);
  143 + }
  144 + },
118 145 /** 修改按钮操作 */
119 146 handleUpdate() {
120   - let id;
121   - if (this.businessKey.split(":").length == 2) {
122   - id = this.businessKey.split(":")[1];
123   - } else {
124   - id = this.businessKey;
125   - }
126   -
127   - getCaseOffline(id).then(response => {
  147 + getCaseOffline(this.businessKey).then(response => {
128 148 this.form = response.data;
129 149 if (this.form.attach && this.form.attach != "")
130 150 this.form.attach = this.form.attach.split(",");
... ... @@ -133,7 +153,7 @@ export default {
133 153 this.form.type = this.getCaseType(this.form.type);
134 154 this.form.place = this.getAreaName(this.form.place);
135 155  
136   - getAdviceList(this.workflow + ":" + id).then(res => {
  156 + getAdviceList(this.workflow + ":" + this.businessKey).then(res => {
137 157 if (res.data) {
138 158 if (res.data.advice1) {
139 159 this.adviceList.push({
... ...
trash-ui/src/api/caseoffline.js
... ... @@ -96,7 +96,9 @@ export default {
96 96 },
97 97 data:{},
98 98 objId:null,
99   - slides:[]
  99 + slides:[],
  100 + videoSrc:[],
  101 + businessKey:null,
100 102 };
101 103 },
102 104 created() {
... ... @@ -173,7 +175,9 @@ export default {
173 175 cancel() {
174 176 this.open = false;
175 177 this.open2 = false;
  178 + this.uploadImageDialog = false;
176 179 this.slides = [];
  180 + this.videoSrc = [];
177 181 this.reset();
178 182 },
179 183 // 表单重置
... ... @@ -309,6 +313,11 @@ export default {
309 313 this.slides.splice(i, 1);
310 314 }
311 315 }
  316 + for(let i=0;i<this.videoSrc.length;i++){
  317 + if(this.videoSrc[i].alt==img){
  318 + this.videoSrc.splice(i, 1);
  319 + }
  320 + }
312 321  
313 322 this.$forceUpdate();
314 323 },
... ... @@ -327,6 +336,14 @@ export default {
327 336 url:url,
328 337 alt:res
329 338 })
  339 +
  340 + }
  341 + if(file.name.indexOf('.avi') > -1 ||file.name.indexOf('.mp4') > -1){
  342 + let url = URL.createObjectURL(file.raw)
  343 + this.videoSrc.push({
  344 + url:url,
  345 + alt:res
  346 + });
330 347 }
331 348 },
332 349 showFileUpload(i) {
... ... @@ -334,18 +351,18 @@ export default {
334 351 this.picIndex = i;
335 352 },
336 353 beforeUpload(file) {
337   - let isRightSize = file.size / 1024 / 1024 < 20
  354 + let isRightSize = file.size / 1024 / 1024 < 100
338 355 if (!isRightSize) {
339   - this.$message.error('文件大小超过 20MB')
  356 + this.$message.error('文件大小超过 100MB')
340 357 return isRightSize;
341 358 }
342 359 let isAccept = false;
343 360 if (file.name.indexOf('.docx') > -1 || file.name.indexOf(".jpg") > -1 || file.name.indexOf('.doc') > -1 || file
344   - .name.indexOf('.pdf') > -1 || file.name.indexOf('.png') > -1) {
  361 + .name.indexOf('.pdf') > -1 || file.name.indexOf('.png') > -1||file.name.indexOf('.mp4') > -1 || file.name.indexOf(".avi") > -1) {
345 362 isAccept = true;
346 363 }
347 364 if (!isAccept) {
348   - this.$message.error('应该选择PDF、PNG、JPG、WORD类型的文件')
  365 + this.$message.error('应该选择PDF、PNG、JPG、WORD、mp4、avi类型的文件')
349 366 return isAccept;
350 367 }
351 368 },
... ...
trash-ui/src/api/vio_casefile.js
... ... @@ -127,12 +127,14 @@ export default {
127 127 isLoadingCompany: false,
128 128 idInfo:null,
129 129 openInfo:false,
130   - slide1: []
  130 + slide1: [],
  131 + videoSrc:[]
131 132 };
132 133 },
133 134 watch: {
134 135 fileEntityList(value) {
135 136 this.slide1 = []
  137 + this.videoSrc = []
136 138 if (this.fileEntityList.length != 0) {
137 139 this.fileEntityList.map(item => {
138 140 if (item.name.indexOf(".jpg") > -1 || item.name.indexOf(".png") > -1 || item.name.indexOf(".jpeg") > -1 || item.name.indexOf(".jpg") > -1) {
... ... @@ -142,6 +144,13 @@ export default {
142 144 this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
143 145 }
144 146 }
  147 + if(item.name.indexOf(".mp4") > -1 || item.name.indexOf(".avi") > -1){
  148 + if (item.raw != null) {
  149 + this.videoSrc.push(URL.createObjectURL(item.raw));
  150 + } else {
  151 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  152 + }
  153 + }
145 154 })
146 155 }
147 156  
... ... @@ -247,7 +256,7 @@ export default {
247 256 this.open = true;
248 257 this.form.number = this.getNumber();
249 258 this.form.violationGrade = "一般类";
250   - this.form.sendObject = "区管理部门(治)";
  259 + this.form.sendObject = "区管理部门";
251 260 this.title = "添加平台违规案卷";
252 261 },
253 262 /** 修改按钮操作 */
... ... @@ -411,11 +420,11 @@ export default {
411 420 }
412 421 let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
413 422 //格式符合后判断大小
414   - if ("docx,doc,pdf,png,jpeg,png,jpg".indexOf(fileType) != -1) {
415   - let max5M = file.size / 1024 / 1024 < 20;
  423 + if ("docx,doc,pdf,png,jpeg,png,jpg,mp4,avi".indexOf(fileType) != -1) {
  424 + let max5M = file.size / 1024 / 1024 < 100;
416 425 if (!max5M) {
417 426 this.$message({
418   - message: '上传文件大小不得超过20M!',
  427 + message: '上传文件大小不得超过100M!',
419 428 type: 'warning'
420 429 });
421 430 fileList = fileList.splice(fileList.length - 1, 1);
... ... @@ -425,7 +434,7 @@ export default {
425 434 }
426 435 } else {
427 436 this.$message({
428   - message: '上传文件只能是 docx、doc、pdf、png、jpeg、png、jpg格式!',
  437 + message: '上传文件只能是 docx、doc、pdf、png、jpeg、png、jpg、mp4、avi格式!',
429 438 type: 'warning'
430 439 });
431 440 fileList = fileList.splice(fileList.length - 1, 1);
... ... @@ -435,6 +444,7 @@ export default {
435 444 handleDeleteFile(index) {
436 445 this.fileEntityList.splice(index, 1);
437 446 this.slide1.splice(index, 1);
  447 + this.videoSrc.splice(index, 1);
438 448 },
439 449 /** 文件下载 */
440 450 downloadFA(row) {
... ...
trash-ui/src/api/warningInfo.js
... ... @@ -179,12 +179,14 @@ export default {
179 179 data: {},
180 180 showPic: null,
181 181 picImage: null,
182   - slide1: []
  182 + slide1: [],
  183 + videoSrc:[]
183 184 };
184 185 },
185 186 watch: {
186 187 fileEntityList(value) {
187 188 this.slide1 = []
  189 + this.videoSrc = []
188 190 if (this.fileEntityList.length != 0) {
189 191 this.fileEntityList.map(item => {
190 192 if (item.name.indexOf(".jpg") > -1 || item.name.indexOf(".png") > -1 || item.name.indexOf(".jpeg") > -1 || item.name.indexOf(".jpg") > -1) {
... ... @@ -194,6 +196,13 @@ export default {
194 196 this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
195 197 }
196 198 }
  199 + if(item.name.indexOf(".mp4") > -1 || item.name.indexOf(".avi") > -1){
  200 + if (item.raw != null) {
  201 + this.videoSrc.push(URL.createObjectURL(item.raw));
  202 + } else {
  203 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  204 + }
  205 + }
197 206 })
198 207 }
199 208  
... ... @@ -302,7 +311,7 @@ export default {
302 311 this.open = true;
303 312 this.form.number = this.getNumber();
304 313 this.form.violationGrade = "一般类";
305   - this.form.sendObject = "区管理部门(治)";
  314 + this.form.sendObject = "区管理部门";
306 315 this.title = "添加违规预警信息";
307 316 },
308 317 /** 修改按钮操作 */
... ... @@ -475,11 +484,11 @@ export default {
475 484 }
476 485 let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
477 486 //格式符合后判断大小
478   - if ("docx,doc,pdf,png,jpeg,png,jpg".indexOf(fileType) != -1) {
479   - let max5M = file.size / 1024 / 1024 < 20;
  487 + if ("docx,doc,pdf,png,jpeg,png,jpg,mp4,avi".indexOf(fileType) != -1) {
  488 + let max5M = file.size / 1024 / 1024 < 100;
480 489 if (!max5M) {
481 490 this.$message({
482   - message: '上传文件大小不得超过20M!',
  491 + message: '上传文件大小不得超过100M!',
483 492 type: 'warning'
484 493 });
485 494 fileList = fileList.splice(fileList.length - 1, 1);
... ... @@ -489,7 +498,7 @@ export default {
489 498 }
490 499 } else {
491 500 this.$message({
492   - message: '上传文件只能是 docx、doc、pdf、png、jpeg、png、jpg格式!',
  501 + message: '上传文件只能是 docx、doc、pdf、png、jpeg、png、jpg、mp4、avi格式!',
493 502 type: 'warning'
494 503 });
495 504 fileList = fileList.splice(fileList.length - 1, 1);
... ... @@ -499,6 +508,7 @@ export default {
499 508 handleDeleteFile(index) {
500 509 this.fileEntityList.splice(index, 1);
501 510 this.slide1.splice(index, 1);
  511 + this.videoSrc.splice(index, 1);
502 512 },
503 513 /** 文件下载 */
504 514 downloadFA(row) {
... ...
trash-ui/src/views/activiti/task/index.vue
1 1 <template>
2 2 <div class="app-container">
3   - <el-select v-model="queryParams.dept" filterable reserve-keyword @change="getList">
4   - <el-option v-for="item in depts" :label="item.name"
5   - :value="item.code" :key="item.code">
6   - </el-option>
7   - </el-select>
8   - <el-select v-model="queryParams.role" filterable reserve-keyword @change="getList">
9   - <el-option v-for="item in roles" :label="item.name"
10   - :value="item.code" :key="item.code">
11   - </el-option>
12   - </el-select>
13   -
14   - <el-select v-model="queryParams.name" filterable reserve-keyword @change="getList" placeholder="名称">
15   - <el-option label="全部" value="" />
16   - <el-option v-for="item in names" :label="item" :value="item" >
17   - </el-option>
18   - </el-select>
19   -
20   - <el-select v-model="queryParams.prev" filterable reserve-keyword @change="getList" placeholder="上一节点">
21   - <el-option label="全部" value="" />
22   - <el-option v-for="item in depts" :label="item.name" :value="item.name" >
23   - </el-option>
24   - </el-select>
25   - <el-select v-model="queryParams.type" filterable reserve-keyword @change="getList">
26   - <el-option label="全部" value="" />
27   - <el-option label="建筑垃圾许可证审批" value="workflow_constructsite" />
28   - <el-option label="消纳合同申报备案" value="workflow_conract" />
29   - <el-option label="处理场所备案" value="workflow_earthsites" />
30   - <el-option label="运输企业准入流程" value="workflow_company" />
31   - <el-option label="运输车辆准入流程" value="workflow_vehicle" />
32   - <el-option label="驾驶员信息审批" value="workflow_driver" />
33   - <el-option label="交办案卷" value="workflow_caseoffline" />
34   - <el-option label="违规案卷处置流程" value="workflow_casefile" />
35   - <el-option label="平台预警信息" value="violation_warning" />
36   - <el-option label="办文办事" value="handleAffairs" />
37   - <el-option label="后勤管理" value="logistics" />
38   - <el-option label="会议事务" value="conference" />
39   - <el-option label="假勤管理" value="workflow_leave" />
40   - <el-option label="纪检督察" value="supervision-gongdi,supervision_anjuan,supervision_company,supervision_xnc" />
  3 + <el-select v-model="queryParams.dept" filterable reserve-keyword @change="getList">
  4 + <el-option v-for="item in depts" :label="item.name"
  5 + :value="item.code" :key="item.code">
  6 + </el-option>
  7 + </el-select>
  8 + <el-select v-model="queryParams.role" filterable reserve-keyword @change="getList">
  9 + <el-option v-for="item in roles" :label="item.name"
  10 + :value="item.code" :key="item.code">
  11 + </el-option>
  12 + </el-select>
  13 +
  14 + <el-select v-model="queryParams.name" filterable reserve-keyword @change="getList" placeholder="名称">
  15 + <el-option label="全部" value=""/>
  16 + <el-option v-for="item in names" :label="item" :value="item">
  17 + </el-option>
  18 + </el-select>
  19 +
  20 + <el-select v-model="queryParams.prev" filterable reserve-keyword @change="getList" placeholder="上一节点">
  21 + <el-option label="全部" value=""/>
  22 + <el-option v-for="item in depts" :label="item.name" :value="item.name">
  23 + </el-option>
  24 + </el-select>
  25 + <el-select v-model="queryParams.type" filterable reserve-keyword @change="getList">
  26 + <el-option label="全部" value=""/>
  27 + <el-option label="建筑垃圾许可证审批" value="workflow_constructsite"/>
  28 + <el-option label="消纳合同申报备案" value="workflow_conract"/>
  29 + <el-option label="处理场所备案" value="workflow_earthsites"/>
  30 + <el-option label="运输企业准入流程" value="workflow_company"/>
  31 + <el-option label="运输车辆准入流程" value="workflow_vehicle"/>
  32 + <el-option label="驾驶员信息审批" value="workflow_driver"/>
  33 + <el-option label="交办案卷" value="workflow_caseoffline"/>
  34 + <el-option label="违规案卷处置流程" value="workflow_casefile"/>
  35 + <el-option label="平台预警信息" value="violation_warning"/>
  36 + <el-option label="办文办事" value="handleAffairs"/>
  37 + <el-option label="后勤管理" value="logistics"/>
  38 + <el-option label="会议事务" value="conference"/>
  39 + <el-option label="假勤管理" value="workflow_leave"/>
  40 + <el-option label="纪检督察" value="supervision-gongdi,supervision_anjuan,supervision_company,supervision_xnc"/>
41 41 </el-select>
42 42  
43 43  
... ... @@ -156,7 +156,8 @@
156 156 </p>
157 157 </el-col>
158 158 <el-col :span="6">
159   - <a style="color:blue;font-size: 12px;" @click="showFileUpload(5)">{{form.type==0?"摄像头视频截图1":"洗车设施照片"}}</a>
  159 + <a style="color:blue;font-size: 12px;"
  160 + @click="showFileUpload(5)">{{ form.type == 0 ? "摄像头视频截图1" : "洗车设施照片" }}</a>
160 161 <br/>
161 162 <el-image v-for="item in slides[5]"
162 163 style="width: 100px; height: 100px; margin: 5px;"
... ... @@ -170,7 +171,8 @@
170 171 </p>
171 172 </el-col>
172 173 <el-col :span="6">
173   - <a style="color:blue;font-size: 12px;" @click="showFileUpload(6)">{{form.type==0?"摄像头视频截图2":"雾炮机"}}</a>
  174 + <a style="color:blue;font-size: 12px;"
  175 + @click="showFileUpload(6)">{{ form.type == 0 ? "摄像头视频截图2" : "雾炮机" }}</a>
174 176 <br/>
175 177 <el-image v-for="item in slides[6]"
176 178 style="width: 100px; height: 100px; margin: 5px;"
... ... @@ -184,7 +186,8 @@
184 186 </p>
185 187 </el-col>
186 188 <el-col :span="6">
187   - <a style="color:blue;font-size: 12px;" @click="showFileUpload(7)">{{form.type==0?"摄像头视频截图3":"裸露黄土覆盖照片"}}</a>
  189 + <a style="color:blue;font-size: 12px;"
  190 + @click="showFileUpload(7)">{{ form.type == 0 ? "摄像头视频截图3" : "裸露黄土覆盖照片" }}</a>
188 191 <br/>
189 192 <el-image v-for="item in slides[7]"
190 193 style="width: 100px; height: 100px; margin: 5px;"
... ... @@ -318,7 +321,7 @@
318 321 <el-dialog :title="title" :visible.sync="construct" width="800px" append-to-body>
319 322 <constructsiteInfo :businessKey="businessKey" :signData="signData" v-if="construct"/>
320 323 <el-row>
321   - <el-input v-model="signDataInfo" type="textarea" :rows="4" style="margin-top: 10px;" ></el-input>
  324 + <el-input v-model="signDataInfo" type="textarea" :rows="4" style="margin-top: 10px;"></el-input>
322 325 </el-row>
323 326 <div slot="footer" class="dialog-footer">
324 327 <el-button type="danger" @click="submitForm(form.formData[0].controlId ,1)">驳回</el-button>
... ... @@ -329,14 +332,15 @@
329 332 <el-dialog :title="title" :visible.sync="earthsites" width="800px" append-to-body>
330 333 <earthsitesInfo :businessKey="businessKey" v-if="earthsites"/>
331 334 <div v-for="item in this.form.formData">
332   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  335 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  336 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
333 337 </div>
334 338  
335 339 <el-table :data="hisfromData" v-if="hisfromData != null">
336 340 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
337   - <el-table-column label="审批内容" align="center" prop="controlValue" />
338   - <el-table-column label="审批人" align="center" prop="createName" />
339   - <el-table-column label="审批时间" align="center" prop="createTime" />
  341 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  342 + <el-table-column label="审批人" align="center" prop="createName"/>
  343 + <el-table-column label="审批时间" align="center" prop="createTime"/>
340 344 </el-table>
341 345  
342 346 <div slot="footer" class="dialog-footer">
... ... @@ -349,14 +353,15 @@
349 353 <contractInfo :businessKey="businessKey" v-if="contract"/>
350 354  
351 355 <div v-for="item in this.form.formData">
352   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  356 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  357 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
353 358 </div>
354 359  
355 360 <el-table :data="hisfromData" v-if="hisfromData != null">
356 361 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
357   - <el-table-column label="审批内容" align="center" prop="controlValue" />
358   - <el-table-column label="审批人" align="center" prop="createName" />
359   - <el-table-column label="审批时间" align="center" prop="createTime" />
  362 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  363 + <el-table-column label="审批人" align="center" prop="createName"/>
  364 + <el-table-column label="审批时间" align="center" prop="createTime"/>
360 365 </el-table>
361 366  
362 367 <div slot="footer" class="dialog-footer">
... ... @@ -395,7 +400,8 @@
395 400 <div slot="footer" class="dialog-footer">
396 401 <div slot="footer" class="dialog-footer">
397 402 <el-button type="danger" @click="handleAffairsSubmitForm(1)"
398   - v-if="controlId!='FormProperty_11p96vq' && controlId!='FormProperty_0d6ngk1' && definitionKey!='yuelanxuexi' && definitionKey!='yuelan'">驳回
  403 + v-if="controlId!='FormProperty_11p96vq' && controlId!='FormProperty_0d6ngk1' && definitionKey!='yuelanxuexi' && definitionKey!='yuelan'">
  404 + 驳回
399 405 </el-button>
400 406 <el-button type="primary" @click="handleAffairsSubmitForm(0)">通过</el-button>
401 407 </div>
... ... @@ -405,85 +411,127 @@
405 411 <!-- 线下案卷交办 -->
406 412 <el-dialog :title="title" :visible.sync="caseOffline" width="600px" append-to-body :close-on-click-modal="false">
407 413 <caseOfflineInfo :businessKey="businessKey" v-if="caseOffline"/>
408   - <el-input v-model="form.advice" placeholder="请填写审批意见" type="textarea" :rows="3"/>
  414 + <el-form v-if="caseOffline" label-width="120px">
  415 + <el-input v-model="form.reply" type="textarea" :rows="3" placeholder="回复意见">
  416 + </el-input>
  417 + <el-upload multiple :headers="upload.headers" :action="upload.url"
  418 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
  419 + :show-file-list="false"
  420 + :on-success="uploadSuccess1" :before-upload="beforeUpload">
  421 + <el-button size="small" type="primary">选择附件</el-button>
  422 + <div slot="tip" class="el-upload__tip">只能上传不超过 100MB 的jpg、png、pdf、word、avi、mp4文件</div>
  423 + </el-upload>
  424 + <el-image v-for="item in slides1"
  425 + style="width: 150px; height: 100px; margin: 5px;"
  426 + :src="item.url"
  427 + :preview-src-list="[item.url]"
  428 + :z-index="2000">
  429 + </el-image>
  430 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;"
  431 + v-for="item in videoSrc1">
  432 + <video width="100%" controls="controls" height="100%" :src="item.url"></video>
  433 + </div>
  434 + <div style="color: blue;" v-for="(img,index) in form.replyImg">{{ img.split("/")[img.split("/").length - 1] }}<a
  435 + @click="removeAttchItem(index,img)" style="color:red;"> X</a></div>
  436 +
  437 + </el-form>
409 438 <div slot="footer" class="dialog-footer">
410   - <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)" v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回</el-button>
  439 + <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)"
  440 + v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回
  441 + </el-button>
411 442 <el-button type="primary" @click="submitForm(form.formData[0].controlId,0)">通过</el-button>
412 443 </div>
413 444 </el-dialog>
414 445  
415 446 <!-- 平台违规信息 -->
416   - <el-dialog :title="title" :visible.sync="violationCaseFile" width="850px" append-to-body :close-on-click-modal="false">
  447 + <el-dialog :title="title" :visible.sync="violationCaseFile" width="850px" append-to-body
  448 + :close-on-click-modal="false">
417 449 <violationCaseFileInfo :idInfo="businessKey" v-if="violationCaseFile" :entryType="0"/>
418   - <el-form v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员' && violationCaseFile" :rules="rules" label-width="120px" >
  450 + <el-form v-if="violationCaseFile" label-width="120px">
419 451 <el-input v-model="form.reply" type="textarea" :rows="3" placeholder="回复意见">
420 452 </el-input>
421   - <el-upload
422   - list-type="picture"
423   - action=''
424   - accept=".jpg, .png , .bmp"
425   - :limit="1"
426   - :auto-upload="false"
427   - :file-list="form.replyImg"
428   - :on-change="getFile"
429   - :on-preview="handlePictureCardPreview"
430   - :on-remove="handleUploadRemove"
431   - >
432   - <el-button size="small" type="primary" @click="uploadimg" v-if="form.replyImg == null">选择图片上传</el-button>
433   - <div slot="tip" class="el-upload__tip" v-if="form.replyImg== null">只能上传一张图片文件</div>
  453 + <el-upload multiple :headers="upload.headers" :action="upload.url"
  454 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
  455 + :show-file-list="false"
  456 + :on-success="uploadSuccess1" :before-upload="beforeUpload">
  457 + <el-button size="small" type="primary">选择附件</el-button>
  458 + <div slot="tip" class="el-upload__tip">只能上传不超过 100MB 的jpg、png、pdf、word、avi、mp4文件</div>
434 459 </el-upload>
  460 + <el-image v-for="item in slides1"
  461 + style="width: 150px; height: 100px; margin: 5px;"
  462 + :src="item.url"
  463 + :preview-src-list="[item.url]"
  464 + :z-index="2000">
  465 + </el-image>
  466 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;"
  467 + v-for="item in videoSrc1">
  468 + <video width="100%" controls="controls" height="100%" :src="item.url"></video>
  469 + </div>
  470 + <div style="color: blue;" v-for="(img,index) in form.replyImg">{{ img.split("/")[img.split("/").length - 1] }}<a
  471 + @click="removeAttchItem(index,img)" style="color:red;"> X</a></div>
435 472  
436 473 </el-form>
437 474  
438 475  
439 476 <div slot="footer" class="dialog-footer">
440   - <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)" v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回</el-button>
  477 + <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)"
  478 + v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回
  479 + </el-button>
441 480 <el-button type="primary" @click="submitForm(form.formData[0].controlId,0)">通过</el-button>
442 481 </div>
443 482 </el-dialog>
444 483  
445 484 <!-- 违规预警信息 -->
446   - <el-dialog :title="title" :visible.sync="violationCaseFile1" width="850px" append-to-body :close-on-click-modal="false">
  485 + <el-dialog :title="title" :visible.sync="violationCaseFile1" width="850px" append-to-body
  486 + :close-on-click-modal="false">
447 487 <violationWarningInformationInfo :idInfo="businessKey" v-if="violationCaseFile1" :entryType="0"/>
448   - <el-form v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员' && violationCaseFile1" :rules="rules" label-width="120px" >
  488 + <el-form v-if="violationCaseFile1" label-width="120px">
449 489 <el-input v-model="form.reply" type="textarea" :rows="3" placeholder="回复意见">
450 490 </el-input>
451   - <el-upload
452   - list-type="picture"
453   - action=''
454   - accept=".jpg, .png , .bmp"
455   - :limit="1"
456   - :auto-upload="false"
457   - :file-list="form.replyImg"
458   - :on-change="getFile"
459   - :on-preview="handlePictureCardPreview"
460   - :on-remove="handleUploadRemove"
461   - >
462   - <el-button size="small" type="primary" @click="uploadimg" v-if="form.replyImg == null">选择图片上传</el-button>
463   - <div slot="tip" class="el-upload__tip" v-if="form.replyImg== null">只能上传一张图片文件</div>
  491 + <el-upload multiple :headers="upload.headers" :action="upload.url"
  492 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
  493 + :show-file-list="false"
  494 + :on-success="uploadSuccess1" :before-upload="beforeUpload">
  495 + <el-button size="small" type="primary">选择附件</el-button>
  496 + <div slot="tip" class="el-upload__tip">只能上传不超过 100MB 的jpg、png、pdf、word、avi、mp4文件</div>
464 497 </el-upload>
465   -
  498 + <el-image v-for="item in slides1"
  499 + style="width: 150px; height: 100px; margin: 5px;"
  500 + :src="item.url"
  501 + :preview-src-list="[item.url]"
  502 + :z-index="2000">
  503 + </el-image>
  504 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;"
  505 + v-for="item in videoSrc1">
  506 + <video width="100%" controls="controls" height="100%" :src="item.url"></video>
  507 + </div>
  508 + <div style="color: blue;" v-for="(img,index) in form.replyImg">{{ img.split("/")[img.split("/").length - 1] }}<a
  509 + @click="removeAttchItem(index,img)" style="color:red;"> X</a></div>
466 510 </el-form>
467 511  
468 512  
469 513 <div slot="footer" class="dialog-footer">
470   - <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)" v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回</el-button>
  514 + <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)"
  515 + v-if="this.taskName != '车辆所属企业' && this.taskName != '渣土办科员'">驳回
  516 + </el-button>
471 517 <el-button type="primary" @click="submitForm(form.formData[0].controlId,0)">通过</el-button>
472 518 </div>
473 519 </el-dialog>
474 520  
475   - <el-dialog :title="title" :visible.sync="supervisionOpen" width="700px" append-to-body :close-on-click-modal="false">
  521 + <el-dialog :title="title" :visible.sync="supervisionOpen" width="700px" append-to-body
  522 + :close-on-click-modal="false">
476 523 <supervisionInfo :infoData="supervisionData" v-if="supervisionOpen"/>
477 524  
478 525 <div v-for="item in this.form.formData">
479   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  526 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  527 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
480 528 </div>
481 529  
482 530 <el-table :data="hisfromData" v-if="hisfromData != null">
483 531 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
484   - <el-table-column label="审批内容" align="center" prop="controlValue" />
485   - <el-table-column label="审批人" align="center" prop="createName" />
486   - <el-table-column label="审批时间" align="center" prop="createTime" />
  532 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  533 + <el-table-column label="审批人" align="center" prop="createName"/>
  534 + <el-table-column label="审批时间" align="center" prop="createTime"/>
487 535 </el-table>
488 536  
489 537 <div slot="footer" class="dialog-footer">
... ... @@ -495,14 +543,15 @@
495 543 <el-dialog :title="title" :visible.sync="company" width="700px" append-to-body :close-on-click-modal="false">
496 544 <companyInfo :businessKey="businessKey" v-if="company"/>
497 545 <div v-for="item in this.form.formData">
498   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  546 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  547 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
499 548 </div>
500 549  
501 550 <el-table :data="hisfromData" v-if="hisfromData != null">
502 551 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
503   - <el-table-column label="审批内容" align="center" prop="controlValue" />
504   - <el-table-column label="审批人" align="center" prop="createName" />
505   - <el-table-column label="审批时间" align="center" prop="createTime" />
  552 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  553 + <el-table-column label="审批人" align="center" prop="createName"/>
  554 + <el-table-column label="审批时间" align="center" prop="createTime"/>
506 555 </el-table>
507 556 <div slot="footer" class="dialog-footer">
508 557 <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)">驳回</el-button>
... ... @@ -513,14 +562,15 @@
513 562 <el-dialog :title="title" :visible.sync="vehicle" width="700px" append-to-body :close-on-click-modal="false">
514 563 <vehicleInfo :businessKey="businessKey" v-if="vehicle"/>
515 564 <div v-for="item in this.form.formData">
516   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  565 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  566 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
517 567 </div>
518 568  
519 569 <el-table :data="hisfromData" v-if="hisfromData != null">
520 570 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
521   - <el-table-column label="审批内容" align="center" prop="controlValue" />
522   - <el-table-column label="审批人" align="center" prop="createName" />
523   - <el-table-column label="审批时间" align="center" prop="createTime" />
  571 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  572 + <el-table-column label="审批人" align="center" prop="createName"/>
  573 + <el-table-column label="审批时间" align="center" prop="createTime"/>
524 574 </el-table>
525 575 <div slot="footer" class="dialog-footer">
526 576 <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)">驳回</el-button>
... ... @@ -531,14 +581,15 @@
531 581 <el-dialog :title="title" :visible.sync="driver" width="700px" append-to-body :close-on-click-modal="false">
532 582 <driverInfo :businessKey="businessKey" v-if="driver"/>
533 583 <div v-for="item in this.form.formData">
534   - <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue" placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
  584 + <el-input v-if="item.controlType=='textarea'" :label="item.controlLable" v-model="item.controlValue"
  585 + placeholder="批注" type="textarea" :rows="3" style="margin-top:20px;"/>
535 586 </div>
536 587  
537 588 <el-table :data="hisfromData" v-if="hisfromData != null">
538 589 <el-table-column label="类型" width="55" align="center" prop="controlName"/>
539   - <el-table-column label="审批内容" align="center" prop="controlValue" />
540   - <el-table-column label="审批人" align="center" prop="createName" />
541   - <el-table-column label="审批时间" align="center" prop="createTime" />
  590 + <el-table-column label="审批内容" align="center" prop="controlValue"/>
  591 + <el-table-column label="审批人" align="center" prop="createName"/>
  592 + <el-table-column label="审批时间" align="center" prop="createTime"/>
542 593 </el-table>
543 594 <div slot="footer" class="dialog-footer">
544 595 <el-button type="danger" @click="submitForm(form.formData[0].controlId,1)">驳回</el-button>
... ... @@ -554,36 +605,22 @@
554 605 </style>
555 606  
556 607 <script>
557   -import {
558   - listTask,
559   - formDataShow,
560   - formDataSave
561   -} from "@/api/activiti/task";
  608 +import {formDataSave, formDataShow, listTask} from "@/api/activiti/task";
562 609  
563   -import { historyFromData } from '@/api/activiti/historyFormdata'
  610 +import {historyFromData} from '@/api/activiti/historyFormdata'
564 611  
565 612  
566   -import {getSignByObjId, addSign, updateSign} from "@/api/sign/sign";
  613 +import {addSign, getSignByObjId} from "@/api/sign/sign";
567 614  
568 615 import {updateCaseOffline} from "@/api/caseOffline/caseOffline";
569 616  
570 617 import {updateViolationCaseFileReader} from "@/api/casefile/violationCaseFile";
571 618 import {updateViolationCaseFileReader1} from "@/api/casefile/violationWarningInformation";
572 619  
573   -import {
574   - getArea,
575   - getDict,
576   - getUsers,
577   - getSupervision
578   -} from "@/api/dict";
579   -
580   -import {
581   - updateThreestep,
582   - activeThreestep
583   -} from "@/api/business/threestep";
584   -import {
585   - getToken
586   -} from "@/utils/auth";
  620 +import {getDict, getSupervision, getUsers} from "@/api/dict";
  621 +
  622 +import {activeThreestep} from "@/api/business/threestep";
  623 +import {getToken} from "@/utils/auth";
587 624 import {addReplyApprovalProcess} from "@/api/casefile/replyApprovalProcess";
588 625 import {updateHandleAffairs} from "@/api/office/handle";
589 626 import Treeselect from "@riophae/vue-treeselect";
... ... @@ -600,7 +637,8 @@ import logisticsInfo from &quot;@/views/office/logistics/logisticsInfo&quot;;
600 637 import handleInfo from "@/views/office/handle/handleInfo";
601 638 import caseOfflineInfo from "@/views/caseOffline/caseOffline/caseOfflineInfo";
602 639 import violationCaseFileInfo from "@/views/casefile/violationCaseFile/violationCaseFileInfo";
603   -import violationWarningInformationInfo from "@/views/casefile/violationWarningInformation/violationWarningInformationInfo";
  640 +import violationWarningInformationInfo
  641 + from "@/views/casefile/violationWarningInformation/violationWarningInformationInfo";
604 642 import supervisionInfo from "./SupervisionInfo";
605 643  
606 644 import companyInfo from "@/views/activiti/task/companyInfo";
... ... @@ -694,7 +732,7 @@ export default {
694 732 users: [],
695 733 options: [],
696 734 usersName: [],
697   - deptName:null,
  735 + deptName: null,
698 736 supervisionData: null,
699 737 uploadImageDialog: false,
700 738 idInfo: null,
... ... @@ -710,21 +748,23 @@ export default {
710 748 caseOffline: false,
711 749 violationCaseFile: false,
712 750 violationCaseFile1: false,
713   - supervisionOpen:false,
  751 + supervisionOpen: false,
714 752 open: false,
715 753 open2: false,
716 754 conferenceOpen: false,
717 755 construct: false,
718 756 leaveApplicationOpen: false,
719   - userNodes:[],
720   - company:false,
721   - driver:false,
722   - vehicle:false,
723   - names:null,
724   - hisfromData:[],
725   - slides:[],
726   - slidesArys:[],
727 757 prev:[]
  758 + userNodes: [],
  759 + company: false,
  760 + driver: false,
  761 + vehicle: false,
  762 + names: null,
  763 + hisfromData: [],
  764 + slides: [],
  765 + slidesArys: [],
  766 + slides1: [],
  767 + videoSrc1: [],
728 768 };
729 769 },
730 770 created() {
... ... @@ -752,57 +792,100 @@ export default {
752 792 this.getList();
753 793 },
754 794 methods: {
  795 + removeAttchItem(index, img) {
  796 + this.form.replyImg.splice(this.form.replyImg.indexOf(img), 1);
  797 + for (let i = 0; i < this.slides1.length; i++) {
  798 + if (this.slides1[i].alt == img) {
  799 + this.slides1.splice(i, 1);
  800 + }
  801 + }
  802 + for (let i = 0; i < this.videoSrc1.length; i++) {
  803 + if (this.videoSrc1[i].alt == img) {
  804 + this.videoSrc1.splice(i, 1);
  805 + }
  806 + }
755 807  
  808 + this.$forceUpdate();
  809 + },
756 810 handleClose() {
757 811 this.uploadImageDialog = false;
758 812 this.fileList = [];
759 813 this.slidesArys = [];
  814 + this.slides1 = [];
  815 + this.videoSrc1 = [];
760 816 },
761 817 removeImage(index, img) {
762 818 let target = "sub_img" + this.picIndex;
763   - for(let i=0;i<this.slides[index].length;i++){
764   - if(this.slides[index][i].alt == img){
765   - this.slides[index].splice(i,1);
  819 + for (let i = 0; i < this.slides[index].length; i++) {
  820 + if (this.slides[index][i].alt == img) {
  821 + this.slides[index].splice(i, 1);
766 822 }
767 823 }
768 824 this.form[target].splice(this.form[target].indexOf(img), 1);
769 825 },
770 826 uploadSuccess(res, file, fileList) {
771   - if(res.code){
772   - this.$message(res.message);
773   - return;
774   - }
  827 + if (res.code) {
  828 + this.$message(res.message);
  829 + return;
  830 + }
775 831 let target = "sub_img" + this.picIndex;
776 832 if (!this.form[target]) {
777 833 this.form[target] = [];
778 834 }
779 835 this.form[target].push(file.name + ':' + res);
780   - if(file.name.indexOf('.jpg') > -1 ||file.name.indexOf('.png') > -1){
  836 + if (file.name.indexOf('.jpg') > -1 || file.name.indexOf('.png') > -1) {
781 837 let url = URL.createObjectURL(file.raw)
782 838 this.slidesArys.push({
783   - url:url,
784   - alt:res
  839 + url: url,
  840 + alt: res
785 841 })
786 842 this.slides[this.picIndex] = this.slidesArys;
787 843 }
  844 + this.$forceUpdate();
  845 + },
  846 + uploadSuccess1(res, file, fileList) {
  847 + if (res.code) {
  848 + this.$message(res.message);
  849 + return;
  850 + }
  851 + if (!this.form.replyImg) {
  852 + this.form.replyImg = [];
  853 + }
  854 + this.form.replyImg.push(res);
  855 + if (file.name.indexOf('.jpg') > -1 || file.name.indexOf('.png') > -1 || file.name.indexOf('.gif') > -1 || file.name.indexOf('.jpeg') > -1) {
  856 + let url = URL.createObjectURL(file.raw)
  857 + this.slides1.push({
  858 + url: url,
  859 + alt: res
  860 + })
  861 + }
  862 + if (file.name.indexOf('.avi') > -1 || file.name.indexOf('.mp4') > -1) {
  863 + let url = URL.createObjectURL(file.raw)
  864 + this.videoSrc1.push({
  865 + url: url,
  866 + alt: res
  867 + });
  868 + }
  869 + this.$forceUpdate();
788 870 },
789 871 showFileUpload(i) {
790 872 this.uploadImageDialog = true;
791 873 this.picIndex = i;
792 874 },
793 875 beforeUpload(file) {
794   - let isRightSize = file.size / 1024 / 1024 < 20
  876 + let isRightSize = file.size / 1024 / 1024 < 100
795 877 if (!isRightSize) {
796   - this.$message.error('文件大小超过 20MB')
  878 + this.$message.error('文件大小超过 100MB')
797 879 return isRightSize;
798 880 }
799 881 let isAccept = false;
800 882 if (file.name.indexOf('.png') > -1 || file.name.indexOf('.docx') > -1 || file.name.indexOf(".jpg") > -1 || file.name.indexOf('.doc') > -1 || file
801   - .name.indexOf('.pdf') > -1 || file.name.indexOf('.png') > -1) {
  883 + .name.indexOf('.pdf') > -1 || file.name.indexOf('.png') > -1 || file.name.indexOf('.jpeg') > -1 || file.name.indexOf('.gif') > -1
  884 + || file.name.indexOf('.avi') > -1 || file.name.indexOf('.mp4') > -1) {
802 885 isAccept = true;
803 886 }
804 887 if (!isAccept) {
805   - this.$message.error('应该选择PDF、JPG、PNG、WORD类型的文件')
  888 + this.$message.error('应该选择PDF、AVI、MP4、WORD、图片类型的文件')
806 889 return isAccept;
807 890 }
808 891 },
... ... @@ -819,23 +902,25 @@ export default {
819 902  
820 903 // 取消按钮
821 904 cancel() {
822   - this.earthsites=false;
823   - this.contract=false;
824   - this.logisticsInfoOpen=false;
825   - this.handleAffairsInfoOpen=false;
826   - this.caseOffline=false;
827   - this.violationCaseFile=false;
828   - this.violationCaseFile1=false;
829   - this.supervisionOpen=false;
830   - this.open=false;
831   - this.open2=false;
832   - this.conferenceOpen=false;
833   - this.construct=false;
834   - this.leaveApplicationOpen=false;
835   -
836   - this.company=false;
837   - this.driver=false;
838   - this.vehicle=false;
  905 + this.earthsites = false;
  906 + this.contract = false;
  907 + this.logisticsInfoOpen = false;
  908 + this.handleAffairsInfoOpen = false;
  909 + this.caseOffline = false;
  910 + this.violationCaseFile = false;
  911 + this.violationCaseFile1 = false;
  912 + this.supervisionOpen = false;
  913 + this.open = false;
  914 + this.open2 = false;
  915 + this.conferenceOpen = false;
  916 + this.construct = false;
  917 + this.leaveApplicationOpen = false;
  918 +
  919 + this.company = false;
  920 + this.driver = false;
  921 + this.vehicle = false;
  922 + this.videoSrc1 = [];
  923 + this.slides1 = [];
839 924 this.reset();
840 925 },
841 926 // 表单重置
... ... @@ -854,7 +939,7 @@ export default {
854 939 this.id = row.id;
855 940 this.taskName = row.name;
856 941 historyFromData(this.businessKey).then(response => {
857   - this.hisfromData = response.data
  942 + this.hisfromData = response.data
858 943 })
859 944  
860 945 formDataShow(row.id).then(response => {
... ... @@ -923,33 +1008,37 @@ export default {
923 1008 this.logisticsInfoOpen = true;
924 1009 return;
925 1010 }
926   - if (this.definitionKey == "handleAffairs" || this.definitionKey == "gongwenchuli" || this.definitionKey == "yuelan" || this.definitionKey=="yuelanxuexi") {
  1011 + if (this.definitionKey == "handleAffairs" || this.definitionKey == "gongwenchuli" || this.definitionKey == "yuelan" || this.definitionKey == "yuelanxuexi") {
927 1012 this.controlId = this.form.formData[0].controlId;
928 1013 this.idInfo = row.businessKey.split(":")[1];
929 1014 this.handleAffairsInfoOpen = true;
930 1015 return;
931 1016 }
932   - if(this.definitionKey == "workflow_caseoffline"){
  1017 + if (this.definitionKey == "workflow_caseoffline") {
933 1018 this.caseOffline = true;
934 1019 return;
935 1020 }
936 1021  
937   - if(this.definitionKey == "workflow_casefile"){
  1022 + if (this.definitionKey == "workflow_casefile") {
938 1023 this.violationCaseFile = true;
  1024 + this.videoSrc1 = [];
  1025 + this.slides1 = [];
939 1026 return;
940 1027 }
941 1028  
942   - if(this.definitionKey == "violation_warning"){
  1029 + if (this.definitionKey == "violation_warning") {
943 1030 this.violationCaseFile1 = true;
  1031 + this.videoSrc1 = [];
  1032 + this.slides1 = [];
944 1033 return;
945 1034 }
946   - if(this.definitionKey.indexOf("supervision")>-1){
  1035 + if (this.definitionKey.indexOf("supervision") > -1) {
947 1036 console.log(row)
948 1037 const params = {
949 1038 id: row.businessKey.split(":")[1],
950 1039 }
951   - getSupervision(params).then(res=>{
952   - if(res.result==null){
  1040 + getSupervision(params).then(res => {
  1041 + if (res.result == null) {
953 1042 this.$message.error("获取纪检督察详情失败!请重试")
954 1043 return;
955 1044 }
... ... @@ -958,15 +1047,15 @@ export default {
958 1047 })
959 1048 return;
960 1049 }
961   - if(this.definitionKey == "workflow_company"){
  1050 + if (this.definitionKey == "workflow_company") {
962 1051 this.company = true;
963 1052 return;
964 1053 }
965   - if(this.definitionKey == "workflow_vehicle"){
  1054 + if (this.definitionKey == "workflow_vehicle") {
966 1055 this.vehicle = true;
967 1056 return;
968 1057 }
969   - if(this.definitionKey == "workflow_driver"){
  1058 + if (this.definitionKey == "workflow_driver") {
970 1059 this.driver = true;
971 1060 return;
972 1061 }
... ... @@ -1010,12 +1099,12 @@ export default {
1010 1099 });
1011 1100 });
1012 1101 } else {
1013   - formDataSave(this.id, this.form.formData).then(response => {
1014   - this.msgSuccess("审批成功");
1015   - this.open2 = false;
1016   - this.taskList = [];
1017   - this.getList();
1018   - });
  1102 + formDataSave(this.id, this.form.formData).then(response => {
  1103 + this.msgSuccess("审批成功");
  1104 + this.open2 = false;
  1105 + this.taskList = [];
  1106 + this.getList();
  1107 + });
1019 1108 }
1020 1109 return;
1021 1110 }
... ... @@ -1075,6 +1164,24 @@ export default {
1075 1164 });
1076 1165 }
1077 1166 if (this.definitionKey == "workflow_caseoffline") {
  1167 +
  1168 + let postData = {};
  1169 +
  1170 + postData.tableName = this.businessKey;
  1171 + postData.replyImg = this.form.replyImg + "";
  1172 + postData.reply = this.form.reply;
  1173 + if(postData.reply==null || postData.reply==""){
  1174 + if(value==0){
  1175 + postData.reply = "通过";
  1176 + }else{
  1177 + postData.reply = "驳回";
  1178 + }
  1179 + }
  1180 +
  1181 + addReplyApprovalProcess(postData).then(res => {
  1182 + this.videoSrc1 = [];
  1183 + this.slides1 = [];
  1184 + });
1078 1185 let id = this.businessKey.split(":")[1];
1079 1186 let query = {
1080 1187 id: id,
... ... @@ -1107,112 +1214,78 @@ export default {
1107 1214 this.getList();
1108 1215 });
1109 1216 })
1110   -
1111   -
1112 1217 return;
1113 1218 }
1114 1219  
1115   -
1116   - if (this.definitionKey == "workflow_caseoffline") {
1117   - let id = this.businessKey.split(":")[1];
1118   - let query = {
1119   - id: id,
1120   - };
1121   - let adv = this.form.advice;
1122   - if (!adv) {
1123   - if (value == 0) {
1124   - adv = "审批通过";
1125   - } else {
1126   - adv = "审批驳回";
  1220 + if (this.definitionKey == "workflow_casefile") {
  1221 + let postData = {};
  1222 +
  1223 + postData.tableName = this.businessKey;
  1224 + postData.replyImg = this.form.replyImg + "";
  1225 + postData.reply = this.form.reply;
  1226 + if(postData.reply==null || postData.reply==""){
  1227 + if(value==0){
  1228 + postData.reply = "通过";
  1229 + }else{
  1230 + postData.reply = "驳回";
1127 1231 }
1128 1232 }
1129   - if (this.taskName == "渣土办科员") {
1130   - query.advice1 = adv;
1131   - } else if (this.taskName == "渣土办分管领导") {
1132   - query.advice2 = adv;
1133   - } else if (this.taskName == "治理部部长") {
1134   - query.advice3 = adv;
1135   - } else if (this.taskName == "治理部分管领导") {
1136   - query.advice4 = adv;
1137   - }
1138   - updateCaseOffline(query).then(res => {
1139   - formDataSave(this.id, this.form.formData).then(response => {
1140   - this.msgSuccess("审批成功");
1141   - this.caseOffline = false;
1142   - this.getList();
1143   - });
1144   - })
1145   - return;
1146   - }
1147   - if (this.definitionKey == "workflow_casefile") {
1148   -
1149 1233 if (this.taskName == "车辆所属企业" || this.taskName == "渣土办科员") {
1150 1234 console.log(this.businessKey);
1151 1235 let objId = this.businessKey.split(":")[1];
1152 1236 updateViolationCaseFileReader({id: objId}).then(res => {
1153   - formDataSave(this.id, this.form.formData).then(response => {
1154   - this.msgSuccess("审批成功");
1155   - this.violationCaseFile = false;
1156   - this.getList();
1157   - });
1158 1237 })
1159   - return;
1160   - } else {
1161   - let postData = {};
1162   -
1163   - postData.tableName = this.businessKey;
1164   - postData.replyImg = this.form.replyImg;
1165   - postData.reply = this.form.reply;
1166   - addReplyApprovalProcess(postData).then(res => {
1167   - formDataSave(this.id, this.form.formData).then(response => {
1168   - this.msgSuccess("审批成功");
1169   - this.violationCaseFile = false;
1170   - this.getList();
1171   - });
1172   - });
1173   -
1174   -
1175 1238 }
  1239 + addReplyApprovalProcess(postData).then(res => {
  1240 + this.videoSrc1 = [];
  1241 + this.slides1 = [];
  1242 + formDataSave(this.id, this.form.formData).then(response => {
  1243 + this.msgSuccess("审批成功");
  1244 + this.violationCaseFile = false;
  1245 + this.getList();
  1246 + });
  1247 + });
1176 1248 }
1177 1249 if (this.definitionKey == "violation_warning") {
  1250 + let postData = {};
  1251 + postData.tableName = this.businessKey;
  1252 + postData.replyImg = this.form.replyImg + "";
  1253 + postData.reply = this.form.reply;
  1254 + if(postData.reply==null || postData.reply==""){
  1255 + if(value==0){
  1256 + postData.reply = "通过";
  1257 + }else{
  1258 + postData.reply = "驳回";
  1259 + }
  1260 + }
  1261 +
  1262 +
1178 1263 if (this.taskName == "车辆所属企业" || this.taskName == "渣土办科员") {
1179   - console.log(this.businessKey);
1180 1264 let objId = this.businessKey.split(":")[1];
1181 1265 updateViolationCaseFileReader1({id: objId}).then(res => {
1182   - formDataSave(this.id, this.form.formData).then(response => {
1183   - this.msgSuccess("审批成功");
1184   - this.violationCaseFile1 = false;
1185   - this.getList();
1186   - });
1187 1266 })
1188   - return;
1189   - } else {
1190   - let postData = {};
1191   - postData.tableName = this.businessKey;
1192   - postData.replyImg = this.form.replyImg;
1193   - postData.reply = this.form.reply;
1194   - addReplyApprovalProcess(postData).then(res => {
1195   - formDataSave(this.id, this.form.formData).then(response => {
1196   - this.msgSuccess("审批成功");
1197   - this.violationCaseFile1 = false;
1198   - this.getList();
1199   - });
1200   - });
1201   -
1202   -
1203 1267 }
  1268 + addReplyApprovalProcess(postData).then(res => {
  1269 + this.videoSrc1 = [];
  1270 + this.slides1 = [];
  1271 + formDataSave(this.id, this.form.formData).then(response => {
  1272 + this.msgSuccess("审批成功");
  1273 + this.violationCaseFile1 = false;
  1274 + this.getList();
  1275 + });
  1276 + });
1204 1277 }
1205 1278  
1206   - if(this.definitionKey.indexOf("supervision")>-1){
  1279 + if (this.definitionKey.indexOf("supervision") > -1) {
1207 1280 formDataSave(this.id, this.form.formData).then(response => {
1208 1281 this.msgSuccess("审批成功");
1209 1282 this.supervisionOpen = false;
1210 1283 this.getList();
1211 1284 });
1212 1285 }
1213   - if(this.definitionKey == "workflow_company" ||
1214   - this.definitionKey == "workflow_driver" ||
1215   - this.definitionKey == "workflow_vehicle" ){
  1286 + if (this.definitionKey == "workflow_company" ||
  1287 + this.definitionKey == "workflow_driver" ||
  1288 + this.definitionKey == "workflow_vehicle") {
1216 1289 formDataSave(this.id, this.form.formData).then(response => {
1217 1290 this.msgSuccess("审批成功");
1218 1291 this.cancel();
... ... @@ -1275,19 +1348,19 @@ export default {
1275 1348 }
1276 1349 this.form.formData[0].controlValue = value;
1277 1350 if (this.definitionKey == "yuelan") {
1278   - if(this.deptName==null){
  1351 + if (this.deptName == null) {
1279 1352 this.$message.error("请选择阅览部门!");
1280 1353 return;
1281 1354 }
1282   - if(this.users.length==0){
  1355 + if (this.users.length == 0) {
1283 1356 this.$message.error("请选择阅览人!");
1284 1357 return;
1285 1358 }
1286 1359 const userNames = [];
1287   - const newArr = this.ArrSet(this.userNodes,"id");
  1360 + const newArr = this.ArrSet(this.userNodes, "id");
1288 1361 for (let i = 0; i < newArr.length; i++) {
1289 1362 for (let j = 0; j < this.users.length; j++) {
1290   - if(newArr[i].id==this.users[j]){
  1363 + if (newArr[i].id == this.users[j]) {
1291 1364 userNames.push(newArr[i].label);
1292 1365 }
1293 1366 }
... ... @@ -1409,7 +1482,7 @@ export default {
1409 1482 });
1410 1483 });
1411 1484 },
1412   - handleSelect(node){
  1485 + handleSelect(node) {
1413 1486 this.userNodes.push(node);
1414 1487 },
1415 1488 ArrSet(Arr, id) {
... ...
trash-ui/src/views/business/supervisionSpecial/index.vue
... ... @@ -2,18 +2,18 @@
2 2 <div class="app-container">
3 3 <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
4 4 <el-form-item label="类型" prop="type">
5   - <el-select v-model="queryParams.type" placeholder="请选择类型" size="small">
6   - <el-option label="工地" value="0" />
7   - <el-option label="处理场所" value="1" />
  5 + <el-select v-model="queryParams.type" placeholder="请选择类型" size="small">
  6 + <el-option label="工地" value="0"/>
  7 + <el-option label="处理场所" value="1"/>
8 8 </el-select>
9 9 </el-form-item>
10 10 <el-form-item label="项目名称" prop="title">
11   - <el-input v-model="queryParams.title" placeholder="请输入项目名称" size="small"
12   - />
  11 + <el-input v-model="queryParams.title" placeholder="请输入项目名称" size="small"
  12 + />
13 13 </el-form-item>
14 14 <el-form-item label="所属区域" prop="place">
15   - <el-select v-model="queryParams.place" placeholder="请选择类型" size="small">
16   - <el-option v-for="item in areas" :label="item.name" :value="item.name" />
  15 + <el-select v-model="queryParams.place" placeholder="请选择类型" size="small">
  16 + <el-option v-for="item in areas" :label="item.name" :value="item.name"/>
17 17 </el-select>
18 18 </el-form-item>
19 19 <el-form-item>
... ... @@ -25,59 +25,63 @@
25 25 <el-row :gutter="10" class="mb8">
26 26 <el-col :span="1.5">
27 27 <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
28   - v-hasPermi="['SupervisionSpecial:SupervisionSpecial:add']">新增</el-button>
  28 + v-hasPermi="['SupervisionSpecial:SupervisionSpecial:add']">新增
  29 + </el-button>
29 30 </el-col>
30 31 <el-col :span="1.5">
31 32 <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"
32   - v-hasPermi="['SupervisionSpecial:SupervisionSpecial:export']">导出</el-button>
  33 + v-hasPermi="['SupervisionSpecial:SupervisionSpecial:export']">导出
  34 + </el-button>
33 35 </el-col>
34 36 <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
35 37 </el-row>
36 38  
37 39 <el-table v-loading="loading" :data="SupervisionSpecialList" @selection-change="handleSelectionChange">
38   - <el-table-column type="selection" width="55" align="center" />
39   - <el-table-column label="序号" align="center" type="index" />
40   - <el-table-column label="所属区域" align="center" prop="place" />
  40 + <el-table-column type="selection" width="55" align="center"/>
  41 + <el-table-column label="序号" align="center" type="index"/>
  42 + <el-table-column label="所属区域" align="center" prop="place"/>
41 43 <el-table-column label="填报日期" align="center" prop="createTime" width="180">
42 44 <template slot-scope="scope">
43 45 <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
44 46 </template>
45 47 </el-table-column>
46   - <el-table-column label="项目名称" align="center" prop="title" />
47   - <el-table-column label="督查内容" align="center" prop="content" />
48   - <el-table-column label="督查人" align="center" prop="person" />
  48 + <el-table-column label="项目名称" align="center" prop="title"/>
  49 + <el-table-column label="督查内容" align="center" prop="content"/>
  50 + <el-table-column label="督查人" align="center" prop="person"/>
49 51  
50 52 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
51 53 <template slot-scope="scope">
52 54 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
53   - v-hasPermi="['SupervisionSpecial:SupervisionSpecial:edit']">查看详情</el-button>
  55 + v-hasPermi="['SupervisionSpecial:SupervisionSpecial:edit']">查看详情
  56 + </el-button>
54 57 </template>
55 58 </el-table-column>
56 59 </el-table>
57 60  
58 61 <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
59   - @pagination="getList" />
  62 + @pagination="getList"/>
60 63  
61 64 <!-- 添加或修改专项督察对话框 -->
62 65 <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
63 66 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
64 67 <el-form-item label="类型" prop="type">
65 68 <el-select v-model="form.type" placeholder="请选择类型" @change="form.title=null;">
66   - <el-option label="工地" value="0" />
67   - <el-option label="处理场所" value="1" />
  69 + <el-option label="工地" value="0"/>
  70 + <el-option label="处理场所" value="1"/>
68 71 </el-select>
69 72 </el-form-item>
70 73 <el-row>
71 74 <el-col :span="12">
72 75 <el-form-item label="项目名称" prop="title">
73   - <el-select v-model="form.title" placeholder="项目名称" >
74   - <el-option v-for="item in data[form.type]" :label="item.name" :value="item.name" @click.native="selectName(item)"/>
  76 + <el-select v-model="form.title" placeholder="项目名称">
  77 + <el-option v-for="item in data[form.type]" :label="item.name" :value="item.name"
  78 + @click.native="selectName(item)"/>
75 79 </el-select>
76 80 </el-form-item>
77 81 </el-col>
78 82 <el-col :span="12">
79 83 <el-form-item label="督查人" prop="person">
80   - <el-input v-model="form.person" placeholder="请输入督查人" />
  84 + <el-input v-model="form.person" placeholder="请输入督查人"/>
81 85 </el-form-item>
82 86 </el-col>
83 87  
... ... @@ -85,220 +89,352 @@
85 89 <el-form-item label="督查内容">
86 90 <el-input type="textarea" v-model="form.content" placeholder="督查内容" :rows="8"/>
87 91 </el-form-item>
  92 + <el-form-item label="附件" prop="attach" v-if="form.id==null">
  93 + <a style="color:blue;font-size: 12px;" @click="uploadImageDialog=true;">选择附件</a>
  94 + <br/>
  95 + <el-image v-for="item in slides"
  96 + style="width: 150px; height: 100px; margin: 5px;"
  97 + :src="item.url"
  98 + :preview-src-list="[item.url]"
  99 + :z-index="2000">
  100 + </el-image>
  101 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  102 + <video width="100%" controls="controls" height="100%" :src="item.url"></video>
  103 + </div>
  104 + <el-input v-model="form.attach" type="hidden"></el-input>
  105 + <div style="color: blue;" v-for="(img,index) in form.attach">{{ img.split("/")[img.split("/").length - 1] }}<a
  106 + @click="removeAttchItem(index,img)" style="color:red;">X</a></div>
  107 + </el-form-item>
  108 + <el-form-item label="附件" prop="attach" v-if="form.id!=null">
  109 + <el-image v-for="(item,index) in form.attach"
  110 + v-if="item.indexOf('.png') != -1||item.indexOf('.jpg') != -1"
  111 + style="width: 150px; height: 100px; margin: 5px;"
  112 + :src="showSlides(item)"
  113 + :preview-src-list="[showSlides(item)]"
  114 + :z-index="2000">
  115 + </el-image>
  116 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="(item,index) in form.attach" v-if="item.indexOf('.avi') != -1||item.indexOf('.mp4') != -1">
  117 + <video width="100%" controls="controls" height="100%" :src="showVideo(item)"></video>
  118 + </div>
  119 + <el-input v-model="form.attach" type="hidden"></el-input>
  120 + <a @click="downloadFile(img);" style="color: blue;" v-for="(img,index) in form.attach"> {{ img.split("/")[img.split("/").length - 1] }} </a>
  121 + </el-form-item>
88 122 </el-form>
89 123 <div slot="footer" class="dialog-footer">
90 124 <el-button type="primary" @click="submitForm">确 定</el-button>
91 125 <el-button @click="cancel">取 消</el-button>
92 126 </div>
93 127 </el-dialog>
  128 + <el-dialog title="附件" :visible.sync="uploadImageDialog" append-to-body :beforeClose="handleClose">
  129 + <el-upload multiple :headers="upload.headers" :action="upload.url" :file-list="fileList"
  130 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
  131 + :on-success="uploadSuccess" :before-upload="beforeUpload">
  132 + <el-button size="small" type="primary">选择附件</el-button>
  133 + <div slot="tip" class="el-upload__tip">只能上传不超过 100MB 的jpg、png、pdf、word、avi、mp4文件</div>
  134 + </el-upload>
  135 + <div style="height: 40px;width:100%;">
  136 + <el-button type="primary" style="margin-top: 20px;float:right;" @click="handleClose">关闭</el-button>
  137 + </div>
  138 + </el-dialog>
94 139 </div>
95 140 </template>
96 141  
97 142 <script>
98   - import {
99   - listSupervisionSpecial,
100   - getSupervisionSpecial,
101   - delSupervisionSpecial,
102   - addSupervisionSpecial,
103   - updateSupervisionSpecial,
104   - exportSupervisionSpecial
105   - }
106   - from "@/api/business/supervisionSpecial";
  143 +import {
  144 + addSupervisionSpecial,
  145 + delSupervisionSpecial,
  146 + exportSupervisionSpecial,
  147 + getSupervisionSpecial,
  148 + listSupervisionSpecial,
  149 + updateSupervisionSpecial
  150 +} from "@/api/business/supervisionSpecial";
107 151  
108   - import Editor from '@/components/Editor';
  152 +import Editor from '@/components/Editor';
109 153  
110   - import {
111   - earthsitesList,
112   - constructionsitesList,
113   - getArea,
114   - } from "@/api/dict";
  154 +import {constructionsitesList, earthsitesList, getArea,} from "@/api/dict";
  155 +import {getToken} from "@/utils/auth";
115 156  
116   - export default {
117   - name: "SupervisionSpecial",
118   - components: {
119   - Editor
120   - },
121   - data() {
122   - return {
123   - // 遮罩层
124   - loading: true,
125   - // 选中数组
126   - ids: [],
127   - // 非单个禁用
128   - single: true,
129   - // 非多个禁用
130   - multiple: true,
131   - // 显示搜索条件
132   - showSearch: true,
133   - // 总条数
134   - total: 0,
135   - // 专项督察表格数据
136   - SupervisionSpecialList: [],
137   - // 弹出层标题
138   - title: "",
139   - // 是否显示弹出层
  157 +export default {
  158 + name: "SupervisionSpecial",
  159 + components: {
  160 + Editor
  161 + },
  162 + data() {
  163 + return {
  164 + // 遮罩层
  165 + loading: true,
  166 + // 选中数组
  167 + ids: [],
  168 + // 非单个禁用
  169 + single: true,
  170 + // 非多个禁用
  171 + multiple: true,
  172 + // 显示搜索条件
  173 + showSearch: true,
  174 + // 总条数
  175 + total: 0,
  176 + // 专项督察表格数据
  177 + SupervisionSpecialList: [],
  178 + // 弹出层标题
  179 + title: "",
  180 + // 是否显示弹出层
  181 + open: false,
  182 + // 查询参数
  183 + queryParams: {
  184 + pageNum: 1,
  185 + pageSize: 10,
  186 + type: null,
  187 + title: null,
  188 + content: null,
  189 + person: null,
  190 + place: null,
  191 + },
  192 + data: {},
  193 + areas: [],
  194 + // 表单参数
  195 + form: {},
  196 + // 表单校验
  197 + rules: {},
  198 + upload: {
  199 + // 是否显示弹出层(用户导入)
140 200 open: false,
141   - // 查询参数
142   - queryParams: {
143   - pageNum: 1,
144   - pageSize: 10,
145   - type: null,
146   - title: null,
147   - content: null,
148   - person: null,
149   - place: null,
  201 + // 弹出层标题(用户导入)
  202 + title: "",
  203 + // 是否禁用上传
  204 + isUploading: false,
  205 + // 设置上传的请求头部
  206 + headers: {
  207 + Authorization: "Bearer " + getToken()
150 208 },
151   - data: {},
152   - areas: [],
153   - // 表单参数
154   - form: {},
155   - // 表单校验
156   - rules: {}
157   - };
158   - },
159   - created() {
160   - getArea().then(res => {
161   - this.areas = res.result;
162   - });
  209 + // 上传的地址
  210 + url: process.env.VUE_APP_BASE_API + "/business/threestep/upload",
  211 + },
  212 + uploadImageDialog:false,
  213 + fileList:[],
  214 + slides:[],
  215 + videoSrc:[]
  216 + };
  217 + },
  218 + created() {
  219 + getArea().then(res => {
  220 + this.areas = res.result;
  221 + });
163 222  
164   - let remoteQueryData = {
165   - "page": 1,
166   - "size": 9999
167   - };
  223 + let remoteQueryData = {
  224 + "page": 1,
  225 + "size": 9999
  226 + };
168 227  
169   - constructionsitesList(remoteQueryData).then(res => {
170   - this.data[0] = res.result.list;
171   - });
  228 + constructionsitesList(remoteQueryData).then(res => {
  229 + this.data[0] = res.result.list;
  230 + });
172 231  
173   - earthsitesList(remoteQueryData).then(res => {
174   - this.data[1] = res.result.list;
175   - });
  232 + earthsitesList(remoteQueryData).then(res => {
  233 + this.data[1] = res.result.list;
  234 + });
176 235  
177 236  
178   - this.getList();
179   - },
180   - methods: {
181   - selectName(item){
  237 + this.getList();
  238 + },
  239 + methods: {
  240 + selectName(item) {
182 241  
183 242  
184   - for(var i in this.areas){
185   - if(this.areas[i].code == item.areaCode){
186   - this.form.place = this.areas[i].name;
187   - }
  243 + for (var i in this.areas) {
  244 + if (this.areas[i].code == item.areaCode) {
  245 + this.form.place = this.areas[i].name;
188 246 }
  247 + }
189 248  
190 249  
191   -
192   - },
193   - /** 查询专项督察列表 */
194   - getList() {
195   - this.loading = true;
196   - listSupervisionSpecial(this.queryParams).then(response => {
197   - this.SupervisionSpecialList = response.rows;
198   - this.total = response.total;
199   - this.loading = false;
200   - });
201   - },
202   - // 取消按钮
203   - cancel() {
204   - this.open = false;
205   - this.reset();
206   - },
207   - // 表单重置
208   - reset() {
209   - this.form = {
210   - id: null,
211   - type: null,
212   - title: null,
213   - content: null,
214   - person: null,
215   - place: null,
216   - createBy: null,
217   - createTime: null,
218   - updateTime: null,
219   - updateBy: null
220   - };
221   - this.resetForm("form");
222   - },
223   - /** 搜索按钮操作 */
224   - handleQuery() {
225   - this.queryParams.pageNum = 1;
226   - this.getList();
227   - },
228   - /** 重置按钮操作 */
229   - resetQuery() {
230   - this.resetForm("queryForm");
231   - this.handleQuery();
232   - },
233   - // 多选框选中数据
234   - handleSelectionChange(selection) {
235   - this.ids = selection.map(item => item.id)
236   - this.single = selection.length !== 1
237   - this.multiple = !selection.length
238   - },
239   - /** 新增按钮操作 */
240   - handleAdd() {
241   - this.reset();
  250 + },
  251 + /** 查询专项督察列表 */
  252 + getList() {
  253 + this.loading = true;
  254 + listSupervisionSpecial(this.queryParams).then(response => {
  255 + this.SupervisionSpecialList = response.rows;
  256 + this.total = response.total;
  257 + this.loading = false;
  258 + });
  259 + },
  260 + // 取消按钮
  261 + cancel() {
  262 + this.open = false;
  263 + this.uploadImageDialog = false;
  264 + this.slides = [];
  265 + this.videoSrc = [];
  266 + this.reset();
  267 + },
  268 + // 表单重置
  269 + reset() {
  270 + this.form = {
  271 + id: null,
  272 + type: null,
  273 + title: null,
  274 + content: null,
  275 + person: null,
  276 + place: null,
  277 + createBy: null,
  278 + createTime: null,
  279 + updateTime: null,
  280 + updateBy: null
  281 + };
  282 + this.resetForm("form");
  283 + },
  284 + /** 搜索按钮操作 */
  285 + handleQuery() {
  286 + this.queryParams.pageNum = 1;
  287 + this.getList();
  288 + },
  289 + /** 重置按钮操作 */
  290 + resetQuery() {
  291 + this.resetForm("queryForm");
  292 + this.handleQuery();
  293 + },
  294 + // 多选框选中数据
  295 + handleSelectionChange(selection) {
  296 + this.ids = selection.map(item => item.id)
  297 + this.single = selection.length !== 1
  298 + this.multiple = !selection.length
  299 + },
  300 + /** 新增按钮操作 */
  301 + handleAdd() {
  302 + this.reset();
  303 + this.open = true;
  304 + this.title = "添加专项督察";
  305 + },
  306 + /** 修改按钮操作 */
  307 + handleUpdate(row) {
  308 + this.reset();
  309 + const id = row.id || this.ids
  310 + getSupervisionSpecial(id).then(response => {
  311 + this.form = response.data;
  312 + if (this.form.attach && this.form.attach != "")
  313 + this.form.attach = this.form.attach.split(",");
242 314 this.open = true;
243   - this.title = "添加专项督察";
244   - },
245   - /** 修改按钮操作 */
246   - handleUpdate(row) {
247   - this.reset();
248   - const id = row.id || this.ids
249   - getSupervisionSpecial(id).then(response => {
250   - this.form = response.data;
251   - this.open = true;
252   - this.title = "修改专项督察";
253   - });
254   - },
255   - /** 提交按钮 */
256   - submitForm() {
257   - this.$refs["form"].validate(valid => {
258   - if (valid) {
259   - if (this.form.id != null) {
260   - updateSupervisionSpecial(this.form).then(response => {
261   - this.msgSuccess("修改成功");
262   - this.open = false;
263   - this.getList();
264   - });
265   - } else {
266   - addSupervisionSpecial(this.form).then(response => {
267   - this.msgSuccess("新增成功");
268   - this.open = false;
269   - this.getList();
270   - });
271   - }
  315 + this.title = "修改专项督察";
  316 + });
  317 + },
  318 + /** 提交按钮 */
  319 + submitForm() {
  320 + this.$refs["form"].validate(valid => {
  321 + if (valid) {
  322 + this.form.attach = this.form.attach +"";
  323 + if (this.form.id != null) {
  324 + updateSupervisionSpecial(this.form).then(response => {
  325 + this.msgSuccess("修改成功");
  326 + this.open = false;
  327 + this.getList();
  328 + });
  329 + } else {
  330 + addSupervisionSpecial(this.form).then(response => {
  331 + this.msgSuccess("新增成功");
  332 + this.open = false;
  333 + this.getList();
  334 + });
272 335 }
273   - });
274   - },
275   - /** 删除按钮操作 */
276   - handleDelete(row) {
277   - const ids = row.id || this.ids;
278   - this.$confirm('是否确认删除专项督察编号为"' + ids + '"的数据项?', "警告", {
279   - confirmButtonText: "确定",
280   - cancelButtonText: "取消",
281   - type: "warning"
282   - }).then(function() {
283   - return delSupervisionSpecial(ids);
284   - }).then(() => {
285   - this.getList();
286   - this.msgSuccess("删除成功");
287   - })
288   - },
289   - /** 导出按钮操作 */
290   - handleExport() {
291   - const queryParams = this.queryParams;
292   - this.$confirm('是否确认导出所有专项督察数据项?', "警告", {
293   - confirmButtonText: "确定",
294   - cancelButtonText: "取消",
295   - type: "warning"
296   - }).then(function() {
297   - return exportSupervisionSpecial(queryParams);
298   - }).then(response => {
299   - this.download(response.message);
  336 + }
  337 + });
  338 + },
  339 + /** 删除按钮操作 */
  340 + handleDelete(row) {
  341 + const ids = row.id || this.ids;
  342 + this.$confirm('是否确认删除专项督察编号为"' + ids + '"的数据项?', "警告", {
  343 + confirmButtonText: "确定",
  344 + cancelButtonText: "取消",
  345 + type: "warning"
  346 + }).then(function () {
  347 + return delSupervisionSpecial(ids);
  348 + }).then(() => {
  349 + this.getList();
  350 + this.msgSuccess("删除成功");
  351 + })
  352 + },
  353 + /** 导出按钮操作 */
  354 + handleExport() {
  355 + const queryParams = this.queryParams;
  356 + this.$confirm('是否确认导出所有专项督察数据项?', "警告", {
  357 + confirmButtonText: "确定",
  358 + cancelButtonText: "取消",
  359 + type: "warning"
  360 + }).then(function () {
  361 + return exportSupervisionSpecial(queryParams);
  362 + }).then(response => {
  363 + this.download(response.message);
  364 + })
  365 + },
  366 + removeAttchItem(index, img) {
  367 + this.form.attach.splice(this.form.attach.indexOf(img), 1);
  368 + for(let i=0;i<this.slides.length;i++){
  369 + if(this.slides[i].alt==img){
  370 + this.slides.splice(i, 1);
  371 + }
  372 + }
  373 + for(let i=0;i<this.videoSrc.length;i++){
  374 + if(this.videoSrc[i].alt==img){
  375 + this.videoSrc.splice(i, 1);
  376 + }
  377 + }
  378 +
  379 + this.$forceUpdate();
  380 + },
  381 + uploadSuccess(res, file, fileList) {
  382 + if(res.code){
  383 + this.$message(res.message);
  384 + return;
  385 + }
  386 + if(!this.form.attach){
  387 + this.form.attach = [];
  388 + }
  389 + this.form.attach.push(res);
  390 + if(file.name.indexOf('.jpg') > -1 ||file.name.indexOf('.png') > -1){
  391 + let url = URL.createObjectURL(file.raw)
  392 + this.slides.push({
  393 + url:url,
  394 + alt:res
300 395 })
301 396 }
302   - }
303   - };
  397 + if(file.name.indexOf('.avi') > -1 ||file.name.indexOf('.mp4') > -1){
  398 + let url = URL.createObjectURL(file.raw)
  399 + this.videoSrc.push({
  400 + url:url,
  401 + alt:res
  402 + });
  403 + }
  404 + },
  405 + showFileUpload(i) {
  406 + this.uploadImageDialog = true;
  407 + this.picIndex = i;
  408 + },
  409 + beforeUpload(file) {
  410 + let isRightSize = file.size / 1024 / 1024 < 100
  411 + if (!isRightSize) {
  412 + this.$message.error('文件大小超过 100MB')
  413 + return isRightSize;
  414 + }
  415 + let isAccept = false;
  416 + if (file.name.indexOf('.docx') > -1 || file.name.indexOf(".jpg") > -1 || file.name.indexOf('.doc') > -1 || file
  417 + .name.indexOf('.pdf') > -1 || file.name.indexOf('.png') > -1||file.name.indexOf('.mp4') > -1 || file.name.indexOf(".avi") > -1) {
  418 + isAccept = true;
  419 + }
  420 + if (!isAccept) {
  421 + this.$message.error('应该选择PDF、PNG、JPG、WORD、mp4、avi类型的文件')
  422 + return isAccept;
  423 + }
  424 + },
  425 + downloadFile(path) {
  426 + window.location.href = process.env.VUE_APP_BASE_API + "/business/threestep/download?path=" + encodeURI(path);
  427 + },
  428 + handleClose() {
  429 + this.uploadImageDialog = false;
  430 + this.fileList = [];
  431 + },
  432 + showSlides(path) {
  433 + return process.env.VUE_APP_BASE_API + path;
  434 + },
  435 + showVideo(path) {
  436 + return process.env.VUE_APP_BASE_API + path;
  437 + },
  438 + }
  439 +};
304 440 </script>
... ...
trash-ui/src/views/caseOffline/caseOffline/caseOfflineInfo.vue
... ... @@ -44,15 +44,31 @@
44 44 :preview-src-list="[showSlides(item)]"
45 45 :z-index="2000">
46 46 </el-image>
  47 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="(item,index) in form.attach" v-if="item.indexOf('.avi') != -1||item.indexOf('.mp4') != -1">
  48 + <video width="100%" controls="controls" height="100%" :src="showVideo(item)"></video>
  49 + </div>
47 50 <el-input v-model="form.attach" type="hidden"></el-input>
48 51 <a @click="downloadFile(img);" style="color: blue;" v-for="(img,index) in form.attach"> {{ img.split("/")[img.split("/").length - 1] }} </a>
49 52 </el-form-item>
50 53  
51   -
52   - <el-table :data="adviceList" v-if="adviceList != null">
53   - <el-table-column label="用户" width="55" align="center" prop="name"/>
54   - <el-table-column label="审批内容" align="center" prop="text"/>
55   - <el-table-column label="时间" align="center" prop="time"/>
  54 + <el-table :data="replyApprovalProcessList">
  55 + <el-table-column property="replyPeople" label="操作人" header-align="center" align="center"></el-table-column>
  56 + <el-table-column property="reply" label="意见" header-align="center" align="center"></el-table-column>
  57 + <el-table-column property="replyTime" label="操作时间" header-align="center" align="center"></el-table-column>
  58 + <el-table-column property="replyImg" label="预览" header-align="center" align="center">
  59 + <template slot-scope="scope">
  60 + <el-button
  61 + size="mini"
  62 + type="text"
  63 + icon="el-icon-view"
  64 + @click="openImage(scope.row.replyImg)"
  65 + v-if="scope.row.replyImg!=null && scope.row.replyImg!='undefined'"
  66 + v-hasPermi="['casefile:violationWarningInformation:edit']"
  67 + >查看
  68 + </el-button>
  69 + <span v-if="scope.row.replyImg==null || scope.row.replyImg=='undefined'">暂无</span>
  70 + </template>
  71 + </el-table-column>
56 72 </el-table>
57 73  
58 74  
... ... @@ -60,6 +76,22 @@
60 76 <el-dialog title="" :visible.sync="showPic" append-to-body width="400px">
61 77 <img :src="picImage" width="100%" height="400px"/>
62 78 </el-dialog>
  79 + <el-dialog title="预览" :visible.sync="openImg" append-to-body width="300px">
  80 + <div v-for="item in img" style="border: 1px black solid;text-align: center;">
  81 +
  82 + <el-image style="width: 250px; height: 250px; margin: 5px;"
  83 + v-if="item.indexOf('.jpg')>-1||item.indexOf('.png')>-1||item.indexOf('.jpeg')>-1||item.indexOf('.gif')>-1"
  84 + :src="showSlides(item)"
  85 + :preview-src-list="[showSlides(item)]"
  86 + :z-index="2000">
  87 + </el-image>
  88 + <div style="display: inline-block;margin: 5px;position: relative; width: 250px;height: 250px;overflow:hidden;" v-if="item.indexOf('.mp4')>-1||item.indexOf('.avi')>-1">
  89 + <video width="100%" controls="controls" height="100%" :src="showSlides(item)"></video>
  90 + </div>
  91 + <a @click="downloadFile(item);" style="color: blue;"> 下载: {{ item.split("/")[item.split("/").length - 1] }} </a>
  92 + </div>
  93 +
  94 + </el-dialog>
63 95 </div>
64 96 </template>
65 97  
... ...
trash-ui/src/views/caseOffline/caseOffline/index.vue
... ... @@ -115,11 +115,14 @@
115 115 <a style="color:blue;font-size: 12px;" @click="uploadImageDialog=true;">选择附件</a>
116 116 <br/>
117 117 <el-image v-for="item in slides"
118   - style="width: 100px; height: 100px; margin: 5px;"
  118 + style="width: 150px; height: 100px; margin: 5px;"
119 119 :src="item.url"
120 120 :preview-src-list="[item.url]"
121 121 :z-index="2000">
122 122 </el-image>
  123 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  124 + <video width="100%" controls="controls" height="100%" :src="item.url"></video>
  125 + </div>
123 126 <el-input v-model="form.attach" type="hidden"></el-input>
124 127 <div style="color: blue;" v-for="(img,index) in form.attach">{{ img.split("/")[img.split("/").length - 1] }}<a
125 128 @click="removeAttchItem(index,img)" style="color:red;">X</a></div>
... ... @@ -143,9 +146,10 @@
143 146  
144 147 <el-dialog title="附件" :visible.sync="uploadImageDialog" append-to-body :beforeClose="handleClose">
145 148 <el-upload multiple :headers="upload.headers" :action="upload.url" :file-list="fileList"
  149 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
146 150 :on-success="uploadSuccess" :before-upload="beforeUpload">
147 151 <el-button size="small" type="primary">选择附件</el-button>
148   - <div slot="tip" class="el-upload__tip">只能上传不超过 20MB 的jpg、png、pdf、word文件</div>
  152 + <div slot="tip" class="el-upload__tip">只能上传不超过 20MB 的jpg、png、pdf、word、avi、mp4文件</div>
149 153 </el-upload>
150 154 <div style="height: 40px;width:100%;">
151 155 <el-button type="primary" style="margin-top: 20px;float:right;" @click="handleClose">关闭</el-button>
... ... @@ -154,4 +158,4 @@
154 158 </div>
155 159 </template>
156 160  
157   -<script src="../../../api/caseoffline.js"/>
  161 +<script src="@/api/caseoffline.js"/>
... ...
trash-ui/src/views/casefile/violationCaseFile/index.vue
... ... @@ -180,7 +180,7 @@
180 180 </el-row>
181 181 <el-row :gutter="2">
182 182 <el-col :span="11">
183   - <el-form-item label="公司" prop="violationGrade">
  183 + <el-form-item label="公司" prop="companyName">
184 184 <el-select v-model="form.companyName" :filterable="true" :remote-method="companyLoadOptions" :loading="isLoadingCompany" placeholder="请输入项目名称" style="width: 100%;">
185 185 <el-option v-for="item in companyList" :key="item.name" :label="item.name" :value="item.name"></el-option>
186 186 </el-select>
... ... @@ -193,7 +193,7 @@
193 193  
194 194 <el-row :gutter="2">
195 195 <el-col :span="8" :offset="3">
196   - <el-button type="primary" @click="createDescribe">生成违规描述</el-button>
  196 + <el-button style="margin-left: 14px" type="primary" @click="createDescribe">生成违规描述</el-button>
197 197 </el-col>
198 198 </el-row>
199 199 <el-row>
... ... @@ -205,24 +205,26 @@
205 205 </el-row>
206 206 <el-form-item label="推送对象">
207 207 <el-radio-group v-model="form.sendObject">
208   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
209   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  208 + <el-radio label="区管理部门">区管理部门</el-radio>
210 209 <el-radio label="运输企业">运输企业</el-radio>
211 210 </el-radio-group>
212 211 </el-form-item>
213   - <el-form-item label="附件图片预览" v-if="slide1.length!=0">
  212 + <el-form-item label="附件预览" v-if="slide1.length!=0">
214 213 <el-image v-for="item in slide1"
215   - style="width: 100px; height: 100px; margin: 5px;"
  214 + style="width: 150px; height: 100px; margin: 5px;"
216 215 :src="item"
217 216 :preview-src-list="slide1"
218 217 :z-index="2000">
219 218 </el-image>
  219 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  220 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  221 + </div>
220 222 </el-form-item>
221 223 <el-form-item prop="fileEntityList" label="附件">
222 224 <el-upload
223 225 ref="upload"
224 226 action=""
225   - accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg"
  227 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
226 228 :on-change="fileChange"
227 229 :auto-upload="false"
228 230 :show-file-list="false"
... ...
trash-ui/src/views/casefile/violationCaseFile/violationCaseFileInfo.vue
... ... @@ -93,8 +93,7 @@
93 93 </el-row>
94 94 <el-form-item label="推送对象">
95 95 <el-radio-group v-model="form.sendObject" :disabled="true">
96   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
97   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  96 + <el-radio label="区管理部门">区管理部门</el-radio>
98 97 <el-radio label="运输企业">运输企业</el-radio>
99 98 </el-radio-group>
100 99 </el-form-item>
... ... @@ -124,11 +123,14 @@
124 123 </el-table>
125 124 <el-dialog title="查看附件" :visible.sync="open" append-to-body>
126 125 <el-image v-for="item in slide1"
127   - style="width: 100px; height: 100px; margin: 5px;"
  126 + style="width: 150px; height: 100px; margin: 5px;"
128 127 :src="item"
129 128 :preview-src-list="slide1"
130 129 :z-index="2000">
131 130 </el-image>
  131 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  132 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  133 + </div>
132 134 <el-table :data="fileEntityList">
133 135 <el-table-column property="name" label="附件名称" header-align="center" align="center"></el-table-column>
134 136 <el-table-column label="操作" class-name="small-padding fixed-width" header-align="center" align="center">
... ... @@ -149,11 +151,19 @@
149 151 </div>
150 152 </el-dialog>
151 153 <el-dialog title="预览" :visible.sync="openImg" append-to-body v-if="entryType==0" width="300px">
152   - <el-image style="width: 250px; height: 250px; margin: 5px;"
153   - :src="img[0]"
154   - :preview-src-list="img"
155   - :z-index="2000">
156   - </el-image>
  154 + <div v-for="item in img" style="border: 1px black solid;text-align: center;">
  155 +
  156 + <el-image style="width: 250px; height: 250px; margin: 5px;"
  157 + v-if="item.indexOf('.jpg')>-1||item.indexOf('.png')>-1||item.indexOf('.jpeg')>-1||item.indexOf('.gif')>-1"
  158 + :src="showFile(item)"
  159 + :preview-src-list="[showFile(item)]"
  160 + :z-index="2000">
  161 + </el-image>
  162 + <div style="display: inline-block;margin: 5px;position: relative; width: 250px;height: 250px;overflow:hidden;" v-if="item.indexOf('.mp4')>-1||item.indexOf('.avi')>-1">
  163 + <video width="100%" controls="controls" height="100%" :src="showFile(item)"></video>
  164 + </div>
  165 + <a @click="downloadFile(item);" style="color: blue;"> 下载: {{ item.split("/")[item.split("/").length - 1] }} </a>
  166 + </div>
157 167 </el-dialog>
158 168 </el-form>
159 169 </template>
... ... @@ -185,7 +195,8 @@ export default {
185 195 img: [],
186 196 showPic: null,
187 197 picImage: null,
188   - slide1: []
  198 + slide1: [],
  199 + videoSrc: [],
189 200 }
190 201 },
191 202 created() {
... ... @@ -210,6 +221,9 @@ export default {
210 221 if (item.url.indexOf(".jpg") > -1 || item.url.indexOf(".png") > -1 || item.url.indexOf(".jpeg") > -1 || item.url.indexOf(".jpg") > -1) {
211 222 this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
212 223 }
  224 + if (item.url.indexOf(".mp4") > -1 || item.url.indexOf(".avi") > -1) {
  225 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  226 + }
213 227 })
214 228 });
215 229  
... ... @@ -228,9 +242,19 @@ export default {
228 242 a.setAttribute('href', process.env.VUE_APP_BASE_API + url);
229 243 a.click()
230 244 },
231   - openImage(img) {
  245 + openImage(path) {
  246 + this.img = [];
232 247 this.openImg = true;
233   - this.img.push(img);
  248 + let files = path.split(",");
  249 + for(let i=0;i<files.length;i++){
  250 + this.img.push(files[i]);
  251 + }
  252 + },
  253 + downloadFile(path) {
  254 + window.location.href = process.env.VUE_APP_BASE_API + "/business/threestep/download?path=" + encodeURI(path);
  255 + },
  256 + showFile(path) {
  257 + return process.env.VUE_APP_BASE_API + path;
234 258 },
235 259 }
236 260 }
... ...
trash-ui/src/views/casefile/violationWarningInformation/index.vue
... ... @@ -171,7 +171,7 @@
171 171 </el-row>
172 172 <el-row :gutter="2">
173 173 <el-col :span="8" :offset="3">
174   - <el-button type="primary" @click="createDescribe">生成违规描述</el-button>
  174 + <el-button style="margin-left: 14px" type="primary" @click="createDescribe">生成违规描述</el-button>
175 175 </el-col>
176 176 <el-col :span="11">
177 177 <el-form-item label="企业名称" prop="companyName">
... ... @@ -190,24 +190,26 @@
190 190 </el-row>
191 191 <el-form-item label="推送对象">
192 192 <el-radio-group v-model="form.sendObject">
193   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
194   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  193 + <el-radio label="区管理部门">区管理部门</el-radio>
195 194 <el-radio label="运输企业">运输企业</el-radio>
196 195 </el-radio-group>
197 196 </el-form-item>
198   - <el-form-item label="附件图片预览" v-if="slide1.length!=0">
  197 + <el-form-item label="附件预览" v-if="slide1.length!=0">
199 198 <el-image v-for="item in slide1"
200   - style="width: 100px; height: 100px; margin: 5px;"
  199 + style="width: 150px; height: 100px; margin: 5px;"
201 200 :src="item"
202 201 :preview-src-list="slide1"
203 202 :z-index="2000">
204 203 </el-image>
  204 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  205 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  206 + </div>
205 207 </el-form-item>
206 208 <el-form-item prop="fileEntityList" label="附件">
207 209 <el-upload
208 210 ref="upload"
209 211 action=""
210   - accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg"
  212 + accept=".docx,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
211 213 :on-change="fileChange"
212 214 :auto-upload="false"
213 215 :show-file-list="false"
... ...
trash-ui/src/views/casefile/violationWarningInformation/violationWarningInformationInfo.vue
... ... @@ -91,8 +91,7 @@
91 91 </el-row>
92 92 <el-form-item label="推送对象">
93 93 <el-radio-group v-model="form.sendObject" :disabled="true">
94   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
95   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  94 + <el-radio label="区管理部门">区管理部门</el-radio>
96 95 <el-radio label="运输企业">运输企业</el-radio>
97 96 </el-radio-group>
98 97 </el-form-item>
... ... @@ -120,13 +119,16 @@
120 119 </template>
121 120 </el-table-column>
122 121 </el-table>
123   - <el-dialog title="查看附件" :visible.sync="open" append-to-body>
  122 + <el-dialog title="附件预览" :visible.sync="open" append-to-body>
124 123 <el-image v-for="item in slide1"
125   - style="width: 100px; height: 100px; margin: 5px;"
  124 + style="width: 150px; height: 100px; margin:5px;"
126 125 :src="item"
127 126 :preview-src-list="slide1"
128 127 :z-index="2000">
129 128 </el-image>
  129 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  130 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  131 + </div>
130 132 <el-table :data="fileEntityList">
131 133 <el-table-column property="name" label="附件名称" header-align="center" align="center"></el-table-column>
132 134 <el-table-column label="操作" class-name="small-padding fixed-width" header-align="center" align="center">
... ... @@ -147,11 +149,20 @@
147 149 </div>
148 150 </el-dialog>
149 151 <el-dialog title="预览" :visible.sync="openImg" append-to-body v-if="entryType==0" width="300px">
150   - <el-image style="width: 250px; height: 250px; margin: 5px;"
151   - :src="img[0]"
152   - :preview-src-list="img"
153   - :z-index="2000">
154   - </el-image>
  152 + <div v-for="item in img" style="border: 1px black solid;text-align: center;">
  153 +
  154 + <el-image style="width: 250px; height: 250px; margin: 5px;"
  155 + v-if="item.indexOf('.jpg')>-1||item.indexOf('.png')>-1||item.indexOf('.jpeg')>-1||item.indexOf('.gif')>-1"
  156 + :src="showFile(item)"
  157 + :preview-src-list="[showFile(item)]"
  158 + :z-index="2000">
  159 + </el-image>
  160 + <div style="display: inline-block;margin: 5px;position: relative; width: 250px;height: 250px;overflow:hidden;" v-if="item.indexOf('.mp4')>-1||item.indexOf('.avi')>-1">
  161 + <video width="100%" controls="controls" height="100%" :src="showFile(item)"></video>
  162 + </div>
  163 + <a @click="downloadFile(item);" style="color: blue;"> 下载: {{ item.split("/")[item.split("/").length - 1] }} </a>
  164 + </div>
  165 +
155 166 </el-dialog>
156 167 </el-form>
157 168 </template>
... ... @@ -183,7 +194,8 @@ export default {
183 194 img: [],
184 195 showPic: null,
185 196 picImage: null,
186   - slide1: []
  197 + slide1: [],
  198 + videoSrc: [],
187 199 }
188 200 },
189 201 created() {
... ... @@ -206,6 +218,9 @@ export default {
206 218 if (item.url.indexOf(".jpg") > -1 || item.url.indexOf(".png") > -1 || item.url.indexOf(".jpeg") > -1 || item.url.indexOf(".jpg") > -1) {
207 219 this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
208 220 }
  221 + if (item.url.indexOf(".mp4") > -1 || item.url.indexOf(".avi") > -1) {
  222 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  223 + }
209 224 })
210 225 });
211 226 listReplyApprovalProcess({tableName: "violation_warning" + ":" + this.idInfo}).then(response => {
... ... @@ -222,11 +237,20 @@ export default {
222 237 a.setAttribute('href', process.env.VUE_APP_BASE_API + url);
223 238 a.click()
224 239 },
225   - openImage(img) {
  240 + openImage(path) {
226 241 this.img = [];
227 242 this.openImg = true;
228   - this.img.push(img);
229   - }
  243 + let files = path.split(",");
  244 + for(let i=0;i<files.length;i++){
  245 + this.img.push(files[i]);
  246 + }
  247 + },
  248 + downloadFile(path) {
  249 + window.location.href = process.env.VUE_APP_BASE_API + "/business/threestep/download?path=" + encodeURI(path);
  250 + },
  251 + showFile(path) {
  252 + return process.env.VUE_APP_BASE_API + path;
  253 + },
230 254 }
231 255 }
232 256 </script>
... ...
trash-ui/src/views/h5/leaveApplication/index.vue
... ... @@ -142,7 +142,7 @@
142 142 </el-form-item>
143 143 <el-form-item label="附件图片预览" v-if="slide1.length!=0">
144 144 <el-image v-for="item in slide1"
145   - style="width: 100px; height: 100px; margin: 5px;"
  145 + style="width: 150px; height: 100px; margin: 5px;"
146 146 :src="item"
147 147 :preview-src-list="slide1"
148 148 :z-index="2000">
... ...
trash-ui/src/views/h5/leaveApplication/leaveApplicationInfo.vue
... ... @@ -46,7 +46,7 @@
46 46 </el-form-item>
47 47 <el-form-item label="附件图片预览" v-if="slide1.length!=0">
48 48 <el-image v-for="item in slide1"
49   - style="width: 100px; height: 100px; margin: 5px;"
  49 + style="width: 150px; height: 100px; margin: 5px;"
50 50 :src="item"
51 51 :preview-src-list="slide1"
52 52 :z-index="2000">
... ...
trash-ui/src/views/h5/task/violationCaseFileInfo.vue
... ... @@ -72,8 +72,7 @@
72 72  
73 73 <el-form-item label="推送对象">
74 74 <el-radio-group v-model="form.sendObject" :disabled="true">
75   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
76   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  75 + <el-radio label="区管理部门">区管理部门</el-radio>
77 76 <el-radio label="运输企业">运输企业</el-radio>
78 77 </el-radio-group>
79 78 </el-form-item>
... ... @@ -97,6 +96,15 @@
97 96 </el-table-column>
98 97 </el-table>
99 98 <el-dialog title="查看附件" :visible.sync="open" append-to-body width="300px">
  99 + <el-image v-for="item in slide1"
  100 + style="width: 100px; height: 100px; margin: 5px;"
  101 + :src="item"
  102 + :preview-src-list="slide1"
  103 + :z-index="2000">
  104 + </el-image>
  105 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  106 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  107 + </div>
100 108 <el-table :data="fileEntityList">
101 109 <el-table-column property="name" label="附件名称" header-align="center" align="center"></el-table-column>
102 110 <el-table-column label="操作" class-name="small-padding fixed-width" header-align="center" align="center">
... ... @@ -117,7 +125,11 @@
117 125 </div>
118 126 </el-dialog>
119 127 <el-dialog title="预览" :visible.sync="openImg" append-to-body v-if="entryType==0" width="300px">
120   - <img :src="img" width="100%" height="750px" />
  128 + <el-image style="width: 250px; height: 250px; margin: 5px;"
  129 + :src="img[0]"
  130 + :preview-src-list="img"
  131 + :z-index="2000">
  132 + </el-image>
121 133 </el-dialog>
122 134  
123 135 </el-form>
... ... @@ -147,6 +159,10 @@ export default {
147 159 replyApprovalProcessList:[],
148 160 openImg:false,
149 161 img:null,
  162 + showPic: null,
  163 + picImage: null,
  164 + slide1: [],
  165 + videoSrc: [],
150 166 }
151 167 },
152 168 created() {
... ... @@ -169,6 +185,14 @@ export default {
169 185 this.form = response.data.violationCaseFile;
170 186 let files = JSON.stringify(response.data.uploadFiles);
171 187 this.fileEntityList = JSON.parse(files.replaceAll("filePath", "url").replaceAll("fileName", "name"));
  188 + this.fileEntityList.map(item => {
  189 + if (item.url.indexOf(".jpg") > -1 || item.url.indexOf(".png") > -1 || item.url.indexOf(".jpeg") > -1 || item.url.indexOf(".jpg") > -1) {
  190 + this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  191 + }
  192 + if (item.url.indexOf(".mp4") > -1 || item.url.indexOf(".avi") > -1) {
  193 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  194 + }
  195 + })
172 196 });
173 197  
174 198  
... ... @@ -186,9 +210,10 @@ export default {
186 210 a.setAttribute('href', process.env.VUE_APP_BASE_API + url);
187 211 a.click()
188 212 },
189   - openImage(base64){
  213 + openImage(img) {
  214 + this.img = [];
190 215 this.openImg = true;
191   - this.img = base64;
  216 + this.img.push(img);
192 217 },
193 218 }
194 219 }
... ...
trash-ui/src/views/h5/task/violationWarningInformationInfo.vue
... ... @@ -69,8 +69,7 @@
69 69  
70 70 <el-form-item label="推送对象">
71 71 <el-radio-group v-model="form.sendObject" :disabled="true">
72   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
73   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  72 + <el-radio label="区管理部门">区管理部门</el-radio>
74 73 <el-radio label="运输企业">运输企业</el-radio>
75 74 </el-radio-group>
76 75 </el-form-item>
... ... @@ -93,6 +92,15 @@
93 92 </el-table-column>
94 93 </el-table>
95 94 <el-dialog title="查看附件" :visible.sync="open" append-to-body width="300px">
  95 + <el-image v-for="item in slide1"
  96 + style="width: 150px; height: 100px; margin:5px;"
  97 + :src="item"
  98 + :preview-src-list="slide1"
  99 + :z-index="2000">
  100 + </el-image>
  101 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  102 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  103 + </div>
96 104 <el-table :data="fileEntityList">
97 105 <el-table-column property="name" label="附件名称" header-align="center" align="center"></el-table-column>
98 106 <el-table-column label="操作" class-name="small-padding fixed-width" header-align="center" align="center">
... ... @@ -113,7 +121,11 @@
113 121 </div>
114 122 </el-dialog>
115 123 <el-dialog title="预览" :visible.sync="openImg" append-to-body v-if="entryType==0" width="300px">
116   - <img :src="img" width="100%" height="750px" />
  124 + <el-image style="width: 250px; height: 250px; margin: 5px;"
  125 + :src="img[0]"
  126 + :preview-src-list="img"
  127 + :z-index="2000">
  128 + </el-image>
117 129 </el-dialog>
118 130 </el-form>
119 131 </template>
... ... @@ -142,6 +154,10 @@ export default {
142 154 replyApprovalProcessList:[],
143 155 openImg:false,
144 156 img:null,
  157 + showPic: null,
  158 + picImage: null,
  159 + slide1: [],
  160 + videoSrc: [],
145 161 }
146 162 },
147 163 created() {
... ... @@ -160,6 +176,14 @@ export default {
160 176 this.form = response.data.violationWarningInformation;
161 177 let files = JSON.stringify(response.data.uploadFiles);
162 178 this.fileEntityList = JSON.parse(files.replaceAll("filePath", "url").replaceAll("fileName", "name"));
  179 + this.fileEntityList.map(item => {
  180 + if (item.url.indexOf(".jpg") > -1 || item.url.indexOf(".png") > -1 || item.url.indexOf(".jpeg") > -1 || item.url.indexOf(".jpg") > -1) {
  181 + this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  182 + }
  183 + if (item.url.indexOf(".mp4") > -1 || item.url.indexOf(".avi") > -1) {
  184 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  185 + }
  186 + })
163 187 });
164 188 listReplyApprovalProcess({tableName:"violation_warning" + ":" + this.idInfo}).then(response => {
165 189 this.replyApprovalProcessList = response.rows;
... ... @@ -176,8 +200,9 @@ export default {
176 200 a.click()
177 201 },
178 202 openImage(base64){
  203 + this.img = [];
179 204 this.openImg = true;
180   - this.img = base64;
  205 + this.img.push(img);
181 206 }
182 207 }
183 208 }
... ...
trash-ui/src/views/h5/violationCaseFile/index.vue
... ... @@ -173,16 +173,26 @@
173 173 </el-row>
174 174 <el-form-item label="推送对象">
175 175 <el-radio-group v-model="form.sendObject">
176   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
177   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  176 + <el-radio label="区管理部门">区管理部门</el-radio>
178 177 <el-radio label="运输企业">运输企业</el-radio>
179 178 </el-radio-group>
180 179 </el-form-item>
  180 + <el-form-item label="附件预览" v-if="slide1.length!=0">
  181 + <el-image v-for="item in slide1"
  182 + style="width: 150px; height: 100px; margin: 5px;"
  183 + :src="item"
  184 + :preview-src-list="slide1"
  185 + :z-index="2000">
  186 + </el-image>
  187 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  188 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  189 + </div>
  190 + </el-form-item>
181 191 <el-form-item prop="fileEntityList" label="附件">
182 192 <el-upload
183 193 ref="upload"
184 194 action=""
185   - accept=".docx,.xlsx,.xls,.ppt,.doc,.pdf,.png,.jpeg,.png,.jpg"
  195 + accept=".docx,.xlsx,.xls,.ppt,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
186 196 :on-change="fileChange"
187 197 :auto-upload="false"
188 198 :show-file-list="false"
... ... @@ -228,7 +238,8 @@
228 238 </div>
229 239 </template>
230 240  
231   -<script src="../../../api/vio_casefile"/>
  241 +<script src="../../../api/vio_casefile">
  242 +</script>
232 243 <style scope>
233 244 .el-select-dropdown__item{
234 245 width:300px;
... ...
trash-ui/src/views/h5/violationWarningInformation/index.vue
... ... @@ -134,16 +134,26 @@
134 134 </el-form-item>
135 135 <el-form-item label="推送对象">
136 136 <el-radio-group v-model="form.sendObject">
137   - <el-radio label="区管理部门(治)">区管理部门(治)</el-radio>
138   - <el-radio label="区管理部门(消)">区管理部门(消)</el-radio>
  137 + <el-radio label="区管理部门">区管理部门</el-radio>
139 138 <el-radio label="运输企业">运输企业</el-radio>
140 139 </el-radio-group>
141 140 </el-form-item>
  141 + <el-form-item label="附件预览" v-if="slide1.length!=0">
  142 + <el-image v-for="item in slide1"
  143 + style="width: 150px; height: 100px; margin: 5px;"
  144 + :src="item"
  145 + :preview-src-list="slide1"
  146 + :z-index="2000">
  147 + </el-image>
  148 + <div style="display: inline-block;margin: 5px;position: relative; width: 150px;height: 100px;overflow:hidden;" v-for="item in videoSrc" >
  149 + <video width="100%" controls="controls" height="100%" :src="item"></video>
  150 + </div>
  151 + </el-form-item>
142 152 <el-form-item prop="fileEntityList" label="附件">
143 153 <el-upload
144 154 ref="upload"
145 155 action=""
146   - accept=".docx,.xlsx,.xls,.ppt,.doc,.pdf,.png,.jpeg,.png,.jpg"
  156 + accept=".docx,.xlsx,.xls,.ppt,.doc,.pdf,.png,.jpeg,.png,.jpg,.mp4,.avi"
147 157 :on-change="fileChange"
148 158 :auto-upload="false"
149 159 :show-file-list="false"
... ...
trash-ui/src/views/office/handle/handleInfo.vue
... ... @@ -91,7 +91,7 @@
91 91 </el-form-item>
92 92 <el-form-item label="附件图片预览" v-if="slide1.length!=0">
93 93 <el-image v-for="item in slide1"
94   - style="width: 100px; height: 100px; margin: 5px;"
  94 + style="width: 150px; height: 100px; margin: 5px;"
95 95 :src="item"
96 96 :preview-src-list="slide1"
97 97 :z-index="2000">
... ...
trash-ui/src/views/office/leaveApplication/leaveApplicationInfo.vue
... ... @@ -46,7 +46,7 @@
46 46 </el-form-item>
47 47 <el-form-item label="附件图片预览" v-if="slide1.length!=0">
48 48 <el-image v-for="item in slide1"
49   - style="width: 100px; height: 100px; margin: 5px;"
  49 + style="width: 150px; height: 100px; margin: 5px;"
50 50 :src="item"
51 51 :preview-src-list="slide1"
52 52 :z-index="2000">
... ...
trash-workFlow/src/main/java/com/trash/business/domain/SupervisionSpecial.java
... ... @@ -38,7 +38,17 @@ public class SupervisionSpecial extends BaseEntity
38 38 @Excel(name = "所属区域")
39 39 private String place;
40 40  
41   - public void setId(String id)
  41 + private String attach;
  42 +
  43 + public String getAttach() {
  44 + return attach;
  45 + }
  46 +
  47 + public void setAttach(String attach) {
  48 + this.attach = attach;
  49 + }
  50 +
  51 + public void setId(String id)
42 52 {
43 53 this.id = id;
44 54 }
... ...
trash-workFlow/src/main/java/com/trash/casefile/kafka/Consumer.java
... ... @@ -134,7 +134,7 @@ public class Consumer {
134 134 violationWarningInformation.setViolationGrade("一般类");
135 135 //项目名称(工地名称,消纳场名称)
136 136  
137   - violationWarningInformation.setSendObject("区管理部门(治)");
  137 + violationWarningInformation.setSendObject("区管理部门");
138 138 String describe = "";
139 139 //根据不同违规类型,走不同流程
140 140 switch (violationTypeCode) {
... ... @@ -146,7 +146,7 @@ public class Consumer {
146 146 case "44030030":
147 147 case "44030031":
148 148 violationWarningInformation.setViolationObjectType("0");
149   - violationWarningInformation.setSendObject("区管理部门(治)");
  149 + violationWarningInformation.setSendObject("区管理部门");
150 150 violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
151 151 describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
152 152 + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
... ... @@ -158,7 +158,7 @@ public class Consumer {
158 158 case "44030029":
159 159 case "44030025":
160 160 violationWarningInformation.setViolationObjectType("1");
161   - violationWarningInformation.setSendObject("区管理部门(消)");
  161 + violationWarningInformation.setSendObject("区管理部门");
162 162 violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
163 163 describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
164 164 + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
... ... @@ -167,7 +167,7 @@ public class Consumer {
167 167 case "44030032":
168 168 violationWarningInformation.setViolationObjectType("0");
169 169 violationWarningInformation.setViolationGrade("重点类");
170   - violationWarningInformation.setSendObject("区管理部门(治)");
  170 + violationWarningInformation.setSendObject("区管理部门");
171 171 describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
172 172 + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
173 173 jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
... ...
trash-workFlow/src/main/java/com/trash/casefile/service/impl/ViolationCaseFileServiceImpl.java
... ... @@ -120,9 +120,7 @@ public class ViolationCaseFileServiceImpl implements IViolationCaseFileService
120 120  
121 121 int i = 0;
122 122 //根据发送对象判断流程
123   - if(violationCaseFile.getSendObject().equals("区管理部门(消)")){
124   - i = 3;
125   - }else if(violationCaseFile.getSendObject().equals("区管理部门(治)")){
  123 + if(violationCaseFile.getSendObject().equals("区管理部门")){
126 124  
127 125 if(violationCaseFile.getViolationGrade().equals("一般类")){
128 126 i = 1;
... ... @@ -130,7 +128,9 @@ public class ViolationCaseFileServiceImpl implements IViolationCaseFileService
130 128 i = 2;
131 129 }
132 130 }
133   -
  131 + if(violationCaseFile.getViolationType().equals("三无车辆进入工地")||violationCaseFile.getViolationType().equals("三无车辆进入消纳场")){
  132 + i = 2;
  133 + }
134 134  
135 135 WorkflowService.createCaseFile(violationCaseFile,i);
136 136  
... ...
trash-workFlow/src/main/java/com/trash/casefile/service/impl/ViolationWarningInformationServiceImpl.java
... ... @@ -123,9 +123,7 @@ public class ViolationWarningInformationServiceImpl implements IViolationWarning
123 123 }
124 124 int i = 0;
125 125 //根据发送对象判断流程
126   - if(violationWarningInformation.getSendObject().equals("区管理部门(消)")){
127   - i = 3;
128   - }else if(violationWarningInformation.getSendObject().equals("区管理部门(治)")){
  126 + if(violationWarningInformation.getSendObject().equals("区管理部门")){
129 127  
130 128 if(violationWarningInformation.getViolationGrade().equals("一般类")){
131 129 i = 1;
... ...
trash-workFlow/src/main/resources/mapper/SupervisionSpecialMapper.xml
... ... @@ -15,10 +15,11 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
15 15 <result property="createTime" column="create_time" />
16 16 <result property="updateTime" column="update_time" />
17 17 <result property="updateBy" column="update_by" />
  18 + <result property="attach" column="attach" />
18 19 </resultMap>
19 20  
20 21 <sql id="selectSupervisionSpecialVo">
21   - select id, type, title, content, person, place, create_by, create_time, update_time, update_by from supervision_special
  22 + select id, type, title, content, person, place, create_by, create_time, update_time, update_by,attach from supervision_special
22 23 </sql>
23 24  
24 25 <select id="selectSupervisionSpecialList" parameterType="SupervisionSpecial" resultMap="SupervisionSpecialResult">
... ... @@ -50,6 +51,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
50 51 <if test="createTime != null">create_time,</if>
51 52 <if test="updateTime != null">update_time,</if>
52 53 <if test="updateBy != null">update_by,</if>
  54 + <if test="updateBy != null">update_by,</if>
  55 + <if test="attach != null">attach,</if>
53 56 </trim>
54 57 <trim prefix="values (" suffix=")" suffixOverrides=",">
55 58 <if test="id != null">#{id},</if>
... ... @@ -62,6 +65,7 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
62 65 <if test="createTime != null">#{createTime},</if>
63 66 <if test="updateTime != null">#{updateTime},</if>
64 67 <if test="updateBy != null">#{updateBy},</if>
  68 + <if test="attach != null">#{attach},</if>
65 69 </trim>
66 70 </insert>
67 71  
... ... @@ -77,6 +81,7 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
77 81 <if test="createTime != null">create_time = #{createTime},</if>
78 82 <if test="updateTime != null">update_time = #{updateTime},</if>
79 83 <if test="updateBy != null">update_by = #{updateBy},</if>
  84 + <if test="attach != null">attach =#{attach},</if>
80 85 </trim>
81 86 where id = #{id}
82 87 </update>
... ...