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
cee16ddc
Commit
cee16ddc
authored
Dec 27, 2024
by
wangxl
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.yiboshi.com/XuJun/yn-science-front
parents
05a19ab5
a0b777c8
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
325 additions
and
4 deletions
+325
-4
index.js
src/api/index.js
+3
-0
index.js
src/router/index.js
+1
-0
assignDetail.vue
src/views/assign/components/assignDetail.vue
+1
-1
Index.vue
src/views/audit/project/Index.vue
+23
-3
evaluationStatistic.vue
src/views/expert/evaluationStatistic.vue
+297
-0
No files found.
src/api/index.js
View file @
cee16ddc
...
...
@@ -291,6 +291,9 @@ export default {
getExpertListByIdList
(
params
)
{
return
fetch
(
`/v1/science-admin/com-expert/getExpertListByIdList`
,
params
,
'post'
,
'json'
)
},
getEcaluationStatisticListByPage
(
params
)
{
return
fetch
(
'/v1/science-admin/com-expert/getEcaluationStatisticListByPage'
,
params
)
},
},
expertSpec
:
{
getExpertListBySpecId
(
params
)
{
...
...
src/router/index.js
View file @
cee16ddc
...
...
@@ -230,6 +230,7 @@ export const routes = [
hidden
:
false
,
children
:
[
{
path
:
'/expert/list'
,
name
:
'专家管理'
,
component
:
()
=>
import
(
'@/views/expert/index.vue'
),
meta
:
{
title
:
'专家管理'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/evaluationStatistic'
,
name
:
'专家评审统计'
,
component
:
()
=>
import
(
'@/views/expert/evaluationStatistic.vue'
),
meta
:
{
title
:
'专家评审统计'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/expertBRegister'
,
name
:
'专家导入'
,
component
:
()
=>
import
(
'@/views/expert/components/expertImport.vue'
),
meta
:
{
title
:
'专家导入'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/group'
,
name
:
'专家组管理'
,
component
:
()
=>
import
(
'@/views/expertGroup/expertBatch.vue'
),
meta
:
{
title
:
'专家组管理'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/group/members'
,
name
:
'专家组成员管理'
,
component
:
()
=>
import
(
'@/views/expertGroup/expertGroupMembers.vue'
),
meta
:
{
title
:
'专家组成员管理'
,
icon
:
''
,
noCache
:
true
}
},
...
...
src/views/assign/components/assignDetail.vue
View file @
cee16ddc
...
...
@@ -249,7 +249,7 @@ export default {
this
.
$api
.
projectAssign
.
getListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
$ToDoExcel
(
`项目分配列表`
,
tableColumnsName
(
column
),
filterExportExcelData
(
column
,
this
.
tableData
))
this
.
$ToDoExcel
(
`项目分配列表`
,
tableColumnsName
(
column
),
filterExportExcelData
(
column
,
dataList
))
dataList
=
[]
}
this
.
loading
=
false
...
...
src/views/audit/project/Index.vue
View file @
cee16ddc
...
...
@@ -114,8 +114,9 @@ export default {
{
title
:
"结束时间"
,
dataIndex
:
"endDate"
,
align
:
'center'
},
{
title
:
"申报年度"
,
dataIndex
:
"reportYear"
,
align
:
'center'
},
{
title
:
"项目类别"
,
scopedSlots
:
{
customRender
:
'projClassInfo'
},
align
:
'center'
,
width
:
80
},
{
title
:
"项目资金(万元)"
,
dataIndex
:
"govFunding"
,
align
:
'center'
},
{
title
:
'申报单位'
,
dataIndex
:
'appUnitName'
,
align
:
'center'
},
{
title
:
'申报学科'
,
dataIndex
:
'knowledgeName'
,
align
:
'center'
},
{
title
:
'申报学科'
,
dataIndex
:
'knowledgeName'
,
align
:
'center'
,
ellipsis
:
true
,
width
:
200
},
{
title
:
'申报人'
,
dataIndex
:
'appPersonName'
,
align
:
'center'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditResultName'
,
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
120
,
},
...
...
@@ -193,8 +194,13 @@ export default {
this
.
$api
.
auditManager
.
getAuditListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
;
this
.
tableData
=
dataList
;
this
.
pagination
.
total
=
total
;
this
.
tableData
=
dataList
.
map
(
item
=>
{
return
{
...
item
,
projClassName
:
item
.
projClass
===
1
?
"一般项目"
:
"重点项目"
,
}
})
this
.
tableData
.
forEach
(
e
=>
{
e
.
startDate
=
moment
(
e
.
startDate
).
format
(
'YYYY-MM-DD'
)
e
.
endDate
=
moment
(
e
.
endDate
).
format
(
'YYYY-MM-DD'
)
...
...
@@ -268,7 +274,21 @@ export default {
this
.
taskFileInfoView
=
true
},
exportData
()
{
this
.
$ToDoExcel
(
`项目审核列表`
,
tableColumnsName
(
this
.
columns
),
filterExportExcelData
(
this
.
columns
,
this
.
tableData
))
let
column
=
[
{
title
:
"项目名称"
,
dataIndex
:
'projName'
},
//{ title: "项目编号", dataIndex: "projNo", align: 'center' },
{
title
:
'申请编号'
,
dataIndex
:
'appNo'
},
{
title
:
"开始时间"
,
dataIndex
:
"startDate"
},
{
title
:
"结束时间"
,
dataIndex
:
"endDate"
},
{
title
:
"申报年度"
,
dataIndex
:
"reportYear"
},
{
title
:
"项目类别"
,
dataIndex
:
'projClassName'
},
{
title
:
"项目资金(万元)"
,
dataIndex
:
"govFunding"
},
{
title
:
'申报单位'
,
dataIndex
:
'appUnitName'
},
{
title
:
'申报学科'
,
dataIndex
:
'knowledgeName'
},
{
title
:
'申报人'
,
dataIndex
:
'appPersonName'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditResultName'
},
]
this
.
$ToDoExcel
(
`项目审核列表`
,
tableColumnsName
(
column
),
filterExportExcelData
(
column
,
this
.
tableData
))
}
},
};
...
...
src/views/expert/evaluationStatistic.vue
0 → 100644
View file @
cee16ddc
<
template
>
<div
class=
"app-content"
>
<a-form
:form=
"form"
:model=
"searchForm"
layout=
"inline"
class=
"search_form"
>
<a-form-item>
<a-input
v-model=
"searchForm.personName"
placeholder=
"姓名"
:maxLength=
"100"
style=
"width: 130px"
/>
</a-form-item>
<a-form-item>
<a-input
v-model=
"searchForm.certId"
placeholder=
"证件号"
:maxLength=
"100"
style=
"width: 150px"
/>
</a-form-item>
<a-form-item
v-if=
"isTopGov"
>
<a-input
v-model=
"searchForm.unitName"
placeholder=
"单位"
:maxLength=
"100"
style=
"width: 130px"
/>
</a-form-item>
<a-form-item>
<a-input
v-model=
"searchForm.username"
placeholder=
"用户名"
:maxLength=
"100"
style=
"width: 130px"
/>
</a-form-item>
<a-form-item>
<a-select
default-value=
""
placeholder=
"年度"
v-model=
"searchForm.groupYear"
style=
"width: 80px"
@
change=
"handleYearChange"
>
<a-select-option
v-for=
"record in YearData"
:key=
"record.year"
:value=
"record.year"
>
{{
record
.
year
+
'年'
}}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item>
<cascader-select
v-model=
"searchForm.specParentId"
:changeOnSelect=
"true"
/>
</a-form-item>
<a-form-item>
<para-multi-select
v-model=
"searchForm.title"
@
parentChange=
"titleChange"
:title=
"'职称'"
:objType=
"'project'"
:typeId=
"7"
:width=
"150"
/>
</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-form-item>
</a-form>
<a-divider
style=
"height: 1px; background-color: #e8e8e8;"
/>
<div
class=
"submit-btn"
>
<!--
<a-button
type=
"primary"
@
click=
"addExpert"
>
添加
</a-button>
<a-button
type=
"primary"
@
click=
"importExcel"
>
导入
</a-button>
-->
<a-button
type=
"primary"
@
click=
"exporExcel"
>
导出excel
</a-button>
</div>
<a-table
:dataSource=
"tableData"
:columns=
"columns"
rowKey=
"id"
:pagination=
"false"
:loading=
"loading"
>
<template
slot=
"personName"
slot-scope=
"record"
>
<a
@
click=
"recordClick(record,'view')"
>
{{
record
.
personName
}}
</a>
</
template
>
<
template
slot=
"spec"
slot-scope=
"record"
>
<span
v-for=
"data in record.specList"
:key=
"data.id"
:color=
"'green'"
>
{{
data
.
specName
+
' '
}}
</span>
</
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=
"visibleView"
title=
"查看"
width=
"700px"
:dialog-style=
"{ top: '10%' }"
:footer=
"null"
destroyOnClose
>
<expert-view
v-model=
"id"
></expert-view>
</a-modal>
<a-modal
v-model=
"visibleEdit"
title=
"添加/修改"
width=
"850px"
:dialog-style=
"{ top: '10%' }"
:footer=
"null"
destroyOnClose
>
<expert-edit
v-model=
"id"
@
close=
"closeWindow"
></expert-edit>
</a-modal>
<a-modal
v-model=
"visibleImport"
title=
"专家导入"
width=
"80%"
:dialog-style=
"{ top: '8%' }"
:footer=
"null"
destroyOnClose
>
<expert-import
@
save=
"importSave"
/>
</a-modal>
</div>
</template>
<
script
>
import
{
getType
}
from
'@/views/utils/auth'
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
}
from
"@/views/utils/common"
;
import
moment
from
'moment'
;
import
expertView
from
'./components/expertView'
import
expertEdit
from
'./components/expertEdit'
;
import
expertImport
from
'./components/expertImport'
;
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
export
default
{
name
:
'evaluationStatistic'
,
components
:
{
expertView
,
expertEdit
,
expertImport
,
cascaderSelect
},
data
()
{
return
{
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
searchForm
:
{
groupYear
:
null
,
personName
:
null
,
certId
:
null
,
sex
:
''
,
unitName
:
null
,
workUnit
:
null
,
username
:
null
,
remark
:
null
,
title
:
null
,
titleParentId
:
null
,
spec
:
null
,
specParentId
:
null
},
tableData
:
[],
columns
:
[
{
title
:
"姓名"
,
scopedSlots
:
{
customRender
:
'personName'
,
colName
:
'personName'
},
align
:
'center'
},
// { title: '证件号', dataIndex: 'certId', align: 'center' },
// { title: '性别', dataIndex: 'sex', align: 'center' },
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'评审专业'
,
dataIndex
:
'specName'
,
width
:
'20%'
,
ellipsis
:
true
},
// { title: '评审专业', scopedSlots: { customRender: 'spec' }, width: '10%', ellipsis: true },
{
title
:
'单位'
,
dataIndex
:
'unitName'
,
align
:
'center'
},
{
title
:
'用户名'
,
dataIndex
:
'username'
,
align
:
'center'
},
{
title
:
'密码'
,
dataIndex
:
'password'
,
align
:
'center'
},
{
title
:
'年度'
,
dataIndex
:
'groupYear'
,
align
:
'center'
},
{
title
:
'评审项目数'
,
dataIndex
:
'projectCount'
,
align
:
'center'
},
],
excelCol
:
[
{
title
:
"姓名"
,
dataIndex
:
'personName'
},
{
title
:
'职称'
,
dataIndex
:
'titleName'
},
{
title
:
'评审专业'
,
dataIndex
:
'specName'
},
{
title
:
'单位'
,
dataIndex
:
'unitName'
},
{
title
:
'用户名'
,
dataIndex
:
'username'
},
{
title
:
'密码'
,
dataIndex
:
'password'
},
{
title
:
'年度'
,
dataIndex
:
'groupYear'
},
{
title
:
'评审项目数'
,
dataIndex
:
'projectCount'
},
],
pagination
:
{
pageIndex
:
1
,
pageSize
:
this
.
$defaultPageSize
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
loading
:
false
,
// 弹窗
visibleView
:
false
,
visibleEdit
:
false
,
visibleImport
:
false
,
isTopGov
:
false
,
id
:
null
,
YearData
:
null
,
}
},
created
()
{
this
.
getYearInfo
()
},
methods
:
{
moment
,
getYearInfo
()
{
let
pars
=
{
batch
:
1
,
projType
:
getType
()
}
this
.
$api
.
batch
.
getBatchList
({
...
pars
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
YearData
=
data
this
.
getYear
()
}
}).
catch
(()
=>
{
})
},
getYear
()
{
this
.
$api
.
batch
.
getCurrentYearBatch
({
type
:
1
,
projType
:
getType
()
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
searchForm
.
groupYear
=
data
.
year
this
.
getListByPage
()
}
}).
catch
(()
=>
{
})
},
search
()
{
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
()
},
reset
()
{
this
.
searchForm
=
{
groupYear
:
null
,
personName
:
null
,
certId
:
null
,
sex
:
''
,
unitName
:
null
,
workUnit
:
null
,
username
:
null
,
remark
:
null
,
title
:
null
,
titleParentId
:
null
,
spec
:
null
,
specParentId
:
null
}
this
.
pagination
.
pageIndex
=
1
this
.
getYearInfo
()
},
getListByPage
()
{
this
.
loading
=
true
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
par
=
{
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
this
.
$api
.
expert
.
getEcaluationStatisticListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
tableData
=
dataList
this
.
pagination
.
total
=
total
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
handleYearChange
(
value
)
{
this
.
searchForm
.
groupYear
=
value
},
change
()
{
this
.
getListByPage
()
},
showSizeChange
(
current
,
pageSize
)
{
this
.
pagination
.
pageSize
=
pageSize
this
.
getListByPage
()
},
importSave
(
value
)
{
this
.
visibleImport
=
false
;
},
importExcel
()
{
this
.
visibleImport
=
true
;
},
exporExcel
()
{
this
.
loading
=
true
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
par
=
{
...
pars
,
pageIndex
:
-
1
,
pageSize
:
-
1
}
this
.
$api
.
expert
.
getEcaluationStatisticListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
$ToDoExcel
(
`专家列表`
,
tableColumnsName
(
this
.
excelCol
),
filterExportExcelData
(
this
.
excelCol
,
dataList
))
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
titleChange
(
value
)
{
this
.
searchForm
.
titleParentId
=
value
},
specChange
(
value
)
{
this
.
searchForm
.
specParentId
=
value
},
recordClick
(
record
,
type
)
{
if
(
type
===
'view'
)
{
this
.
id
=
record
.
id
this
.
visibleView
=
true
}
else
if
(
type
===
'edit'
)
{
this
.
id
=
record
.
id
this
.
visibleEdit
=
true
}
else
if
(
type
===
'reset'
)
{
this
.
resetPwd
(
record
)
}
else
if
(
type
===
'del'
)
{
this
.
deleteExpert
(
record
.
id
,
record
.
userRoleId
)
}
else
if
(
type
===
'report'
)
{
this
.
$api
.
expert
.
update
({
id
:
record
.
id
,
reportState
:
2
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
$message
.
success
(
'上报成功!'
)
this
.
getListByPage
()
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
}
},
resetPwd
(
record
)
{
let
self
=
this
this
.
$confirm
({
title
:
'重置密码'
,
content
:
'重置后密码为"ky123456"确定要重置密码?'
,
okText
:
'确定'
,
okType
:
'danger'
,
cancelText
:
'取消'
,
onOk
()
{
self
.
loading
=
true
let
par
=
{
id
:
record
.
userId
}
self
.
$api
.
systemUser
.
resetUserPwd
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
self
.
$message
.
success
(
'重置成功!'
)
self
.
getListByPage
()
}
self
.
loading
=
false
}).
catch
(()
=>
{
self
.
loading
=
false
})
},
onCancel
()
{
},
})
},
checkedState
(
record
)
{
return
record
.
expertStateName
===
"启用"
?
true
:
false
},
switchChange
(
checked
,
record
)
{
//启用/停用单位开关
if
(
checked
)
{
record
.
expertStateName
=
"启用"
;
record
.
expertState
=
1
;
}
else
{
record
.
expertStateName
=
"停用"
;
record
.
expertState
=
2
;
}
this
.
loading
=
true
let
par
=
{
id
:
record
.
id
,
userRoleId
:
record
.
userRoleId
,
expertState
:
record
.
expertState
}
this
.
$api
.
expert
.
updateExpertState
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
$message
.
success
(
'修改成功!'
)
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
closeWindow
(
value
)
{
if
(
value
===
'edit'
)
{
this
.
visibleEdit
=
false
this
.
getListByPage
()
}
else
this
.
visibleView
=
false
},
addExpert
()
{
this
.
visibleEdit
=
true
this
.
id
=
null
},
deleteExpert
(
id
,
userRoleId
)
{
let
self
=
this
this
.
$confirm
({
title
:
'管理员删除'
,
content
:
'确定要删除?'
,
okText
:
'确定'
,
okType
:
'danger'
,
cancelText
:
'取消'
,
onOk
()
{
self
.
loading
=
true
self
.
$api
.
expert
.
deleteExpert
({
id
:
id
,
userRoleId
:
userRoleId
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
self
.
$message
.
success
(
'删除成功'
)
self
.
getListByPage
()
}
self
.
loading
=
false
}).
catch
(()
=>
{
self
.
loading
=
false
})
},
onCancel
()
{
},
})
},
}
}
</
script
>
\ No newline at end of file
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