Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
Y
yn-science-front
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐俊
yn-science-front
Commits
0670b538
Commit
0670b538
authored
Jan 14, 2025
by
wangxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
4444
parent
adc2ae3c
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
488 additions
and
12 deletions
+488
-12
baseSelect.vue
src/views/components/common/baseSelect.vue
+0
-3
taskCreate.vue
src/views/report/task/components/taskCreate.vue
+31
-2
taskEdit.vue
src/views/report/task/components/taskEdit.vue
+457
-6
taskInfo.vue
src/views/report/task/components/taskInfo.vue
+0
-1
No files found.
src/views/components/common/baseSelect.vue
View file @
0670b538
...
...
@@ -243,9 +243,6 @@ export default {
watch
:
{
value
:
{
handler
(
value
)
{
if
(
!!!
value
)
this
.
selected
=
''
else
this
.
selected
=
value
+
''
this
.
$emit
(
"input"
,
this
.
selected
)
},
...
...
src/views/report/task/components/taskCreate.vue
View file @
0670b538
...
...
@@ -2,8 +2,14 @@
<
template
>
<div
class=
"app-content"
style=
"height: 76vh;overflow: auto;"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<div
class=
"page-card"
>
<a-tabs
type=
"card"
hideAdd
size=
"small"
@
change=
"callback"
>
<a-tab-pane
:key=
"item.key"
:tab=
"item.title"
v-for=
"(item) in tabsData"
>
</a-tab-pane>
</a-tabs>
</div>
<div
class=
"page-content"
>
<task-edit
v-model=
"value"
@
close=
"closeWindow"
@
load=
"onLoad"
ref=
"taskCreate"
/>
<task-edit
v-model=
"value"
@
close=
"closeWindow"
@
load=
"onLoad"
ref=
"taskCreate"
:tabsData
.
sync=
"tabsData"
/>
</div>
<div
class=
"page-footer"
>
<a-button
type=
"primary"
@
click=
"save"
>
保 存
</a-button>
...
...
@@ -23,6 +29,17 @@ export default {
data
()
{
return
{
loading
:
false
,
tabsData
:
[
{
title
:
'填报信息'
,
key
:
'0'
,
isShow
:
true
},
{
title
:
'项目组主要成员及单位'
,
key
:
'1'
,
isShow
:
true
},
{
title
:
'项目主要实施内容和目标'
,
key
:
'2'
,
isShow
:
true
},
{
title
:
'申请书正文'
,
key
:
'3'
,
isShow
:
true
},
{
title
:
'经费预算及设备明细'
,
key
:
'4'
,
isShow
:
true
},
{
title
:
'项目实施阶段及任务'
,
key
:
'5'
,
isShow
:
true
},
{
title
:
'项目课题设置'
,
key
:
'6'
,
isShow
:
true
},
{
title
:
'绩效目标表'
,
key
:
'7'
,
isShow
:
true
},
{
title
:
'附件信息'
,
key
:
'8'
,
isShow
:
true
},
],
}
},
props
:
{
...
...
@@ -48,6 +65,13 @@ export default {
onLoad
(
value
)
{
this
.
loading
=
value
},
callback
(
key
)
{
var
index
=
parseInt
(
key
)
this
.
tabsData
.
forEach
(
e
=>
{
e
.
isShow
=
false
})
this
.
tabsData
[
index
].
isShow
=
true
;
},
},
}
</
script
>
...
...
@@ -60,9 +84,14 @@ export default {
width: 8px;
height: 6px;
}
.page-card {
width: 100%;
height: 50px;
overflow: auto;
}
.page-content {
width: 100%;
height: calc(100% -
4
0px);
height: calc(100% -
9
0px);
overflow: auto;
}
.page-footer {
...
...
src/views/report/task/components/taskEdit.vue
View file @
0670b538
<
template
>
<div>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
style=
"border-top: 0px"
class=
"from-table font-line-space"
>
<div
class=
"from-table font-line-space"
>
<div
v-if=
"tabsData[0].isShow"
>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
style=
"border-top: 0px"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
...
...
@@ -612,7 +613,7 @@
<div
class=
"special-middle"
>
<div>
<a-form-model-item
prop=
"isTechnologyReport"
>
<base-select
v-model=
"formData.isTechnologyReport"
:type=
"12"
:isAll=
"true"
:width=
"8
0"
/>
<base-select
v-model=
"formData.isTechnologyReport"
:type=
"12"
:isAll=
"true"
:width=
"12
0"
/>
</a-form-model-item>
</div>
</div>
...
...
@@ -636,6 +637,438 @@
</a-col>
</a-row>
</a-form-model>
<!-- 项目主要参与单位及分工 -->
<participate-units-info
:dataList
.
sync=
"value.participateUnits"
/>
</div>
<div
v-if=
"tabsData[1].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"main-title"
>
<span>
项目人员情况
</span>
</div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
<span>
项目负责人
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
姓名
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
appPersonName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
性别
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
sex
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
出生日期
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
value
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
证件类型
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
身份证
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
证件号码
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
certId
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
民族
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
nationName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
职称
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
titleName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
从事专业
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
specName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
学位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
degreeName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
职务
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
dutyName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
电话
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
mobile
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
电子邮箱
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
email
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
个人通讯地址
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
address
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
工作单位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
appUnitName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
每年工作时间(月)
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
jobTime
}}
</div>
</div>
</a-col>
</a-row>
<!-- 项目组成员 -->
<project-member-info
:dataList
.
sync=
"value.members"
/>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
总人数
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
高级
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
中级
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
初级
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
博士后
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
博士生
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
硕士生
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memHighCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memMiddleCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memLowCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memBshCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memBsCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memSsCount
}}
</div>
</div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[2].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"main-title"
>
<span>
项目主要实施内容和目标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目实施目标
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.researchContent)"
></div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
<span>
项目考核指标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
主要技术指标
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.technologyTarget)"
></div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
主要经济指标
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.economyTarget)"
></div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目实施中形成的示范基地、中试线、生产线及其规模等
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.achievementTarget)"
></div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
科技报告考核指标
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.technologyReportsTarget)"
></div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
其他应考核的指标
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.otherTarget)"
></div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[3].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"main-title"
>
<span>
申请书正文
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
class=
"special-middle"
style=
"font-weight: bold;text-align: center;"
>
<document-view
:fileUrl=
"value.downloadUrl"
:fileName=
"value.fileName"
:imageArray=
"[value.downloadUrl]"
v-if=
"!!value.downloadUrl"
></document-view>
</div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[4].isShow"
>
<!-- 经费预算 -->
<budget-info
:budget
.
sync=
"value.budget"
/>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
</div>
</a-col>
</a-row>
<!-- 分年度用款计划 -->
<fund-plan-info
:fundPlan
.
sync=
"value.fundPlan"
/>
<!-- 设备费-购置设备预算明细表 -->
<device-info
:deviceList
.
sync=
"value.deviceList"
/>
<!-- 设备费-试制设备预算明细表 -->
<manufacture-info
:manufactureList
.
sync:=
"value.manufactureList"
/>
<!-- 项目承担单位研究资金支出预算明细表 -->
<unit-payment-info
:unitPayment
.
sync=
"value.unitPayment"
/>
</div>
<div
v-if=
"tabsData[5].isShow"
>
<!-- 项目安排及阶段目标 -->
<proj-stage-goals-info
:stageGoals
.
sync=
"value.stageGoals"
/>
</div>
<div
v-if=
"tabsData[6].isShow"
>
<!-- 项目课题设置 -->
<project-sub-info
:dataList
.
sync=
"value.projectSubList"
/>
</div>
<div
v-if=
"tabsData[7].isShow"
>
<project-kpi-info
v-if=
"value.projectKPI"
:projectKPI
.
sync=
"value.projectKPI"
/>
</div>
<div
v-if=
"tabsData[8].isShow"
>
<!-- 附件 -->
<file-info
:fileList
.
sync=
"value.fileList"
/>
</div>
</div>
</
template
>
...
...
@@ -643,12 +1076,24 @@
import
{
isEmptyParams
}
from
"@/views/utils/common"
import
moment
from
'moment'
import
cooperativeUnitsInfo
from
'@/views/report/project/components/cooperativeUnitsInfo'
import
participateUnitsInfo
from
'@/views/report/project/components/participateUnitsInfo'
import
projectMemberInfo
from
'@/views/report/project/components/projectMemberInfo'
import
projectKpiInfo
from
'@/views/report/project/components/projectKpiInfo.vue'
import
budgetInfo
from
'@/views/report/project/components/budgetInfo'
import
fundPlanInfo
from
'@/views/report/project/components/fundPlanInfo'
import
unitPaymentInfo
from
'@/views/report/project/components/unitPaymentInfo'
import
deviceInfo
from
'@/views/report/project/components/deviceInfo'
import
manufactureInfo
from
'@/views/report/project/components/manufactureInfo'
import
projStageGoalsInfo
from
"@/views/report/project/components/projStageGoalsInfo"
;
import
projectSubInfo
from
'@/views/report/project/components/projectSubInfo'
import
fileInfo
from
"@/views/report/project/components/fileInfo"
;
import
{
toTextarea
}
from
'@/views/utils/common'
export
default
{
name
:
'projectEdit'
,
components
:
{
cooperativeUnitsInfo
,
projectMemberInfo
,
projectKpiInfo
,
budgetInfo
,
fundPlanInfo
,
unitPaymentInfo
,
deviceInfo
,
manufactureInfo
,
fileInfo
,
projStageGoalsInfo
,
projectSubInfo
,
participateUnitsInfo
},
props
:
{
value
:
{
...
...
@@ -657,6 +1102,12 @@ export default {
return
null
}
},
tabsData
:
{
type
:
Array
,
default
:
()
=>
{
return
[]
}
},
},
data
()
{
return
{
...
...
@@ -772,7 +1223,7 @@ export default {
mounted
()
{
},
methods
:
{
moment
,
moment
,
toTextarea
,
save
()
{
this
.
$emit
(
'load'
,
true
)
let
pars
=
isEmptyParams
(
this
.
formData
)
...
...
src/views/report/task/components/taskInfo.vue
View file @
0670b538
...
...
@@ -828,7 +828,6 @@
</a-col>
</a-row>
</div>
</div>
</
template
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment