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
34af010a
Commit
34af010a
authored
Mar 28, 2025
by
wangxl
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.yiboshi.com/XuJun/yn-science-front
parents
16241271
52a85e8b
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
3190 additions
and
50 deletions
+3190
-50
index.js
src/api/index.js
+9
-0
Index.vue
src/views/report/talent/Index.vue
+39
-7
budgetEdit.vue
src/views/report/talent/components/budgetEdit.vue
+59
-0
budgetFiveEdit.vue
src/views/report/talent/components/budgetFiveEdit.vue
+291
-0
budgetFiveInfo.vue
src/views/report/talent/components/budgetFiveInfo.vue
+257
-0
budgetInfo.vue
src/views/report/talent/components/budgetInfo.vue
+53
-0
budgetThreeEdit.vue
src/views/report/talent/components/budgetThreeEdit.vue
+248
-0
budgetThreeInfo.vue
src/views/report/talent/components/budgetThreeInfo.vue
+213
-0
fileEdit.vue
src/views/report/talent/components/fileEdit.vue
+115
-0
fileInfo.vue
src/views/report/talent/components/fileInfo.vue
+110
-0
membersEdit.vue
src/views/report/talent/components/membersEdit.vue
+163
-0
membersInfo.vue
src/views/report/talent/components/membersInfo.vue
+115
-0
resumeInfo.vue
src/views/report/talent/components/resumeInfo.vue
+202
-3
scientificGainEdit.vue
src/views/report/talent/components/scientificGainEdit.vue
+158
-19
scientificGainInfo.vue
src/views/report/talent/components/scientificGainInfo.vue
+314
-4
talentCreate.vue
src/views/report/talent/components/talentCreate.vue
+1
-1
talentEdit.vue
src/views/report/talent/components/talentEdit.vue
+253
-10
talentInfo.vue
src/views/report/talent/components/talentInfo.vue
+521
-3
talentView.vue
src/views/report/talent/components/talentView.vue
+69
-3
No files found.
src/api/index.js
View file @
34af010a
...
@@ -485,6 +485,12 @@ export default {
...
@@ -485,6 +485,12 @@ export default {
save
(
params
)
{
save
(
params
)
{
return
fetch
(
`/v1/science-admin/com-talent-apply/save`
,
params
,
'post'
,
'json'
)
return
fetch
(
`/v1/science-admin/com-talent-apply/save`
,
params
,
'post'
,
'json'
)
},
},
delete
(
params
)
{
return
fetch
(
`/v1/science-admin/com-talent-apply/delete/
${
params
.
id
}
`
,
params
,
'delete'
,
'json'
)
},
report
(
params
)
{
return
fetch
(
`/v1/science-admin/com-talent-apply/report`
,
params
,
'post'
,
'json'
)
},
},
},
task
:
{
task
:
{
getListByPage
(
params
)
{
getListByPage
(
params
)
{
...
@@ -791,6 +797,9 @@ export default {
...
@@ -791,6 +797,9 @@ export default {
save
(
params
)
{
save
(
params
)
{
return
fetch
(
`/v1/science-admin/system-set/save`
,
params
,
'post'
,
'json'
)
return
fetch
(
`/v1/science-admin/system-set/save`
,
params
,
'post'
,
'json'
)
},
},
getTalentTraningInfo
(
params
)
{
return
fetch
(
`/v1/science-admin/system-set/getTalentTraningInfo`
,
params
)
},
},
},
parameter
:
{
parameter
:
{
getListByPage
(
params
)
{
getListByPage
(
params
)
{
...
...
src/views/report/talent/Index.vue
View file @
34af010a
...
@@ -30,15 +30,18 @@
...
@@ -30,15 +30,18 @@
<
template
slot=
"option"
slot-scope=
"record"
>
<
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,'view')"
>
查看
</a-button>
<a-button
type=
"link"
size=
"small"
@
click=
"recordClick(record,'edit')"
>
修改
</a-button>
<a-button
type=
"link"
size=
"small"
@
click=
"recordClick(record,'edit')"
>
修改
</a-button>
<a-button
type=
"link"
size=
"small"
@
click=
"recordClick(record,'reset')"
>
重置密码
</a-button>
<a-popconfirm
title=
"确定要上报吗?"
v-if=
"((record.talentState == 10 || record.talentState == 30))"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"recordClick(record,'report')"
>
<a-button
type=
"link"
size=
"small"
>
上报
</a-button>
</a-popconfirm>
<a-button
type=
"link"
size=
"small"
v-if=
"record.talentState
<
=
10
"
@
click=
"recordClick(record,'delete')"
>
删除
</a-button>
</
template
>
</
template
>
</a-table>
</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-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=
"visibleEdit"
v-if=
"visibleEdit"
title=
"人才申报创建/修改"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<a-modal
v-model=
"visibleEdit"
v-if=
"visibleEdit"
title=
"人才申报创建/修改"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<talent-create
v-model=
"id"
@
close=
"closeWindow"
></talent-create>
<talent-create
v-model=
"id"
@
close=
"closeWindow"
></talent-create>
</a-modal>
</a-modal>
<a-modal
v-model=
"visibleView"
title=
"查看"
width=
"
700px"
:footer=
"null"
destroyOnClose
>
<a-modal
v-model=
"visibleView"
title=
"查看"
width=
"
94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<talent-
info
v-model=
"id"
></talent-info
>
<talent-
view
v-model=
"id"
@
close=
"closeWindow"
></talent-view
>
</a-modal>
</a-modal>
</div>
</div>
</template>
</template>
...
@@ -46,12 +49,12 @@
...
@@ -46,12 +49,12 @@
<
script
>
<
script
>
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
}
from
"@/views/utils/common"
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
}
from
"@/views/utils/common"
import
talentCreate
from
"@/views/report/talent/components/talentCreate"
import
talentCreate
from
"@/views/report/talent/components/talentCreate"
import
talent
Info
from
"@/views/report/talent/components/talentInfo
"
import
talent
View
from
"@/views/report/talent/components/talentView
"
export
default
{
export
default
{
name
:
"reportTalent"
,
name
:
"reportTalent"
,
components
:
{
components
:
{
talentCreate
,
talent
Info
talentCreate
,
talent
View
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -75,7 +78,7 @@ export default {
...
@@ -75,7 +78,7 @@ export default {
{
title
:
'专业'
,
dataIndex
:
'specName'
,
align
:
'center'
},
{
title
:
'专业'
,
dataIndex
:
'specName'
,
align
:
'center'
},
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'职称'
,
dataIndex
:
'titleName'
,
align
:
'center'
},
{
title
:
'申报年度'
,
dataIndex
:
'reportYear'
,
align
:
'center'
},
{
title
:
'申报年度'
,
dataIndex
:
'reportYear'
,
align
:
'center'
},
{
title
:
'状态'
,
scopedSlots
:
{
customRender
:
'state'
}
,
align
:
'center'
},
{
title
:
'状态'
,
dataIndex
:
'talentStateName'
,
align
:
'center'
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
180
,
},
{
title
:
'操作'
,
scopedSlots
:
{
customRender
:
'option'
},
align
:
'center'
,
fixed
:
'right'
,
width
:
180
,
},
],
],
pagination
:
{
pagination
:
{
...
@@ -177,7 +180,36 @@ export default {
...
@@ -177,7 +180,36 @@ export default {
this
.
id
=
record
.
id
this
.
id
=
record
.
id
this
.
visibleEdit
=
true
this
.
visibleEdit
=
true
}
else
if
(
type
===
'delete'
)
{
}
else
if
(
type
===
'delete'
)
{
let
self
=
this
this
.
$confirm
({
title
:
''
,
content
:
'确定要删除该人才申报记录?'
,
okText
:
'确定'
,
okType
:
'danger'
,
cancelText
:
'取消'
,
onOk
()
{
self
.
loading
=
true
let
par
=
{
id
:
record
.
id
}
self
.
$api
.
talent
.
delete
(
par
).
then
(({
code
,
data
})
=>
{
if
(
data
)
{
self
.
$message
.
success
(
'删除成功!'
)
self
.
getListByPage
()
}
self
.
loading
=
false
}).
catch
(()
=>
{
self
.
loading
=
false
})
},
onCancel
()
{
},
})
}
else
if
(
type
===
'report'
)
{
this
.
loading
=
true
this
.
$api
.
talent
.
report
({
auditObjectId
:
record
.
id
,
auditType
:
6
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
$message
.
success
(
'上报成功!'
)
this
.
getListByPage
()
}
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
}
}
},
},
exportData
()
{
exportData
()
{
...
...
src/views/report/talent/components/budgetEdit.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<div
v-if=
"budgetCategory"
>
<budget-five-edit
ref=
"talentBudgetA"
:budgetList
.
sync=
"budgetList"
></budget-five-edit>
</div>
<div
v-else
>
<budget-three-edit
ref=
"talentBudgetB"
:budgetList
.
sync=
"budgetList"
></budget-three-edit>
</div>
</div>
</
template
>
<
script
>
import
budgetFiveEdit
from
'@/views/report/talent/components/budgetFiveEdit'
import
budgetThreeEdit
from
'@/views/report/talent/components/budgetThreeEdit'
export
default
{
name
:
"budgetEdit"
,
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
},
budgetType
:
{
type
:
Object
,
default
:
()
=>
{
return
null
}
}
},
components
:
{
budgetFiveEdit
,
budgetThreeEdit
,
},
data
()
{
return
{
budgetCategory
:
null
,
}
},
created
()
{
if
(
!
this
.
budgetType
)
{
if
(
this
.
budgetType
.
type
===
'HTTalent'
)
{
this
.
budgetCategory
=
true
}
else
{
this
.
budgetCategory
=
false
}
}
},
methods
:
{
getTotalFee
()
{
if
(
this
.
budgetType
.
type
===
'HTTalent'
)
{
return
this
.
$refs
.
talentBudgetA
?
this
.
$refs
.
talentBudgetA
.
getTotalFee
()
:
0
}
else
{
return
this
.
$refs
.
talentBudgetB
?
this
.
$refs
.
talentBudgetB
.
getTotalFee
()
:
0
}
}
}
}
</
script
>
src/views/report/talent/components/budgetFiveEdit.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助的预算支出科目
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第一年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第二年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第三年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第四年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第五年
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
费用
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in budgetList"
:key=
"index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
style=
"text-align: left;"
>
<div
class=
"special-middle"
v-if=
"item.isRequired"
>
{{
item
.
budgetName
}}
</div>
<div
class=
"special-middle"
v-else
>
<a-form-model-item
:prop=
"'budgetList.' + index + '.budgetName'"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.budgetName"
:maxLength=
"50"
style=
"width:85%"
/>
</a-form-model-item>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue1.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue1'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue1"
@
change=
"YearValue1Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue2.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue2'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue2"
@
change=
"YearValue2Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue3.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue3'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue3"
@
change=
"YearValue3Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue4.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue4'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue4"
@
change=
"YearValue4Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue4
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue5.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue5'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue5"
@
change=
"YearValue5Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue5
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
amountFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
v-if=
"!item.isRequired"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteBudgetArray(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
合计
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue4
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue5
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addBudgetArray()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
const
Budget
=
{
id
:
null
,
talentId
:
null
,
budgetId
:
"00000000-0000-0000-0000-000000000000"
,
yearValue1
:
0.00
,
yearValue2
:
0.00
,
yearValue3
:
0.00
,
yearValue4
:
0.00
,
yearValue5
:
0.00
,
amountFee
:
0.00
,
showIndex
:
null
,
isRequired
:
false
}
export
default
{
name
:
"budgetFiveEdit"
,
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
}
},
data
()
{
return
{
totalYearValue1
:
0.00
,
totalYearValue2
:
0.00
,
totalYearValue3
:
0.00
,
totalYearValue4
:
0.00
,
totalYearValue5
:
0.00
,
totalFee
:
0.00
,
invisibleYearValue1
:
[
2
,
8
],
invisibleYearValue2
:
[
2
,
8
],
invisibleYearValue3
:
[
2
,
8
],
invisibleYearValue4
:
[
2
,
8
],
invisibleYearValue5
:
[
2
,
8
],
}
},
created
()
{
this
.
calTotalFee
()
},
methods
:
{
FeeChange
(
index
)
{
if
(
index
==
0
)
this
.
educationFee
()
else
if
(
index
==
1
)
this
.
scienceFee
()
else
if
(
index
>
2
&&
index
<
8
)
this
.
researchFee
(
index
)
else
if
(
this
.
budgetList
.
length
>
8
)
this
.
otherFee
(
index
)
this
.
calTotalFee
()
},
YearValue1Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue2Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue3Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue4Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue5Change
(
index
)
{
this
.
FeeChange
(
index
)
},
calTotalFee
()
{
this
.
totalYearValue1
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue1
this
.
totalYearValue2
=
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue2
this
.
totalYearValue3
=
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue3
this
.
totalYearValue4
=
this
.
budgetList
[
0
].
yearValue4
+
this
.
budgetList
[
1
].
yearValue4
+
this
.
budgetList
[
2
].
yearValue4
+
this
.
budgetList
[
8
].
yearValue4
this
.
totalYearValue5
=
this
.
budgetList
[
0
].
yearValue5
+
this
.
budgetList
[
1
].
yearValue5
+
this
.
budgetList
[
2
].
yearValue5
+
this
.
budgetList
[
8
].
yearValue5
this
.
totalFee
=
this
.
totalYearValue1
+
this
.
totalYearValue2
+
this
.
totalYearValue3
+
this
.
totalYearValue4
+
this
.
totalYearValue5
},
//一、国内外进修费用
educationFee
()
{
this
.
budgetList
[
0
].
amountFee
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
0
].
yearValue4
+
this
.
budgetList
[
0
].
yearValue5
},
//二、学术交流费用
scienceFee
()
{
this
.
budgetList
[
1
].
amountFee
=
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue4
+
this
.
budgetList
[
1
].
yearValue5
},
//三、研究费用
researchFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
+
this
.
budgetList
[
index
].
yearValue4
+
this
.
budgetList
[
index
].
yearValue5
this
.
budgetList
[
2
].
yearValue1
=
0.00
this
.
budgetList
[
2
].
yearValue2
=
0.00
this
.
budgetList
[
2
].
yearValue3
=
0.00
this
.
budgetList
[
2
].
yearValue4
=
0.00
this
.
budgetList
[
2
].
yearValue5
=
0.00
for
(
let
i
=
3
;
i
<=
7
;
i
++
)
{
this
.
budgetList
[
2
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
2
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
2
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
this
.
budgetList
[
2
].
yearValue4
+=
this
.
budgetList
[
i
].
yearValue4
this
.
budgetList
[
2
].
yearValue5
+=
this
.
budgetList
[
i
].
yearValue5
}
this
.
budgetList
[
2
].
amountFee
=
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue4
+
this
.
budgetList
[
2
].
yearValue5
},
//四、其他费用
otherFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
+
this
.
budgetList
[
index
].
yearValue4
+
this
.
budgetList
[
index
].
yearValue5
this
.
budgetList
[
8
].
yearValue1
=
0.00
this
.
budgetList
[
8
].
yearValue2
=
0.00
this
.
budgetList
[
8
].
yearValue3
=
0.00
this
.
budgetList
[
8
].
yearValue4
=
0.00
this
.
budgetList
[
8
].
yearValue5
=
0.00
for
(
let
i
=
9
;
i
<
this
.
budgetList
.
length
;
i
++
)
{
this
.
budgetList
[
8
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
8
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
8
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
this
.
budgetList
[
8
].
yearValue4
+=
this
.
budgetList
[
i
].
yearValue4
this
.
budgetList
[
8
].
yearValue5
+=
this
.
budgetList
[
i
].
yearValue5
}
this
.
budgetList
[
8
].
amountFee
=
this
.
budgetList
[
8
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue4
+
this
.
budgetList
[
8
].
yearValue5
},
addBudgetArray
()
{
const
newItem
=
{
...
Budget
,
showIndex
:
this
.
budgetList
.
length
+
1
}
this
.
budgetList
.
push
(
newItem
)
},
deleteBudgetArray
(
item
)
{
let
index
=
this
.
budgetList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
budgetList
.
splice
(
index
,
1
)
}
},
getTotalFee
()
{
return
parseFloat
(
this
.
totalFee
);
}
}
}
</
script
>
src/views/report/talent/components/budgetFiveInfo.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助的预算支出科目
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第一年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第二年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第三年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第四年
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第五年
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
费用
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in budgetList"
:key=
"index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
style=
"text-align: left;"
>
<div
class=
"special-middle"
>
{{
item
.
budgetName
}}
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue4
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue5
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
amountFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
合计
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue4
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue5
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
const
Budget
=
{
id
:
null
,
talentId
:
null
,
budgetId
:
"00000000-0000-0000-0000-000000000000"
,
yearValue1
:
0.00
,
yearValue2
:
0.00
,
yearValue3
:
0.00
,
yearValue4
:
0.00
,
yearValue5
:
0.00
,
amountFee
:
0.00
,
showIndex
:
null
,
isRequired
:
false
}
export
default
{
name
:
"budgetFiveInfo"
,
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
}
},
data
()
{
return
{
totalYearValue1
:
0.00
,
totalYearValue2
:
0.00
,
totalYearValue3
:
0.00
,
totalYearValue4
:
0.00
,
totalYearValue5
:
0.00
,
totalFee
:
0.00
,
invisibleYearValue1
:
[
2
,
8
],
invisibleYearValue2
:
[
2
,
8
],
invisibleYearValue3
:
[
2
,
8
],
invisibleYearValue4
:
[
2
,
8
],
invisibleYearValue5
:
[
2
,
8
],
}
},
created
()
{
//this.calTotalFee()
},
methods
:
{
FeeChange
(
index
)
{
if
(
index
==
0
)
this
.
educationFee
()
else
if
(
index
==
1
)
this
.
scienceFee
()
else
if
(
index
>
2
&&
index
<
8
)
this
.
researchFee
(
index
)
else
if
(
this
.
budgetList
.
length
>
8
)
this
.
otherFee
(
index
)
this
.
calTotalFee
()
},
YearValue1Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue2Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue3Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue4Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue5Change
(
index
)
{
this
.
FeeChange
(
index
)
},
calTotalFee
()
{
this
.
totalYearValue1
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue1
this
.
totalYearValue2
=
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue2
this
.
totalYearValue3
=
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue3
this
.
totalYearValue4
=
this
.
budgetList
[
0
].
yearValue4
+
this
.
budgetList
[
1
].
yearValue4
+
this
.
budgetList
[
2
].
yearValue4
+
this
.
budgetList
[
8
].
yearValue4
this
.
totalYearValue5
=
this
.
budgetList
[
0
].
yearValue5
+
this
.
budgetList
[
1
].
yearValue5
+
this
.
budgetList
[
2
].
yearValue5
+
this
.
budgetList
[
8
].
yearValue5
this
.
totalFee
=
this
.
totalYearValue1
+
this
.
totalYearValue2
+
this
.
totalYearValue3
+
+
this
.
totalYearValue4
+
this
.
totalYearValue5
},
//一、国内外进修费用
educationFee
()
{
this
.
budgetList
[
0
].
amountFee
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
0
].
yearValue4
+
this
.
budgetList
[
0
].
yearValue5
},
//二、学术交流费用
scienceFee
()
{
this
.
budgetList
[
1
].
amountFee
=
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue4
+
this
.
budgetList
[
1
].
yearValue5
},
//三、研究费用
researchFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
+
this
.
budgetList
[
index
].
yearValue4
+
this
.
budgetList
[
index
].
yearValue5
this
.
budgetList
[
2
].
yearValue1
=
0.00
this
.
budgetList
[
2
].
yearValue2
=
0.00
this
.
budgetList
[
2
].
yearValue3
=
0.00
this
.
budgetList
[
2
].
yearValue4
=
0.00
this
.
budgetList
[
2
].
yearValue5
=
0.00
for
(
let
i
=
3
;
i
<=
7
;
i
++
)
{
this
.
budgetList
[
2
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
2
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
2
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
this
.
budgetList
[
2
].
yearValue4
+=
this
.
budgetList
[
i
].
yearValue4
this
.
budgetList
[
2
].
yearValue5
+=
this
.
budgetList
[
i
].
yearValue5
}
this
.
budgetList
[
2
].
amountFee
=
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue4
+
this
.
budgetList
[
2
].
yearValue5
},
//四、其他费用
otherFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
+
this
.
budgetList
[
index
].
yearValue4
+
this
.
budgetList
[
index
].
yearValue5
this
.
budgetList
[
8
].
yearValue1
=
0.00
this
.
budgetList
[
8
].
yearValue2
=
0.00
this
.
budgetList
[
8
].
yearValue3
=
0.00
this
.
budgetList
[
8
].
yearValue4
=
0.00
this
.
budgetList
[
8
].
yearValue5
=
0.00
for
(
let
i
=
9
;
i
<
this
.
budgetList
.
length
;
i
++
)
{
this
.
budgetList
[
8
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
8
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
8
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
this
.
budgetList
[
8
].
yearValue4
+=
this
.
budgetList
[
i
].
yearValue4
this
.
budgetList
[
8
].
yearValue5
+=
this
.
budgetList
[
i
].
yearValue5
}
this
.
budgetList
[
8
].
amountFee
=
this
.
budgetList
[
8
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue4
+
this
.
budgetList
[
8
].
yearValue5
},
addBudgetArray
()
{
const
newItem
=
{
...
Budget
,
showIndex
:
this
.
budgetList
.
length
+
1
}
this
.
budgetList
.
push
(
newItem
)
},
deleteBudgetArray
(
item
)
{
let
index
=
this
.
budgetList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
budgetList
.
splice
(
index
,
1
)
}
},
getTotalFee
()
{
return
parseFloat
(
this
.
totalFee
);
}
},
watch
:
{
budgetList
:
{
handler
(
budgetList
)
{
this
.
calTotalFee
()
}
}
}
}
</
script
>
src/views/report/talent/components/budgetInfo.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<div
v-if=
"budgetCategory"
>
<budget-five-info
:budgetList
.
sync=
"budgetList"
></budget-five-info>
</div>
<div
v-else
>
<budget-three-info
:budgetList
.
sync=
"budgetList"
></budget-three-info>
</div>
</div>
</
template
>
<
script
>
import
budgetFiveInfo
from
'@/views/report/talent/components/budgetFiveInfo'
import
budgetThreeInfo
from
'@/views/report/talent/components/budgetThreeInfo'
export
default
{
name
:
"budgetInfo"
,
components
:
{
budgetFiveInfo
,
budgetThreeInfo
,
},
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
},
budgetType
:
{
type
:
Object
,
default
:
()
=>
{
return
null
}
}
},
data
()
{
return
{
budgetCategory
:
null
,
}
},
created
()
{
if
(
!
this
.
budgetType
)
{
if
(
this
.
budgetType
.
type
===
'HTTalent'
)
{
this
.
budgetCategory
=
true
}
else
{
this
.
budgetCategory
=
false
}
}
},
methods
:
{
},
}
</
script
>
src/views/report/talent/components/budgetThreeEdit.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助的预算支出科目
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第一年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第二年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第三年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
费用
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in budgetList"
:key=
"index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
style=
"text-align: left;"
>
<div
class=
"special-middle"
v-if=
"item.isRequired"
>
{{
item
.
budgetName
}}
</div>
<div
class=
"special-middle"
v-else
>
<a-form-model-item
:prop=
"'budgetList.' + index + '.budgetName'"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.budgetName"
:maxLength=
"50"
style=
"width:85%"
/>
</a-form-model-item>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue1.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue1'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue1"
@
change=
"YearValue1Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue2.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue2'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue2"
@
change=
"YearValue2Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<a-form-model-item
v-if=
"!invisibleYearValue3.includes(index)"
:prop=
"'budgetList.' + index + '.yearValue3'"
:rules=
"
{required: true, message: '*', trigger: 'blur',}">
<a-input-number
v-model=
"item.yearValue3"
@
change=
"YearValue3Change(index)"
:min=
"0"
:step=
"0.01"
style=
"width: 80%"
/>
</a-form-model-item>
<div
v-else
>
{{
parseFloat
(
item
.
yearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
amountFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
v-if=
"!item.isRequired"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteBudgetArray(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
合计
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addBudgetArray()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
const
Budget
=
{
id
:
null
,
talentId
:
null
,
budgetId
:
"00000000-0000-0000-0000-000000000000"
,
yearValue1
:
0.00
,
yearValue2
:
0.00
,
yearValue3
:
0.00
,
yearValue4
:
0.00
,
yearValue5
:
0.00
,
amountFee
:
0.00
,
showIndex
:
null
,
isRequired
:
false
}
export
default
{
name
:
"budgetThreeEdit"
,
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
}
},
data
()
{
return
{
totalYearValue1
:
0.00
,
totalYearValue2
:
0.00
,
totalYearValue3
:
0.00
,
totalYearValue4
:
0.00
,
totalYearValue5
:
0.00
,
totalFee
:
0.00
,
invisibleYearValue1
:
[
2
,
8
],
invisibleYearValue2
:
[
2
,
8
],
invisibleYearValue3
:
[
2
,
8
],
invisibleYearValue4
:
[
2
,
8
],
invisibleYearValue5
:
[
2
,
8
],
}
},
created
()
{
this
.
calTotalFee
()
},
methods
:
{
FeeChange
(
index
)
{
if
(
index
==
0
)
this
.
educationFee
()
else
if
(
index
==
1
)
this
.
scienceFee
()
else
if
(
index
>
2
&&
index
<
8
)
this
.
researchFee
(
index
)
else
if
(
this
.
budgetList
.
length
>
8
)
this
.
otherFee
(
index
)
this
.
calTotalFee
()
},
YearValue1Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue2Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue3Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue4Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue5Change
(
index
)
{
this
.
FeeChange
(
index
)
},
calTotalFee
()
{
this
.
totalYearValue1
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue1
this
.
totalYearValue2
=
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue2
this
.
totalYearValue3
=
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue3
this
.
totalFee
=
this
.
totalYearValue1
+
this
.
totalYearValue2
+
this
.
totalYearValue3
},
//一、国内外进修费用
educationFee
()
{
this
.
budgetList
[
0
].
amountFee
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
0
].
yearValue3
},
//二、学术交流费用
scienceFee
()
{
this
.
budgetList
[
1
].
amountFee
=
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue3
},
//三、研究费用
researchFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
this
.
budgetList
[
2
].
yearValue1
=
0.00
this
.
budgetList
[
2
].
yearValue2
=
0.00
this
.
budgetList
[
2
].
yearValue3
=
0.00
for
(
let
i
=
3
;
i
<=
7
;
i
++
)
{
this
.
budgetList
[
2
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
2
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
2
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
}
this
.
budgetList
[
2
].
amountFee
=
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue3
},
//四、其他费用
otherFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
this
.
budgetList
[
8
].
yearValue1
=
0.00
this
.
budgetList
[
8
].
yearValue2
=
0.00
this
.
budgetList
[
8
].
yearValue3
=
0.00
for
(
let
i
=
9
;
i
<
this
.
budgetList
.
length
;
i
++
)
{
this
.
budgetList
[
8
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
8
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
8
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
}
this
.
budgetList
[
8
].
amountFee
=
this
.
budgetList
[
8
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue3
},
addBudgetArray
()
{
const
newItem
=
{
...
Budget
,
showIndex
:
this
.
budgetList
.
length
+
1
}
this
.
budgetList
.
push
(
newItem
)
},
deleteBudgetArray
(
item
)
{
let
index
=
this
.
budgetList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
budgetList
.
splice
(
index
,
1
)
}
},
getTotalFee
()
{
return
parseFloat
(
this
.
totalFee
);
}
}
}
</
script
>
src/views/report/talent/components/budgetThreeInfo.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助的预算支出科目
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第一年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第二年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
第三年
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
费用
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in budgetList"
:key=
"index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
style=
"text-align: left;"
>
<div
class=
"special-middle"
>
{{
item
.
budgetName
}}
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
yearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
item
.
amountFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
合计
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue1
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue2
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalYearValue3
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
totalFee
).
toFixed
(
2
)
}}
</div>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
const
Budget
=
{
id
:
null
,
talentId
:
null
,
budgetId
:
"00000000-0000-0000-0000-000000000000"
,
yearValue1
:
0.00
,
yearValue2
:
0.00
,
yearValue3
:
0.00
,
yearValue4
:
0.00
,
yearValue5
:
0.00
,
amountFee
:
0.00
,
showIndex
:
null
,
isRequired
:
false
}
export
default
{
name
:
"budgetThreeInfo"
,
props
:
{
budgetList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Budget
}];
},
}
},
data
()
{
return
{
totalYearValue1
:
0.00
,
totalYearValue2
:
0.00
,
totalYearValue3
:
0.00
,
totalYearValue4
:
0.00
,
totalYearValue5
:
0.00
,
totalFee
:
0.00
,
invisibleYearValue1
:
[
2
,
8
],
invisibleYearValue2
:
[
2
,
8
],
invisibleYearValue3
:
[
2
,
8
],
invisibleYearValue4
:
[
2
,
8
],
invisibleYearValue5
:
[
2
,
8
],
}
},
created
()
{
//this.calTotalFee()
},
methods
:
{
FeeChange
(
index
)
{
if
(
index
==
0
)
this
.
educationFee
()
else
if
(
index
==
1
)
this
.
scienceFee
()
else
if
(
index
>
2
&&
index
<
8
)
this
.
researchFee
(
index
)
else
if
(
this
.
budgetList
.
length
>
8
)
this
.
otherFee
(
index
)
this
.
calTotalFee
()
},
YearValue1Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue2Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue3Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue4Change
(
index
)
{
this
.
FeeChange
(
index
)
},
YearValue5Change
(
index
)
{
this
.
FeeChange
(
index
)
},
calTotalFee
()
{
this
.
totalYearValue1
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue1
this
.
totalYearValue2
=
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue2
this
.
totalYearValue3
=
this
.
budgetList
[
0
].
yearValue3
+
this
.
budgetList
[
1
].
yearValue3
+
this
.
budgetList
[
2
].
yearValue3
+
this
.
budgetList
[
8
].
yearValue3
this
.
totalFee
=
this
.
totalYearValue1
+
this
.
totalYearValue2
+
this
.
totalYearValue3
},
//一、国内外进修费用
educationFee
()
{
this
.
budgetList
[
0
].
amountFee
=
this
.
budgetList
[
0
].
yearValue1
+
this
.
budgetList
[
0
].
yearValue2
+
this
.
budgetList
[
0
].
yearValue3
},
//二、学术交流费用
scienceFee
()
{
this
.
budgetList
[
1
].
amountFee
=
this
.
budgetList
[
1
].
yearValue1
+
this
.
budgetList
[
1
].
yearValue2
+
this
.
budgetList
[
1
].
yearValue3
},
//三、研究费用
researchFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
this
.
budgetList
[
2
].
yearValue1
=
0.00
this
.
budgetList
[
2
].
yearValue2
=
0.00
this
.
budgetList
[
2
].
yearValue3
=
0.00
for
(
let
i
=
3
;
i
<=
7
;
i
++
)
{
this
.
budgetList
[
2
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
2
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
2
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
}
this
.
budgetList
[
2
].
amountFee
=
this
.
budgetList
[
2
].
yearValue1
+
this
.
budgetList
[
2
].
yearValue2
+
this
.
budgetList
[
2
].
yearValue3
},
//四、其他费用
otherFee
(
index
)
{
this
.
budgetList
[
index
].
amountFee
=
this
.
budgetList
[
index
].
yearValue1
+
this
.
budgetList
[
index
].
yearValue2
+
this
.
budgetList
[
index
].
yearValue3
this
.
budgetList
[
8
].
yearValue1
=
0.00
this
.
budgetList
[
8
].
yearValue2
=
0.00
this
.
budgetList
[
8
].
yearValue3
=
0.00
for
(
let
i
=
9
;
i
<
this
.
budgetList
.
length
;
i
++
)
{
this
.
budgetList
[
8
].
yearValue1
+=
this
.
budgetList
[
i
].
yearValue1
this
.
budgetList
[
8
].
yearValue2
+=
this
.
budgetList
[
i
].
yearValue2
this
.
budgetList
[
8
].
yearValue3
+=
this
.
budgetList
[
i
].
yearValue3
}
this
.
budgetList
[
8
].
amountFee
=
this
.
budgetList
[
8
].
yearValue1
+
this
.
budgetList
[
8
].
yearValue2
+
this
.
budgetList
[
8
].
yearValue3
},
addBudgetArray
()
{
const
newItem
=
{
...
Budget
,
showIndex
:
this
.
budgetList
.
length
+
1
}
this
.
budgetList
.
push
(
newItem
)
},
deleteBudgetArray
(
item
)
{
let
index
=
this
.
budgetList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
budgetList
.
splice
(
index
,
1
)
}
},
getTotalFee
()
{
return
parseFloat
(
this
.
totalFee
);
}
},
watch
:
{
budgetList
:
{
handler
(
budgetList
)
{
this
.
calTotalFee
()
}
}
}
}
</
script
>
src/views/report/talent/components/fileEdit.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
附件
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件名称
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
是否必备材料
</div>
</div>
</a-col>
<a-col
:span=
"12"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件上传
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in fileList"
:key=
"'fileList' + index"
type=
"flex"
>
<a-col
:span=
"2"
style=
"text-align: center; margin-top: 8px;"
>
{{
index
+
1
}}
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
v-if=
"item.required"
>
{{
item
.
fileExplain
}}
</div>
<a-form-model-item
v-else
:prop=
"'fileList.' + index + '.fileExplain'"
:rules=
"
{required: item.isRequired, message: '*',trigger: 'blur',}">
<a-input
v-model=
"item.fileExplain"
:maxLength=
"100"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
style=
"text-align: center;"
>
<div>
{{
item
.
isRequired
==
true
&&
item
.
required
?
"是"
:
"否"
}}
</div>
</div>
</a-col>
<a-col
:span=
"12"
style=
"text-align: left;"
>
<div
v-if=
"!item.isTitle"
class=
"special-middle"
style=
"text-align: left;"
>
<file-load
:file
.
sync=
"fileList[index]"
:index=
"index"
:name=
"'fileList'"
:format=
"['doc', 'docx', 'pdf']"
/>
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div
v-if=
"!item.required"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removefileList(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<div>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addfileList()"
>
<a-icon
type=
"plus"
/>
添加
</a-button>
</div>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
const
File
=
{
fileName
:
null
,
downloadUrl
:
null
,
fileExplain
:
null
,
downloadId
:
null
,
isRequired
:
true
,
required
:
false
,
isTitle
:
false
};
export
default
{
name
:
"fileEdit"
,
props
:
{
fileList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
File
}];
},
},
},
data
()
{
return
{};
},
created
()
{
},
methods
:
{
// 添加附件
addfileList
()
{
this
.
fileList
.
push
(
Object
.
assign
({
...
File
},
{
fileExplain
:
''
}))
},
// 删除附件
removefileList
(
item
)
{
let
index
=
this
.
fileList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
fileList
.
splice
(
index
,
1
)
}
},
}
};
</
script
>
\ No newline at end of file
src/views/report/talent/components/fileInfo.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
附件
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"8"
class=
"bg-gray"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
文件名
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
是否必备材料
</div>
</div>
</a-col>
<a-col
:span=
"10"
class=
"bg-gray"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
附件名称
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in fileList"
:key=
"'appendix' + index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
{{
index
+
1
}}
</div>
</div>
</a-col>
<a-col
:span=
"8"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div
v-if=
"item.fileName"
style=
"text-align: left;"
>
<!--
{{
item
.
fileName
}}
-->
<document-view
:fileUrl=
"item.downloadUrl"
:fileName=
"item.fileName"
:imageArray=
"[item.downloadUrl]"
></document-view>
</div>
<div
v-else
>
无
</div>
</div>
</a-col>
<a-col
:span=
"2"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
isRequired
==
true
?
"是"
:
"否"
}}
</div>
</div>
</a-col>
<a-col
:span=
"10"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
fileExplain
}}
<span
v-if=
"item.isRequired"
style=
"color:red;"
>
*
</span></div>
</div>
</a-col>
<a-col
:span=
"2"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div
v-if=
"item.downloadUrl"
><a
:href=
"item.downloadUrl"
:download=
"item.fileName"
>
下载
</a></div>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
import
documentView
from
'@/views/components/common/documentView'
const
File
=
{
fileName
:
null
,
downloadUrl
:
null
,
fileExplain
:
null
,
downloadId
:
null
,
isRequired
:
true
,
required
:
false
,
isTitle
:
false
};
export
default
{
name
:
"fileInfo"
,
components
:
{
documentView
,
},
props
:
{
fileList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
File
}];
},
},
},
data
()
{
return
{};
},
created
()
{
},
methods
:
{
// 添加附件
addfileList
()
{
this
.
fileList
.
push
(
Object
.
assign
({
...
File
},
{
fileExplain
:
''
}))
},
// 删除附件
removefileList
(
item
)
{
let
index
=
this
.
fileList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
fileList
.
splice
(
index
,
1
)
}
},
}
};
</
script
>
\ No newline at end of file
src/views/report/talent/components/membersEdit.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
团队人员名单
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"1"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
序号
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
姓名
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
性别
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
出生日期
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
专业
</div>
</div>
</a-col>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
技术职称
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
单位
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
工作分工(限10字)
</div>
</div>
</a-col>
<a-col
:span=
"1"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
操作
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in membersList"
:key=
"'membersList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"1"
>
<div
style=
"margin-top:10px;"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"2"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.name'"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.name"
:maxLength=
"50"
placeholder=
"姓名"
style=
"width:85%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"2"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.sex'"
:rules=
"
{ required: true, message: '*', trigger: 'change',}">
<base-select
v-model=
"item.sex"
:type=
"16"
:isAll=
"true"
:width=
"100"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"2"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.birthday'"
:rules=
"
{ required: true, message: '*', trigger: 'change',}">
<a-date-picker
placeholder=
"请选择日期"
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"item.birthday"
style=
"width: 120px"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"3"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.spec'"
:rules=
"
{ required: true, message: '*', trigger: 'change',}">
<cascader-select
v-model=
"item.spec"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"5"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.title'"
:rules=
"
{ required: true, message: '*', trigger: 'change',}">
<para-multi-select
v-model=
"item.title"
:typeId=
"7"
:width=
"120"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"4"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.workUnit'"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.workUnit"
:maxLength=
"50"
placeholder=
"单位"
style=
"width:85%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"4"
>
<a-form-model-item
:prop=
"'membersList.' + index + '.projWork'"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-input
v-model=
"item.projWork"
:maxLength=
"100"
placeholder=
"项目分工"
style=
"width:85%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"1"
>
<div
class=
"special-middle"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteMemberArray(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addMemberArray()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
class=
"special-middle"
style=
"color:red;"
>
注:“申报人所在团队主要人员”应为申报人所在的学科人员
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
const
Member
=
{
id
:
null
,
talentId
:
null
,
name
:
null
,
sex
:
null
,
birthday
:
null
,
spec
:
null
,
title
:
null
,
workUnit
:
null
,
projWork
:
null
,
remark
:
null
,
showIndex
:
null
,
}
export
default
{
name
:
"membersEdit"
,
components
:
{
cascaderSelect
},
props
:
{
membersList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Member
}];
},
}
},
data
()
{
return
{};
},
created
()
{
},
methods
:
{
addMemberArray
()
{
const
newItem
=
{
...
Member
,
showIndex
:
this
.
membersList
.
length
+
1
}
this
.
membersList
.
push
(
newItem
)
},
deleteMemberArray
(
item
)
{
let
index
=
this
.
membersList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
membersList
.
splice
(
index
,
1
)
}
}
},
};
</
script
>
src/views/report/talent/components/membersInfo.vue
0 → 100644
View file @
34af010a
<
template
>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
团队人员名单
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"1"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
序号
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
姓名
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
性别
</div>
</div>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
出生日期
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
专业
</div>
</div>
</a-col>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
技术职称
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
单位
</div>
</div>
</a-col>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
工作分工(限10字)
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in membersList"
:key=
"'membersList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"1"
>
<div
style=
"margin-top:10px;"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
name
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
sex
}}
</div>
</div>
</a-col>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
item
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
specName
}}
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
titleName
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
workUnit
}}
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
projWork
}}
</div>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
import
moment
from
'moment'
export
default
{
name
:
"membersInfo"
,
props
:
{
membersList
:
{
type
:
Array
,
default
:
()
=>
{
return
[{
...
Member
}];
},
}
},
data
()
{
return
{};
},
methods
:
{
moment
,
},
};
</
script
>
src/views/report/talent/components/resumeInfo.vue
View file @
34af010a
<
template
>
<
template
>
<div>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人才简历
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<span>
学历(高中以上)
</span>
</div>
</a-col>
<a-col
:span=
"20"
>
<!-- 学历表格 -->
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
起止日期
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
学校
</div>
</div>
</a-col>
<a-col
:span=
"10"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
备注
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in educationList"
:key=
"'educationList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
item
.
resumeStart
).
format
(
'YYYY-MM-DD'
)
}}
至
{{
moment
(
item
.
resumeEnd
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
orgName
}}
</div>
</div>
</a-col>
<a-col
:span=
"10"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
resumeRemark
}}
</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<span>
研修经历
</span>
</div>
</a-col>
<a-col
:span=
"20"
>
<!-- 研修经历表格 -->
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
起止日期
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
机构(国别)
</div>
</div>
</a-col>
<a-col
:span=
"10"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
研修内容(限20字)
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in studyList"
:key=
"'studyList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
item
.
resumeStart
).
format
(
'YYYY-MM-DD'
)
}}
至
{{
moment
(
item
.
resumeEnd
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
orgName
}}
</div>
</div>
</a-col>
<a-col
:span=
"10"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
resumeRemark
}}
</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<span>
工作经历
</span>
</div>
</a-col>
<a-col
:span=
"20"
>
<!-- 工作经历表格 -->
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
起止日期
</div>
</div>
</a-col>
<a-col
:span=
"5"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
机构
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
职务
</div>
</div>
</a-col>
<a-col
:span=
"9"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
承担的主要工作(限20字)
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in workList"
:key=
"'workList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
item
.
resumeStart
).
format
(
'YYYY-MM-DD'
)
}}
至
{{
moment
(
item
.
resumeEnd
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
orgName
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
positionName
}}
</div>
</div>
</a-col>
<a-col
:span=
"9"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
resumeRemark
}}
</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
'moment'
export
default
{
export
default
{
name
:
"resumeInfo"
,
name
:
"resumeInfo"
,
props
:
{
props
:
{
budge
t
:
{
resumeLis
t
:
{
type
:
Array
,
type
:
Array
,
default
:
()
=>
{
default
:
()
=>
{
return
[];
return
[];
...
@@ -17,11 +167,59 @@ export default {
...
@@ -17,11 +167,59 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
educationList
:
[],
studyList
:
[],
workList
:
[],
};
};
},
created
()
{
},
},
methods
:
{
methods
:
{
moment
,
InitData
()
{
// 根据 resumeType 分类并排序
if
(
this
.
resumeList
&&
this
.
resumeList
.
length
>
0
)
{
// 学历记录
this
.
educationList
=
this
.
resumeList
.
filter
(
item
=>
item
.
resumeType
===
'e76f5097-fe28-11ef-b6cb-0c42a1380f01'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
.
map
(
item
=>
({
...
item
,
resumeRange
:
item
.
resumeStart
&&
item
.
resumeEnd
?
[
moment
(
item
.
resumeStart
),
moment
(
item
.
resumeEnd
)]
:
[]
}))
// 研修经历
this
.
studyList
=
this
.
resumeList
.
filter
(
item
=>
item
.
resumeType
===
'e76f5097-fe28-11ef-b6cb-0c42a1380f02'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
.
map
(
item
=>
({
...
item
,
resumeRange
:
item
.
resumeStart
&&
item
.
resumeEnd
?
[
moment
(
item
.
resumeStart
),
moment
(
item
.
resumeEnd
)]
:
[]
}))
// 工作经历
this
.
workList
=
this
.
resumeList
.
filter
(
item
=>
item
.
resumeType
===
'e76f5097-fe28-11ef-b6cb-0c42a1380f03'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
.
map
(
item
=>
({
...
item
,
resumeRange
:
item
.
resumeStart
&&
item
.
resumeEnd
?
[
moment
(
item
.
resumeStart
),
moment
(
item
.
resumeEnd
)]
:
[]
}))
}
}
},
watch
:
{
resumeList
:
{
handler
(
resumeList
)
{
if
(
!!
resumeList
)
{
this
.
InitData
()
}
},
},
},
},
};
};
</
script
>
</
script
>
\ No newline at end of file
src/views/report/talent/components/scientificGainEdit.vue
View file @
34af010a
<
template
>
<
template
>
<div>
<div>
<a-form-model
ref=
"form"
:model=
"formModel"
>
<a-row>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<div
class=
"main-title"
>
...
@@ -49,7 +50,7 @@
...
@@ -49,7 +50,7 @@
<a-row
v-for=
"(item, index) in gainList"
:key=
"'gainList'+index"
type=
"flex"
class=
"row_center"
>
<a-row
v-for=
"(item, index) in gainList"
:key=
"'gainList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
>
{{
item
.
showIndex
}}
</a-col>
<a-col
:span=
"2"
>
{{
item
.
showIndex
}}
</a-col>
<a-col
:span=
"4"
>
<a-col
:span=
"4"
>
<a-form-model-item
:prop=
"`gainList.$
{index}.gainDate`" :rules="{ required: true, message: '*', trigger: 'blur
',}">
<a-form-model-item
:prop=
"`gainList.$
{index}.gainDate`" :rules="{ required: true, message: '*', trigger: 'change
',}">
<a-date-picker
placeholder=
"请选择日期"
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"item.gainDate"
style=
"width: 140px"
/>
<a-date-picker
placeholder=
"请选择日期"
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"item.gainDate"
style=
"width: 140px"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
...
@@ -149,7 +150,7 @@
...
@@ -149,7 +150,7 @@
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteGain
Array(item)"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteThesis
Array(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-popconfirm>
</div>
</div>
...
@@ -158,7 +159,7 @@
...
@@ -158,7 +159,7 @@
<a-row
type=
"flex"
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addGain
Array()"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addThesis
Array()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</a-button>
</div>
</div>
...
@@ -228,7 +229,7 @@
...
@@ -228,7 +229,7 @@
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteGain
Array(item)"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteAppear
Array(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-popconfirm>
</div>
</div>
...
@@ -237,7 +238,7 @@
...
@@ -237,7 +238,7 @@
<a-row
type=
"flex"
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addGain
Array()"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addAppear
Array()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</a-button>
</div>
</div>
...
@@ -307,7 +308,7 @@
...
@@ -307,7 +308,7 @@
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteGain
Array(item)"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"deleteCourse
Array(item)"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-popconfirm>
</div>
</div>
...
@@ -316,22 +317,23 @@
...
@@ -316,22 +317,23 @@
<a-row
type=
"flex"
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<a-col
:span=
"24"
style=
"text-align: center"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addGain
Array()"
>
<a-button
type=
"dashed"
style=
"width: 20%"
@
click=
"addCourse
Array()"
>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
<a-icon
type=
"plus"
/>
添加
<span
style=
"color:red;margin-left:10px"
></span>
</a-button>
</a-button>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
</a-form-model>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
"moment"
;
import
moment
from
"moment"
;
const
gainList
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f01'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Gain
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f01'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
thesisList
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f02'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Thesis
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f02'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
appearList
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f03'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Appear
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f03'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
courseList
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f04'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Course
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f04'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
export
default
{
export
default
{
name
:
"scientificGainEdit"
,
name
:
"scientificGainEdit"
,
...
@@ -349,34 +351,171 @@ export default {
...
@@ -349,34 +351,171 @@ export default {
thesisList
:
[],
thesisList
:
[],
appearList
:
[],
appearList
:
[],
courseList
:
[],
courseList
:
[],
formModel
:
{
gainList
:
[],
thesisList
:
[],
appearList
:
[],
courseList
:
[],
}
};
};
},
},
created
()
{},
created
()
{
if
(
this
.
scientificList
&&
this
.
scientificList
.
length
>
0
)
{
this
.
gainList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f01'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
this
.
thesisList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f02'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
this
.
appearList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f03'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
this
.
courseList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f04'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
this
.
formModel
.
gainList
=
this
.
gainList
this
.
formModel
.
thesisList
=
this
.
thesisList
this
.
formModel
.
appearList
=
this
.
appearList
this
.
formModel
.
courseList
=
this
.
courseList
}
else
{
this
.
gainList
=
[]
this
.
thesisList
=
[]
this
.
appearList
=
[]
this
.
courseList
=
[]
this
.
formModel
.
gainList
=
[]
this
.
formModel
.
thesisList
=
[]
this
.
formModel
.
appearList
=
[]
this
.
formModel
.
courseList
=
[]
}
},
methods
:
{
methods
:
{
addGainArray
()
{
addGainArray
()
{
const
newItem
=
{
...
Gain
,
showIndex
:
this
.
gainList
.
length
+
1
}
this
.
gainList
.
push
(
newItem
);
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
clearValidate
()
})
},
},
deleteGainArray
(
item
)
{
deleteGainArray
(
item
)
{
let
index
=
this
.
gainList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
gainList
.
splice
(
index
,
1
)
}
},
},
addThesisArray
()
{
addThesisArray
()
{
const
newItem
=
{
...
Thesis
,
showIndex
:
this
.
thesisList
.
length
+
1
}
this
.
thesisList
.
push
(
newItem
)
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
clearValidate
()
})
},
},
deleteThesisArray
(
item
)
{
deleteThesisArray
(
item
)
{
let
index
=
this
.
thesisList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
thesisList
.
splice
(
index
,
1
)
}
},
},
addAppearArray
()
{
addAppearArray
()
{
const
newItem
=
{
...
Appear
,
showIndex
:
this
.
appearList
.
length
+
1
}
this
.
appearList
.
push
(
newItem
)
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
clearValidate
()
})
},
},
deleteAppearArray
(
item
)
{
deleteAppearArray
(
item
)
{
let
index
=
this
.
appearList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
appearList
.
splice
(
index
,
1
)
}
},
},
addCourseArray
()
{
addCourseArray
()
{
const
newItem
=
{
...
Course
,
showIndex
:
this
.
courseList
.
length
+
1
}
this
.
courseList
.
push
(
newItem
)
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
clearValidate
()
})
},
},
deleteCourseArray
(
item
)
{
deleteCourseArray
(
item
)
{
let
index
=
this
.
courseList
.
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
courseList
.
splice
(
index
,
1
)
}
},
mergeScientificList
()
{
this
.
scientificList
.
length
=
0
const
allLists
=
[
...
this
.
gainList
.
map
((
item
,
index
)
=>
{
const
newItem
=
{
...
item
}
newItem
.
showIndex
=
index
+
1
return
newItem
}),
...
this
.
thesisList
.
map
((
item
,
index
)
=>
{
const
newItem
=
{
...
item
}
newItem
.
showIndex
=
index
+
1
return
newItem
}),
...
this
.
appearList
.
map
((
item
,
index
)
=>
{
const
newItem
=
{
...
item
}
newItem
.
showIndex
=
index
+
1
return
newItem
}),
...
this
.
courseList
.
map
((
item
,
index
)
=>
{
const
newItem
=
{
...
item
}
newItem
.
showIndex
=
index
+
1
return
newItem
})
]
this
.
scientificList
.
push
(...
allLists
)
return
this
.
scientificList
}
},
watch
:
{
gainList
:
{
handler
(
val
)
{
this
.
formModel
.
gainList
=
val
},
deep
:
true
,
immediate
:
true
},
thesisList
:
{
handler
(
val
)
{
this
.
formModel
.
thesisList
=
val
},
deep
:
true
,
immediate
:
true
},
appearList
:
{
handler
(
val
)
{
this
.
formModel
.
appearList
=
val
},
deep
:
true
,
immediate
:
true
},
courseList
:
{
handler
(
val
)
{
this
.
formModel
.
courseList
=
val
},
},
deep
:
true
,
immediate
:
true
},
},
}
};
};
</
script
>
</
script
>
src/views/report/talent/components/scientificGainInfo.vue
View file @
34af010a
<
template
>
<
template
>
<div></div>
<div>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人才科研成绩
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
<span>
1、主要科研成果获奖情况(按获奖时间顺序填写,含专利、新药证书等不超过15项。)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
成果名称
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
授奖部门及等级
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
本人排名
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in gainList"
:key=
"'gainList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDate
?
moment
(
item
.
gainDate
).
format
(
'YYYY-MM-DD'
)
:
''
}}
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainName
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDescription
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainRemark
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
<span>
2、发表的主要科研论文(按时间顺序填写,不超过15篇,SCI论文等外文论文需提供影响因子证明(科技部门批准机构开具的证明))
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
论文名称
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
发表刊物
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
本人排名
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in thesisList"
:key=
"'thesisList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDate
?
moment
(
item
.
gainDate
).
format
(
'YYYY-MM-DD'
)
:
''
}}
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainName
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDescription
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainRemark
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
<span>
3、出版的专著和教材(按出版时间顺序填写,不超过15本。)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
专著及教材
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
出版社
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
本人排名
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in appearList"
:key=
"'appearList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDate
?
moment
(
item
.
gainDate
).
format
(
'YYYY-MM-DD'
)
:
''
}}
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainName
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDescription
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainRemark
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
<span>
4、承担的课题(按立项时间顺序填写,不超过15项。)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
序号
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
课题名称
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目来源
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
本人排名
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in courseList"
:key=
"'courseList'+index"
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"2"
>
<div
class=
"special-middle"
>
{{
item
.
showIndex
}}
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDate
?
moment
(
item
.
gainDate
).
format
(
'YYYY-MM-DD'
)
:
''
}}
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainName
}}
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainDescription
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
>
<div
class=
"special-middle"
>
<div>
{{
item
.
gainRemark
}}
</div>
</div>
</a-col>
</a-row>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
"moment"
;
import
moment
from
"moment"
const
Gain
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f01'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Thesis
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f02'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Appear
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f03'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
Course
=
{
id
:
null
,
talentId
:
null
,
gainType
:
'dff44c90-ff10-11ef-b6cb-0c42a1380f04'
,
gainDate
:
null
,
gainName
:
null
,
gainDescription
:
null
,
gainRemark
:
null
,
showIndex
:
null
,
}
const
ScientificGain
=
{};
export
default
{
export
default
{
name
:
"scientificGainInfo"
,
name
:
"scientificGainInfo"
,
props
:
{
scientificList
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
},
},
},
data
()
{
data
()
{
return
{};
return
{
gainList
:
[],
thesisList
:
[],
appearList
:
[],
courseList
:
[],
};
},
},
created
()
{
created
()
{
},
},
methods
:
{
methods
:
{
moment
,
InitData
()
{
if
(
this
.
scientificList
&&
this
.
scientificList
.
length
>
0
)
{
this
.
gainList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f01'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
if
(
this
.
gainList
.
length
==
0
)
{
this
.
gainList
.
push
({
...
Gain
})
}
this
.
thesisList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f02'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
if
(
this
.
thesisList
.
length
==
0
)
{
this
.
thesisList
.
push
({
...
Thesis
})
}
this
.
appearList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f03'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
if
(
this
.
appearList
.
length
==
0
)
{
this
.
appearList
.
push
({
...
Appear
})
}
this
.
courseList
=
this
.
scientificList
.
filter
(
item
=>
item
.
gainType
===
'dff44c90-ff10-11ef-b6cb-0c42a1380f04'
)
.
sort
((
a
,
b
)
=>
a
.
showIndex
-
b
.
showIndex
)
if
(
this
.
courseList
.
length
==
0
)
{
this
.
courseList
.
push
({
...
Course
})
}
}
},
},
watch
:
{
scientificList
:
{
handler
(
scientificList
)
{
if
(
!!
scientificList
)
{
this
.
InitData
()
}
else
{
this
.
gainList
.
push
({
...
Gain
})
this
.
thesisList
.
push
({
...
Thesis
})
this
.
appearList
.
push
({
...
Appear
})
this
.
courseList
.
push
({
...
Course
})
}
},
},
},
},
};
};
</
script
>
</
script
>
\ No newline at end of file
src/views/report/talent/components/talentCreate.vue
View file @
34af010a
...
@@ -44,7 +44,7 @@ export default {
...
@@ -44,7 +44,7 @@ export default {
{
status
:
"process"
,
title
:
'申报人才基本情况'
,
showStatus
:
true
},
{
status
:
"process"
,
title
:
'申报人才基本情况'
,
showStatus
:
true
},
{
status
:
"wait"
,
title
:
'申报人才简历'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'申报人才简历'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'申报人才科研成绩'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'申报人才科研成绩'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'
科学研究规划及
团队人员名单'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'团队人员名单'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'经费预算及培养计划和目标'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'经费预算及培养计划和目标'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'附件'
,
showStatus
:
false
}
{
status
:
"wait"
,
title
:
'附件'
,
showStatus
:
false
}
],
],
...
...
src/views/report/talent/components/talentEdit.vue
View file @
34af010a
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
<a-col
:span=
"5"
>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<div>
<div>
<a-form-model-item
prop=
"
address
"
>
<a-form-model-item
prop=
"
certId
"
>
<a-input
v-model=
"formData.certId"
@
change=
"onCertIdChange"
:maxLength=
"18"
style=
"width: 200px;"
/>
<a-input
v-model=
"formData.certId"
@
change=
"onCertIdChange"
:maxLength=
"18"
style=
"width: 200px;"
/>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<div>
<div>
<a-form-model-item
prop=
"talentCategory"
>
<a-form-model-item
prop=
"talentCategory"
>
<para-select
v-model=
"formData.talentCategory"
:typeId=
"21"
:width=
"180"
/>
<para-select
v-model=
"formData.talentCategory"
:typeId=
"21"
@
change=
"talentCategoryChange"
:width=
"180"
/>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
</div>
</div>
...
@@ -225,7 +225,7 @@
...
@@ -225,7 +225,7 @@
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<div>
<div>
<a-form-model-item
prop=
"talentType"
>
<a-form-model-item
prop=
"talentType"
>
<para-check
v-model=
"formData.talentType"
:typeId=
"
16
"
:disabled=
"false"
/>
<para-check
v-model=
"formData.talentType"
:typeId=
"
talentTypeId"
:key=
"'talent-type-' + talentTypeId
"
:disabled=
"false"
/>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
</div>
</div>
...
@@ -348,6 +348,13 @@
...
@@ -348,6 +348,13 @@
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
本人业务技术能力、外语水平及已经开展的主要业务工作(应阐明自身的技术优势、薄弱环节及改进措施)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"technicalSkill"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-form-model-item
prop=
"technicalSkill"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
...
@@ -357,13 +364,140 @@
...
@@ -357,13 +364,140 @@
</a-row>
</a-row>
</div>
</div>
<div
v-if=
"stepsArray[2].showStatus"
>
<div
v-if=
"stepsArray[2].showStatus"
>
<scientific-gain-edit
:scientificList
.
sync=
"formData.scientificList"
ref=
"talentScientific"
/>
<scientific-gain-edit
ref=
"talentScientific"
:scientificList
.
sync=
"formData.scientificList"
/>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
科学研究规划
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
结合本人业务基础和专长,所在学科的建设目标,获资助后拟研究的关键问题、主要研究内容、创新技术研发与应用及预期成果,要有量化指标:
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"qualityTarget"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-textarea
placeholder=
"量化指标(限1000字)"
v-model=
"formData.qualityTarget"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
目前的研究条件(详述已具备的研究条件,包括主要的仪器设备、实验动物等)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"researchCondition"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-textarea
placeholder=
"研究条件(限1000字)"
v-model=
"formData.researchCondition"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
研究进度:按年度列出研究进度及相关指标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"researchProgress"
:rules=
"
{ required: true, message: '*', trigger: 'blur',}">
<a-textarea
placeholder=
"研究进度(限1000字)"
v-model=
"formData.researchProgress"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-row>
</div>
</div>
<div
v-if=
"stepsArray[3].showStatus"
>
<div
v-if=
"stepsArray[3].showStatus"
>
<members-edit
:membersList
.
sync=
"formData.membersList"
/>
</div>
</div>
<div
v-if=
"stepsArray[4].showStatus"
>
<div
v-if=
"stepsArray[4].showStatus"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
经费预算及培养计划和目标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助金额
</div>
</div>
</a-col>
<a-col
:span=
"17"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<a-form-model-item
prop=
"applyFund"
>
<a-input-number
v-model=
"formData.applyFund"
@
change=
"FundChange"
:min=
"0"
:step=
"0.01"
style=
"width:120px"
/>
(万元)
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
其他经费来源
</div>
</div>
</a-col>
<a-col
:span=
"17"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<a-form-model-item
prop=
"otherFund"
>
<a-input-number
v-model=
"formData.otherFund"
@
change=
"FundChange"
:min=
"0"
:step=
"0.01"
style=
"width:120px"
/>
(万元)
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
合计
</div>
</div>
</a-col>
<a-col
:span=
"17"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
{{
parseFloat
(
formData
.
totalFund
).
toFixed
(
2
)
}}
(万元)
</div>
</a-col>
</a-row>
<budget-edit
ref=
"talentBudget"
:budgetList
.
sync=
"formData.budgetList"
:budgetType
.
sync=
"budgetType"
/>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人所在单位培养计划和培养目标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"planTarget"
>
<a-textarea
placeholder=
"培养计划和培养目标(限1000字)"
v-model=
"formData.planTarget"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人所在单位的学科发展和人才队伍建设专家指导委员会审核意见
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-form-model-item
prop=
"unitAdvice"
>
<a-textarea
placeholder=
"指导委员会审核意见(限800字)"
v-model=
"formData.unitAdvice"
:maxLength=
"800"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-row>
</div>
</div>
<div
v-if=
"stepsArray[5].showStatus"
>
<div
v-if=
"stepsArray[5].showStatus"
>
<file-edit
:fileList
.
sync=
"formData.fileList"
/>
</div>
</div>
</a-form-model>
</a-form-model>
</div>
</div>
...
@@ -377,11 +511,14 @@ import paraCheck from '@/views/components/common/paraCheck'
...
@@ -377,11 +511,14 @@ import paraCheck from '@/views/components/common/paraCheck'
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
import
resumeEdit
from
'@/views/report/talent/components/resumeEdit'
import
resumeEdit
from
'@/views/report/talent/components/resumeEdit'
import
scientificGainEdit
from
'@/views/report/talent/components/scientificGainEdit'
import
scientificGainEdit
from
'@/views/report/talent/components/scientificGainEdit'
import
membersEdit
from
'@/views/report/talent/components/membersEdit'
import
budgetEdit
from
'@/views/report/talent/components/budgetEdit'
import
fileEdit
from
'@/views/report/talent/components/fileEdit'
export
default
{
export
default
{
name
:
"talentEdit"
,
name
:
"talentEdit"
,
components
:
{
components
:
{
paraRadio
,
paraCheck
,
cascaderSelect
,
resumeEdit
,
scientificGainEdit
paraRadio
,
paraCheck
,
cascaderSelect
,
resumeEdit
,
scientificGainEdit
,
membersEdit
,
budgetEdit
,
fileEdit
},
},
props
:
{
props
:
{
value
:
{
value
:
{
...
@@ -431,13 +568,33 @@ export default {
...
@@ -431,13 +568,33 @@ export default {
mobile
:
null
,
mobile
:
null
,
fax
:
null
,
fax
:
null
,
technicalSkill
:
null
,
technicalSkill
:
null
,
qualityTarget
:
null
,
researchCondition
:
null
,
researchProgress
:
null
,
email
:
null
,
email
:
null
,
applyFund
:
null
,
otherFund
:
null
,
totalFund
:
null
,
planTarget
:
null
,
unitAdvice
:
null
,
talentState
:
null
,
resumeList
:
[],
resumeList
:
[],
membersList
:
[],
membersList
:
[],
budgetList
:
[],
budgetList
:
[],
scientificList
:
[],
scientificList
:
[],
fileList
:
[],
fileList
:
[],
},
},
talentTraningInfo
:
{
HTTalent
:
null
,
ALTalent
:
null
,
RTTalent
:
null
,
ALTrainingYear
:
null
,
ALEveryYearFee
:
null
,
HTTrainingYear
:
null
,
HTEveryYearFee
:
null
,
RTTrainingYear
:
null
,
RTEveryYearFee
:
null
,
},
rules
:
{
rules
:
{
talentCategory
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
talentCategory
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
certId
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
certId
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
...
@@ -461,10 +618,19 @@ export default {
...
@@ -461,10 +618,19 @@ export default {
mobile
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
mobile
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
fax
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
fax
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
email
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
email
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
applyFund
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
}],
otherFund
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
}],
planTarget
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
unitAdvice
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
},
},
talentTypeId
:
-
1
,
//type: HTTalent\ALTalent\RTTalent
budgetType
:
{
type
:
'HTTalent'
,
trainingYear
:
5
,
EveryYearFee
:
10
},
};
};
},
},
created
()
{
created
()
{
this
.
getTalentTraningInfo
()
if
(
this
.
value
)
if
(
this
.
value
)
this
.
getTalentApplyById
()
this
.
getTalentApplyById
()
else
else
...
@@ -472,6 +638,13 @@ export default {
...
@@ -472,6 +638,13 @@ export default {
},
},
methods
:
{
methods
:
{
moment
,
moment
,
getTalentTraningInfo
()
{
this
.
$api
.
systemSet
.
getTalentTraningInfo
().
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
talentTraningInfo
=
data
}
})
},
getNewTalentApply
()
{
getNewTalentApply
()
{
this
.
$api
.
talent
.
getNewTalentApply
({
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
talent
.
getNewTalentApply
({
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
...
@@ -492,14 +665,16 @@ export default {
...
@@ -492,14 +665,16 @@ export default {
this
.
$api
.
talent
.
getTalentApplyById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
talent
.
getTalentApplyById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
// 处理字符串转数组
// 处理字符串转数组
let
talentType
=
null
if
(
typeof
data
.
talentType
===
'string'
&&
data
.
talentType
)
{
if
(
typeof
data
.
talentType
===
'string'
&&
data
.
talentType
)
{
data
.
talentType
=
data
.
talentType
.
split
(
','
)
data
.
talentType
=
data
.
talentType
.
split
(
','
)
talentType
=
[...
data
.
talentType
]
}
}
if
(
typeof
data
.
graduateTeacher
===
'string'
&&
data
.
graduateTeacher
)
{
if
(
typeof
data
.
graduateTeacher
===
'string'
&&
data
.
graduateTeacher
)
{
data
.
graduateTeacher
=
data
.
graduateTeacher
.
split
(
','
)
data
.
graduateTeacher
=
data
.
graduateTeacher
.
split
(
','
)
}
}
this
.
formData
=
data
this
.
formData
=
data
this
.
talentCategoryHolder
(
talentType
)
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
loadList
()
this
.
loadList
()
}
else
{
}
else
{
...
@@ -585,9 +760,9 @@ export default {
...
@@ -585,9 +760,9 @@ export default {
this
.
formData
.
completeStatus
=
arr
.
toString
()
this
.
formData
.
completeStatus
=
arr
.
toString
()
var
obj
=
this
.
getObj
(
step
)
var
obj
=
this
.
getObj
(
step
)
obj
.
step
=
step
obj
.
step
=
step
let
state
=
obj
.
proj
State
let
state
=
obj
.
talent
State
if
(
state
!=
30
&&
step
==
5
)
if
(
state
!=
30
&&
step
==
5
)
obj
.
proj
State
=
10
obj
.
talent
State
=
10
let
pars
=
isEmptyParams
(
obj
)
let
pars
=
isEmptyParams
(
obj
)
let
par
=
{
...
pars
}
let
par
=
{
...
pars
}
this
.
$api
.
talent
.
save
(
par
).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
talent
.
save
(
par
).
then
(({
data
=
{}
})
=>
{
...
@@ -624,15 +799,19 @@ export default {
...
@@ -624,15 +799,19 @@ export default {
}
}
break
;
break
;
case
1
:
case
1
:
obj
=
{
id
:
null
,
technicalSkill
:
null
,
resumeList
:
[]
}
obj
=
{
id
:
null
,
technicalSkill
:
null
,
completeStatus
:
null
,
resumeList
:
[]
}
break
;
break
;
case
2
:
case
2
:
obj
=
{
id
:
null
,
qualityTarget
:
null
,
researchCondition
:
null
,
researchProgress
:
null
,
completeStatus
:
null
,
scientificList
:
[]
}
break
;
break
;
case
3
:
case
3
:
obj
=
{
id
:
null
,
completeStatus
:
null
,
membersList
:
[]
}
break
;
break
;
case
4
:
case
4
:
obj
=
{
id
:
null
,
applyFund
:
null
,
otherFund
:
null
,
totalFund
:
null
,
planTarget
:
null
,
unitAdvice
:
null
,
completeStatus
:
null
,
budgetList
:
[]
}
break
;
break
;
case
5
:
case
5
:
obj
=
{
id
:
null
,
completeStatus
:
null
,
talentState
:
null
,
fileList
:
[]
}
break
;
break
;
}
}
...
@@ -680,6 +859,35 @@ export default {
...
@@ -680,6 +859,35 @@ export default {
return
true
return
true
},
},
checkScientiticList
()
{
this
.
$refs
.
talentScientific
.
mergeScientificList
()
if
(
!!!
this
.
formData
.
scientificList
||
this
.
formData
.
scientificList
.
length
==
0
)
{
this
.
$message
.
error
(
'请至少添加一条申报人才科研成绩!'
)
return
false
}
return
true
},
checkMemberList
()
{
if
(
!!!
this
.
formData
.
membersList
||
this
.
formData
.
membersList
.
length
==
0
)
{
this
.
$message
.
error
(
'请至少添加一条申报人才团队人员信息!'
)
return
false
}
return
true
},
checkBudgetList
()
{
// 获取预算编辑组件中的总费用
const
totalFee
=
this
.
$refs
.
talentBudget
?
this
.
$refs
.
talentBudget
.
getTotalFee
()
:
0
;
// 检查资金来源金额与支出费用金额是否相等
if
(
parseFloat
(
this
.
formData
.
totalFund
)
!==
parseFloat
(
totalFee
))
{
this
.
$message
.
error
(
'资金来源金额与支出费用金额不相等,请检查!'
);
return
false
;
}
return
true
;
},
checkInfo
(
step
)
{
checkInfo
(
step
)
{
switch
(
step
)
{
switch
(
step
)
{
case
0
:
case
0
:
...
@@ -696,18 +904,53 @@ export default {
...
@@ -696,18 +904,53 @@ export default {
return
this
.
checkResumeList
()
return
this
.
checkResumeList
()
break
;
break
;
case
2
:
case
2
:
return
this
.
checkScientiticList
()
break
;
break
;
case
3
:
case
3
:
return
this
.
checkMemberList
()
break
;
break
;
case
4
:
case
4
:
return
this
.
checkBudgetList
()
break
;
break
;
case
5
:
case
5
:
return
true
break
;
break
;
}
}
},
},
loadList
()
{
FundChange
()
{
this
.
formData
.
totalFund
=
this
.
formData
.
applyFund
+
this
.
formData
.
otherFund
},
talentCategoryChange
()
{
this
.
talentCategoryHolder
(
null
)
},
talentCategoryHolder
(
talentType
)
{
if
(
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
HTTalent
||
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
RTTalent
)
{
this
.
talentTypeId
=
23
}
else
if
(
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
ALTalent
)
{
this
.
talentTypeId
=
16
}
else
{
this
.
talentTypeId
=
16
}
if
(
talentType
)
this
.
formData
.
talentType
=
talentType
else
this
.
formData
.
talentType
=
[]
this
.
processBudgetType
()
},
},
processBudgetType
()
{
if
(
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
HTTalent
)
{
this
.
budgetType
=
{
type
:
'HTTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
HTTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
HTEveryYearFee
}
}
else
if
(
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
ALTalent
)
{
this
.
budgetType
=
{
type
:
'ALTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
ALTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
ALEveryYearFee
}
}
else
{
this
.
budgetType
=
{
type
:
'RTTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
RTTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
RTEveryYearFee
}
}
if
(
!!!
this
.
formData
.
applyFund
||
this
.
formData
.
applyFund
==
0
)
this
.
formData
.
applyFund
=
this
.
budgetType
.
trainingYear
*
this
.
budgetType
.
EveryYearFee
}
}
},
};
};
</
script
>
</
script
>
src/views/report/talent/components/talentInfo.vue
View file @
34af010a
<
template
>
<
template
>
<div></div>
<div
class=
"from-table font-line-space"
v-if=
"tabsData[0].isShow"
>
<div
v-if=
"tabsData[1].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px;text-align: center;"
>
<div
class=
"main-title"
>
<span>
申报人基本情况
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
身份证号
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
certId
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
人才类别
</div>
</div>
</a-col>
<a-col
:span=
"13"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
talentCategoryName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
姓名
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
personName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
性别
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
sex
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
民族
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
nationName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
出生年月
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
value
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
最高学位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
degreeName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
最高学位授予时间
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
value
.
degreeTime
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
最高学位授予单位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
degreeUnit
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
目前从事专业
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
specName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
是否为研究生导师
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
<para-check
v-model=
"value.graduateTeacher"
:typeId=
"18"
:disabled=
"true"
/>
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
专业技术职称
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
titleName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
党派
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
politicalParty
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
行政职务
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
duty
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
是否是省级或省级以上人才
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div>
<para-check
v-model=
"value.talentType"
:typeId=
"16"
:disabled=
"true"
/>
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
省级及以上劳动模范、先进工作者等荣誉称号
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.honoraryTitle)"
></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
在国家、省级一级学术团体任职情况(包括任职时间和职务)
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.holdPost1)"
></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
担任国内统计源期刊职务情况(包括任职时间和职务)
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div>
<div
v-html=
"toTextarea(value.holdPost2)"
></div>
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
担任国家或省级重点学科/专科、重点实验室、内设研究机构负责人情况(包括任职时间和职务)
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.holdPost3)"
></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
联系方式
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
电话
</div>
</a-col>
<a-col
:span=
"8"
>
<div
style=
"margin-top: 10px;"
>
{{
value
.
mobile
}}
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
传真
</div>
</a-col>
<a-col
:span=
"8"
>
<div
style=
"margin-top: 10px;"
>
{{
value
.
fax
}}
</div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
Email
</div>
</a-col>
<a-col
:span=
"20"
>
<div
style=
"margin-top: 10px;"
>
{{
value
.
email
}}
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[2].isShow"
>
<resume-info
:resumeList
.
sync=
"value.resumeList"
/>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人才业务技术能力
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
本人业务技术能力、外语水平及已经开展的主要业务工作(应阐明自身的技术优势、薄弱环节及改进措施)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
v-html=
"toTextarea(value.technicalSkill)"
></div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[3].isShow"
>
<scientific-gain-info
:scientificList
.
sync=
"value.scientificList"
/>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
科学研究规划
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
结合本人业务基础和专长,所在学科的建设目标,获资助后拟研究的关键问题、主要研究内容、创新技术研发与应用及预期成果,要有量化指标:
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.qualityTarget)"
></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
目前的研究条件(详述已具备的研究条件,包括主要的仪器设备、实验动物等)
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.researchCondition)"
></div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
<span>
研究进度:按年度列出研究进度及相关指标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.researchProgress)"
></div>
</div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[4].isShow"
>
<members-info
:membersList
.
sync=
"value.membersList"
/>
</div>
<div
v-if=
"tabsData[5].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
经费预算及培养计划和目标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
申请资助金额
</div>
</div>
</a-col>
<a-col
:span=
"17"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
value
.
applyFund
).
toFixed
(
2
)
}}
(万元)
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
其他经费来源
</div>
</div>
</a-col>
<a-col
:span=
"17"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
value
.
otherFund
).
toFixed
(
2
)
}}
(万元)
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"7"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
合计
</div>
</div>
</a-col>
<a-col
:span=
"17"
>
<div
class=
"special-middle"
>
<div>
{{
parseFloat
(
value
.
totalFund
).
toFixed
(
2
)
}}
(万元)
</div>
</div>
</a-col>
</a-row>
<budget-info
:budgetList
.
sync=
"value.budgetList"
:budgetType
.
sync=
"budgetType"
/>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人所在单位培养计划和培养目标
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.planTarget)"
></div>
</div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px; text-align: center"
>
<div
class=
"main-title"
>
<span>
申报人所在单位的学科发展和人才队伍建设专家指导委员会审核意见
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.unitAdvice)"
></div>
</div>
</a-col>
</a-row>
</div>
<div
v-if=
"tabsData[6].isShow"
>
<file-info
:fileList
.
sync=
"value.fileList"
/>
</div>
<div
v-if=
"tabsData[7].isShow"
>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
'moment'
import
{
toTextarea
}
from
'@/views/utils/common'
import
paraCheck
from
'@/views/components/common/paraCheck'
import
resumeInfo
from
'@/views/report/talent/components/resumeInfo'
import
scientificGainInfo
from
'@/views/report/talent/components/scientificGainInfo'
import
membersInfo
from
'@/views/report/talent/components/membersInfo'
import
budgetInfo
from
'@/views/report/talent/components/budgetInfo'
import
fileInfo
from
'@/views/report/talent/components/fileInfo'
export
default
{
export
default
{
name
:
"talentInfo"
,
name
:
"talentInfo"
,
components
:
{
paraCheck
,
resumeInfo
,
scientificGainInfo
,
membersInfo
,
budgetInfo
,
fileInfo
,
},
props
:
{
value
:
{
type
:
Object
,
default
:
()
=>
{
return
null
}
},
tabsData
:
{
type
:
Array
,
default
:
()
=>
{
return
[]
}
},
},
data
()
{
data
()
{
return
{};
return
{
talentTraningInfo
:
{
HTTalent
:
null
,
ALTalent
:
null
,
RTTalent
:
null
,
ALTrainingYear
:
null
,
ALEveryYearFee
:
null
,
HTTrainingYear
:
null
,
HTEveryYearFee
:
null
,
RTTrainingYear
:
null
,
RTEveryYearFee
:
null
,
},
budgetType
:
{
type
:
'HTTalent'
,
trainingYear
:
5
,
EveryYearFee
:
10
},
};
},
created
()
{
if
(
!!!
this
.
tabsData
||
this
.
tabsData
.
length
==
0
)
this
.
tabsData
=
[
{
title
:
'全部'
,
key
:
'0'
,
isShow
:
true
},
{
title
:
'申报人基本情况'
,
key
:
'1'
,
isShow
:
true
},
{
title
:
'申报人简历'
,
key
:
'2'
,
isShow
:
true
},
{
title
:
'申报人科研成绩'
,
key
:
'3'
,
isShow
:
true
},
{
title
:
'科学研究规划及团队人员名单'
,
key
:
'4'
,
isShow
:
true
},
{
title
:
'经费预算及培养计划和目标'
,
key
:
'5'
,
isShow
:
true
},
{
title
:
'附件'
,
key
:
'6'
,
isShow
:
true
},
{
title
:
'项目审核记录'
,
key
:
'7'
,
isShow
:
true
},
]
if
(
!!!
this
.
value
)
{
this
.
getTalentTraningInfo
()
}
},
},
methods
:
{
methods
:
{
moment
,
toTextarea
,
getTalentTraningInfo
()
{
this
.
$api
.
systemSet
.
getTalentTraningInfo
().
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
talentTraningInfo
=
data
this
.
processBudgetType
()
}
})
},
processBudgetType
()
{
if
(
this
.
value
.
talentCategory
===
this
.
talentTraningInfo
.
HTTalent
)
{
this
.
budgetType
=
{
type
:
'HTTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
HTTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
HTEveryYearFee
}
}
else
if
(
this
.
formData
.
talentCategory
===
this
.
talentTraningInfo
.
ALTalent
)
{
this
.
budgetType
=
{
type
:
'ALTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
ALTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
ALEveryYearFee
}
}
else
{
this
.
budgetType
=
{
type
:
'RTTalent'
,
trainingYear
:
this
.
talentTraningInfo
.
RTTrainingYear
,
EveryYearFee
:
this
.
talentTraningInfo
.
RTEveryYearFee
}
}
if
(
!!!
this
.
formData
.
applyFund
||
this
.
formData
.
applyFund
==
0
)
this
.
formData
.
applyFund
=
this
.
budgetType
.
trainingYear
*
this
.
budgetType
.
EveryYearFee
}
}
}
};
};
</
script
>
</
script
>
\ No newline at end of file
src/views/report/talent/components/talentView.vue
View file @
34af010a
...
@@ -44,16 +44,82 @@ export default {
...
@@ -44,16 +44,82 @@ export default {
{
title
:
'项目审核记录'
,
key
:
'7'
,
isShow
:
true
},
{
title
:
'项目审核记录'
,
key
:
'7'
,
isShow
:
true
},
],
],
formData
:
{
formData
:
{
id
:
null
,
talentCategory
:
null
,
reportYear
:
null
,
certId
:
null
,
personId
:
null
,
personName
:
null
,
nation
:
null
,
sex
:
null
,
birthday
:
null
,
degree
:
null
,
degreeTime
:
null
,
degreeUnit
:
null
,
spec
:
null
,
graduateTeacher
:
null
,
title
:
null
,
politicalParty
:
null
,
duty
:
null
,
talentType
:
null
,
honoraryTitle
:
null
,
holdPost1
:
null
,
holdPost2
:
null
,
holdPost3
:
null
,
mobile
:
null
,
fax
:
null
,
technicalSkill
:
null
,
qualityTarget
:
null
,
researchCondition
:
null
,
researchProgress
:
null
,
email
:
null
,
applyFund
:
null
,
otherFund
:
null
,
totalFund
:
null
,
planTarget
:
null
,
unitAdvice
:
null
,
talentState
:
null
,
resumeList
:
[],
membersList
:
[],
budgetList
:
[],
scientificList
:
[],
fileList
:
[],
},
},
loading
:
false
,
loading
:
false
,
};
};
},
},
created
()
{
created
()
{
this
.
getTalentApplyById
()
},
},
methods
:
{
methods
:
{
callback
()
{
getTalentApplyById
()
{
if
(
this
.
value
!=
null
)
{
this
.
$api
.
talent
.
getTalentApplyById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
// 处理字符串转数组
if
(
typeof
data
.
talentType
===
'string'
&&
data
.
talentType
)
{
data
.
talentType
=
data
.
talentType
.
split
(
','
)
}
if
(
typeof
data
.
graduateTeacher
===
'string'
&&
data
.
graduateTeacher
)
{
data
.
graduateTeacher
=
data
.
graduateTeacher
.
split
(
','
)
}
this
.
formData
=
data
this
.
loading
=
false
}
else
this
.
$emit
(
'close'
,
'error'
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
})
}
},
callback
(
key
)
{
var
index
=
parseInt
(
key
)
this
.
tabsData
.
forEach
(
e
=>
{
if
(
key
==
'0'
)
e
.
isShow
=
true
else
e
.
isShow
=
false
})
this
.
tabsData
[
0
].
isShow
=
true
;
this
.
tabsData
[
index
].
isShow
=
true
;
},
},
onTalentExport
()
{
onTalentExport
()
{
...
...
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