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
af7d2197
Commit
af7d2197
authored
Jul 30, 2025
by
徐俊
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.yiboshi.com/XuJun/yn-science-front
parents
60d1b0bf
8c1abae2
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
187 additions
and
199 deletions
+187
-199
index.js
src/api/index.js
+1
-1
app.js
src/store/modules/app.js
+1
-1
Index.vue
src/views/audit/talent/Index.vue
+6
-0
final.vue
src/views/audit/talent/final.vue
+31
-4
edit.vue
src/views/evaluation/talent/components/edit.vue
+18
-22
score.vue
src/views/evaluation/talent/components/score.vue
+7
-7
scoreInfo.vue
src/views/evaluation/talent/components/scoreInfo.vue
+69
-128
scoreView.vue
src/views/evaluation/talent/components/scoreView.vue
+8
-16
index.vue
src/views/evaluation/talent/index.vue
+12
-14
index.vue
src/views/home/index.vue
+33
-5
common.less
static/css/common.less
+1
-1
No files found.
src/api/index.js
View file @
af7d2197
...
...
@@ -703,7 +703,7 @@ export default {
return
fetch
(
`/v1/science-admin/com_project_audit/getCount`
,
params
)
},
getTalentAuditCount
(
params
)
{
return
fetch
(
`/v1/science-admin/com_project_audit/getCount`
,
params
)
return
fetch
(
`/v1/science-admin/com_project_audit/get
TalentAudit
Count`
,
params
)
},
getConclusionAuditCount
(
params
)
{
return
fetch
(
`/v1/science-admin/com_project_audit/getConclusionAuditCount`
,
params
)
...
...
src/store/modules/app.js
View file @
af7d2197
...
...
@@ -182,7 +182,7 @@ const actions = {
const
defaultTabsList
=
[
{
title
:
'个人设置'
,
key
:
'1005'
,
code
:
'personInfo'
,
keepAlive
:
1
,
router
:
'/person/info'
,
closable
:
true
},
{
title
:
'项目创建'
,
key
:
'1299'
,
code
:
'projectCreate'
,
keepAlive
:
1
,
router
:
'/project/create'
,
closable
:
true
},
{
title
:
'首页'
,
key
:
'0'
,
code
:
'home'
,
keepAlive
:
1
,
router
:
'/home'
,
closable
:
false
},
{
title
:
'首页'
,
key
:
'0'
,
code
:
'home'
,
keepAlive
:
0
,
router
:
'/home'
,
closable
:
false
},
{
title
:
'404'
,
key
:
'404'
,
code
:
'404'
,
keepAlive
:
1
,
router
:
'/404'
,
closable
:
true
},
{
title
:
'403'
,
key
:
'403'
,
code
:
'403'
,
keepAlive
:
1
,
router
:
'/403'
,
closable
:
true
}
]
...
...
src/views/audit/talent/Index.vue
View file @
af7d2197
<
template
>
<div
class=
"app-content"
>
<a-form
:form=
"form"
:model=
"searchForm"
layout=
"inline"
class=
"search_form"
>
<a-form-item>
<a-input
placeholder=
"申报单位"
v-model=
"searchForm.appUnitName"
:maxLength=
"100"
style=
"width: 150px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"申报人"
v-model=
"searchForm.appPersonName"
:maxLength=
"50"
style=
"width: 150px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"身份证号"
v-model=
"searchForm.certId"
:maxLength=
"100"
style=
"width: 180px"
/>
</a-form-item>
...
...
src/views/audit/talent/final.vue
View file @
af7d2197
<
template
>
<div
class=
"app-content"
>
<a-form
:form=
"form"
:model=
"searchForm"
layout=
"inline"
class=
"search_form"
>
<a-form-item>
<a-input
placeholder=
"申报单位"
v-model=
"searchForm.appUnitName"
:maxLength=
"100"
style=
"width: 150px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"申报人"
v-model=
"searchForm.appPersonName"
:maxLength=
"50"
style=
"width: 150px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"身份证号"
v-model=
"searchForm.certId"
:maxLength=
"100"
style=
"width: 180px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"姓名"
v-model=
"searchForm.personName"
:maxLength=
"100"
style=
"width: 180px"
/>
</a-form-item>
<a-form-item
label=
"评分刷选"
>
<a-input-number
v-model=
"searchForm.scoreStart"
:min=
"0"
:step=
"0.01"
style=
"width: 60px"
/>
~
<a-input-number
v-model=
"searchForm.scoreEnd"
:min=
"0"
:step=
"0.01"
style=
"width: 60px"
/>
</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>
...
...
@@ -22,6 +33,7 @@
</div>
</div>
<a-divider
style=
"height: 1px; background-color: #e8e8e8;"
/>
<span
style=
"margin:6px;display: block;color:red;"
>
专家评分:总分/平均分
</span>
<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"
>
...
...
@@ -29,6 +41,7 @@
</
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"
@
click=
"recordClick(record, 'evaluation')"
>
专家评分明细
</a-button>
<a-button
type=
"link"
size=
"small"
v-if=
"record.auditResult == 1"
@
click=
"recordClick(record, 'audit')"
>
审核
</a-button>
</
template
>
</a-table>
...
...
@@ -42,6 +55,9 @@
<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>
<a-modal
v-model=
"assignInfoVisible"
title=
"专家评分明细"
width=
"85%"
:dialog-style=
"{ top: '8%' }"
:footer=
"null"
destroyOnClose
>
<talent-assign-detail
v-model=
"objectId"
@
close=
"() => this.assignInfoVisible = false"
/>
</a-modal>
</div>
</template>
...
...
@@ -51,11 +67,12 @@ import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/
import
talentView
from
"@/views/report/talent/components/talentView"
import
batchAudit
from
'@/views/audit/talent/batchAudit'
import
audit
from
'@/views/audit/talent/audit'
import
talentAssignDetail
from
'@/views/assign/components/projectAssignDetail'
export
default
{
name
:
"talentAudit"
,
name
:
"talentAudit
Final
"
,
components
:
{
talentView
,
audit
,
batchAudit
talentView
,
audit
,
batchAudit
,
talentAssignDetail
},
data
()
{
return
{
...
...
@@ -89,6 +106,7 @@ export default {
{
title
:
'专业'
,
dataIndex
:
'professionName'
,
align
:
'center'
},
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditResultName'
,
align
:
'center'
},
{
title
:
'专家评分'
,
dataIndex
:
'gradeScore'
,
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
180
,
},
],
pagination
:
{
...
...
@@ -102,6 +120,7 @@ export default {
visibleAudit
:
false
,
visibleView
:
false
,
visibleBatch
:
false
,
assignInfoVisible
:
false
,
isBatchButten
:
true
,
isButten
:
false
,
description
:
''
,
...
...
@@ -153,6 +172,13 @@ export default {
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
pagination
.
total
=
total
this
.
tableData
=
dataList
this
.
tableData
.
forEach
(
e
=>
{
// 专家评分
if
(
!!
e
.
totalScore
&&
e
.
averageScore
)
e
.
gradeScore
=
e
.
totalScore
+
'/'
+
e
.
averageScore
else
e
.
gradeScore
=
'0/0'
})
this
.
loading
=
false
}
}).
catch
(()
=>
{
this
.
loading
=
false
})
...
...
@@ -198,8 +224,9 @@ export default {
this
.
id
=
record
.
id
this
.
objectId
=
record
.
auditObjectId
this
.
visibleAudit
=
true
}
else
if
(
type
===
'taskView'
)
{
this
.
selectProjId
=
record
.
projId
}
else
if
(
type
===
'evaluation'
)
{
this
.
objectId
=
record
.
auditObjectId
this
.
assignInfoVisible
=
true
}
},
batchAudit
()
{
...
...
src/views/evaluation/talent/components/edit.vue
View file @
af7d2197
<
template
>
<div>
<table
class=
"tab-content"
cellpadding=
"3"
cellspacing=
"3"
style=
"width: 98%"
>
<table
class=
"tab-content"
cellpadding=
"3"
cellspacing=
"3"
style=
"width: 98%
;margin-top: 6px;
"
>
<tr>
<td
class=
"bg-title"
>
指标分类
</td>
<td
class=
"bg-title"
>
评分标准
</td>
<td
class=
"bg-title"
>
评分项目
</td>
<td
class=
"bg-title"
>
单项得分
</td>
<td
class=
"bg-title"
>
明细
</td>
<td
class=
"bg-title"
>
数量
</td>
<td
class=
"bg-title"
>
评分
</td>
<td
class=
"bg-title"
>
备注
</td>
<td
class=
"bg-title"
style=
"width:7%"
>
指标分类
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分标准
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分项目
</td>
<td
class=
"bg-title"
style=
"width:8%"
>
单项得分
</td>
<td
class=
"bg-title"
style=
"width:30%"
>
明细
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
数量
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分
</td>
<td
class=
"bg-title"
style=
"width:25%"
>
备注
</td>
</tr>
<tr
v-for=
"(item,index) in scoreList"
:key=
"'scoreList'+index"
type=
"flex"
class=
"row_center"
>
<td
:rowspan=
"item.row1"
v-if=
"item.row1>0"
>
{{
item
.
content1
}}
</td>
<td
:rowspan=
"item.row1"
v-if=
"item.row1>0"
style=
"text-align:center;font-weight: 800;"
>
{{
item
.
content1
}}
</td>
<td
:rowspan=
"item.row2"
v-if=
"item.row2>0"
>
{{
item
.
content2
}}
</td>
<td>
{{
item
.
content
}}
</td>
<td>
{{
item
.
scoreDetail
}}
</td>
<td
style=
"text-align:center"
>
{{
item
.
scoreDetail
}}
</td>
<td>
<a-form-model-item
:prop=
"'scoreList.' + index + '.detail'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.detail"
style=
"width:
60
%"
/>
<a-input
v-model=
"item.detail"
style=
"width:
85
%"
/>
</a-form-model-item>
</td>
<td>
<a-form-model-item
:prop=
"'scoreList.' + index + '.count'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.count"
:min=
"0"
style=
"width:
6
0%"
/>
<a-input-number
v-model=
"item.count"
:min=
"0"
style=
"width:
8
0%"
/>
</a-form-model-item>
</td>
<td
style=
"text-align: center;"
>
<a-form-model-item
:prop=
"'scoreList.' + index + '.score'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.score"
:min=
"0"
:max=
"item.maxScore"
style=
"width:
6
0%"
/>
<a-input-number
v-model=
"item.score"
:min=
"0"
:max=
"item.maxScore"
style=
"width:
8
0%"
/>
</a-form-model-item>
</td>
<td>
{{
item
.
remark
}}
</td>
</tr>
<tr>
<td
colspan=
"7"
class=
"bg-title"
style=
"text-align: right;"
>
总分:
</td>
<td
style=
"text-align: left;padding-left: 12px;"
>
{{
Count
()
}}
分
</td>
<td
colspan=
"6"
style=
"text-align: right;"
>
总分:
</td>
<td
style=
"text-align: center;padding-left: 12px;"
>
{{
Count
()
}}
</td>
<td></td>
</tr>
</table>
<div
style=
"height: 10px;"
></div>
</div>
</
template
>
...
...
@@ -52,12 +54,6 @@ export default {
return
[]
}
},
totalScore
:
{
type
:
Number
,
default
()
{
return
0
;
},
},
},
data
()
{
return
{
...
...
src/views/evaluation/talent/components/score.vue
View file @
af7d2197
...
...
@@ -200,6 +200,13 @@ export default {
changeScroll
()
{
this
.
$refs
.
main
.
scrollTop
=
document
.
getElementsByClassName
(
'x_modal_content'
)[
0
].
offsetHeight
},
checkInfo
()
{
if
(
!!!
this
.
formData
.
totalScore
)
{
return
false
}
else
{
return
true
}
},
save
()
{
if
(
this
.
checkInfo
())
{
this
.
loading
=
true
...
...
@@ -218,13 +225,6 @@ export default {
this
.
$message
.
warn
(
'请先评分再保存!'
)
}
},
checkInfo
()
{
if
(
!!!
this
.
formData
.
totalScore
)
{
return
false
}
else
{
return
true
}
},
submit
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
...
...
src/views/evaluation/talent/components/scoreInfo.vue
View file @
af7d2197
<
template
>
<div>
<table
class=
"tab-content"
style=
"width: 100%
"
>
<table
class=
"tab-content"
cellpadding=
"3"
cellspacing=
"3"
style=
"width: 98%;margin-top: 6px;
"
>
<tr>
<td
class=
"bg-title"
>
评审指标
</td>
<td
class=
"bg-title"
>
评审指标选项
</td>
<td
class=
"bg-title"
>
专家打分
</td>
<td
class=
"bg-title"
style=
"width:7%"
>
指标分类
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分标准
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分项目
</td>
<td
class=
"bg-title"
style=
"width:8%"
>
单项得分
</td>
<td
class=
"bg-title"
style=
"width:30%"
>
明细
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
数量
</td>
<td
class=
"bg-title"
style=
"width:10%"
>
评分
</td>
<td
class=
"bg-title"
style=
"width:25%"
>
备注
</td>
</tr>
<tr
v-for=
"(item,index) in tableData"
:key=
"'tr1'+index"
>
<td>
{{
item
.
oneLevel
}}
</td>
<tr
v-for=
"(item,index) in scoreList"
:key=
"'scoreList'+index"
type=
"flex"
class=
"row_center"
>
<td
:rowspan=
"item.row1"
v-if=
"item.row1>0"
style=
"text-align:center;font-weight: 800;"
>
{{
item
.
content1
}}
</td>
<td
:rowspan=
"item.row2"
v-if=
"item.row2>0"
>
{{
item
.
content2
}}
</td>
<td>
{{
item
.
content
}}
</td>
<td
style=
"text-align:center"
>
{{
item
.
scoreDetail
}}
</td>
<td>
{{
item
.
towLevel1
}}
<br
/>
{{
item
.
towLevel2
}}
<br
/>
{{
item
.
towLevel3
}}
{{
item
.
detail
}}
</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
style=
"text-align:center;font-weight: 600;"
>
{{
item
.
count
}}
</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
style=
"text-align: center;font-weight: 600;"
>
{{
item
.
score
}}
</td>
<td>
{{
item
.
remark
}}
</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>
<td
colspan=
"6"
style=
"text-align: right;"
>
总分:
</td>
<td
style=
"text-align: center;"
>
{{
value
.
totalScore
}}
</td>
<td
style=
"text-align: center;"
>
/
</td>
</tr>
</table>
<div
style=
"height: 10px;"
></div>
</div>
</
template
>
<
script
>
import
{
toTextarea
,
getEvaluationType
}
from
'@/views/utils/common'
export
default
{
name
:
"score
Info
"
,
name
:
"score
Edit
"
,
components
:
{},
props
:
{
value
:
{
...
...
@@ -76,101 +51,66 @@ export default {
},
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
,
},
],
scoreList
:
[]
};
},
computed
:
{
evaluationTypeA
()
{
return
getEvaluationType
(
0
)
},
evaluationTypeB
()
{
return
getEvaluationType
(
1
)
},
evaluationTypeC
()
{
return
getEvaluationType
(
2
)
},
},
created
()
{
},
methods
:
{
toTextarea
,
},
watch
:
{
value
:
{
handler
(
value
)
{
this
.
scoreList
=
value
.
scoreList
},
},
}
};
</
script
>
<
style
scoped
lang=
"less"
>
.app-content {
table {
table-layout: fixed;
width: 100%;
border: 1;
border-collapse: collapse;
.tab-content {
::v-deep .ant-row {
border: 0 !important;
}
table tr td,
th {
border: 1px solid #e8e8e8;
padding: 6px 6px;
color: rgba(0, 0, 0, 0.65);
::v-deep .ant-row .ant-col {
border: 0 !important;
min-height: 30px !important;
}
table tr th
{
text-align: center
;
::v-deep .ant-form-item-control
{
line-height: 30px !important
;
}
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%;
}
::v-deep .ant-form-item {
margin: 0 !important;
}
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;
}
::v-deep .ant-input-number {
height: 30px !important;
}
}
.none-bottom {
::v-deep .ant-col {
border-bottom: 0 !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/scoreView.vue
View file @
af7d2197
<
template
>
<div
style=
"height:70vh;overflow:auto"
class=
"app-content f
rom-table f
ont-line-space"
>
<div
style=
"height:70vh;overflow:auto"
class=
"app-content font-line-space"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<score-info
v-model=
"formData"
/>
</a-spin>
...
...
@@ -7,12 +7,12 @@
</
template
>
<
script
>
import
i
nfo
from
'@/views/evaluation/talent/components/scoreInfo'
import
scoreI
nfo
from
'@/views/evaluation/talent/components/scoreInfo'
import
{
toTextarea
}
from
'@/views/utils/common'
export
default
{
name
:
"scoreView"
,
components
:
{
i
nfo
scoreI
nfo
},
props
:
{
value
:
{
...
...
@@ -24,29 +24,21 @@ export default {
},
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
,
},
formData
:
{
id
:
null
},
loading
:
false
,
};
},
computed
:
{
evaluationTypeA
()
{
return
getEvaluationType
(
0
)
},
evaluationTypeB
()
{
return
getEvaluationType
(
1
)
},
evaluationTypeC
()
{
return
getEvaluationType
(
2
)
},
},
created
()
{
this
.
get
AssignExpert
ById
()
this
.
get
TalentAssignInfo
ById
()
},
methods
:
{
get
AssignExpert
ById
()
{
get
TalentAssignInfo
ById
()
{
if
(
!!
this
.
value
)
{
this
.
loading
=
true
this
.
$api
.
projectAssign
.
getAssignExpert
ById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
talentAssign
.
getTalentAssignInfo
ById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
loading
=
false
...
...
src/views/evaluation/talent/index.vue
View file @
af7d2197
...
...
@@ -15,15 +15,17 @@
<a-divider
style=
"height: 1px; background-color: #e8e8e8;"
/>
<div
class=
"submit-btn"
>
<a-button
type=
"primary"
@
click=
"exportData"
>
导出Excel
</a-button>
<a-button
type=
"primary"
@
click=
"testScoreView"
>
查看评分表
</a-button>
<span
class=
"form-description"
>
※ 注:保存评审内容后,请及时提交! 专家评分时间:
{{
description
}}
</span>
</div>
<a-table
:dataSource=
"tableData"
:columns=
"columns"
:scroll=
"
{ x: 'max-content' }"
rowKey="id" :pagination="false" :loading="loading">
<a-table
:dataSource=
"tableData"
:columns=
"columns"
:scroll=
"
{ x: 'max-content' }" rowKey="id" :pagination="false" :loading="loading">
<template
slot=
"talentInfo"
slot-scope=
"record"
>
<a
@
click=
"recordClick(record, 'tView')"
>
{{
record
.
personName
}}
</a>
</
template
>
<
template
slot=
"expertEvaluation"
slot-scope=
"record"
>
<a-tag
:color=
"evaluationColor(record)"
>
{{
record
.
stateName
}}
</a-tag>
</
template
>
<
template
slot=
"option"
slot-scope=
"record"
>
<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=
"!!record.auditState &&
(record.auditState == 1||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
>
</a-table>
...
...
@@ -71,7 +73,7 @@ export default {
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'申报年度'
,
dataIndex
:
'assignYear'
,
align
:
'center'
},
{
title
:
'评分'
,
dataIndex
:
'totalScore'
,
align
:
'center'
},
{
title
:
'评审状态'
,
dataIndex
:
'stateName'
,
align
:
'center'
},
{
title
:
'评审状态'
,
scopedSlots
:
{
customRender
:
'expertEvaluation'
,
colName
:
'gradeScore'
},
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
120
,
},
],
pagination
:
{
pageIndex
:
1
,
pageSize
:
50
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
...
...
@@ -95,10 +97,6 @@ export default {
this
.
getYear
()
},
methods
:
{
testScoreView
()
{
this
.
id
=
''
this
.
scoreVisible
=
true
},
moment
,
getYear
()
{
this
.
$api
.
batch
.
getCurrentYearBatch
({
type
:
5
,
systemType
:
getType
(),
timeType
:
4
}).
then
(({
data
=
{}
})
=>
{
...
...
@@ -172,20 +170,20 @@ export default {
exportData
()
{
this
.
$ToDoExcel
(
`人才评分列表`
,
tableColumnsName
(
this
.
columns
),
filterExportExcelData
(
this
.
columns
,
this
.
tableData
))
},
evaluation
Text
(
record
)
{
let
text
=
'
'
evaluation
Color
(
record
)
{
let
color
=
'#f50
'
switch
(
record
.
auditState
)
{
case
0
:
text
=
'未评审
'
;
color
=
'#f50
'
;
break
;
case
1
:
text
=
'已保存
'
;
color
=
'#f50
'
;
break
;
case
2
:
text
=
'已提交
'
;
color
=
'#87d068
'
;
break
;
}
return
text
return
color
},
previewFile
()
{
this
.
visibleStandard
=
true
...
...
src/views/home/index.vue
View file @
af7d2197
<
template
>
<div
style=
"width: 100%;height: 100%;"
>
<dashboard-person
v-if=
"isReport && !isUnit"
/>
<dashboard-expert
v-if=
"isExpert && !isUnit"
/>
<dashboard-unit
v-if=
"isUnit"
/>
<dashboard-gov
v-if=
"isGov"
/>
<dashboard-top
v-if=
"isTop"
/>
<dashboard-person
v-if=
"isTalentSystem"
/>
<div
v-else
>
<dashboard-person
v-if=
"isReport && !isUnit"
/>
<dashboard-expert
v-if=
"isExpert && !isUnit"
/>
<dashboard-unit
v-if=
"isUnit"
/>
<dashboard-gov
v-if=
"isGov"
/>
<dashboard-top
v-if=
"isTop"
/>
</div>
<dashboard-admin
v-if=
"isAdmin"
/>
<a-modal
v-model=
"visibleUnitEdit"
v-if=
"visibleUnitEdit"
title=
"请先完善单位信息!"
width=
"70%"
:dialog-style=
"
{ top: '12%' }" :footer="null" destroyOnClose :maskClosable="false" :closable="false">
<unit-info-edit
@
sub=
"unitSave"
/>
...
...
@@ -12,6 +15,7 @@
</div>
</
template
>
<
script
>
import
{
getToken
,
removeToken
,
getType
}
from
'@/views/utils/auth'
import
{
getUnitComplete
,
setUnitComplete
}
from
'@/views/utils/auth'
import
dashboardPerson
from
'@/views/home/components/dashboardPerson'
import
dashboardExpert
from
'@/views/home/components/dashboardPerson'
...
...
@@ -32,9 +36,11 @@ export default {
isExpert
:
false
,
isUnitComplete
:
getUnitComplete
(),
visibleUnitEdit
:
false
,
isTalentSystem
:
false
};
},
created
()
{
this
.
isTalentSystem
=
getType
()
==
2
let
user
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
'user'
))
if
(
user
&&
user
.
roles
)
{
if
(
user
.
roles
.
indexOf
(
"0"
)
!=
-
1
)
{
...
...
@@ -55,6 +61,15 @@ export default {
}
}
},
computed
:
{
systemType
:
{
get
()
{
return
this
.
$store
.
state
.
app
.
systemType
},
set
()
{
}
},
},
methods
:
{
unitSave
()
{
setUnitComplete
(
true
)
...
...
@@ -62,6 +77,19 @@ export default {
this
.
visibleUnitEdit
=
false
}
},
watch
:
{
systemType
:
{
handler
(
value
)
{
console
.
log
(
value
)
if
(
!!
value
)
{
if
(
value
==
2
)
this
.
isTalentSystem
=
true
else
this
.
isTalentSystem
=
false
}
}
}
}
};
</
script
>
<
style
scoped
lang=
"less"
>
...
...
static/css/common.less
View file @
af7d2197
...
...
@@ -456,7 +456,7 @@
top: 0px;
right: 10px;
text-align: right;
max-width:
35
0px;
max-width:
40
0px;
line-height: 46px;
.toolbar-items {
...
...
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