Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 65a852d380 |
@@ -609,19 +609,7 @@ const getTitleName = (type) => {
|
||||
}
|
||||
}
|
||||
const handleBack = () => {
|
||||
if (props.step === '20') {
|
||||
router.push({
|
||||
name: 'Initiation'
|
||||
})
|
||||
} else if (props.step === '40') {
|
||||
router.push({
|
||||
name: 'Implementation'
|
||||
})
|
||||
}else if(props.step === '50'){
|
||||
router.push({
|
||||
name: 'Filing'
|
||||
})
|
||||
}
|
||||
history.back()
|
||||
}
|
||||
const compositeParam = (item) => {
|
||||
return {
|
||||
|
||||
@@ -6,14 +6,12 @@
|
||||
<el-row gutter="30">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="征集名称" prop="requirementName">
|
||||
<el-input v-if="formData.state=='3'||routerName==='Requirement/add'" v-model="formData.requirementName" placeholder="请输入征集名称" clearable @change="changeRequirementData"></el-input>
|
||||
|
||||
<span v-else>{{ formData.requirementName }}</span>
|
||||
<el-input v-model="formData.requirementName" placeholder="请输入征集名称" clearable @change="changeRequirementData"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" style="margin-left: -40px">
|
||||
<el-form-item label="征集类型" prop="collectType">
|
||||
<el-select v-if="formData.state=='3'||routerName==='Requirement/add'" v-model="formData.collectType" placeholder="请选择征集类型" clearable filterable @change="changeRequirementData" >
|
||||
<el-select v-model="formData.collectType" placeholder="请选择征集类型" clearable filterable @change="changeRequirementData">
|
||||
<el-option
|
||||
v-for="item in cacheStore.getDict('collect_type')"
|
||||
:key="item.value"
|
||||
@@ -21,12 +19,11 @@
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<span v-else>{{ formData.collectType }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" style="margin-left: 10px">
|
||||
<el-form-item label="需求上报截止时间" prop="deadline">
|
||||
<el-config-provider v-if="formData.state=='3'||routerName==='Requirement/add'">
|
||||
<el-config-provider>
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.deadline"
|
||||
@@ -36,21 +33,19 @@
|
||||
:disabled-date="disabledDate" @change="changeRequirementData"
|
||||
/>
|
||||
</el-config-provider>
|
||||
<span v-else>{{ formData.deadline }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" style="margin-left: -20px">
|
||||
<el-form-item label="是否专项资金" prop="isSpecialFund">
|
||||
<el-select v-if="formData.state=='3'||routerName==='Requirement/add'" v-model="formData.isSpecialFund" placeholder="请选择是否专项资金" clearable filterable @change="changeRequirementData">
|
||||
<el-select v-model="formData.isSpecialFund" placeholder="请选择是否专项资金" clearable filterable @change="changeRequirementData">
|
||||
<el-option :value="true" label="是"></el-option>
|
||||
<el-option :value="false" label="否"></el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ formData.isSpecialFund?' 是':' 否' }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="专项资金名称" prop="specialFundId" v-if="formData.isSpecialFund">
|
||||
<el-select v-if="formData.state=='3'||routerName==='Requirement/add'" v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable @change="changeRequirementData">
|
||||
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable @change="changeRequirementData">
|
||||
<el-option
|
||||
v-for="item in specialFundOption"
|
||||
:key="item.value"
|
||||
@@ -58,17 +53,16 @@
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ formData.specialFund }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.isSpecialFund&&(formData.state=='3'||routerName==='Requirement/add')">
|
||||
<el-col :span="6" v-if="formData.isSpecialFund">
|
||||
<!-- <el-form-item>-->
|
||||
<a @click="addSpecialFund" style="width: 116px;text-align: right;display: inline-block">新增专项资金</a>
|
||||
<!-- </el-form-item>-->
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="征集公司" :required="true" prop="" class="company-select">
|
||||
<div style="width: 100%" v-if="formData.state=='3'||routerName==='Requirement/add'">
|
||||
<div style="width: 100%">
|
||||
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择征集公司' : '更改' }}
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -81,21 +75,19 @@
|
||||
</el-col>
|
||||
<el-col :span="24" style="margin-bottom: -18px">
|
||||
<el-form-item label="征集说明" prop="" required>
|
||||
<el-input v-if="formData.state=='3'||routerName==='Requirement/add'"
|
||||
<el-input
|
||||
v-model="formData.collectExplain"
|
||||
style="width:100%;margin-right: 50px"
|
||||
:rows="5"
|
||||
type="textarea"
|
||||
placeholder="请输入征集说明" @change="changeRequirementData"
|
||||
/>
|
||||
<div v-else v-html="formData.collectExplain" style="white-space: pre-wrap;">
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<baseTitle title="附件文件" style="margin-right: 10px"></baseTitle>
|
||||
<file-upload v-if="checkFormPrem('fileList')&&(formData.state=='3'||routerName==='Requirement/add')" @getFile="getFile"/>
|
||||
<file-upload v-if="checkFormPrem('fileList')" @getFile="getFile"/>
|
||||
<div style="margin-right: 50px">
|
||||
<fvTable style="width: 100%;max-height: 160px;" height="160" v-if="showTable"
|
||||
:tableConfig="tableConfig" :data="formData.fileList"
|
||||
@@ -129,9 +121,9 @@
|
||||
</div>
|
||||
<div style="width: 100%;height: 30px"></div>
|
||||
<div class="oper-page-btn">
|
||||
<el-button color="#DED0B2" v-if="routerName==='Requirement/add'" @click="handleSubmit(demandForm)">提交</el-button>
|
||||
<el-button color="#DED0B2" v-if="routerName==='Requirement/add'&&formData.state=='3'" @click="handleSubmit(demandForm)">提交</el-button>
|
||||
<el-button color="#DED0B2" v-else-if="routerName==='Requirement/edit'&&formData.state=='3'" @click="handleResubmit(demandForm)">重新提交</el-button>
|
||||
<el-button @click="handleBack" v-if="formData.state=='3'||routerName==='Requirement/add'">返回</el-button>
|
||||
<el-button @click="handleBack">返回</el-button>
|
||||
</div>
|
||||
<company-picker :multiple="true" ref="companyRef" title="请选择征集公司" @ok="sureSelectedCompany" @cancelOrClear="cancelSelectedCompany"
|
||||
v-model:value="selectedCompanyList"/>
|
||||
@@ -174,6 +166,7 @@ const opentionData = ref({})
|
||||
const showExpendText = ref('')
|
||||
const showMoreCompany = ref(false)
|
||||
const selectedCompanyList = ref([])
|
||||
// const companyList = ref([])
|
||||
const changeDiagram = ref(false)
|
||||
const tagsViewStore = useTagsView()
|
||||
const authStore = useAuthStore()
|
||||
@@ -250,10 +243,8 @@ const tableConfig = reactive({
|
||||
return (
|
||||
<div>
|
||||
<el-button type="primary" link onClick={() => handleDownload(row)}>下载</el-button>
|
||||
{
|
||||
formData.value.state=='3'||routerName.value==='Requirement/add'? <popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'}
|
||||
onDelete={() => handleDelete(row)}/>:''
|
||||
}
|
||||
<popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'}
|
||||
onDelete={() => handleDelete(row)}/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -578,9 +569,7 @@ const getDetailInfo = async () => {
|
||||
}
|
||||
|
||||
const handleBack = () => {
|
||||
router.push({
|
||||
name: 'Requirement'
|
||||
})
|
||||
history.back()
|
||||
}
|
||||
const handleDelete = (row) => {
|
||||
// deleteFile(row.fileId).then(res => {
|
||||
@@ -597,38 +586,6 @@ const handleDelete = (row) => {
|
||||
// });
|
||||
}
|
||||
|
||||
// 新增:动态修改标签和面包屑标题
|
||||
// watch(
|
||||
// () => formData.value.state,
|
||||
// async (state) => {
|
||||
// if (state === '3') {
|
||||
// console.log("🚀 ~ file:'32423 ")
|
||||
// const newTitle = '需求征集-编辑'
|
||||
// if (router.currentRoute.value.meta) {
|
||||
// router.currentRoute.value.meta.title = newTitle
|
||||
// }
|
||||
// tagsViewStore.visitedViews.forEach(view => {
|
||||
// if (view.path === router.currentRoute.value.path) {
|
||||
// view.meta.title = newTitle
|
||||
// }
|
||||
// })
|
||||
// tagsViewStore.visitedViews = [...tagsViewStore.visitedViews]
|
||||
// } else {
|
||||
// const defaultTitle = '需求征集-详情'
|
||||
// if (router.currentRoute.value.meta) {
|
||||
// router.currentRoute.value.meta.title = defaultTitle
|
||||
// }
|
||||
// tagsViewStore.visitedViews.forEach(view => {
|
||||
// if (view.path === router.currentRoute.value.path) {
|
||||
// view.meta.title = defaultTitle
|
||||
// }
|
||||
// })
|
||||
// tagsViewStore.visitedViews = [...tagsViewStore.visitedViews]
|
||||
// }
|
||||
// },
|
||||
// { immediate: true }
|
||||
// )
|
||||
|
||||
onMounted(async () => {
|
||||
loading.value = true
|
||||
await init()
|
||||
|
||||
@@ -1,29 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div class="notice-wrapper">
|
||||
<div v-if="collectData.formData&&collectData.formData.state==4" class="notice">
|
||||
<div class="alert-icon">⚠️</div>
|
||||
<div class="alert-content">
|
||||
<div class="alert-title">操作限制提示</div>
|
||||
<div class="alert-message">当前版本不支持手机端需求上报,请在电脑网页上执行需求上报操作</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData && formData.state == 3" class="notice">
|
||||
<div class="alert-icon">⚠️</div>
|
||||
<div class="alert-content">
|
||||
<div class="alert-title">操作限制提示</div>
|
||||
<div class="alert-message">当前版本不支持手机端驳回重新提交,请在电脑网页上执行重新提交操作。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding: 0 10px;" >
|
||||
<baseTitle title="需求征集信息"></baseTitle>
|
||||
<CollectionDetailMoblie :formData="collectData.formData" :data="collectData" type="singleDetail"
|
||||
:fileListShow="fileListShow"
|
||||
:processViewer="processViewer" :loading="loading" v-model:value="auditOpinion"/>
|
||||
<OpinionMoblie v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" :taskUserOptionList="collectData.taskUserOptionList" v-model:value="auditOpinion"></OpinionMoblie>
|
||||
</div>
|
||||
<div style="padding: 0 10px;">
|
||||
<baseTitle title="需求征集信息"></baseTitle>
|
||||
<CollectionDetailMoblie :formData="collectData.formData" :data="collectData" type="singleDetail"
|
||||
:fileListShow="fileListShow"
|
||||
:processViewer="processViewer" :loading="loading" v-model:value="auditOpinion"/>
|
||||
<OpinionMoblie v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" :taskUserOptionList="collectData.taskUserOptionList" v-model:value="auditOpinion"></OpinionMoblie>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -123,47 +104,6 @@ onMounted(async () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.page-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.notice-wrapper {
|
||||
//margin-bottom: 8px; /* 从15px改为8px */
|
||||
}
|
||||
|
||||
.notice {
|
||||
background: linear-gradient(90deg, #fff3f3 0%, #fff8f8 100%);
|
||||
padding: 15px 20px;
|
||||
border-left: 6px solid #ff7875;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 0 4px 4px 0;
|
||||
|
||||
.alert-icon {
|
||||
font-size: 24px;
|
||||
margin-right: 15px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.alert-content {
|
||||
flex: 1;
|
||||
|
||||
.alert-title {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 4px;
|
||||
color: #d9363e;
|
||||
}
|
||||
|
||||
.alert-message {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-empty__description) {
|
||||
margin-top: 0;
|
||||
}
|
||||
@@ -201,4 +141,5 @@ onMounted(async () => {
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
:style="{marginLeft:!formData.isSpecialFund?route.query.id?'-10px':'-10px':route.query.id?'0':'-40px'}">
|
||||
<el-form-item label="主项目" prop="masterProjectId">
|
||||
<el-select v-model="formData.masterProjectId" clearable placeholder="请选择主项目"
|
||||
@change="changeCollectData" filterable :remote-method="filterMasterProject">
|
||||
@change="changeCollectData" remote filterable :remote-method="filterMasterProject">
|
||||
<el-option
|
||||
v-for="item in masterProjectList"
|
||||
:key="item.value"
|
||||
@@ -586,9 +586,7 @@ const optionalChargeLeaderPickerOkOrCancel = (userList) => {
|
||||
}
|
||||
|
||||
const handleBack = () => {
|
||||
router.push({
|
||||
name: 'Summary'
|
||||
})
|
||||
history.back()
|
||||
}
|
||||
const disabledDate = (time) => {
|
||||
return time.getTime() < new Date(formData.value.startTime).getTime();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<!-- <baseTitle title="审核意见"></baseTitle>-->
|
||||
<!-- <fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm>-->
|
||||
<div class="oper-page-btn-mobile" style="display: flex">
|
||||
<div class="oper-page-btn" style="display: flex">
|
||||
<el-button type="danger" @click="handleReject">驳回</el-button>
|
||||
<el-button color="#DED0B2" @click="handleAgree">同意</el-button>
|
||||
</div>
|
||||
@@ -129,13 +129,13 @@ const back = () => {
|
||||
}
|
||||
}
|
||||
break;
|
||||
// case 'Summary/detail':
|
||||
// if (route.query.source === 'home') {
|
||||
// router.push('/home')
|
||||
// } else {
|
||||
// router.push({name: 'Summary'})
|
||||
// }
|
||||
// break;
|
||||
// case 'Summary/detail':
|
||||
// if (route.query.source === 'home') {
|
||||
// router.push('/home')
|
||||
// } else {
|
||||
// router.push({name: 'Summary'})
|
||||
// }
|
||||
// break;
|
||||
case 'Requirement/detail':
|
||||
if (route.query.source === 'home') {
|
||||
router.push('/home')
|
||||
@@ -233,10 +233,4 @@ const handleAgree = async () => {
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
.oper-page-btn-mobile {
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
right: 15px;
|
||||
z-index: 5;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,113 +1,105 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div class="notice-wrapper">
|
||||
<div v-if="fundData && fundData.state == 3" class="notice">
|
||||
<div class="alert-icon">⚠️</div>
|
||||
<div class="alert-content">
|
||||
<div class="alert-title">操作限制提示</div>
|
||||
<div class="alert-message">当前版本不支持手机端驳回重新提交,请在电脑网页上执行重新提交操作。</div>
|
||||
<!-- <special-fund-detail :formData="fundData.formData" :data="fundData" :showTable="showTable" :processViewer="fundProcessViewer"-->
|
||||
<!-- :loading="loading"/>-->
|
||||
|
||||
<div v-loading="loading" style="padding: 0 10px;">
|
||||
<baseTitle title="专项资金详情"></baseTitle>
|
||||
<el-form :model="formData" ref="form" label-width="left">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="专项名称">
|
||||
<span>{{ formData.name }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="金额(元)">
|
||||
<span>{{ toThousands(formData.fundAmount) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="剩余金额(元)">
|
||||
<span>{{ toThousands(formData.residualAmount) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <baseTitle title="介绍"></baseTitle>-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item>-->
|
||||
<!-- <el-card style="width: 100%">-->
|
||||
<!-- <div v-html="formData.introduce">-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-card>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="24">
|
||||
<el-form-item label="专项资金情况说明" >
|
||||
<div style="white-space: pre-wrap">{{formData.introduce}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: -18px;" class="projects">
|
||||
<baseTitle title="关联项目"></baseTitle>
|
||||
<el-col :span="24">
|
||||
<el-form-item>
|
||||
<fvTable style="width: 100%;max-height:160px" height="160" v-if="showTable" :scrollbar-always-on="true" :tableConfig="projectTable"
|
||||
:data="formData.projects" :isSettingCol="false" :pagination="false">
|
||||
<template #empty>
|
||||
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
|
||||
</template>
|
||||
</fvTable>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row style="margin-top: -18px;" class="projects">
|
||||
<baseTitle title="附件文件"></baseTitle>
|
||||
<el-col :span="24">
|
||||
<el-form-item>
|
||||
<fvTable style="width: 100%;max-height: 160px;" height="160" v-if="showTable":scrollbar-always-on="true" :tableConfig="fileTable"
|
||||
:data="formData.files" :isSettingCol="false" :pagination="false">
|
||||
<template #empty>
|
||||
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
|
||||
</template>
|
||||
</fvTable>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div v-if="fundData.taskId">
|
||||
<baseTitle title="审核意见"></baseTitle>
|
||||
<el-form-item prop="auditOpinion">
|
||||
<el-input
|
||||
v-model="formData.auditOpinion"
|
||||
:rows="3"
|
||||
type="textarea"
|
||||
placeholder="请输入审核意见"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="approval-record">
|
||||
<div class="approval-title">
|
||||
<baseTitle title="审批记录"></baseTitle>
|
||||
<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="fundProcessViewer && fundData.operationList && fundData.operationList.length > 0&&!changeDiagram" :isColumn="true"
|
||||
:operation-list="fundData.operationList"
|
||||
:state="fundData.state"/>
|
||||
<process-diagram-viewer v-if="fundProcessViewer&&changeDiagram" id-name="fundProcess"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-loading="loading" style="padding: 0 10px;">
|
||||
<baseTitle title="专项资金详情"></baseTitle>
|
||||
<el-form :model="formData" ref="form" label-width="left">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="专项名称">
|
||||
<span>{{ formData.name }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="金额(元)">
|
||||
<span>{{ toThousands(formData.fundAmount) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="剩余金额(元)">
|
||||
<span>{{ toThousands(formData.residualAmount) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <baseTitle title="介绍"></baseTitle>-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item>-->
|
||||
<!-- <el-card style="width: 100%">-->
|
||||
<!-- <div v-html="formData.introduce">-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-card>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="24">
|
||||
<el-form-item label="专项资金情况说明" >
|
||||
<div style="white-space: pre-wrap">{{formData.introduce}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: -18px;" class="projects">
|
||||
<baseTitle title="关联项目"></baseTitle>
|
||||
<el-col :span="24">
|
||||
<el-form-item>
|
||||
<fvTable style="width: 100%;max-height:160px" height="160" v-if="showTable" :scrollbar-always-on="true" :tableConfig="projectTable"
|
||||
:data="formData.projects" :isSettingCol="false" :pagination="false">
|
||||
<template #empty>
|
||||
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
|
||||
</template>
|
||||
</fvTable>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row style="margin-top: -18px;" class="projects">
|
||||
<baseTitle title="附件文件"></baseTitle>
|
||||
<el-col :span="24">
|
||||
<el-form-item>
|
||||
<fvTable style="width: 100%;max-height: 160px;" height="160" v-if="showTable":scrollbar-always-on="true" :tableConfig="fileTable"
|
||||
:data="formData.files" :isSettingCol="false" :pagination="false">
|
||||
<template #empty>
|
||||
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
|
||||
</template>
|
||||
</fvTable>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div v-if="fundData.taskId">
|
||||
<baseTitle title="审核意见"></baseTitle>
|
||||
<el-form-item prop="auditOpinion">
|
||||
<el-input
|
||||
v-model="formData.auditOpinion"
|
||||
:rows="3"
|
||||
type="textarea"
|
||||
placeholder="请输入审核意见"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="approval-record">
|
||||
<div class="approval-title">
|
||||
<baseTitle title="审批记录"></baseTitle>
|
||||
<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="fundProcessViewer && fundData.operationList && fundData.operationList.length > 0&&!changeDiagram" :isColumn="true"
|
||||
:operation-list="fundData.operationList"
|
||||
:state="fundData.state"/>
|
||||
<process-diagram-viewer v-if="fundProcessViewer&&changeDiagram" id-name="fundProcess"/>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
<opinion-moblie v-if="fundData.taskId" :formData="formData" :taskId="fundData.taskId" :taskUserOptionList="fundData.taskUserOptionList"
|
||||
v-model:value="formData.auditOpinion"></opinion-moblie>
|
||||
<file-preview ref="filePreviewRef" :fullscreen="true" v-if="filePreviewShow" :fileName="filePreviewParam.fileName" :fileUrl="filePreviewParam.fileUrl"
|
||||
:fileType="filePreviewParam.fileType"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<opinion-moblie v-if="fundData.taskId" :formData="formData" :taskId="fundData.taskId" :taskUserOptionList="fundData.taskUserOptionList"
|
||||
v-model:value="formData.auditOpinion"></opinion-moblie>
|
||||
<file-preview ref="filePreviewRef" :fullscreen="true" v-if="filePreviewShow" :fileName="filePreviewParam.fileName" :fileUrl="filePreviewParam.fileUrl"
|
||||
:fileType="filePreviewParam.fileType"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -284,47 +276,6 @@ const getDetail = async () => {
|
||||
getDetail()
|
||||
</script>
|
||||
<style scoped>
|
||||
.page-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.notice-wrapper {
|
||||
/* 与index页面一致 */
|
||||
}
|
||||
|
||||
.notice {
|
||||
background: linear-gradient(90deg, #fff3f3 0%, #fff8f8 100%);
|
||||
padding: 15px 20px;
|
||||
border-left: 6px solid #ff7875;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.notice .alert-icon {
|
||||
font-size: 24px;
|
||||
margin-right: 15px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.notice .alert-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.notice .alert-title {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 4px;
|
||||
color: #d9363e;
|
||||
}
|
||||
|
||||
.notice .alert-message {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
:deep(.el-table--fit ) {
|
||||
height: 300px !important;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div id="printBox">
|
||||
<div style="display: flex;justify-content: space-between">
|
||||
<baseTitle title="项目基本信息"></baseTitle>
|
||||
<!-- <el-button v-print="print" color="#ded0b2" icon="Printer" style="margin-top: 15px" @click="handlePrint(print)"> 打印</el-button>-->
|
||||
<el-button v-print="print" color="#ded0b2" icon="Printer" style="margin-top: 15px" @click="handlePrint(print)"> 打印</el-button>
|
||||
</div>
|
||||
<fvForm :schema="schema" @getInstance="(e)=>baseForm = e" label-position="left" label-width="left" style="margin-left: 15px"></fvForm>
|
||||
<div class="steps-box">
|
||||
|
||||
@@ -1,71 +1,60 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div class="notice-wrapper">
|
||||
<div v-if="detailData && detailData.state == 3" class="notice">
|
||||
<div class="alert-icon">⚠️</div>
|
||||
<div class="alert-content">
|
||||
<div class="alert-title">操作限制提示</div>
|
||||
<div class="alert-message">当前版本不支持手机端驳回重新提交,请在电脑网页上执行重新提交操作。</div>
|
||||
<div style="padding: 0 10px;">
|
||||
<StepsMoblie :active="route.query.id==='-1'?currentStep-1:currentStep" @setDetail="setDetail"
|
||||
@stepChange="stepChange"
|
||||
:reportType="route.query.id==='-1'?'direct':''">
|
||||
<template #content v-if="detailShow">
|
||||
<collection-detail :formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
v-if="showActive == '00'"
|
||||
:fileListShow="fileListShow"
|
||||
v-model:value="auditOpinion"
|
||||
/>
|
||||
<summary-detail v-if="showActive == '10'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<ApprovalDetail type="approval"
|
||||
v-if="showActive == '20'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<div v-if="showActive == '30'">
|
||||
<project-attachment fileNameTableWidth="200" :isLineBtn="true"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 0 10px;">
|
||||
<StepsMoblie :active="route.query.id==='-1'?currentStep-1:currentStep" @setDetail="setDetail"
|
||||
@stepChange="stepChange"
|
||||
:reportType="route.query.id==='-1'?'direct':''">
|
||||
<template #content v-if="detailShow">
|
||||
<collection-detail :formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
v-if="showActive == '00'"
|
||||
:fileListShow="fileListShow"
|
||||
v-model:value="auditOpinion"
|
||||
/>
|
||||
<summary-detail v-if="showActive == '10'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<ApprovalDetail type="approval"
|
||||
v-if="showActive == '20'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<div v-if="showActive == '30'">
|
||||
<project-attachment fileNameTableWidth="200" :isLineBtn="true"/>
|
||||
</div>
|
||||
<ApprovalDetail type="execute"
|
||||
v-if="showActive == '40'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<ApprovalDetail type="archivist"
|
||||
v-if="showActive == '50'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<!-- <project-apply-moblie :title="applyTitle"-->
|
||||
<!-- v-if="editShow"-->
|
||||
<!-- :mode="mode"-->
|
||||
<!-- :step="showActive"-->
|
||||
<!-- :data="detailData"-->
|
||||
<!-- :formData="detailData.formData"/>-->
|
||||
</template>
|
||||
</StepsMoblie>
|
||||
<opinion-moblie v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId"
|
||||
:taskUserOptionList="detailData.taskUserOptionList"
|
||||
v-model:value="auditOpinion"/>
|
||||
</div>
|
||||
<ApprovalDetail type="execute"
|
||||
v-if="showActive == '40'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<ApprovalDetail type="archivist"
|
||||
v-if="showActive == '50'"
|
||||
:formData="detailData.formData"
|
||||
:data="detailData"
|
||||
:processViewer="commonProvessViewer"
|
||||
:fileListShow="fileListShow"
|
||||
:preProcessShow="preProcessShow"
|
||||
v-model:value="auditOpinion"/>
|
||||
<!-- <project-apply-moblie :title="applyTitle"-->
|
||||
<!-- v-if="editShow"-->
|
||||
<!-- :mode="mode"-->
|
||||
<!-- :step="showActive"-->
|
||||
<!-- :data="detailData"-->
|
||||
<!-- :formData="detailData.formData"/>-->
|
||||
</template>
|
||||
</StepsMoblie>
|
||||
<opinion-moblie v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId"
|
||||
:taskUserOptionList="detailData.taskUserOptionList"
|
||||
v-model:value="auditOpinion"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -186,47 +175,6 @@ const stepChange = (data) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.page-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.notice-wrapper {
|
||||
/* 与special页面一致 */
|
||||
}
|
||||
|
||||
.notice {
|
||||
background: linear-gradient(90deg, #fff3f3 0%, #fff8f8 100%);
|
||||
padding: 15px 20px;
|
||||
border-left: 6px solid #ff7875;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.notice .alert-icon {
|
||||
font-size: 24px;
|
||||
margin-right: 15px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.notice .alert-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.notice .alert-title {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 4px;
|
||||
color: #d9363e;
|
||||
}
|
||||
|
||||
.notice .alert-message {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.detail-block {
|
||||
padding-top: 15px;
|
||||
}
|
||||
@@ -243,6 +191,11 @@ const stepChange = (data) => {
|
||||
flex: 1;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
//.is-active {
|
||||
// color: black;
|
||||
// //background-color: #DED0B2;
|
||||
//}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,30 +1,19 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div class="notice-wrapper">
|
||||
<div v-if="summaryData && summaryData.state == 3" class="notice">
|
||||
<div class="alert-icon">⚠️</div>
|
||||
<div class="alert-content">
|
||||
<div class="alert-title">操作限制提示</div>
|
||||
<div class="alert-message">当前版本不支持手机端驳回重新提交,请在电脑网页上执行重新提交操作。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 0 10px; box-sizing: border-box;">
|
||||
<baseTitle title="项目基本信息"></baseTitle>
|
||||
<fvForm :schema="schema" @getInstance="(e)=>baseForm = e" label-position="left" label-width="left"></fvForm>
|
||||
<baseTitle title="阶段变更详情" style="margin-top: -10px"></baseTitle>
|
||||
<div style="color: #606266;font-size: 14px;height:32px;line-height: 32px"><span style="display:inline-block;text-align: right;margin-right: 14px;margin-left: 15px">抄送人</span>{{copyName?copyName:'--'}}</div>
|
||||
<div style="color: #606266;font-size: 14px;display: flex;height:40px;line-height: 32px;margin-bottom: -10px">
|
||||
<span style="display:inline-block;text-align: right;margin-right: 14px;margin-left: 15px">变更状态</span>
|
||||
<!-- {{changeState=='1'?'开发阶段':'研究阶段'}}-->
|
||||
<tag dict-type="fee_stage" :value="changeState"/>
|
||||
</div>
|
||||
<ApprovalDetailMoblie :formData="summaryData.formData" :data="summaryData" type="phase"
|
||||
:processViewer="summaryProcessViewer" :loading="loading" :fileListShow="fileListShow" v-model:value="auditOpinion"/>
|
||||
<opinion-moblie v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId"
|
||||
:taskUserOptionList="summaryData.taskUserOptionList"
|
||||
v-model:value="auditOpinion"/>
|
||||
<div style="padding: 0 10px; box-sizing: border-box;">
|
||||
<baseTitle title="项目基本信息"></baseTitle>
|
||||
<fvForm :schema="schema" @getInstance="(e)=>baseForm = e" label-position="left" label-width="left"></fvForm>
|
||||
<baseTitle title="阶段变更详情" style="margin-top: -10px"></baseTitle>
|
||||
<div style="color: #606266;font-size: 14px;height:32px;line-height: 32px"><span style="display:inline-block;text-align: right;margin-right: 14px;margin-left: 15px">抄送人</span>{{copyName?copyName:'--'}}</div>
|
||||
<div style="color: #606266;font-size: 14px;display: flex;height:40px;line-height: 32px;margin-bottom: -10px">
|
||||
<span style="display:inline-block;text-align: right;margin-right: 14px;margin-left: 15px">变更状态</span>
|
||||
<!-- {{changeState=='1'?'开发阶段':'研究阶段'}}-->
|
||||
<tag dict-type="fee_stage" :value="changeState"/>
|
||||
</div>
|
||||
<ApprovalDetailMoblie :formData="summaryData.formData" :data="summaryData" type="phase"
|
||||
:processViewer="summaryProcessViewer" :loading="loading" :fileListShow="fileListShow" v-model:value="auditOpinion"/>
|
||||
<opinion-moblie v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId"
|
||||
:taskUserOptionList="summaryData.taskUserOptionList"
|
||||
v-model:value="auditOpinion"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -334,44 +323,5 @@ getInfo()
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.notice-wrapper {
|
||||
/* 与special页面一致 */
|
||||
}
|
||||
|
||||
.notice {
|
||||
background: linear-gradient(90deg, #fff3f3 0%, #fff8f8 100%);
|
||||
padding: 15px 20px;
|
||||
border-left: 6px solid #ff7875;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.notice .alert-icon {
|
||||
font-size: 24px;
|
||||
margin-right: 15px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.notice .alert-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.notice .alert-title {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 4px;
|
||||
color: #d9363e;
|
||||
}
|
||||
|
||||
.notice .alert-message {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -234,9 +234,7 @@ const getFile = (val) => {
|
||||
})
|
||||
}
|
||||
const handleBack = () => {
|
||||
router.push({
|
||||
name: 'Fund'
|
||||
})
|
||||
history.back()
|
||||
}
|
||||
|
||||
const submitParam = (item) => {
|
||||
@@ -327,7 +325,11 @@ const init = async () => {
|
||||
}
|
||||
const getDetailInfo = async () => {
|
||||
getFundDetailProcess(route.query.id).then(res => {
|
||||
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: res.msg,
|
||||
type: res.code === 1000 ? 'success' : 'error'
|
||||
})
|
||||
if (res.code === 1000) {
|
||||
formData.value = res.data.formData
|
||||
opentionData.value = res.data
|
||||
@@ -335,12 +337,6 @@ const getDetailInfo = async () => {
|
||||
nextTick(() => {
|
||||
showTable.value = true
|
||||
})
|
||||
}else{
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: res.msg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ export default defineConfig({
|
||||
open: true,
|
||||
proxy: {
|
||||
// '/api/workflow': {
|
||||
// target: 'http://frp.toomewhy.top:38000/',
|
||||
// target: 'http://frp.feashow.cn:31800/',
|
||||
// // target: 'http://clay.frp.feashow.cn/',
|
||||
// // target: 'http://192.168.31.175:8000',
|
||||
// changeOrigin: true,
|
||||
|
||||
Reference in New Issue
Block a user