757 lines
24 KiB
Vue
757 lines
24 KiB
Vue
<template>
|
|
<div class="apply-block">
|
|
<el-row v-if="title==='check'">
|
|
<el-col :span="24">
|
|
<baseTitle :title="'附件信息'"></baseTitle>
|
|
</el-col>
|
|
<el-form :model="attachmentParam" inline style="margin-top: 15px">
|
|
<el-form-item label="标签" prop="tag">
|
|
<el-select v-model="attachmentParam.tag" placeholder="请选择标签" clearable filterable style="width: 300px">
|
|
<el-option
|
|
v-for="item in tagsOption"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button @click="handleSearch" color="#DED0B2">搜索</el-button>
|
|
<el-button v-if="uploadState" color="#DED0B2" @click="handleUpload">上传附件</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<fvTable style="width: 100%;min-height:162px;max-height: 162px" v-if="showAttachmentTable" height="162" :tableConfig="tableConfig"
|
|
:data="otherAttachmentList" :isSettingCol="false" :pagination="false">
|
|
<template #empty>
|
|
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
|
|
</template>
|
|
</fvTable>
|
|
</el-row>
|
|
<baseTitle :title="getTitleName(title)+'信息'"></baseTitle>
|
|
<el-form :model="localFormData" ref="formRef" label-width="auto" v-if="step!=='50'">
|
|
<el-row>
|
|
<el-col :span="24" v-if="title==='apply'">
|
|
<el-form-item label="项目负责人" :required="true" prop=""
|
|
label-width="125">
|
|
<el-button style="margin-right: 10px" color="#DED0B2" @click="handleShowProjectChargePersonTable">
|
|
<!-- {{ localFormData.projectChargePerson ? '更改' : '请选择' }}-->
|
|
{{ projectChargePersonUserList.length !== 0 ? '更改' : '请选择' }}
|
|
</el-button>
|
|
<div v-for="item in projectChargePersonUserList" :key="item.id" style="margin-right: 5px">
|
|
{{ item.name }}
|
|
</div>
|
|
<user-picker :multiple="false" ref="projectChargePersonUserPicker" title="请选择项目负责人"
|
|
v-model:value="projectChargePersonUserList" @ok="projectChargePersonUserPickerOk"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24" v-if="title==='apply'">
|
|
<el-form-item label="项目成员" :required="true" prop=""
|
|
label-width="125">
|
|
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowProjectPersonTable">
|
|
<!-- {{ localFormData.projectPersonIds ? '更改' : '请选择' }}-->
|
|
{{ projectPersonUserList.length !== 0 ? '更改' :getProjectPerson(projectPersonUserList)?'更改': '请选择' }}
|
|
</el-button>
|
|
<div v-for="item in getProjectPerson(projectPersonUserList)" :key="item.id" style="margin-right: 5px">
|
|
{{ item.name }}
|
|
</div>
|
|
<user-picker :multiple="true" ref="projectPersonUserPicker" title="请选择项目成员"
|
|
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" label-width="125">
|
|
<el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px">
|
|
{{ localFormData.preProcess&&localFormData.preProcess.length>0 ? '更改' :sessionParams.preProcess&&sessionParams.preProcess.length>0 ? '更改' : '请选择' }}
|
|
</el-button>
|
|
<div v-for="item in getRequestName(localFormData.preProcess)" :key="item.requestId">
|
|
<a :href="item.baseUrl" target="_blank"
|
|
style="color: #2a99ff;margin-right: 10px;cursor: pointer">{{item.requestName}}
|
|
</a>
|
|
</div>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<!-- v-if="showAttachment"-->
|
|
<AttachmentUpload ref="attachment" :label="getTitleName(title)+'附件'" :showTable="showTable"
|
|
v-model:otherFileList="otherFileList" :tag="getTitleName(props.title)"
|
|
@getAttachment="getAttachment" v-model:singleList="singleList" :showSingleTable="showSingleTable"
|
|
@getOtherFile="getOtherFile" :showFileList="true" :formData="localFormData"
|
|
:preview="mode == 'resubmit'"/>
|
|
<div>
|
|
<div class="approval-record">
|
|
<div class="approval-title">
|
|
<baseTitle title="审批记录" v-if="mode === 'resubmit'"></baseTitle>
|
|
<div v-else></div>
|
|
<div class="diagram">
|
|
<div class="base-title">流程图</div>
|
|
<el-switch
|
|
v-model="changeDiagram"
|
|
style="--el-switch-on-color:#BEA266 ; --el-switch-off-color:#cecdcd"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="process">
|
|
<operation-render v-if="mode === 'resubmit'&&!changeDiagram" :operation-list="data.operationList"
|
|
:state="data.state"/>
|
|
<process-diagram-viewer mode="view" :idName="title" v-if="processDiagramViewer&&changeDiagram"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="oper-page-btn">
|
|
<el-button color="#DED0B2" v-if="mode === 'submit'" @click="handleSubmit">提交</el-button>
|
|
<el-button color="#DED0B2" v-else-if="mode === 'resubmit'" @click="handleSubmit">重新提交</el-button>
|
|
<el-button @click="handleBack">返回</el-button>
|
|
</div>
|
|
<el-dialog v-if="showPreTable" title="前置流程" v-model="showPreTable" width="80%">
|
|
<el-form :model="preProcessForm" inline @submit.prevent="searchPreProcess">
|
|
<el-form-item label="请求名称">
|
|
<el-input v-model="preProcessForm.requestName" placeholder="请输入请求名称" clearable>
|
|
</el-input>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button color="#DED0B2" @click="searchPreProcess">搜索</el-button>
|
|
<el-button @click="handleReset">重置</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table :data="preProcessList" v-loading="loading"
|
|
@select="handleSelect" @select-all="handleSelect" row-key="requestId" ref="preProcessTable">
|
|
<el-table-column type="selection" width="55" :reserve-selection="true"/>
|
|
<el-table-column prop="requestId" label="请求id"></el-table-column>
|
|
<el-table-column prop="requestName" label="请求名称"></el-table-column>
|
|
<el-table-column prop="lastOperatorName" label="最后操作人名称"></el-table-column>
|
|
<el-table-column prop="lastOperateTime" label="最后操作时间"></el-table-column>
|
|
<el-table-column prop="currentNodeName" label="当前节点"></el-table-column>
|
|
<el-table-column prop="creatorName" label="创建人"></el-table-column>
|
|
<el-table-column prop="createTime" label="创建时间"></el-table-column>
|
|
<el-table-column label="操作" align="center">
|
|
<template #default="scope">
|
|
<!-- <el-button type="primary" @click="choosePreProcess(scope.row)" link>选择</el-button>-->
|
|
<a :href="scope.row.baseUrl" target="_blank" style="color: #2a99ff;margin-left: 10px">查看流程</a>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<paging :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[10, 20, 30, 40,50]"
|
|
:total="total" @changeSize="handleSizeChange" @goPage="handleCurrentChange"/>
|
|
<div class="oper">
|
|
<el-button color="#DED0B2" @click="choosePreProcess">确定</el-button>
|
|
<el-button @click="handleCancel">取消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="jsx">
|
|
import OperationRender from '@/views/workflow/common/OperationRender.vue'
|
|
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
|
import {ElNotification} from "element-plus";
|
|
import {getTags} from "@/api/project-manage";
|
|
import {
|
|
getApplyProcess,
|
|
getPreProcess,
|
|
getProjectCheckProcess,
|
|
getProjectConclusionProcess,
|
|
projectApply,
|
|
projectCheck,
|
|
projectConclusion,
|
|
resubmitApply,
|
|
resubmitCheck,
|
|
resubmitConclusion
|
|
} from "@/api/project-manage";
|
|
import {useProcessStore} from '@/stores/processStore.js';
|
|
import {useTagsView} from '@/stores/tagsview.js'
|
|
import Paging from "@/components/pagination/index.vue";
|
|
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
|
|
|
|
import {searchImplementationFileList} from "@/api/project-manage/attachment";
|
|
const router = useRouter()
|
|
const route = useRoute()
|
|
const changeDiagram = ref(false)
|
|
const formRef = ref()
|
|
const showSingleTable = ref(false)
|
|
const projectChargePersonUserList = ref([])
|
|
const projectChargePersonUserPicker = ref()
|
|
const projectPersonUserList = ref([])
|
|
const projectPersonUserPicker = ref()
|
|
const singleList = ref([])
|
|
const tagsOption = ref([])
|
|
const uploadState = ref(false)
|
|
const showAttachmentTable = ref(true)
|
|
const otherAttachmentList = ref([])
|
|
const attachmentParam = reactive({
|
|
tag: ''
|
|
})
|
|
const tableConfig = reactive({
|
|
columns: [
|
|
{
|
|
prop: 'index',
|
|
type: 'index',
|
|
label: '序号',
|
|
align: 'center',
|
|
width: '80',
|
|
},
|
|
{
|
|
prop: 'originalFileName',
|
|
label: '文件名',
|
|
align: 'center',
|
|
},
|
|
{
|
|
prop: 'tag',
|
|
label: '标签',
|
|
align: 'center'
|
|
},
|
|
{
|
|
prop: 'size',
|
|
label: '文件大小',
|
|
align: 'center',
|
|
currentRender: ({row, index}) => (parseInt(row.size / 1024) + 'KB')
|
|
},
|
|
{
|
|
prop: 'oper',
|
|
label: '操作',
|
|
align: 'center',
|
|
showOverflowTooltip: false,
|
|
currentRender: ({row, index}) => {
|
|
return (
|
|
<div>
|
|
<el-button type="primary" link onClick={() => handleDownload(row)}>下载</el-button>
|
|
</div>
|
|
)
|
|
}
|
|
}
|
|
]
|
|
})
|
|
const emit = defineEmits(["getAttachment", "getOtherFile"])
|
|
const props = defineProps({
|
|
title: {
|
|
type: String,
|
|
default: 'apply'
|
|
},
|
|
showTable: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
mode: {
|
|
type: String,
|
|
default: "view"
|
|
},
|
|
data: {
|
|
type: Object,
|
|
default: {}
|
|
},
|
|
formData: {
|
|
type: Object,
|
|
default: {}
|
|
},
|
|
step: {
|
|
type: String,
|
|
default: "20"
|
|
}
|
|
})
|
|
const preProcessList = ref([])
|
|
//暂存数据
|
|
const currentList = ref([])
|
|
const preProcessRequired = ref(false)
|
|
const total = ref(0)
|
|
const preProcessForm = reactive({
|
|
requestName: ''
|
|
})
|
|
const pageInfo = reactive({
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
})
|
|
// const rules = reactive({
|
|
// preProcess: [{required: true, message: '请选择前置流程', trigger: 'blur'}],
|
|
// projectChargePerson: [{required: true, message: '请选择项目负责人', trigger: 'blur'}],
|
|
// projectPerson: [{required: true, message: '请选择项目成员', trigger: 'blur'}],
|
|
// })
|
|
const tagsViewStore = useTagsView()
|
|
const processStore = useProcessStore()
|
|
const localProjectPerson = ref([])
|
|
const otherFileList = ref([])
|
|
const localFormData = ref({
|
|
projectPersonIds: [],
|
|
projectChargePerson: null,
|
|
preProcess: [
|
|
// {
|
|
// requestId: null,
|
|
// requestName: '',
|
|
// baseUrl: ''
|
|
// }
|
|
]
|
|
})
|
|
const attachment = ref()
|
|
const deploymentData = ref({})
|
|
const showPreTable = ref(false)
|
|
const showTable = ref(true)
|
|
const loading = ref(false)
|
|
const processDiagramViewer = ref(false)
|
|
const name = ref(router.currentRoute.value.name)
|
|
const deploymentId = ref()
|
|
const selectRows = ref([])
|
|
const projectId = ref(route.query.projectId)
|
|
const sessionParams=ref({})
|
|
|
|
if(localStorage.getItem('preProcess')){
|
|
let param=JSON.parse(localStorage.getItem('preProcess'))
|
|
localFormData.value.preProcess=param
|
|
sessionParams.value.preProcess=param
|
|
localStorage.setItem('preProcess', JSON.stringify(param))
|
|
}
|
|
if(localStorage.getItem('singleFile')){
|
|
let param=JSON.parse(localStorage.getItem('singleFile'))
|
|
localFormData.value.singleFile=param
|
|
singleList.value=[param]
|
|
localStorage.setItem('singleFile', JSON.stringify(param))
|
|
showSingleTable.value=false
|
|
nextTick(()=>{
|
|
showSingleTable.value=true
|
|
})
|
|
}
|
|
if(localStorage.getItem('otherFileList')){
|
|
let param=JSON.parse(localStorage.getItem('otherFileList'))
|
|
localFormData.value.otherFileList=param
|
|
otherFileList.value=param
|
|
localStorage.setItem('otherFileList', JSON.stringify(param))
|
|
showTable.value=false
|
|
nextTick(()=>{
|
|
showTable.value=true
|
|
})
|
|
}
|
|
|
|
if(localStorage.getItem('projectChargePersonUserList')){
|
|
let param=JSON.parse(localStorage.getItem('projectChargePersonUserList'))
|
|
projectChargePersonUserList.value=param
|
|
localStorage.setItem('projectChargePersonUserList', JSON.stringify(param))
|
|
}
|
|
if(localStorage.getItem('projectPersonUserList')){
|
|
let param=JSON.parse(localStorage.getItem('projectPersonUserList'))
|
|
projectPersonUserList.value= param
|
|
localProjectPerson.value=param
|
|
localStorage.setItem('projectPersonUserList', JSON.stringify(param))
|
|
}
|
|
const getProjectPerson=(list)=>{
|
|
if(!list||list&&list.length===0){
|
|
if(localStorage.getItem('projectPersonUserList')){
|
|
let param=JSON.parse(localStorage.getItem('projectPersonUserList'))
|
|
projectPersonUserList.value=param
|
|
return projectPersonUserList.value
|
|
}
|
|
}else {
|
|
return list
|
|
}
|
|
}
|
|
const getRequestName=(list)=>{
|
|
if(!list||(list&&list.length===0)){
|
|
if(sessionParams.value.preProcess){
|
|
return sessionParams.value.preProcess
|
|
}
|
|
}else {
|
|
return list
|
|
}
|
|
}
|
|
const getTagsOption = () => {
|
|
if (!route.query.projectId) return
|
|
getTags(route.query.projectId).then(res => {
|
|
if (res.code === 1000) {
|
|
tagsOption.value = res.data
|
|
}else{
|
|
ElNotification({
|
|
title: '提示',
|
|
message: res.msg,
|
|
type: 'error'
|
|
})
|
|
}
|
|
})
|
|
}
|
|
const handleSearch = () => {
|
|
let params = {
|
|
targetId: route.query.projectId,
|
|
targetState: "40"
|
|
}
|
|
if (attachmentParam.tag) {
|
|
tagsOption.value.forEach(item => {
|
|
if (item.value === attachmentParam.tag) {
|
|
attachmentParam.tag = item.label
|
|
}
|
|
})
|
|
params.tag = attachmentParam.tag
|
|
}
|
|
searchImplementationFileList(params).then(res => {
|
|
showAttachmentTable.value = false
|
|
if (res.code === 1000) {
|
|
otherAttachmentList.value = res.data.fileList
|
|
uploadState.value = res.data.upload
|
|
nextTick(() => {
|
|
showAttachmentTable.value = true
|
|
})
|
|
}else{
|
|
ElNotification({
|
|
title: '提示',
|
|
message: res.msg,
|
|
type: 'error'
|
|
})
|
|
}
|
|
})
|
|
}
|
|
if(props.title&&props.title==='check'){
|
|
handleSearch()
|
|
getTagsOption()
|
|
}
|
|
const handleUpload = () => {
|
|
router.push({
|
|
name: 'Implementation/upload',
|
|
query: {
|
|
id: route.query.requirementId,
|
|
state: route.query.state,
|
|
projectId:route.query.projectId,
|
|
step: '40'
|
|
}
|
|
})
|
|
}
|
|
const getProjectChargePersonUser = () => {
|
|
if (projectChargePersonUserList.value.length !== 0) {
|
|
return projectChargePersonUserList.value.map(item => item.name).join()
|
|
}
|
|
}
|
|
const handleSelect = async (selection) => {
|
|
selectRows.value = selection
|
|
}
|
|
const handleCancel = () => {
|
|
showPreTable.value = false
|
|
}
|
|
const searchPreProcess = () => {
|
|
getPreProcessList()
|
|
|
|
}
|
|
const handleReset = () => {
|
|
preProcessForm.requestName = ''
|
|
getPreProcessList()
|
|
}
|
|
const handleShowPreTable = () => {
|
|
showPreTable.value = true
|
|
getPreProcessList()
|
|
}
|
|
const handleShowProjectChargePersonTable = () => {
|
|
projectChargePersonUserPicker.value.showUserPicker()
|
|
}
|
|
const projectChargePersonUserPickerOk = (userList) => {
|
|
projectChargePersonUserList.value = userList
|
|
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
|
|
}
|
|
const handleShowProjectPersonTable = () => {
|
|
projectPersonUserPicker.value.showUserPicker()
|
|
}
|
|
|
|
const projectPersonUserPickerOk = (userList) => {
|
|
projectPersonUserList.value = userList
|
|
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
|
|
// let userIds = []
|
|
// for (const user of userList) {
|
|
// userIds.push(user.id)
|
|
// }
|
|
}
|
|
const getPreProcessList = () => {
|
|
loading.value = true
|
|
getPreProcess().then(res => {
|
|
loading.value = false
|
|
let searchArray = []
|
|
let regexPattern = ("%" + preProcessForm.requestName + "%").replace(/%/g, '.*').replace(/_/g, '.');
|
|
let regex = new RegExp('^' + regexPattern + '$');
|
|
res.data.filter((item) => {
|
|
if (regex.test(item.requestName)) {
|
|
searchArray.push(item)
|
|
}
|
|
})
|
|
// res.data.forEach((item) => {
|
|
// localFormData.value.preProcess.forEach((item1) => {
|
|
// if (item.requestId == item1.requestId) {
|
|
// preProcessTable.value.toggleRowSelection(item)
|
|
// }
|
|
// })
|
|
// })
|
|
total.value = searchArray.length
|
|
currentList.value = searchArray
|
|
preProcessList.value = currentList.value.slice(0, 10)
|
|
})
|
|
}
|
|
const choosePreProcess = () => {
|
|
let preProcessObj = {}
|
|
let preProcessArray = []
|
|
selectRows.value.forEach((item) => {
|
|
preProcessObj = {
|
|
requestId: item.requestId,
|
|
requestName: item.requestName,
|
|
baseUrl: item.baseUrl
|
|
}
|
|
preProcessArray.push(preProcessObj)
|
|
})
|
|
localFormData.value.preProcess = preProcessArray
|
|
showPreTable.value = false
|
|
localStorage.setItem('preProcess', JSON.stringify(preProcessArray))
|
|
}
|
|
|
|
//切换每页显示条数
|
|
const handleSizeChange = (val) => {
|
|
pageInfo.pageSize = val;
|
|
preProcessList.value = currentList.value.slice((pageInfo.pageNum - 1) * val, pageInfo.pageNum * val)
|
|
};
|
|
|
|
//点击页码进行分页功能
|
|
const handleCurrentChange = (val) => {
|
|
pageInfo.pageNum = val;
|
|
preProcessList.value = currentList.value.slice((val - 1) * pageInfo.pageSize, val * pageInfo.pageSize)
|
|
};
|
|
const getTitleName = (type) => {
|
|
switch (type) {
|
|
case 'apply':
|
|
return '项目立项'
|
|
case 'check':
|
|
return '项目验收'
|
|
case 'filing':
|
|
return '项目归档'
|
|
}
|
|
}
|
|
const handleBack = () => {
|
|
history.back()
|
|
}
|
|
const compositeParam = (item) => {
|
|
return {
|
|
fileId: item.id,
|
|
size: item.size,
|
|
originalFileName: item.originalFilename,
|
|
fileType: item.fileType,
|
|
url: item.url,
|
|
newFile: true,
|
|
tag: getTitleName(props.title)
|
|
}
|
|
}
|
|
const getAttachment = (val) => {
|
|
// console.log('上传文件getAttachment', val)
|
|
showSingleTable.value = false
|
|
localFormData.value.singleFile = compositeParam(val)
|
|
singleList.value.push(compositeParam(val))
|
|
nextTick(() => {
|
|
showSingleTable.value = true
|
|
if (attachment.value.singleFile == null) {
|
|
attachment.value.validate()
|
|
ElNotification({
|
|
title: '提示',
|
|
message: '请上传附件',
|
|
type: 'error'
|
|
})
|
|
return;
|
|
} else {
|
|
attachment.value.clearValidate()
|
|
}
|
|
})
|
|
|
|
localStorage.setItem('singleFile', JSON.stringify(compositeParam(val)))
|
|
}
|
|
watch(() => singleList.value, (newVal) => {
|
|
showSingleTable.value = newVal.length !== 0;
|
|
}, {deep: true})
|
|
const getOtherFile = (val) => {
|
|
// console.log('上传文件getOtherFile', val)
|
|
showTable.value = false
|
|
let fileObj = compositeParam(val)
|
|
otherFileList.value.push(fileObj)
|
|
nextTick(() => {
|
|
showTable.value = true
|
|
})
|
|
|
|
// localFormData.value.otherFileList = otherFileList.value
|
|
localStorage.setItem('otherFileList', JSON.stringify(otherFileList.value))
|
|
}
|
|
const getFileParam = (item) => {
|
|
return {
|
|
fileId: item.fileId,
|
|
tag: item.tag
|
|
}
|
|
}
|
|
const handleSubmit = async () => {
|
|
if (deploymentData.value.deploymentName === '重大项目立项' || deploymentData.value.deploymentName === '重大项目验收') {
|
|
if (localFormData.value.preProcess == undefined) {
|
|
if(JSON.parse(localStorage.getItem('preProcess'))?.length>0){
|
|
|
|
}else {
|
|
ElNotification({
|
|
title: '提示',
|
|
message: '请选择前置流程!',
|
|
type: 'error'
|
|
})
|
|
return;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
let files = []
|
|
if (props.mode === 'resubmit') {
|
|
attachment.value.allFileList.forEach(item => {
|
|
files.push(getFileParam(item))
|
|
})
|
|
} else {
|
|
otherFileList.value.forEach(item => {
|
|
files.push(getFileParam(item))
|
|
})
|
|
}
|
|
if (attachment.value.singleFile == null) {
|
|
attachment.value.validate()
|
|
ElNotification({
|
|
title: '提示',
|
|
message: '请上传附件',
|
|
type: 'error'
|
|
})
|
|
return;
|
|
} else {
|
|
attachment.value.clearValidate()
|
|
}
|
|
let projectPersonIds = []
|
|
for (const item of projectPersonUserList.value) {
|
|
projectPersonIds.push(parseInt(item.id))
|
|
}
|
|
let params = {
|
|
deploymentId: deploymentId.value,
|
|
requirementId: route.query.id,
|
|
fileList: files,
|
|
singleFile: attachment.value.singleFile,
|
|
projectId: projectId.value,
|
|
preProcess: JSON.stringify(localFormData.value.preProcess)
|
|
}
|
|
if(sessionParams.value.preProcess&&!localFormData.value.preProcess){
|
|
params.preProcess=JSON.stringify(sessionParams.value.preProcess)
|
|
}
|
|
// console.log(params.preProcess)
|
|
let res
|
|
if (props.step === '20') {
|
|
if (projectChargePersonUserList.value && projectChargePersonUserList.value.length === 0) {
|
|
ElNotification({
|
|
title: '提示',
|
|
message: '请选择项目负责人!',
|
|
type: 'error'
|
|
})
|
|
return;
|
|
}
|
|
if (projectPersonUserList.value && projectPersonUserList.value.length === 0) {
|
|
ElNotification({
|
|
title: '提示',
|
|
message: '请选择项目成员!',
|
|
type: 'error'
|
|
})
|
|
return;
|
|
}
|
|
params.projectChargePerson = parseInt(projectChargePersonUserList.value[0].id)
|
|
params.projectPersonIds = projectPersonIds
|
|
if (props.mode === 'resubmit') {
|
|
res = await resubmitApply(params)
|
|
} else {
|
|
res = await projectApply(params)
|
|
}
|
|
} else if (props.step === '40') {
|
|
if (props.mode === 'resubmit') {
|
|
res = await resubmitCheck(params)
|
|
} else {
|
|
res = await projectCheck(params)
|
|
}
|
|
} else if (props.step === '50') {
|
|
if (props.mode === 'resubmit') {
|
|
res = await resubmitConclusion(params)
|
|
} else {
|
|
res = await projectConclusion(params)
|
|
}
|
|
}
|
|
ElNotification({
|
|
title: '提示',
|
|
message: res.msg,
|
|
type: res.code === 1000 ? 'success' : 'error'
|
|
})
|
|
if (res.code === 1000) {
|
|
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
|
|
if (props.step === '20') {
|
|
await router.push({
|
|
name: 'Initiation'
|
|
})
|
|
} else if (props.step === '40') {
|
|
await router.push({
|
|
name: 'Implementation'
|
|
})
|
|
} else if (props.step === '50') {
|
|
await router.push({
|
|
name: 'Filing'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
const init = async () => {
|
|
let id = projectId.value
|
|
if (!id) return;
|
|
processDiagramViewer.value = false
|
|
let res
|
|
if (props.step === '20') {
|
|
res = await getApplyProcess(id)
|
|
} else if (props.step === '40') {
|
|
res = await getProjectCheckProcess(id)
|
|
} else if (props.step === '50') {
|
|
res = await getProjectConclusionProcess(id)
|
|
}
|
|
if (res.code === 1000) {
|
|
let data = res.data
|
|
deploymentId.value = data.deploymentId
|
|
deploymentData.value = data
|
|
preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
|
|
processStore.setDesign(data)
|
|
processStore.runningList.value = data.runningList;
|
|
processStore.endList.value = data.endList;
|
|
processStore.noTakeList.value = data.noTakeList;
|
|
processStore.refuseList.value = data.refuseList;
|
|
processStore.passList.value = data.passList;
|
|
nextTick(() => {
|
|
processDiagramViewer.value = true
|
|
})
|
|
} else {
|
|
ElNotification({
|
|
title: '提示',
|
|
message: res.msg,
|
|
type: 'error'
|
|
})
|
|
}
|
|
}
|
|
|
|
watchEffect(() => {
|
|
if (props.formData.projectChargePerson == null) {
|
|
// projectChargePersonUserList.value = []
|
|
} else {
|
|
projectChargePersonUserList.value = [props.formData.projectChargePerson]
|
|
}
|
|
// console.log('props.formData.projectPersonList',props.formData.projectPersonList)
|
|
projectPersonUserList.value = props.formData.projectPersonList ? props.formData.projectPersonList : []
|
|
let flag = Object.keys(props.formData).length && (localFormData.value = props.formData)
|
|
if (props.formData.projectChargePerson != null) {
|
|
localFormData.value.projectChargePerson = props.formData.projectChargePerson.id
|
|
}
|
|
// if(props.formData.fileList&&props.formData.fileList.length>0){
|
|
// otherFileList.value=props.formData.fileList
|
|
// }
|
|
// localFormData.value.projectPersonIds = []
|
|
// if (projectPersonUserList.value){
|
|
// projectPersonUserList.value.forEach(item => {
|
|
// localFormData.value.projectPersonIds.push(item.id)
|
|
// })
|
|
// }
|
|
// console.log('projectPersonUserList.value',projectPersonUserList.value)
|
|
return flag
|
|
})
|
|
onMounted(async () => {
|
|
await init()
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
.oper {
|
|
margin-top: 20px;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
</style>
|