forked from ZhanLi/ScientificSystem
		
	
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.3 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 { getProcessForm, startProcess_ } from '@/api/workflow/process'
 | |
| import Parser from '@/utils/generator/parser'
 | |
| import {addProject} from "@/api/scientific/project";
 | |
| 
 | |
| export default {
 | |
|   name: 'WorkStart',
 | |
|   components: {
 | |
|     Parser
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       definitionId: null,
 | |
|       deployId: null,
 | |
|       procInsId: null,
 | |
|       formOpen: false,
 | |
|       formData: {},
 | |
| 
 | |
|       processName: null,
 | |
|     }
 | |
|   },
 | |
|   created() {
 | |
|     this.initData();
 | |
|   },
 | |
|   methods: {
 | |
|     initData() {
 | |
|       this.deployId = this.$route.params && this.$route.params.deployId;
 | |
|       this.definitionId = this.$route.query && this.$route.query.definitionId;
 | |
|       this.procInsId = this.$route.query && this.$route.query.procInsId;
 | |
|       this.processName = this.$route.query && this.$route.query.processName;
 | |
|       this.handbookId = this.$route.query && this.$route.query.handbookId;
 | |
| 
 | |
|       getProcessForm({
 | |
|         definitionId: this.definitionId,
 | |
|         deployId: this.deployId,
 | |
|         procInsId: this.procInsId
 | |
|       }).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);
 | |
|         startProcess_(this.definitionId, JSON.stringify(data.valData)).then(res => {
 | |
|           let projectData = {};
 | |
|           projectData.handbookId = this.handbookId;
 | |
|           projectData.projectId = res.msg;
 | |
|           // zqjia:项目申报表单确定后这些信息要改
 | |
|           projectData.category = 1;
 | |
|           projectData.name = data.valData.field101;
 | |
|           projectData.createTime = "2024-07-15 23:28:17";
 | |
|           projectData.id = undefined;
 | |
|           console.log(data);
 | |
|           addProject(projectData).then(response => {
 | |
|             this.$modal.msgSuccess("申报完成");
 | |
|           })
 | |
| 
 | |
|           this.$tab.closeOpenPage({
 | |
|             path: '/work/own'
 | |
|           })
 | |
|         })
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| .form-conf {
 | |
|   margin: 15px auto;
 | |
|   width: 80%;
 | |
|   padding: 15px;
 | |
| }
 | |
| </style>
 |