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
0b6f3102
Commit
0b6f3102
authored
Jul 24, 2025
by
wangxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
444
parent
454eb91b
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
952 additions
and
164 deletions
+952
-164
index.js
src/api/index.js
+0
-3
Index.vue
src/views/audit/talent/Index.vue
+1
-1
final.vue
src/views/audit/talent/final.vue
+1
-4
Info.vue
src/views/evaluation/talent/components/Info.vue
+178
-0
edit.vue
src/views/evaluation/talent/components/edit.vue
+198
-0
score.vue
src/views/evaluation/talent/components/score.vue
+365
-0
scoreView.vue
src/views/evaluation/talent/components/scoreView.vue
+64
-0
index.vue
src/views/evaluation/talent/index.vue
+144
-155
Index.vue
src/views/report/talent/Index.vue
+1
-1
No files found.
src/api/index.js
View file @
0b6f3102
...
...
@@ -646,9 +646,6 @@ export default {
getBatchList
(
params
)
{
return
fetch
(
'/v1/science-admin/com-batch/getBatchList'
,
params
)
},
getCurrentYearTalentBatch
(
params
)
{
return
fetch
(
'/v1/science-admin/com-batch/getCurrentYearTalentBatch'
,
params
)
},
},
//系统管理接口
systemManage
:
{
...
...
src/views/audit/talent/Index.vue
View file @
0b6f3102
...
...
@@ -134,7 +134,7 @@ export default {
this
.
getListByPage
()
},
getYear
()
{
this
.
$api
.
batch
.
getCurrentYear
TalentBatch
({
type
:
2
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
batch
.
getCurrentYear
Batch
({
type
:
2
,
systemType
:
getType
(),
timeType
:
4
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
isButten
=
data
.
disabled
this
.
description
=
data
.
description
...
...
src/views/audit/talent/final.vue
View file @
0b6f3102
...
...
@@ -59,8 +59,6 @@ export default {
data
()
{
return
{
selectedRowKeys
:
[],
// 选项卡
//panes: { count1: 0, count2: 0, count3: 0, count4: 0, count5: 0, },
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
searchForm
:
{
auditType
:
6
,
...
...
@@ -136,7 +134,7 @@ export default {
this
.
getListByPage
()
},
getYear
()
{
this
.
$api
.
batch
.
getCurrentYear
TalentBatch
({
type
:
2
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
batch
.
getCurrentYear
Batch
({
type
:
2
,
systemType
:
getType
(),
timeType
:
4
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
isButten
=
data
.
disabled
this
.
description
=
data
.
description
...
...
@@ -163,7 +161,6 @@ export default {
let
pars
=
isEmptyParams
({
auditType
:
6
,
completed
:
1
,
auditMethod
:
5
,
reportYear
:
this
.
searchForm
.
reportYear
});
this
.
$api
.
audit
.
getTalentAuditCount
(
pars
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
panes
=
data
this
.
itemCount
=
[
data
.
count1
,
data
.
count2
,
data
.
count3
,
data
.
count4
,
data
.
count5
]
}
}).
catch
(()
=>
{
})
...
...
src/views/evaluation/talent/components/Info.vue
0 → 100644
View file @
0b6f3102
<
template
>
<div>
<table
class=
"tab-content"
style=
"width: 100%"
>
<tr>
<td
class=
"bg-title"
>
评审指标
</td>
<td
class=
"bg-title"
>
评审指标选项
</td>
<td
class=
"bg-title"
>
专家打分
</td>
</tr>
<tr
v-for=
"(item,index) in tableData"
:key=
"'tr1'+index"
>
<td>
{{
item
.
oneLevel
}}
</td>
<td>
{{
item
.
towLevel1
}}
<br
/>
{{
item
.
towLevel2
}}
<br
/>
{{
item
.
towLevel3
}}
</td>
<td
style=
"text-align: center;"
>
<span
v-if=
"item.order==1"
>
{{
value
.
score1
}}
</span>
<span
v-if=
"item.order==2"
>
{{
value
.
score2
}}
</span>
<span
v-if=
"item.order==3"
>
{{
value
.
score3
}}
</span>
<span
v-if=
"item.order==4"
>
{{
value
.
score4
}}
</span>
<span
v-if=
"item.order==5"
>
{{
value
.
score5
}}
</span>
<span
v-if=
"item.order==6"
>
{{
value
.
score6
}}
</span>
<span
v-if=
"item.order==7"
>
{{
value
.
score7
}}
</span>
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
是否推荐立项
</td>
<td
colspan=
"2"
>
<a-tag
:color=
"'#87d068'"
v-if=
"value.supportState==1"
>
是
</a-tag>
<a-tag
:color=
"'#f50'"
v-if=
"value.supportState==0"
>
否
</a-tag>
</td>
</tr>
<tr
v-if=
"value.supportState!=null&&value.supportState==false"
>
<td
style=
"text-align: right;"
>
不推荐原因
</td>
<td
colspan=
"2"
style=
"text-align: left;"
>
<div
v-html=
"toTextarea(value.noSupportReason)"
></div>
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
评审结果
</td>
<td
colspan=
"2"
>
<a-tag
:color=
"'#87d068'"
v-if=
"value.evaluationType==1"
>
{{
evaluationTypeA
}}
</a-tag>
<a-tag
:color=
"'#2db7f5'"
v-if=
"value.evaluationType==2"
>
{{
evaluationTypeB
}}
</a-tag>
<a-tag
:color=
"'#f50'"
v-if=
"value.evaluationType==3"
>
{{
evaluationTypeC
}}
</a-tag>
</td>
</tr>
<tr>
<td
style=
"text-align: right;"
>
评审意见(是否存在科研被信问题?该项目存在的问题和不足及意见建议)
</td>
<td
colspan=
"2"
style=
"text-align: left;"
>
<div
v-html=
"toTextarea(value.remark)"
></div>
</td>
</tr>
<tr>
<td
style=
"text-align: right;"
>
总得分
</td>
<td
colspan=
"2"
style=
"text-align: left;"
>
<span>
{{
value
.
totalScore
}}
</span>
</td>
</tr>
</table>
</div>
</
template
>
<
script
>
import
{
toTextarea
,
getEvaluationType
}
from
'@/views/utils/common'
export
default
{
name
:
"scoreInfo"
,
components
:
{},
props
:
{
value
:
{
type
:
Object
,
default
()
{
return
null
;
},
},
},
data
()
{
return
{
tableData
:
[
{
order
:
1
,
oneLevel
:
"1.特色与创新性、拟研究的科学问题的重要性或潜在应用价值(20分)"
,
towLevel1
:
"A.好 (20-16)"
,
towLevel2
:
"B.较好 (15-12)"
,
towLevel3
:
"C.一般 (11-0)"
,
score
:
20
,
grade
:
null
,
},
{
order
:
2
,
oneLevel
:
"2.立项依据的充分性和研究的科学价值(15分)"
,
towLevel1
:
"A.好 (15-12) "
,
towLevel2
:
"B.较好 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
3
,
oneLevel
:
"3.研究内容的合理性和完整性(15分)"
,
towLevel1
:
"A.合理完整 (15-12) "
,
towLevel2
:
"B.较合理完整 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
4
,
oneLevel
:
"4.预期目标及考核指标(15分)"
,
towLevel1
:
"A.明确 (15-12) "
,
towLevel2
:
" B.较明确 (11-9) "
,
towLevel3
:
"C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
5
,
oneLevel
:
"5.研究方案和技术路线的可行性(15分)"
,
towLevel1
:
"A.可行 (15-12)"
,
towLevel2
:
"B.较可行 (11-9) "
,
towLevel3
:
"C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
6
,
oneLevel
:
"6.前期工作基础、支撑条件及主持人的科研能力(15分)"
,
towLevel1
:
"A.好 (15-12) "
,
towLevel2
:
"B.较好 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
7
,
oneLevel
:
"7.组织运行管理与风险分析(5分)"
,
towLevel1
:
"A.风险小 (5-4) "
,
towLevel2
:
"B.有一定风险 (3-2) "
,
towLevel3
:
" C.风险较大 (1-0)"
,
score
:
5
,
grade
:
null
,
},
],
};
},
computed
:
{
evaluationTypeA
()
{
return
getEvaluationType
(
0
)
},
evaluationTypeB
()
{
return
getEvaluationType
(
1
)
},
evaluationTypeC
()
{
return
getEvaluationType
(
2
)
},
},
created
()
{
},
methods
:
{
toTextarea
,
},
};
</
script
>
<
style
scoped
lang=
"less"
>
.app-content {
table {
table-layout: fixed;
width: 100%;
border: 1;
border-collapse: collapse;
}
table tr td,
th {
border: 1px solid #e8e8e8;
padding: 6px 6px;
color: rgba(0, 0, 0, 0.65);
}
table tr th {
text-align: center;
}
table tr {
th:first-child {
width: 4%;
}
th:nth-child(2) {
width: 6%;
}
th:nth-child(3) {
width: 8%;
}
th:nth-child(4) {
width: 18%;
}
th:nth-child(5) {
width: 6%;
}
th:nth-child(6) {
width: 6%;
}
th:nth-child(7) {
width: 40%;
}
}
table {
::v-deep .ant-row {
border: 0 !important;
}
::v-deep .ant-row .ant-col {
border: 0 !important;
min-height: 30px !important;
}
::v-deep .ant-form-item-control {
line-height: 30px !important;
}
::v-deep .ant-form-item {
margin: 0 !important;
}
::v-deep .ant-input-number {
height: 30px !important;
}
::v-deep .ant-input-number-input {
height: 30px !important;
}
}
}
.none-bottom {
::v-deep .ant-col {
border-bottom: 0 !important;
}
}
</
style
>
ant-tabs
\ No newline at end of file
src/views/evaluation/talent/components/edit.vue
0 → 100644
View file @
0b6f3102
<
template
>
<div>
<table
class=
"tab-content"
cellpadding=
"3"
cellspacing=
"3"
style=
"width: 98%"
>
<tr>
<td
class=
"bg-title"
>
评审指标
</td>
<td
class=
"bg-title"
>
评审指标选项
</td>
<td
class=
"bg-title"
>
专家打分
</td>
</tr>
<tr
v-for=
"(item, index) in tableData"
:key=
"'data'+index"
style=
"line-height: 25px"
>
<td>
{{
item
.
oneLevel
}}
</td>
<td>
{{
item
.
towLevel1
}}
<br
/>
{{
item
.
towLevel2
}}
<br
/>
{{
item
.
towLevel3
}}
</td>
<td
style=
"text-align: center;"
>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==1"
>
<a-input-number
v-model=
"value.score1"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==2"
>
<a-input-number
v-model=
"value.score2"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==3"
>
<a-input-number
v-model=
"value.score3"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==4"
>
<a-input-number
v-model=
"value.score4"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==5"
>
<a-input-number
v-model=
"value.score5"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==6"
>
<a-input-number
v-model=
"value.score6"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
<a-form-model-item
:prop=
"'score' + item.order"
v-if=
"item.order==7"
>
<a-input-number
v-model=
"value.score7"
:min=
"0"
:max=
"item.score"
style=
"width: 60%"
disabled=
"true"
/>
</a-form-model-item>
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
总分:
</td>
<td
colspan=
"2"
style=
"text-align: left;padding-left: 12px;"
>
{{
Count
()
}}
分
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
是否推荐立项
</td>
<td
colspan=
"2"
>
<a-form-model-item
prop=
"supportState"
>
<a-radio-group
v-model=
"value.supportState"
>
<a-radio
:value=
"1"
>
是
</a-radio>
<a-radio
:value=
"0"
>
否
</a-radio>
</a-radio-group>
</a-form-model-item>
</td>
</tr>
<tr
v-if=
"value.supportState!=null&&value.supportState==false"
>
<td
class=
"bg-title"
style=
"text-align: right;"
>
不推荐原因
</td>
<td
colspan=
"2"
>
<a-form-model-item
prop=
"noSupportReason"
>
<a-textarea
placeholder=
"不推荐原因"
v-model=
"value.noSupportReason"
:maxLength=
"1000"
style=
"width: 80%; height: 120px; margin-top: 6px"
/>
</a-form-model-item>
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
评审结果
</td>
<td
colspan=
"2"
>
<a-form-model-item
prop=
"evaluationType"
>
<a-radio-group
v-model=
"value.evaluationType"
disabled
>
<a-radio
:value=
"1"
>
{{
evaluationTypeA
}}
</a-radio>
<a-radio
:value=
"2"
>
{{
evaluationTypeB
}}
</a-radio>
<a-radio
:value=
"3"
>
{{
evaluationTypeC
}}
</a-radio>
</a-radio-group>
</a-form-model-item>
</td>
</tr>
<tr>
<td
class=
"bg-title"
style=
"text-align: right;"
>
评审意见(是否存在科研被信问题?该项目存在的问题和不足及意见建议)
</td>
<td
colspan=
"2"
>
<a-form-model-item
prop=
"remark"
>
<a-textarea
placeholder=
"评审意见"
v-model=
"value.remark"
:maxLength=
"1000"
style=
"width: 80%; height: 120px; margin-top: 6px"
disabled=
"true"
/>
</a-form-model-item>
</td>
</tr>
</table>
</div>
</
template
>
<
script
>
import
{
getEvaluationType
}
from
"@/views/utils/common"
export
default
{
name
:
"scoreEdit"
,
components
:
{},
props
:
{
value
:
{
type
:
Object
,
default
()
{
return
null
;
},
},
},
data
()
{
return
{
tableData
:
[
{
order
:
1
,
oneLevel
:
"1.特色与创新性、拟研究的科学问题的重要性或潜在应用价值(20分)"
,
towLevel1
:
"A.好 (20-16)"
,
towLevel2
:
"B.较好 (15-12)"
,
towLevel3
:
"C.一般 (11-0)"
,
score
:
20
,
grade
:
null
,
},
{
order
:
2
,
oneLevel
:
"2.立项依据的充分性和研究的科学价值(15分)"
,
towLevel1
:
"A.好 (15-12) "
,
towLevel2
:
"B.较好 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
3
,
oneLevel
:
"3.研究内容的合理性和完整性(15分)"
,
towLevel1
:
"A.合理完整 (15-12) "
,
towLevel2
:
"B.较合理完整 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
4
,
oneLevel
:
"4.预期目标及考核指标(15分)"
,
towLevel1
:
"A.明确 (15-12) "
,
towLevel2
:
" B.较明确 (11-9) "
,
towLevel3
:
"C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
5
,
oneLevel
:
"5.研究方案和技术路线的可行性(15分)"
,
towLevel1
:
"A.可行 (15-12)"
,
towLevel2
:
"B.较可行 (11-9) "
,
towLevel3
:
"C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
6
,
oneLevel
:
"6.前期工作基础、支撑条件及主持人的科研能力(15分)"
,
towLevel1
:
"A.好 (15-12) "
,
towLevel2
:
"B.较好 (11-9) "
,
towLevel3
:
" C.一般 (8-0)"
,
score
:
15
,
grade
:
null
,
},
{
order
:
7
,
oneLevel
:
"7.组织运行管理与风险分析(5分)"
,
towLevel1
:
"A.风险小 (5-4) "
,
towLevel2
:
"B.有一定风险 (3-2) "
,
towLevel3
:
" C.风险较大 (1-0)"
,
score
:
5
,
grade
:
null
,
},
],
remark
:
""
,
supportState
:
null
,
evaluationType
:
0
,
totalScore
:
0
,
disabled
:
true
,
};
},
computed
:
{
evaluationTypeA
()
{
return
getEvaluationType
(
0
)
},
evaluationTypeB
()
{
return
getEvaluationType
(
1
)
},
evaluationTypeC
()
{
return
getEvaluationType
(
2
)
},
},
created
()
{
},
methods
:
{
Count
()
{
var
s
=
0.0
;
for
(
var
i
=
1
;
i
<=
7
;
i
++
)
{
if
(
this
.
value
[
'score'
+
i
])
{
s
+=
parseFloat
(
this
.
value
[
'score'
+
i
])
}
}
s
=
s
.
toFixed
(
1
)
*
10
/
10
this
.
value
.
totalScore
=
s
this
.
determineType
()
return
s
},
determineType
()
{
if
(
this
.
value
.
totalScore
>=
80
)
this
.
value
.
evaluationType
=
1
else
if
(
this
.
value
.
totalScore
<
80
&&
this
.
value
.
totalScore
>=
60
)
this
.
value
.
evaluationType
=
2
else
this
.
value
.
evaluationType
=
3
},
},
};
</
script
>
<
style
scoped
lang=
"less"
>
.tab-content {
::v-deep .ant-row {
border: 0 !important;
}
::v-deep .ant-row .ant-col {
border: 0 !important;
min-height: 30px !important;
}
::v-deep .ant-form-item-control {
line-height: 30px !important;
}
::v-deep .ant-form-item {
margin: 0 !important;
}
::v-deep .ant-input-number {
height: 30px !important;
}
::v-deep .ant-input-number-input {
height: 30px !important;
}
}
table,
tr,
td {
border: 1px solid #f0f0f0;
font-size: 10pt;
text-align: left;
line-height: 25px;
height: 25px;
padding: 4px;
}
.bg-title {
background-color: #f8fafc;
font-weight: bold;
text-align: center;
}
.target-value {
text-align: center;
}
</
style
>
\ No newline at end of file
src/views/evaluation/talent/components/score.vue
0 → 100644
View file @
0b6f3102
<
template
>
<div
style=
"height:75vh;overflow:auto"
class=
"app-content"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<div
v-if=
"isShow"
style=
"width: 100%;height: 100%;"
>
<div
style=
"height: 40px;"
>
<a-tabs
type=
"card"
@
change=
"callback"
:activeKey=
'tabsActive'
>
<a-tab-pane
key=
"1"
tab=
"评分"
></a-tab-pane>
<a-tab-pane
key=
"2"
tab=
"详情"
></a-tab-pane>
</a-tabs>
</div>
<div
class=
"table-content"
style=
"overflow: auto;height: calc(100% - 40px);"
>
<div
v-show=
"tabsActive==='1'"
style=
"height:100%;"
>
<div
style=
"height:calc(100% - 40px);overflow: auto;"
ref=
"main"
>
<div
class=
"x_modal_content"
>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
class=
"from-table font-line-space"
>
<score-edit
v-model=
"formData"
/>
</a-form-model>
</div>
</div>
<div
style=
"height:40px;width:100%;text-align:center;padding:4px 0px;background: #fafafa;border:1px solid #e8e8e8; border-width: 0px 1px 1px 1px;border-style: solid;border-color: #e8e8e8;"
>
<a-button
@
click=
"save"
style=
"margin-right:16px"
>
保存
</a-button>
<a-button
type=
"primary"
@
click=
"submit"
>
提交
</a-button>
<span
style=
"color: red;"
>
(注:提交后在规定时间内可多次修改)
</span>
</div>
</div>
<div
v-show=
"tabsActive==='2'"
style=
"height:100%;overflow: auto;"
>
<project-info
v-model=
"projectInfo"
:tabsData
.
sync=
"tabsData"
/>
</div>
</div>
</div>
<div
v-else
style=
"width: 100%;height: 100%;"
>
<div
style=
"height:calc(100% - 40px);overflow: auto;"
>
<div>
<p
class=
"MsoNormal"
>
<span>
</span>
</p>
<p
class=
"MsoNormal"
align=
"center"
style=
"text-align:center;"
>
<b><span
style=
"font-size:18.0pt;font-family:方正小标宋简体;"
>
专家须知
<span></span></span></b>
</p>
<p
class=
"MsoNormal"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
尊敬的专家:
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
您好!感谢您参与云南省卫生健康委临床医学中心科研项目的评审工作。为确保评审顺利进行,现将相关事宜通知如下,请您务必仔细阅读并严格执行。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"margin-left:0cm;text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:黑体;"
>
一、
</span><span
style=
"font-size:12.0pt;font-family:黑体;"
>
评审要求
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.1pt;"
>
<b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
(一)
</span></b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
根据评价指标,认真评阅本组所有申报项目并打分。由于申报专业的不同,其中可能会有部分跨专业的项目,请一并评审打分,切勿遗漏。撰写评审意见时,要详细评价项目并说明立项或不立项的主要理由。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.1pt;"
>
<b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
(二)
</span></b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
若项目有不适宜公开的信息、数据或观点,或涉及境外机构、人员,请您从严审查审核。经评审确有可能危害国家安全或造成不良舆论和影响的项目,可评为“
<span>
0
</span>
”分并向委科教处及时反馈。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:黑体;"
>
二、评审纪律
<span></span></span>
</p>
<p
class=
"MsoNormal"
align=
"left"
style=
"text-indent:24.1pt;"
>
<b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
(一)
</span></b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
请严格遵守评审活动规则和工作纪律,实事求是、独立、客观、公正地评审,提供高质量的评审意见,为科技管理决策提供参考。发现与项目或申请者存在利益关系或其他可能影响公正性的关系时,要主动申明并回避。
<span></span></span>
</p>
<p
class=
"MsoNormal"
align=
"left"
style=
"text-indent:24.1pt;"
>
<b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
(二)
</span></b><span
style=
"font-size:12.0pt;font-family:仿宋;"
>
严守保密规定,不得泄露项目内容及有关技术、商业秘密,不得与评审对象私下接触、联系、串通,不得索取或接受礼品、钱物、可能影响公正性的宴请或其他好处,不得剽窃、复制、泄露、引用或存留评审材料内容。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:黑体;"
>
三、评审时间
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
此次专家评审时间为:
{{
exportTime
.
expertStart
+
'至'
+
exportTime
.
expertEnd
}}
,请务必于
{{
exportTime
.
expertEnd
}}
前提交评审结果,以免影响后续工作的开展。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:24.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
感谢您对我们工作的大力支持!如有未尽事宜,我们将另行通知。
<span></span></span>
</p>
<p
class=
"MsoNormal"
style=
"text-indent:264.0pt;"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
</span>
</p>
<p
class=
"MsoNormal"
style=
"text-align:right;text-indent:264pt;padding-right: 200px;"
>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
云南省卫生健康委科教处
<span></span></span>
</p>
<span
style=
"font-size:12.0pt;font-family:仿宋;"
>
<div
style=
"text-align:right;padding-right: 200px;"
>
<span
style=
"font-size:12pt;"
>
联系电话:
</span><span
style=
"font-size:12pt;"
>
0871-67195167
</span>
</div>
</span>
</div>
</div>
<div
style=
"height:40px;width:100%;text-align:center;padding:4px 0px;background: #fafafa;border:1px solid #e8e8e8; "
>
<a-checkbox
@
change=
"onReadChange"
>
我已阅读
</a-checkbox>
<a-button
type=
"primary"
@
click=
"loadExpertInfo"
:disabled=
"check.disabled"
>
{{
check
.
title
}}
</a-button>
</div>
</div>
</a-spin>
</div>
</
template
>
<
script
>
import
{
isEmptyParams
,
getEvaluationType
}
from
"@/views/utils/common"
import
moment
from
'moment'
import
projectInfo
from
'@/views/evaluation/project/components/projectInfo'
import
edit
from
'@/views/evaluation/project/components/edit'
export
default
{
name
:
"score"
,
components
:
{
projectInfo
,
edit
},
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
;
},
},
exportTime
:
{
expertStart
:
{
type
:
String
,
default
:
()
=>
{
return
null
;
},
},
expertEnd
:
{
type
:
String
,
default
:
()
=>
{
return
null
;
},
}
},
},
data
()
{
return
{
loading
:
false
,
isShow
:
false
,
isExpertInfoLoad
:
false
,
isProjectInfoLoad
:
false
,
tabsActive
:
'1'
,
check
:
{
time
:
5
,
title
:
'我已阅读'
,
count
:
5
,
disabled
:
false
,
},
formData
:
{
id
:
null
,
projId
:
null
,
expertId
:
null
,
expertName
:
null
,
score1
:
null
,
score2
:
null
,
score3
:
null
,
score4
:
null
,
score4
:
null
,
score5
:
null
,
score6
:
null
,
score7
:
null
,
score8
:
null
,
score9
:
null
,
score10
:
null
,
score11
:
null
,
score12
:
null
,
score13
:
null
,
score14
:
null
,
score15
:
null
,
score16
:
null
,
score17
:
null
,
totalScore
:
null
,
remark
:
null
,
supportState
:
null
,
projName
:
null
,
projNo
:
null
,
},
rules
:
{
score1
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score2
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score3
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score4
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score5
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score6
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score7
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score8
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score9
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score10
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score11
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score12
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score13
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score14
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score15
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score16
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score17
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score18
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score19
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score18
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
score19
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
additionalScore
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
recommendFunding
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"blur"
},
supportState
:
{
required
:
true
,
message
:
"请选择是否推荐立项"
,
trigger
:
"change"
},
noSupportReason
:
{
required
:
true
,
message
:
"请填写不推荐原因"
,
trigger
:
"blur"
},
evaluationType
:
{
required
:
true
,
message
:
"*"
,
trigger
:
"change"
},
},
projectInfo
:
{
projName
:
''
,
startDate
:
''
,
endDate
:
''
,
applyMoney
:
''
,
projClassName
:
''
,
appPersonName
:
''
,
sex
:
''
,
titleName
:
''
,
degreeName
:
''
,
specName
:
''
,
jobUnit
:
''
,
mobile
:
''
,
address
:
''
,
appUnitName
:
''
,
linkName
:
''
,
linkEmail
:
''
,
linkTel
:
''
,
knowledgeName
:
''
,
projContent
:
''
,
projTarget
:
''
,
projKeywords
:
''
,
// 合作单位
together
:
[],
// 项目组成员
members
:
[],
projDoc
:
null
,
fileList
:
[],
auditList
:
[],
},
comBatch
:
{
expertStart
:
''
,
expertEnd
:
''
},
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
},
],
};
},
computed
:
{
},
created
()
{
this
.
getAssignExpertById
()
this
.
getYear
()
this
.
countStart
()
},
methods
:
{
moment
,
getYear
()
{
this
.
$api
.
batch
.
getCurrentYearBatch
({
type
:
5
,
systemType
:
getType
(),
timeType
:
1
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
comBatch
=
data
}
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
countStart
()
{
this
.
check
.
disabled
=
true
this
.
check
.
title
=
'下一步'
},
onReadChange
(
e
)
{
if
(
e
.
target
.
checked
)
this
.
check
.
disabled
=
false
else
this
.
check
,
disabled
=
true
},
loadExpertInfo
()
{
this
.
isShow
=
true
if
(
!
this
.
isExpertInfoLoad
)
this
.
loading
=
false
},
getAssignExpertById
()
{
if
(
!!
this
.
value
)
{
this
.
loading
=
true
this
.
$api
.
projectAssign
.
getAssignExpertById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
getProjectInfoById
(
data
.
projId
)
this
.
isExpertInfoLoad
=
true
this
.
loading
=
false
}
else
this
.
$emit
(
'close'
,
'error'
)
}).
catch
(()
=>
{
this
.
$message
.
warn
(
'500 Internal Server Error!'
)
this
.
$emit
(
'close'
,
'error'
)
})
}
},
getProjectInfoById
(
id
)
{
this
.
$api
.
project
.
getProjectInfoById
({
id
:
id
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
projectInfo
=
data
this
.
formData
.
projName
=
data
.
projName
this
.
formData
.
appUnitName
=
data
.
appUnitName
this
.
formData
.
appPersonName
=
data
.
appPersonName
this
.
formData
.
applyFunding
=
data
.
govFunding
this
.
formData
.
recommendFunding
=
data
.
govFunding
this
.
isProjectInfoLoad
=
true
this
.
loading
=
false
}
else
this
.
$emit
(
'close'
,
'error'
)
}).
catch
(()
=>
{
this
.
$message
.
warn
(
'500 Internal Server Error!'
)
this
.
$emit
(
'close'
,
'error'
)
})
},
callback
(
key
)
{
this
.
tabsActive
=
key
},
changeScroll
()
{
this
.
$refs
.
main
.
scrollTop
=
document
.
getElementsByClassName
(
'x_modal_content'
)[
0
].
offsetHeight
},
save
()
{
if
(
this
.
checkInfo
())
{
this
.
loading
=
true
if
(
!
this
.
formData
.
auditState
||
this
.
formData
.
auditState
==
0
)
this
.
formData
.
auditState
=
1
let
pars
=
isEmptyParams
(
this
.
formData
)
let
par
=
{
...
pars
}
this
.
$api
.
projectAssign
.
expertEvaluation
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
$message
.
success
(
'保存成功'
)
this
.
$emit
(
'close'
,
'save'
)
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
}
else
{
this
.
$message
.
warn
(
'请至少填写评审意见后再保存!'
)
}
},
checkInfo
()
{
if
(
!!!
this
.
formData
.
totalScore
&&
!!!
this
.
formData
.
remark
)
{
return
false
}
else
{
return
true
}
},
submit
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loading
=
true
this
.
formData
.
auditState
=
2
let
pars
=
isEmptyParams
(
this
.
formData
)
let
par
=
{
...
pars
}
this
.
$api
.
projectAssign
.
expertEvaluation
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
$message
.
success
(
'提交成功'
)
this
.
$emit
(
'close'
,
'submit'
)
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
}
else
{
this
.
tabsActive
=
'1'
this
.
$message
.
error
(
'评审信息未填写完全!'
)
this
.
changeScroll
()
}
})
},
},
};
</
script
>
<
style
scoped
lang=
"less"
>
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
.app-content {
::v-deep.ant-spin-nested-loading .ant-spin-container {
height: 100%;
}
.table-content {
border-width: 0px 1px 0px 1px;
border-style: solid;
border-color: #f0f0f0;
padding: 4px 4px 0px 4px;
}
::v-deep.ant-tabs .ant-tabs-bar {
margin: 0 !important;
}
::v-deep
.ant-tabs
.ant-tabs-bar
.ant-tabs-nav-container
.ant-tabs-nav-wrap
.ant-tabs-nav-scroll
.ant-tabs-nav
.ant-tabs-tab {
min-width: 160px !important;
text-align: center;
}
}
</
style
>
src/views/evaluation/talent/components/scoreView.vue
0 → 100644
View file @
0b6f3102
<
template
>
<div
style=
"height:70vh;overflow:auto"
class=
"app-content from-table font-line-space"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<score-info
v-model=
"formData"
/>
</a-spin>
</div>
</
template
>
<
script
>
import
info
from
'@/views/evaluation/talent/components/info'
import
{
toTextarea
}
from
'@/views/utils/common'
export
default
{
name
:
"scoreView"
,
components
:
{
info
},
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
;
},
},
},
data
()
{
return
{
formData
:
{
id
:
null
,
projId
:
null
,
expertId
:
null
,
expertName
:
null
,
projectBasis
:
null
,
academicValue
:
null
,
innovation
:
null
,
researchPlan
:
null
,
expectedResults
:
null
,
totalScore
:
null
,
remark
:
null
,
projName
:
null
,
projNo
:
null
,
},
loading
:
false
,
};
},
computed
:
{
evaluationTypeA
()
{
return
getEvaluationType
(
0
)
},
evaluationTypeB
()
{
return
getEvaluationType
(
1
)
},
evaluationTypeC
()
{
return
getEvaluationType
(
2
)
},
},
created
()
{
this
.
getAssignExpertById
()
},
methods
:
{
getAssignExpertById
()
{
if
(
!!
this
.
value
)
{
this
.
loading
=
true
this
.
$api
.
projectAssign
.
getAssignExpertById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
loading
=
false
}
else
this
.
$emit
(
'close'
,
'error'
)
}).
catch
(()
=>
{
this
.
$message
.
warn
(
'500 Internal Server Error!'
)
this
.
$emit
(
'close'
,
'error'
)
})
}
},
toTextarea
,
},
};
</
script
>
src/views/evaluation/talent/index.vue
View file @
0b6f3102
...
...
@@ -2,225 +2,213 @@
<div
class=
"app-content"
>
<a-form
:form=
"form"
:model=
"searchForm"
layout=
"inline"
class=
"search_form"
>
<a-form-item>
<a-input
placeholder=
"
身份证号"
v-model=
"searchForm.certId"
:maxLength=
"100"
style=
"width: 18
0px"
/>
<a-input
placeholder=
"
项目名称"
v-model=
"searchForm.projName"
:maxLength=
"100"
style=
"width: 16
0px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"
姓名"
v-model=
"searchForm.personName"
:maxLength=
"100"
style=
"width: 18
0px"
/>
<a-input
placeholder=
"
申请编号"
v-model=
"searchForm.appNo"
:maxLength=
"100"
style=
"width: 16
0px"
/>
</a-form-item>
<a-form-item>
<a-button
type=
"primary"
icon=
"search"
@
click=
"search"
>
搜索
</a-button>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"reset"
class=
"bt-normal"
>
重置
</a-button>
<a-tag
color=
"#108ee9"
style=
"margin-left: 10px"
@
click=
"previewFile"
>
查看专家评分标准
</a-tag>
</a-form-item>
</a-form>
<div
style=
"width:100%"
>
<div
style=
"display: inline-block;;width:50%"
>
<btn-group
:data=
"tabDate"
:itemCount=
"itemCount"
v-model=
"activekey"
@
change=
"callback"
/>
</div>
<div
style=
"display: inline-block;width:50%;text-align: right;"
>
<a-button
type=
"primary"
@
click=
"batchAudit"
style=
"margin-right: 8px;"
v-if=
"isBatchButten"
>
批量审核
</a-button>
<a-button
type=
"primary"
@
click=
"exportData"
icon=
"download"
>
Excel
</a-button>
</div>
</div>
<a-divider
style=
"height: 1px; background-color: #e8e8e8;"
/>
<span
class=
"form-description"
v-if=
"description"
>
※ 审核时间:
{{
description
}}
</span>
<a-table
:row-selection=
"
{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :dataSource="tableData" :columns="columns" :scroll="{ x: 'max-content' }" rowKey="id" :pagination="false" :loading="loading">
<template
slot=
"talentInfo"
slot-scope=
"record"
>
<a
@
click=
"recordClick(record, 'view')"
>
{{
record
.
personName
}}
</a>
<div
class=
"submit-btn"
>
<a-button
type=
"primary"
@
click=
"exportData"
>
导出Excel
</a-button>
<span
class=
"form-description"
>
※ 注:保存评审内容后,请及时提交! 专家评分时间:
{{
description
}}
</span>
</div>
<a-table
:dataSource=
"tableData"
:columns=
"columns"
rowKey=
"id"
:pagination=
"false"
:loading=
"loading"
>
<template
slot=
"projectName"
slot-scope=
"record"
>
<a
@
click=
"recordClick(record,'pView')"
>
{{
record
.
projName
}}
</a>
</
template
>
<
template
slot=
"expertEvaluation"
slot-scope=
"record"
>
<a-tag
:color=
"evaluationColor(record)"
>
{{
evaluationText
(
record
)
}}
</a-tag>
</
template
>
<
template
slot=
"projClassInfo"
slot-scope=
"record"
>
{{
record
.
projClass
==
1
?
"一般项目"
:
"重点项目"
}}
</
template
>
<
template
slot=
"option"
slot-scope=
"record"
>
<a-button
type=
"link"
size=
"small"
@
click=
"recordClick(record, 'view')"
>
查看
</a-button>
<a-button
type=
"link"
size=
"small"
v-if=
"record.auditResult == 1"
@
click=
"recordClick(record, 'audit')"
>
审核
</a-button>
<a-button
type=
"link"
size=
"small"
v-if=
"!!record.auditState && record.auditState == 2"
@
click=
"recordClick(record,'view')"
>
查看
</a-button>
<a-button
type=
"link"
size=
"small"
v-if=
"isButten"
@
click=
"recordClick(record,'score')"
>
评分
</a-button>
</
template
>
<
template
slot=
"supportState"
slot-scope=
"record"
>
{{
record
.
supportState
!=
null
?(
record
.
supportState
==
1
?
"是"
:
"否"
):
""
}}
</
template
>
</a-table>
<a-pagination
v-if=
"pagination.total > 0"
:total=
"pagination.total"
show-size-changer
show-quick-jumper
v-model=
"pagination.pageIndex"
:page-size=
"pagination.pageSize"
:page-size-options=
"pagination.pageSizeOptions"
@
showSizeChange=
"showSizeChange"
@
change=
"change"
:showTotal=
"() => `共 ${pagination.total} 条`"
/>
<a-modal
v-model=
"visibleAudit"
v-if=
"visibleAudit"
title=
"审核"
:footer=
"null"
width=
"94%"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<audit
v-model=
"id"
:objId=
"objectId"
@
close=
"closeWindow"
@
changeScroll=
"() => {this.$refs.s_modal.changeScroll()}"
></audit>
<a-modal
v-model=
"scoreViewVisible"
title=
"专家评分表"
width=
"90%"
:dialog-style=
"{ top: '5%' }"
:footer=
"null"
destroyOnClose
>
<score-view
v-model=
"id"
@
close=
"() => this.scoreViewVisible = false"
/>
</a-modal>
<a-modal
v-model=
"scoreVisible"
title=
"专家评分"
width=
"90%"
:dialog-style=
"{ top: '5%' }"
:footer=
"null"
destroyOnClose
>
<score
v-model=
"id"
:exportTime=
"exportTime"
:totalFunding=
"totalFunding"
@
close=
"closeWindow"
ref=
"scoreEdit"
/>
</a-modal>
<a-modal
v-model=
"visible
Batch"
v-if=
"visibleBatch"
title=
"批量审核"
:footer=
"null"
width=
"700px"
:dialog-style=
"{ top: '15%' }"
destroyOnClose
:maskClosable=
"false"
>
<
batch-audit
:idList=
"selectedRowKeys"
@
close=
"closeWindow"
/
>
<a-modal
v-model=
"visible
Standard"
title=
"专家评分标准"
width=
"1000px"
:dialog-style=
"{ top: '5%' }"
:footer=
"null"
destroyOnClose
>
<
pdf-view
v-model=
"url.downloadUrl"
:fileName=
"url.fileDownload"
></pdf-view
>
</a-modal>
<a-modal
v-model=
"visibleView"
title=
"查看
"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<
talent-view
v-model=
"id"
@
close=
"closeWindow
"
/>
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情
"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<
project-view
v-model=
"projectId"
@
close=
"() => this.visibleView = false
"
/>
</a-modal>
</div>
</template>
<
script
>
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
}
from
"@/views/utils/common"
import
talentView
from
"@/views/report/talent/components/talentView"
import
batchAudit
from
'@/views/audit/talent/batchAudit'
import
audit
from
'@/views/audit/talent/audit'
import
{
getType
}
from
'@/views/utils/auth'
import
moment
from
'moment'
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
,
getEvaluationType
}
from
'@/views/utils/common'
import
score
from
'@/views/evaluation/project/components/score'
import
scoreView
from
'@/views/evaluation/project/components/scoreView'
import
projectView
from
'@/views/evaluation/project/components/projectView'
import
pdfView
from
'@/views/components/common/pdfView'
export
default
{
name
:
"
talentAudit
"
,
name
:
"
expertEvaluation
"
,
components
:
{
talentView
,
audit
,
batchAudit
projectView
,
score
,
scoreView
,
pdfView
},
data
()
{
return
{
selectedRowKeys
:
[],
// 选项卡
//panes: { count1: 0, count2: 0, count3: 0, count4: 0, count5: 0, },
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
searchForm
:
{
auditType
:
6
,
auditResult
:
1
,
certId
:
null
,
personName
:
null
,
reportYear
:
null
,
auditType
:
6
,
},
activekey
:
'1'
,
tabDate
:
[
{
key
:
"1"
,
tab
:
"待审核"
},
{
key
:
"10"
,
tab
:
"已通过"
},
{
key
:
"30"
,
tab
:
"返回修改"
},
{
key
:
"20"
,
tab
:
"未通过"
},
{
key
:
""
,
tab
:
"所有"
},
],
itemCount
:
[
0
,
0
,
0
,
0
,
0
],
searchForm
:
{
projName
:
null
,
appNo
:
null
,
assignYear
:
null
,
personId
:
null
,
systemType
:
getType
(),
isShow
:
1
},
tableData
:
[],
columns
:
[
{
title
:
'申报年度'
,
dataIndex
:
'reportYear'
,
align
:
'center'
},
{
title
:
'申报单位'
,
dataIndex
:
'appUnitName'
,
align
:
'center'
},
{
title
:
"身份证号"
,
dataIndex
:
'certId'
,
align
:
'center'
},
{
title
:
'姓名'
,
scopedSlots
:
{
customRender
:
'talentInfo'
},
align
:
'center'
},
{
title
:
'性别'
,
dataIndex
:
'sex'
,
align
:
'center'
},
{
title
:
'专业'
,
dataIndex
:
'professionName'
,
align
:
'center'
},
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditResultName'
,
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
180
,
},
{
title
:
'申请编号'
,
dataIndex
:
'appNo'
,
align
:
'center'
},
{
title
:
"项目名称"
,
scopedSlots
:
{
customRender
:
'projectName'
,
colName
:
'projName'
},
align
:
'left'
},
{
title
:
"项目类别"
,
scopedSlots
:
{
customRender
:
'projClassInfo'
},
align
:
'center'
,
width
:
80
},
{
title
:
'评分'
,
dataIndex
:
'totalScore'
,
align
:
'center'
},
{
title
:
'评审结果'
,
scopedSlots
:
{
customRender
:
'evaluationType'
},
align
:
'center'
},
{
title
:
'是否推荐立项支持'
,
scopedSlots
:
{
customRender
:
'supportState'
},
align
:
'center'
},
{
title
:
'评审状态'
,
scopedSlots
:
{
customRender
:
'expertEvaluation'
,
colName
:
'gradeScore'
},
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
120
,
},
],
pagination
:
{
pageIndex
:
1
,
pageSize
:
this
.
$defaultPageSize
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
loading
:
false
,
// 弹窗标志
visibleAudit
:
false
,
visibleView
:
false
,
visibleBatch
:
false
,
isBatchButten
:
true
,
isButten
:
false
,
pagination
:
{
pageIndex
:
1
,
pageSize
:
50
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
loading
:
true
,
description
:
''
,
isButten
:
false
,
id
:
null
,
objectId
:
null
,
};
visibleView
:
false
,
scoreVisible
:
false
,
scoreViewVisible
:
false
,
projectId
:
null
,
url
:
{
downloadUrl
:
'/downloadFile/20250108.pdf'
,
fileDownload
:
'专家评分标准.pdf'
,
},
visibleStandard
:
false
,
exportTime
:
{
expertStart
:
null
,
expertEnd
:
null
},
totalFunding
:
0.00
,
}
},
created
()
{
this
.
getYear
()
},
methods
:
{
onSelectChange
(
selectedRowKeys
)
{
this
.
selectedRowKeys
=
selectedRowKeys
;
},
search
()
{
this
.
id
=
null
this
.
objectId
=
null
this
.
selectedRowKeys
=
[]
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
();
},
reset
()
{
this
.
id
=
null
this
.
objectId
=
null
this
.
selectedRowKeys
=
[]
this
.
searchForm
.
certId
=
null
this
.
searchForm
.
personName
=
null
this
.
searchForm
.
knowledgeId
=
null
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
()
},
moment
,
getYear
()
{
this
.
$api
.
batch
.
getCurrentYear
TalentBatch
({
type
:
2
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
batch
.
getCurrentYear
Batch
({
type
:
5
,
systemType
:
getType
(),
timeType
:
4
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
isButten
=
data
.
disabled
this
.
description
=
data
.
description
this
.
searchForm
.
reportYear
=
data
.
year
this
.
exportTime
.
expertStart
=
data
.
expertStart
this
.
exportTime
.
expertEnd
=
data
.
expertEnd
this
.
searchForm
.
assignYear
=
data
.
year
this
.
getListByPage
()
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
getListByPage
()
{
this
.
getCount
()
this
.
loading
=
true
;
let
pars
=
isEmptyParams
(
this
.
searchForm
);
let
par
=
{
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
,
}
this
.
$api
.
audit
.
getAuditListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
this
.
searchForm
.
systemType
=
getType
()
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
par
=
{
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
this
.
$api
.
projectAssign
.
getAuditListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
pagination
.
total
=
total
this
.
tableData
=
dataList
this
.
loading
=
false
}
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
getCount
()
{
let
pars
=
isEmptyParams
({
auditType
:
6
,
reportYear
:
this
.
searchForm
.
reportYear
,
completed
:
1
});
this
.
$api
.
audit
.
getTalentAuditCount
(
pars
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
panes
=
data
this
.
itemCount
=
[
data
.
count1
,
data
.
count2
,
data
.
count3
,
data
.
count4
,
data
.
count5
]
this
.
pagination
.
total
=
total
}
}).
catch
(()
=>
{
})
},
change
()
{
this
.
getListByPage
();
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
showSizeChange
(
current
,
pageSize
)
{
this
.
pagination
.
pageIndex
=
current
this
.
pagination
.
pageSize
=
pageSize
this
.
getListByPage
()
},
closeWindow
(
value
)
{
if
(
value
===
'audit'
)
{
this
.
getListByPage
()
this
.
id
=
null
this
.
objectId
=
null
this
.
selectedRowKeys
=
[]
this
.
visibleView
=
false
this
.
visibleAudit
=
false
this
.
visibleBatch
=
false
}
else
if
(
value
===
'error'
)
{
this
.
id
=
null
this
.
objectId
=
null
this
.
selectedRowKeys
=
[]
this
.
visibleView
=
false
this
.
visibleAudit
=
false
this
.
visibleBatch
=
false
}
change
(
current
,
pageSize
)
{
this
.
pagination
.
pageIndex
=
current
this
.
pagination
.
pageSize
=
pageSize
this
.
getListByPage
()
},
search
()
{
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
()
},
reset
()
{
this
.
searchForm
=
{
projName
:
null
,
projNo
:
null
,
assignYear
:
null
,
systemType
:
getType
(),
isShow
:
1
}
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
()
},
recordClick
(
record
,
type
)
{
if
(
type
===
'view'
)
{
this
.
id
=
record
.
auditObjectId
this
.
visibleView
=
true
}
else
if
(
type
===
'audit'
)
{
this
.
id
=
record
.
id
this
.
objectId
=
record
.
auditObjectId
this
.
visibleAudit
=
true
}
else
if
(
type
===
'taskView'
)
{
this
.
selectProjId
=
record
.
projId
this
.
scoreViewVisible
=
true
}
else
if
(
type
===
'score'
)
{
this
.
id
=
record
.
id
this
.
totalFunding
=
record
.
totalFunding
this
.
scoreVisible
=
true
}
else
if
(
type
===
'pView'
)
{
this
.
projectId
=
record
.
projId
this
.
visibleView
=
true
}
},
batchAudit
()
{
if
(
!!
this
.
selectedRowKeys
&&
this
.
selectedRowKeys
.
length
>
0
)
{
this
.
visibleBatch
=
true
closeWindow
(
value
)
{
if
(
value
===
'save'
)
{
this
.
getListByPage
()
}
else
if
(
value
===
'submit'
)
{
this
.
scoreVisible
=
false
this
.
getListByPage
()
}
else
if
(
value
===
'error'
)
{
this
.
scoreVisible
=
false
}
else
this
.
$message
.
error
(
'请选择项目!'
)
},
callback
(
key
)
{
if
(
key
==
'1'
)
{
this
.
isBatchButten
=
true
}
else
this
.
isBatchButten
=
false
this
.
searchForm
.
auditResult
=
key
;
this
.
getListByPage
()
},
exportData
()
{
this
.
$ToDoExcel
(
`人才评分列表`
,
tableColumnsName
(
this
.
columns
),
filterExportExcelData
(
this
.
columns
,
this
.
tableData
))
},
evaluationColor
(
record
)
{
let
color
=
''
switch
(
record
.
auditState
)
{
case
0
:
color
=
'#f50'
;
break
;
case
1
:
color
=
'#f50'
;
break
;
case
2
:
color
=
'#87d068'
;
break
;
}
return
color
},
evaluationText
(
record
)
{
let
text
=
''
switch
(
record
.
auditState
)
{
case
0
:
text
=
'未评审'
;
break
;
case
1
:
text
=
'已保存'
;
break
;
case
2
:
text
=
'已提交'
;
break
;
}
return
text
},
previewFile
()
{
this
.
visibleStandard
=
true
},
}
};
</
script
>
</
script
>
\ No newline at end of file
src/views/report/talent/Index.vue
View file @
0b6f3102
...
...
@@ -98,7 +98,7 @@ export default {
},
methods
:
{
getYear
()
{
this
.
$api
.
batch
.
getCurrentYear
TalentBatch
({
type
:
1
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
batch
.
getCurrentYear
Batch
({
type
:
1
,
systemType
:
getType
(),
timeType
:
4
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
isButten
=
data
.
disabled
this
.
description
=
data
.
description
...
...
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