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
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
443 additions
and
9 deletions
+443
-9
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
+0
-0
scoreView.vue
src/views/evaluation/talent/components/scoreView.vue
+64
-0
index.vue
src/views/evaluation/talent/index.vue
+0
-0
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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