Merge pull request 'master' (#992) from master into prod

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/992
This commit is contained in:
2025-04-18 14:40:16 +00:00
9 changed files with 79 additions and 48 deletions

View File

@@ -27,7 +27,7 @@
<el-button color="#DED0B2" v-if="templateDownloadBtnShow" @click="handleImportTemplateDownload" <el-button color="#DED0B2" v-if="templateDownloadBtnShow" @click="handleImportTemplateDownload"
style="margin-left: 10px">模板下载 style="margin-left: 10px">模板下载
</el-button> </el-button>
<fvTable style="width: 100%;max-height: 160px;" v-if="showTable" height="160" :tableConfig="tableConfig" <fvTable style="width: 100%;" :height="label=='项目立项附件'?'160':'160'" :scrollbar-always-on="true" :style="{maxHeight:label=='项目立项附件'?'160px':'160px',height:label=='项目立项附件'?'160px':'160px'}" v-if="showTable" :tableConfig="tableConfig"
:data="allFileList" :isSettingCol="false" :pagination="false"> :data="allFileList" :isSettingCol="false" :pagination="false">
<template #empty> <template #empty>
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/> <el-empty :image-size="55" description="暂无数据" style="padding: 0"/>
@@ -532,12 +532,10 @@ defineExpose({
}) })
</script> </script>
<style scoped>
:deep(.el-table--fit ) {
height: 300px !important;
}
</style>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-table--fit ) {
height: 160px !important;
}
:deep(.el-table__header) { :deep(.el-table__header) {
.is-leaf:first-child { .is-leaf:first-child {
.cell { .cell {

View File

@@ -3,7 +3,7 @@
<el-form-item :label="title" v-if="fileListShow === 'READ' || fileListShow === 'EDIT'" :label-position="labelAlign" :style="{marginTop: '10px',marginLeft: tag!=='需求上报'?'15px':'0'}"> <el-form-item :label="title" v-if="fileListShow === 'READ' || fileListShow === 'EDIT'" :label-position="labelAlign" :style="{marginTop: '10px',marginLeft: tag!=='需求上报'?'15px':'0'}">
<file-upload @getFile="getOtherFile" v-if="fileListShow === 'EDIT'"/> <file-upload @getFile="getOtherFile" v-if="fileListShow === 'EDIT'"/>
<!-- :style="{width:isOpenPrint?'610px': '100%'}" table-layout="auto" id="printTable"--> <!-- :style="{width:isOpenPrint?'610px': '100%'}" table-layout="auto" id="printTable"-->
<fvTable style="width:100%;max-height: 160px;" v-if="processViewer" :scrollbar-always-on="true" height="160" :tableConfig="tableConfig" <fvTable style="width:100%;" :height="tag=='项目立项'?'160':'160'" :style="{maxHeight:tag=='项目立项'?'160px':'160px',height:tag=='项目立项'?'160px':'160px'}" v-if="processViewer" :scrollbar-always-on="true" :tableConfig="tableConfig"
:data="_value" :isSettingCol="false" :pagination="false"> :data="_value" :isSettingCol="false" :pagination="false">
<template #empty> <template #empty>
<el-empty :image-size="55" description="暂无数据" style="padding: 0"/> <el-empty :image-size="55" description="暂无数据" style="padding: 0"/>

View File

@@ -59,7 +59,7 @@
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk" @cancelOrClear="optionalChargeLeaderPickerCancel"/> v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk" @cancelOrClear="optionalChargeLeaderPickerCancel"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="preProcessShow === 'EDIT'"> <el-col :span="24" v-if="preProcessShow === 'EDIT'||title==='apply'">
<el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" label-width="125"> <el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" label-width="125">
<el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px"> <el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px">
{{ {{

View File

@@ -390,6 +390,7 @@ const getTagsOption = (flag) => {
if (!route.query.projectId) return if (!route.query.projectId) return
getTagList(route.query.projectId).then(res => { getTagList(route.query.projectId).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
tagsOption.value = res.data.rows tagsOption.value = res.data.rows
let list=[] let list=[]
if(flag){ if(flag){
@@ -406,7 +407,29 @@ const getTagsOption = (flag) => {
}) })
console.log("🚀 otherAttachmentList.value", allFiles.value) console.log("🚀 otherAttachmentList.value", allFiles.value)
console.log("🚀 ~ file:\tagsOption.value ", tagsOption.value) console.log("🚀 ~ file:\tagsOption.value ", tagsOption.value)
let defaultArray=[
{
tagId: 'd1',
fileTag: '合同(专项任务书)',
isClose: 2
},
{
tagId: 'd2',
fileTag: '周报',
isClose: 2
},
{
tagId: 'd3',
fileTag: '阶段性验收',
isClose: 2
},
{
tagId: 'd4',
fileTag: '科研成果',
isClose: 2
}
]
tagsOption.value=[...defaultArray,...tagsOption.value]
// if (!res.data.rows || res.data.rows.length == 0) return; // if (!res.data.rows || res.data.rows.length == 0) return;
// activeName.value=res.data.rows[0].tagId // activeName.value=res.data.rows[0].tagId
} else { } else {

View File

@@ -9,7 +9,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="知识产权状况" prop="intellectualProperty"> <el-form-item label="知识产权归属" prop="intellectualProperty">
<span>{{ <span>{{
filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty) filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty)
}}</span> }}</span>

View File

@@ -21,7 +21,7 @@
<el-card shadow="never" class="todo-bg" @tab-add="refreshTodoOrDoneList(activeName)"> <el-card shadow="never" class="todo-bg" @tab-add="refreshTodoOrDoneList(activeName)">
<el-tabs v-model="activeName" editable> <el-tabs v-model="activeName" editable>
<template #add-icon> <template #add-icon>
<div @click="refreshTodoOrDoneList" style="margin-left: -50px"> <div @click="refreshTodoOrDoneList" style="margin-left: -50px;font-size: 14px">
刷新一下 刷新一下
<div style="width: 31px"></div> <div style="width: 31px"></div>
</div> </div>
@@ -29,14 +29,14 @@
<el-tab-pane :label="'待办('+(todoList?.length||0) +''" name="first"> <el-tab-pane :label="'待办('+(todoList?.length||0) +''" name="first">
<div class="todo-top"> <div class="todo-top">
<div class="bell"> <div class="bell">
<el-icon size="20" color="#F55815"> <el-icon size="16" color="#F55815">
<BellFilled/> <BellFilled/>
</el-icon> </el-icon>
<span>您有{{ todoList?.length || 0 }}条待办需要处理</span> <span>您有{{ todoList?.length || 0 }}条待办需要处理</span>
</div> </div>
<div class="todo-more" @click="handleTodoList(1)"> <div class="todo-more" @click="handleTodoList(1)">
<span>查看更多</span> <span>查看更多</span>
<el-icon color="#1F63E6" size="18"> <el-icon color="#1F63E6" size="16">
<ArrowRight/> <ArrowRight/>
</el-icon> </el-icon>
</div> </div>
@@ -73,14 +73,14 @@
<el-tab-pane :label="'已办(' + (doneList?.length||0) + ''" name="second"> <el-tab-pane :label="'已办(' + (doneList?.length||0) + ''" name="second">
<div class="todo-top"> <div class="todo-top">
<div class="bell"> <div class="bell">
<el-icon size="20" color="#F55815"> <el-icon size="16" color="#F55815">
<BellFilled/> <BellFilled/>
</el-icon> </el-icon>
<span>您有{{ todoList.length }}条待办需要处理</span> <span>您有{{ todoList.length }}条待办需要处理</span>
</div> </div>
<div class="todo-more" @click="handleTodoList(2)"> <div class="todo-more" @click="handleTodoList(2)">
<span>查看更多</span> <span>查看更多</span>
<el-icon color="#1F63E6" size="18"> <el-icon color="#1F63E6" size="16">
<ArrowRight/> <ArrowRight/>
</el-icon> </el-icon>
</div> </div>
@@ -245,7 +245,7 @@
<!-- <div>--> <!-- <div>-->
<!-- <span>{{ index > 8 ? '' : 0 }}{{ index + 1 }}</span>{{ item.title }}--> <!-- <span>{{ index > 8 ? '' : 0 }}{{ index + 1 }}</span>{{ item.title }}-->
<!-- </div>--> <!-- </div>-->
<div :style="{'color': item.isRead ? '#1F63E6' : 'rgba(0,0,0,0.5)'}"> <div :style="{'color': item.isRead ? '#1F63E6' : '#000'}">
<span>{{ item.articleTitle }}</span> <span>{{ item.articleTitle }}</span>
<span class="dot" v-if="item.isRead"></span> <span class="dot" v-if="item.isRead"></span>
</div> </div>
@@ -384,8 +384,8 @@ const fundPieOption = ref({
align: 'left', align: 'left',
icon: 'circle', icon: 'circle',
textStyle: { textStyle: {
color: 'rgba(0,0,0,0.6)', color: '#000',
fontSize: '12px' fontSize: '14px'
}, },
}, },
graphic: { //图形中间图片 graphic: { //图形中间图片
@@ -398,18 +398,19 @@ const fundPieOption = ref({
}, },
left: 'center', left: 'center',
right: 'center', right: 'center',
top: '42%' top: '45%'
}] }]
}, },
series: [ series: [
{ {
type: 'pie', type: 'pie',
radius: [65, 90], radius: [65, 90],
center: ['50%', '50%'], center: ['50%', '55%'],
top: '10%', top: '10%',
left: '8', left: '8',
label: { label: {
show: true, show: true,
fontSize:14,
formatter: '{b}\n{d}%' formatter: '{b}\n{d}%'
// formatter: params => { // formatter: params => {
// console.log(params) // console.log(params)
@@ -451,12 +452,12 @@ const fundPieOption = ref({
clockWise: false, clockWise: false,
hoverAnimation: false, hoverAnimation: false,
radius: ['70%', '70%'],//边框大小 radius: ['70%', '70%'],//边框大小
center: ['50%', '50%'],//边框位置 center: ['50%', '55%'],//边框位置
tooltip: { tooltip: {
show: false show: false
}, },
label: { label: {
show: false show: false,
}, },
emphasis: { emphasis: {
show: false show: false
@@ -486,6 +487,7 @@ const moneyPieOption = ref({
center: ['50%', '50%'], center: ['50%', '50%'],
label: { label: {
normal: { normal: {
fontSize:14,
show: true, show: true,
position: 'inner', position: 'inner',
formatter: function (data) { formatter: function (data) {
@@ -839,6 +841,13 @@ const handleView = (row) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-input){
width: 84px!important;
}
:deep(.el-input__inner){
font-size: 14px;
color: #000;
}
@media (min-width: 1200px) and (max-width: 1918px) { @media (min-width: 1200px) and (max-width: 1918px) {
//.right-top { //.right-top {
// height: 684px !important; // height: 684px !important;
@@ -1001,7 +1010,7 @@ const handleView = (row) => {
.total-money { .total-money {
height: 25px; height: 25px;
font-weight: 400; font-weight: 400;
font-size: 15px; font-size: 14px;
color: #000000; color: #000000;
line-height: 18px; line-height: 18px;
} }
@@ -1037,14 +1046,14 @@ const handleView = (row) => {
> div:last-child { > div:last-child {
font-weight: 400; font-weight: 400;
font-size: 15px; font-size: 14px;
color: #000000; color: #000000;
letter-spacing: 1px; letter-spacing: 1px;
margin-left: 28px; margin-left: 28px;
} }
.company-name { .company-name {
font-size: 12px; font-size: 14px;
color: rgba(0, 0, 0, 0.6); color: rgba(0, 0, 0, 0.6);
letter-spacing: 1px; letter-spacing: 1px;
margin-left: 10px; margin-left: 10px;
@@ -1105,7 +1114,7 @@ const handleView = (row) => {
:deep(.el-tabs__new-tab ) { :deep(.el-tabs__new-tab ) {
width: 67px !important; width: 67px !important;
border: none !important; border: none !important;
color: #1476E3; color: #1476E3;
font-size: 14px; font-size: 14px;
line-height: 51px !important; line-height: 51px !important;
height: 51px !important; height: 51px !important;
@@ -1130,11 +1139,11 @@ const handleView = (row) => {
.el-tabs__nav { .el-tabs__nav {
.el-tabs__item { .el-tabs__item {
flex: 1; flex: 1;
font-size: 16px; font-size: 14px;
width: 120px; width: 100px;
//font-weight: 600; //font-weight: 600;
height: 51px; height: 51px;
color: rgba(0, 0, 0, 0.5); color: #000;
} }
.el-tabs__item.is-active { .el-tabs__item.is-active {
@@ -1197,7 +1206,7 @@ const handleView = (row) => {
margin-left: 14px; margin-left: 14px;
color: #000000; color: #000000;
letter-spacing: 1px; letter-spacing: 1px;
font-size: 16px; font-size: 14px;
> span { > span {
color: #F40E0E; color: #F40E0E;
@@ -1260,7 +1269,7 @@ const handleView = (row) => {
flex-direction: column; flex-direction: column;
//align-items: flex-end; //align-items: flex-end;
font-weight: 400; font-weight: 400;
color: rgba(0, 0, 0, 0.5); color:#000;
letter-spacing: 1px; letter-spacing: 1px;
font-size: 12px; font-size: 12px;
@@ -1343,13 +1352,13 @@ const handleView = (row) => {
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 14px;
margin-bottom: 12px; margin-bottom: 12px;
margin-left: 20px; margin-left: 4px;
.bell { .bell {
display: flex; display: flex;
align-items: center; align-items: center;
color: #F55815; color: #F55815;
font-size: 15px; font-size: 15px;
> span { > span {
@@ -1380,13 +1389,13 @@ const handleView = (row) => {
> span:first-child { > span:first-child {
white-space: nowrap; white-space: nowrap;
font-size: 36px; font-size: 34px;
font-weight: bold; font-weight: bold;
margin-bottom: 10px; margin-bottom: 10px;
> span { > span {
margin-left: 10px; margin-left: 10px;
font-size: 13px; font-size: 14px;
} }
} }
@@ -1394,6 +1403,7 @@ const handleView = (row) => {
white-space: nowrap; white-space: nowrap;
color: #fff; color: #fff;
margin-bottom: 10px; margin-bottom: 10px;
font-size: 14px;
} }
} }
} }
@@ -1418,8 +1428,7 @@ const handleView = (row) => {
justify-content: space-between; justify-content: space-between;
height: 47px !important; height: 47px !important;
line-height: 47px !important; line-height: 47px !important;
color: rgba(0, 0, 0, 0.5) !important; color: #000 !important;
> div:first-child { > div:first-child {
position: relative; position: relative;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -1456,7 +1465,7 @@ const handleView = (row) => {
margin-left: 20px; margin-left: 20px;
font-weight: 400; font-weight: 400;
letter-spacing: 1px; letter-spacing: 1px;
color: rgba(0, 0, 0, 0.5) color: #000
} }
} }
} }
@@ -1518,7 +1527,7 @@ const handleView = (row) => {
height: 75px; height: 75px;
line-height: 75px; line-height: 75px;
padding: 0 15px; padding: 0 15px;
font-size: 12px; font-size: 14px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -1526,9 +1535,9 @@ const handleView = (row) => {
> span:first-child { > span:first-child {
margin-right: 10px; margin-right: 10px;
margin-left: 10px; margin-left: 10px;
font-size: 14px;
color: #1476E3; color: #1476E3;
font-weight: bold; font-weight: bold;
font-size: 16px;
} }
&:hover { &:hover {
@@ -1557,8 +1566,8 @@ const handleView = (row) => {
.fund-pie { .fund-pie {
width: 100%; width: 100%;
height: 25px; height: 25px;
font-size: 12px; font-size: 14px;
color: rgba(0, 0, 0, 0.5); color: #000;
text-align: center; text-align: center;
//margin-top: 15px; //margin-top: 15px;
} }
@@ -1576,7 +1585,7 @@ const handleView = (row) => {
.tag { .tag {
width: 7px; width: 7px;
height: 18px; height: 14px;
background: linear-gradient(#1476E3 0%, #99C9FF 100%); background: linear-gradient(#1476E3 0%, #99C9FF 100%);
margin-right: 5px; margin-right: 5px;
border-radius: 2px; border-radius: 2px;
@@ -1586,6 +1595,7 @@ const handleView = (row) => {
> span { > span {
white-space: nowrap; white-space: nowrap;
color: #000000; color: #000000;
font-size: 14px;
//font-weight: 600; //font-weight: 600;
} }
} }

View File

@@ -122,7 +122,7 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="intellectualProperty" label="知识产权状况" align="center"> <el-table-column prop="intellectualProperty" label="知识产权归属" align="center">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.intellectualProperty !== null"> <div v-if="scope.row.intellectualProperty !== null">
<Tag dictType="intellectual_property" :value="scope.row.intellectualProperty"/> <Tag dictType="intellectual_property" :value="scope.row.intellectualProperty"/>

View File

@@ -264,8 +264,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':'-40px'}"> <el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':'-40px'}">
<el-form-item label="知识产权状况" prop="intellectualProperty"> <el-form-item label="知识产权归属" prop="intellectualProperty">
<el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权状况" clearable filterable <el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权归属" clearable filterable
@change="changeCollectData"> @change="changeCollectData">
<el-option <el-option
v-for="item in cacheStore.getDict('intellectual_property')" v-for="item in cacheStore.getDict('intellectual_property')"
@@ -438,7 +438,7 @@ const rules = reactive({
technicalStandard: [{required: true, message: '请选择预期技术标准制定', trigger: ['blur', 'change']}], technicalStandard: [{required: true, message: '请选择预期技术标准制定', trigger: ['blur', 'change']}],
industryUniversityResearch: [{required: true, message: '请选择产学研联合', trigger: ['blur', 'change']}], industryUniversityResearch: [{required: true, message: '请选择产学研联合', trigger: ['blur', 'change']}],
governmentDeclaration: [{required: true, message: '请选择开展政府申报', trigger: ['blur', 'change']}], governmentDeclaration: [{required: true, message: '请选择开展政府申报', trigger: ['blur', 'change']}],
intellectualProperty: [{required: true, message: '请选择知识产权状况', trigger: ['blur', 'change']}], intellectualProperty: [{required: true, message: '请选择知识产权归属', trigger: ['blur', 'change']}],
inventionPatent: [{required: true, message: '请输入发明专利数量', trigger: ['blur', 'change']}], inventionPatent: [{required: true, message: '请输入发明专利数量', trigger: ['blur', 'change']}],
newPatent: [{required: true, message: '请输入实用性新型专利数量', trigger: ['blur', 'change']}], newPatent: [{required: true, message: '请输入实用性新型专利数量', trigger: ['blur', 'change']}],
softwareCopyright: [{required: true, message: '请输入软件著作权数量', trigger: ['blur', 'change']}], softwareCopyright: [{required: true, message: '请输入软件著作权数量', trigger: ['blur', 'change']}],

View File

@@ -9,7 +9,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="知识产权状况" prop="intellectualProperty"> <el-form-item label="知识产权归属" prop="intellectualProperty">
<span>{{ <span>{{
filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty) filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty)
}}</span> }}</span>