@@ -1,19 +1,19 @@ | |||
<script setup name="App"> | |||
// import store from '@/store' | |||
// console.log(store.menuStore.menuArr) | |||
// import Updater from '@/utils/updater' | |||
// import { ElMessageBox } from 'element-plus' | |||
// | |||
// const up = new Updater({ | |||
// timer: 20000 | |||
// }) | |||
// // 更新通知 | |||
// up.on('update', () => { | |||
// up.stop() | |||
// ElMessageBox.confirm('检测到有新版本,是否更新?更新会重新加载页面,如果您有未提交的表单数据,请先保存!', '提示', {}).then(() => { | |||
// location.reload() | |||
// }) | |||
// }) | |||
import Updater from '@/utils/updater' | |||
import { ElMessageBox } from 'element-plus' | |||
const up = new Updater({ | |||
timer: 20000 | |||
}) | |||
// 更新通知 | |||
up.on('update', () => { | |||
up.stop() | |||
ElMessageBox.confirm('检测到有新版本,是否更新?更新会重新加载页面,如果您有未提交的表单数据,请先保存!', '提示', {}).then(() => { | |||
location.reload() | |||
}) | |||
}) | |||
</script> | |||
@@ -11,6 +11,11 @@ export const exportExc = (state, data) => http.post(centerList[state] + '/export | |||
export const progressDetail = params => http.get(`/api/v1/todo-center/progress/detail`, { params }) // 流程审核详情 | |||
export const projectDetail = id => http.get(`/api/v1/project/lib/${id}`) // 项目详情 | |||
export const handler = data => http.post('/api/v1/todo-center/handler', data) // 处理 | |||
export const toInTheAnnualPlan = data => http.post('/api/v1/todo-center/toInTheAnnualPlan', data) // 驳回至年度计划 | |||
export const saveOpinions = data => http.post('/api/v1/todo-center/saveOpinions', data) // 添加总验意见 | |||
export const adjustAndHandle = data => http.post('/api/v1/todo-center/adjustAndHandle', data) // 被退回项目内容调整并通过 | |||
export const notSealedPdf = data => http.post(`/api/v1/todo-center/getNotSealedPdf`, data) // 获取未盖章pdf | |||
export const signSeal = data => http.post('/api/v1/todo-center/getSealedPdf', data) // 盖章 | |||
@@ -115,11 +115,11 @@ onMounted(async () => { | |||
label-suffix=":" | |||
scroll-to-error | |||
> | |||
<!-- <el-card class="w-full mb-16">--> | |||
<!-- <el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' }]" prop="developCode">--> | |||
<!-- <el-input v-model="formData.developCode" placeholder="请输入" />--> | |||
<!-- </el-form-item>--> | |||
<!-- </el-card>--> | |||
<el-card class="w-full mb-16"> | |||
<el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' }]" prop="developCode"> | |||
<el-input v-model="formData.developCode" placeholder="请输入" /> | |||
</el-form-item> | |||
</el-card> | |||
<el-card v-for="(item,index) in formData.sections" :key="index" class="w-full mb-16"> | |||
<template #header> | |||
<div class="flex justify-between"> | |||
@@ -9,9 +9,10 @@ import { | |||
changFilesParam, | |||
handleFilePreview | |||
} from '@/utils/uploadAction.js' | |||
import { getConstructionSuggestions, handler } from '@/http/apis/toDoCenter/todoList' | |||
import { getConstructionSuggestions, handler, saveOpinions } from '@/http/apis/toDoCenter/todoList' | |||
import store from '@/store' | |||
import { useRoute, useRouter } from 'vue-router' | |||
const route = useRoute(), | |||
router = useRouter(), | |||
{ proxy } = getCurrentInstance(), | |||
@@ -80,10 +81,6 @@ const route = useRoute(), | |||
attachments: form.value.attachments.map((i) => ({ | |||
fileId: i.response.data.id, | |||
fileName: i.response.data.originalFileName | |||
})), | |||
opinions: form.value.opinions.map((i) => ({ | |||
fileId: i.response.data.id, | |||
fileName: i.response.data.originalFileName | |||
})) | |||
} | |||
} | |||
@@ -96,6 +93,20 @@ const route = useRoute(), | |||
proposeAttachFiles: form.value.proposeAttachFiles && JSON.stringify(changFilesParam(form.value.proposeAttachFiles)) | |||
}) | |||
} | |||
if (form.value.opinions && form.value.opinions.length > 0) { | |||
try { | |||
await saveOpinions({ | |||
projectId: route.query.projectId, | |||
opinions: form.value.opinions.map((i) => ({ | |||
fileId: i.response.data.id, | |||
fileName: i.response.data.originalFileName | |||
})) | |||
}) | |||
} catch (e) { | |||
console.log(e) | |||
} | |||
} | |||
const res = await handler(postData) | |||
if (res.data === 'TASKID_ERROR') { | |||
proxy.$message.warning('当前审批任务有变动,请返回待我处理列表!') | |||
@@ -234,30 +245,30 @@ watch( | |||
</el-col> | |||
</template> | |||
<!-- <el-col v-if="projectDetail&&projectDetail.status===20004" :span="24">--> | |||
<!-- <el-form-item--> | |||
<!-- :label="`终验意见`"--> | |||
<!-- prop="opinions"--> | |||
<!-- >--> | |||
<!-- <el-upload--> | |||
<!-- v-model:file-list="form.opinions"--> | |||
<!-- class="w-full"--> | |||
<!-- :action="uploadUrl"--> | |||
<!-- :on-success="res => handleFileSuccess(res, form.opinions)"--> | |||
<!-- :on-error="handleFileError"--> | |||
<!-- :before-upload="file=>fileFormatVerification(file, {types: fileTypes})"--> | |||
<!-- :accept="fileTypes.map(i=>`.${i}`).join(',')"--> | |||
<!-- multiple--> | |||
<!-- :limit="10"--> | |||
<!-- :on-preview="handleFilePreview"--> | |||
<!-- >--> | |||
<!-- <el-button type="primary" class="mr-4">上传附件</el-button>--> | |||
<!-- <template #tip>--> | |||
<!-- <div class="el-upload__tip">支持{{ fileDesc }}文件</div>--> | |||
<!-- </template>--> | |||
<!-- </el-upload>--> | |||
<!-- </el-form-item>--> | |||
<!-- </el-col>--> | |||
<el-col v-if="projectDetail&&projectDetail.status===20004" :span="24"> | |||
<el-form-item | |||
:label="`终验意见`" | |||
prop="opinions" | |||
> | |||
<el-upload | |||
v-model:file-list="form.opinions" | |||
class="w-full" | |||
:action="uploadUrl" | |||
:on-success="res => handleFileSuccess(res, form.opinions)" | |||
:on-error="handleFileError" | |||
:before-upload="file=>fileFormatVerification(file, {types: fileTypes})" | |||
:accept="fileTypes.map(i=>`.${i}`).join(',')" | |||
multiple | |||
:limit="10" | |||
:on-preview="handleFilePreview" | |||
> | |||
<el-button type="primary" class="mr-4">上传附件</el-button> | |||
<template #tip> | |||
<div class="el-upload__tip">支持{{ fileDesc }}文件</div> | |||
</template> | |||
</el-upload> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item | |||
@@ -6,7 +6,8 @@ defineProps({ | |||
isShowSline: { | |||
type: Boolean, | |||
default: false | |||
} | |||
}, | |||
detail: {} | |||
}) | |||
const | |||
getResultIcon = (item) => { | |||
@@ -103,7 +104,7 @@ const | |||
<p>{{ list.finishTime }}</p> | |||
</div> | |||
<p v-if="list.auditInfo" class="text-info" style="word-break: break-all;">意见:<span>{{ list.auditInfo.text }}</span></p> | |||
<div v-if="list.auditInfo&&list.auditInfo.attachments?.length" class="flex text-info"> | |||
<div v-if="list.auditInfo&&list.auditInfo.attachments?.length" class="flex text-info mt-5"> | |||
<span>附件:</span> | |||
<div> | |||
<p v-for="(file,fileIndex) in list.auditInfo.attachments" :key="fileIndex" class="mb-4"> | |||
@@ -111,6 +112,16 @@ const | |||
</p> | |||
</div> | |||
</div> | |||
<div v-if="detail.opinions&&detail.opinions?.length" class="flex text-info mt-5"> | |||
<span>终验意见:</span> | |||
<div> | |||
<p v-for="(file,fileIndex) in detail.opinions" :key="fileIndex" class="mb-4"> | |||
<accessory :file-name="file.fileName" :file-id="file.fileId" /> | |||
</p> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -4,7 +4,7 @@ import { useRoute, useRouter } from 'vue-router' | |||
import FlowRecord from '../components/flowRecord.vue' | |||
import AuditDialog from '../components/auditDialog.vue' | |||
import ProjectInfo from '@/pages/projectStoreManage/projectStore/projectDetail/components/projectInfo.vue' | |||
import { handler, progressDetail, projectDetail } from '@/http/apis/toDoCenter/todoList' | |||
import { handler, progressDetail, projectDetail, toInTheAnnualPlan } from '@/http/apis/toDoCenter/todoList' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
import FinalInfo from '@/pages/projectStoreManage/projectStore/projectDetail/components/finalInfo.vue' | |||
@@ -13,7 +13,7 @@ import WantReadInfo from '@/pages/projectStoreManage/projectStore/projectDetail/ | |||
import SjFlowRecord from '@/pages/projectStoreManage/projectStore/projectDetail/components/sjFlowRecord.vue' | |||
import ChangeInfoDialog from '@/pages/toDoCenter/handleDuringExamine/components/changeInfoDialog.vue' | |||
import { dictionary } from '@/http/apis/projectCollection/projectCollectionEnter' | |||
import { ElMessageBox } from 'element-plus' | |||
import { ElMessage, ElMessageBox } from 'element-plus' | |||
const | |||
userInfo = storeToRefs(store.userStore).userInfo || {}, | |||
{ proxy } = getCurrentInstance(), | |||
@@ -262,17 +262,44 @@ onMounted(async () => { | |||
}) | |||
function rejectYear () { | |||
// ElMessageBox.confirm('确认驳回至年度计划吗?') | |||
// .then(() => { | |||
// }) | |||
// .catch(() => { | |||
// }) | |||
ElMessageBox({ | |||
title: '温馨提示', | |||
message: '确认驳回至年度计划吗?', | |||
showCancelButton: true, | |||
confirmButtonText: '确认', | |||
cancelButtonText: '取消', | |||
beforeClose: async (action, instance, done) => { | |||
if (action === 'confirm') { | |||
instance.confirmButtonLoading = true | |||
instance.confirmButtonText = '正在处理...' | |||
try { | |||
await bohui() | |||
} catch (e) { | |||
instance.confirmButtonLoading = false | |||
} | |||
instance.confirmButtonLoading = false | |||
done() | |||
} else { | |||
done() | |||
} | |||
} | |||
}).then((action) => { | |||
if (action === 'confirm') { | |||
ElMessage.success('驳回成功!') | |||
reload() | |||
} | |||
}) | |||
} | |||
ElMessageBox.confirm('正在开发中......') | |||
.then(() => { | |||
}) | |||
.catch(() => { | |||
}) | |||
async function bohui () { | |||
const postData = { | |||
instanceId: route.query.instanceId, | |||
projectId: route.query.projectId, | |||
projectCode: detailData.value.projectCode, | |||
taskId: route.query.taskId, | |||
action: 'REJECT' | |||
} | |||
await toInTheAnnualPlan(postData) | |||
} | |||
</script> | |||
@@ -351,7 +378,7 @@ function rejectYear () { | |||
</el-tabs> | |||
<span v-else>流程记录</span> | |||
</template> | |||
<flow-record v-if="flowTabActiveName==='1'" :flow-data="flowData.processProgressVo.progressInfo" /> | |||
<flow-record v-if="flowTabActiveName==='1'" :flow-data="flowData.processProgressVo.progressInfo" :detail="detailData" /> | |||
<el-form v-else-if="flowTabActiveName==='2'" label-suffix=":"> | |||
<sj-flow-record :flow-data="detailData.sjlsResult?JSON.parse(detailData.sjlsResult):[]" /> | |||
</el-form> | |||
@@ -391,7 +418,7 @@ function rejectYear () { | |||
</el-button> | |||
<el-button @click="router.go(-1)">返回</el-button> | |||
<el-button | |||
v-if="false" | |||
v-if="detailData.status>=10012" | |||
plain | |||
type="danger" | |||
@click="rejectYear" | |||