forked from ZhanLi/ScientificSystem
		
	
		
			
	
	
		
			165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|  | <template> | |||
|  |   <div class="app-container"> | |||
|  |     <el-card class="box-card"> | |||
|  |       <div slot="header" class="clearfix"> | |||
|  |         <span>{{ processName }}</span> | |||
|  |       </div> | |||
|  | 
 | |||
|  |       <el-col :span="18" :offset="3"> | |||
|  |         <div class="form-conf" v-if="formOpen"> | |||
|  |           <parser :key="new Date().getTime()" :form-conf="formData" @submit="submit" ref="parser" @getData="getData"/> | |||
|  |         </div> | |||
|  |       </el-col> | |||
|  |     </el-card> | |||
|  |   </div> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  | import { listProcess, startProcess_ } from '@/api/workflow/process' | |||
|  | import { listAllCategory } from '@/api/workflow/category' | |||
|  | import { getProcessForm, startProcess } from '@/api/workflow/process' | |||
|  | import Parser from '@/utils/generator/parser' | |||
|  | import {findLatestDeploymentTimeIndex } from '@/api/scientific/project_application_plan' | |||
|  | import { addHandbook } from '@/api/scientific/handbook' | |||
|  | 
 | |||
|  | export default { | |||
|  |   name: 'handbookApply', | |||
|  |   components: { | |||
|  |     Parser | |||
|  |   }, | |||
|  |   data() { | |||
|  |     return { | |||
|  |       definitionId: null, | |||
|  |       deployId: null, | |||
|  |       procInsId: null, | |||
|  |       formOpen: false, | |||
|  |       formData: {}, | |||
|  | 
 | |||
|  |       processName: '', | |||
|  |       categoryOptions: [], | |||
|  |       // 流程定义表格数据
 | |||
|  |       processParams: null, | |||
|  |       // 查询参数
 | |||
|  |       queryParams: { | |||
|  |         pageNum: 1, | |||
|  |         pageSize: 10, | |||
|  |         processKey: undefined, | |||
|  |         processName: "", | |||
|  |         category: "010" | |||
|  |       }, | |||
|  |     } | |||
|  |   }, | |||
|  |   created() { | |||
|  |     this.initData(); | |||
|  |   }, | |||
|  |   methods: { | |||
|  |     initData() { | |||
|  |       /** 查询流程定义列表 */ | |||
|  |       listProcess(this.queryParams).then(response => { | |||
|  |         findLatestDeploymentTimeIndex(response).then((latestIndex) => { | |||
|  |           this.processParams = response.rows[latestIndex]; | |||
|  |           this.processName = this.processParams.processName; | |||
|  |           this.definitionId = this.processParams.definitionId; | |||
|  |           getProcessForm({ | |||
|  |             definitionId: this.processParams.definitionId, | |||
|  |             deployId: this.processParams.deploymentId, | |||
|  |             procInsId: undefined | |||
|  |           }).then(res => { | |||
|  |             if (res.data) { | |||
|  |               this.formData = res.data; | |||
|  |               this.formOpen = true; | |||
|  |             } | |||
|  |           }) | |||
|  |         }); | |||
|  |       }) | |||
|  |     }, | |||
|  | 
 | |||
|  |     /** 接收子组件传的值 */ | |||
|  |     getData(data) { | |||
|  |       if (data) { | |||
|  |         const variables = []; | |||
|  |         data.fields.forEach(item => { | |||
|  |           let variableData = {}; | |||
|  |           variableData.label = item.__config__.label | |||
|  |           // 表单值为多个选项时
 | |||
|  |           if (item.__config__.defaultValue instanceof Array) { | |||
|  |             const array = []; | |||
|  |             item.__config__.defaultValue.forEach(val => { | |||
|  |               array.push(val) | |||
|  |             }) | |||
|  |             variableData.val = array; | |||
|  |           } else { | |||
|  |             variableData.val = item.__config__.defaultValue | |||
|  |           } | |||
|  |           variables.push(variableData) | |||
|  |         }) | |||
|  |         this.variables = variables; | |||
|  |       } | |||
|  |     }, | |||
|  |     submit(data) { | |||
|  |       if (data && this.definitionId) { | |||
|  |         console.log(data.valData) | |||
|  |         // 启动流程并将表单数据加入流程变量
 | |||
|  |         startProcess_(this.definitionId, JSON.stringify(data.valData)).then(res => { | |||
|  |           if (res.code !== 200) { | |||
|  |             this.$modal.msgError("操作失败"); | |||
|  |             return; | |||
|  |           } | |||
|  |           let handbookData = data.valData; | |||
|  |           handbookData.handbookProcId = res.msg; | |||
|  |           // zqjia:默认刚录入指南时状态为审核中,但后端会改为未审核
 | |||
|  |           handbookData.handbookStatus = 1; | |||
|  |           // zqjia:现在表单里的日期选择没有精确到小时,所以需要处理日期格式,后续要去掉
 | |||
|  |           const date = new Date(handbookData.handbookDate); | |||
|  |           handbookData.handbookDate = this.formatDateTime(date); | |||
|  | 
 | |||
|  |           // zqjia:解析handbookFile,不然无法存到数据库中
 | |||
|  |           const files = handbookData.handbookFile; | |||
|  |           if (files !== null) { | |||
|  |             let formatedFiles = {}; | |||
|  |             files.forEach(file => { | |||
|  |               if(file.response.code === 200 && file.ossId) { | |||
|  |                 formatedFiles[file.name] = file.ossId; | |||
|  |               } | |||
|  |             }) | |||
|  |             handbookData.handbookFile = JSON.stringify(formatedFiles); | |||
|  |           } | |||
|  | 
 | |||
|  |           addHandbook(JSON.stringify(handbookData)).then(resp => { | |||
|  |             if (res.code !== 200) { | |||
|  |               this.$modal.msgError("操作失败"); | |||
|  |               return; | |||
|  |             } | |||
|  |             this.$modal.msgSuccess(resp.msg); | |||
|  |             this.$tab.closeOpenPage({ | |||
|  |               // zqjia:这个路径由菜单管理里设置的路由决定
 | |||
|  |               path: '/scientific/handbook/list' | |||
|  |             }) | |||
|  |           }); | |||
|  |         }) | |||
|  |       } | |||
|  |     }, | |||
|  |     formatDateTime(date) { | |||
|  |       const padZero = (num) => (num < 10 ? '0' + num : num); | |||
|  | 
 | |||
|  |       const year = date.getFullYear(); | |||
|  |       const month = padZero(date.getMonth() + 1); // getMonth() 返回值的范围是 0-11,所以需要加 1
 | |||
|  |       const day = padZero(date.getDate()); | |||
|  |       const hours = padZero(date.getHours()); | |||
|  |       const minutes = padZero(date.getMinutes()); | |||
|  |       const seconds = padZero(date.getSeconds()); | |||
|  | 
 | |||
|  |       return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; | |||
|  |     } | |||
|  |   } | |||
|  | } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style lang="scss" scoped> | |||
|  | .form-conf { | |||
|  |   margin: 15px auto; | |||
|  |   width: 80%; | |||
|  |   padding: 15px; | |||
|  | } | |||
|  | </style> |