feat(mobile): 专项资金、项目管理、需求详情页面增加手机端驳回提示

- 在专项资金详情、项目管理详情和需求详情页面中添加了手机端驳回提示
- 提示内容为:"当前版本不支持手机端驳回重新提交,请在电脑网页上执行重新提交操作"
- 该提示在数据状态为 3 时显示
This commit is contained in:
dj
2025-08-29 12:00:13 +08:00
parent 05ac715461
commit 8c20ecacab
4 changed files with 326 additions and 173 deletions

View File

@@ -8,6 +8,13 @@
<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;" >

View File

@@ -1,105 +1,113 @@
<template>
<!-- <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 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>
</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>
<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>
</div>
</template>
@@ -276,6 +284,47 @@ 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;
}

View File

@@ -1,60 +1,71 @@
<template>
<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 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>
<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>
</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>
</div>
</template>
@@ -175,6 +186,47 @@ 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;
}
@@ -191,11 +243,6 @@ const stepChange = (data) => {
flex: 1;
font-size: 16px;
}
//.is-active {
// color: black;
// //background-color: #DED0B2;
//}
}
}
</style>

View File

@@ -1,19 +1,30 @@
<template>
<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 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>
<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>
@@ -323,5 +334,44 @@ 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>