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
0d39c453
Commit
0d39c453
authored
Mar 13, 2025
by
徐俊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xujun
parent
459b77d9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
497 additions
and
3 deletions
+497
-3
Index.vue
src/views/report/talent/Index.vue
+24
-1
talentEdit.vue
src/views/report/talent/components/talentEdit.vue
+473
-2
No files found.
src/views/report/talent/Index.vue
View file @
0d39c453
...
...
@@ -33,14 +33,21 @@
</
template
>
</a-table>
<a-pagination
v-if=
"pagination.total > 0"
:total=
"pagination.total"
show-size-changer
show-quick-jumper
v-model=
"pagination.pageIndex"
:page-size=
"pagination.pageSize"
:page-size-options=
"pagination.pageSizeOptions"
@
showSizeChange=
"showSizeChange"
@
change=
"change"
:showTotal=
"() => `共 ${pagination.total} 条`"
/>
<a-modal
v-model=
"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>
</a-modal>
</div>
</template>
<
script
>
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
}
from
"@/views/utils/common"
import
talentCreate
from
"@/views/report/talent/components/talentCreate"
export
default
{
name
:
"reportTalent"
,
components
:
{
talentCreate
},
data
()
{
return
{
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
...
...
@@ -73,6 +80,8 @@ export default {
isButten
:
true
,
//false
display
:
true
,
loading
:
false
,
visibleView
:
false
,
visibleEdit
:
false
,
};
},
created
()
{
...
...
@@ -128,7 +137,21 @@ export default {
this
.
getListByPage
()
},
ApplyTalent
()
{
this
.
id
=
null
this
.
visibleEdit
=
true
},
closeWindow
(
value
)
{
if
(
value
===
'submit'
)
{
this
.
visibleEdit
=
false
this
.
getListByPage
()
}
else
if
(
value
===
'save'
)
{
this
.
getListByPage
()
}
else
if
(
value
===
'error'
)
{
this
.
id
=
null
this
.
visibleEdit
=
false
this
.
visibleView
=
false
}
},
exportData
()
{
...
...
src/views/report/talent/components/talentEdit.vue
View file @
0d39c453
...
...
@@ -2,6 +2,328 @@
<div>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
style=
"border-top: 0px"
class=
"from-table font-line-space"
>
<div
v-if=
"stepsArray[0].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"
>
<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>
<a-form-model-item
prop=
"address"
>
<a-input
v-model=
"formData.certId"
:maxLength=
"18"
style=
"width: 200px;"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"personName"
>
<a-input
placeholder=
"姓名(限10字)"
v-model=
"formData.personName"
:maxLength=
"10"
style=
"width:80%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"sex"
>
<base-select
v-model=
"formData.sex"
:type=
"16"
:isAll=
"true"
:width=
"120"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"nation"
>
<base-select
v-model=
"formData.nation"
:type=
"11"
:isAll=
"true"
:width=
"120"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"birthday"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.birthday"
style=
"width: 60%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"degree"
>
<para-select
v-model=
"formData.degree"
:typeId=
"9"
:width=
"120"
@
changeTitle=
"(e)=>
{ formData.degreeName = e}" />
</a-form-model-item>
</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>
<a-form-model-item
prop=
"degreeTime"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.degreeTime"
style=
"width: 60%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"degreeUnit"
>
<a-input
placeholder=
"最高学位授予单位(限50字)"
v-model=
"formData.degreeUnit"
:maxLength=
"50"
style=
"width:80%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"spec"
>
<cascader-select
v-model=
"formData.spec"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"graduateTeacher"
>
<para-check
v-model=
"formData.graduateTeacher"
:typeId=
"18"
:disabled=
"false"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"title"
>
<para-multi-select
v-model=
"formData.title"
:typeId=
"7"
:width=
"120"
@
changeTitle=
"(e)=>
{ formData.titleName = e}" />
</a-form-model-item>
</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>
<a-form-model-item
prop=
"politicalParty"
>
<a-input
placeholder=
"党派(限20字)"
v-model=
"formData.politicalParty"
:maxLength=
"20"
style=
"width:80%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"duty"
>
<a-input
placeholder=
"行政职务(限20字)"
v-model=
"formData.duty"
:maxLength=
"20"
style=
"width:80%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"talentType"
>
<para-check
v-model=
"formData.talentType"
:typeId=
"16"
:disabled=
"false"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"honoraryTitle"
>
<a-textarea
placeholder=
"荣誉称号(限1000字)"
v-model=
"formData.honoraryTitle"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"holdPost1"
>
<a-textarea
placeholder=
"任职情况(限1000字)"
v-model=
"formData.holdPost1"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"holdPost2"
>
<a-textarea
placeholder=
"职务情况(限1000字)"
v-model=
"formData.holdPost2"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"holdPost3"
>
<a-textarea
placeholder=
"机构负责人情况(限1000字)"
v-model=
"formData.holdPost3"
:maxLength=
"1000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"telephone"
>
<a-input
v-model=
"formData.telephone"
:maxLength=
"50"
style=
"width:80%"
/>
</a-form-model-item>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
style=
"margin-top: 10px;"
>
传真
</div>
</a-col>
<a-col
:span=
"8"
>
<div>
<a-form-model-item
prop=
"fax"
>
<a-input
v-model=
"formData.fax"
:maxLength=
"50"
style=
"width:80%"
/>
</a-form-model-item>
</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>
<a-form-model-item
prop=
"email"
>
<a-input
v-model=
"formData.email"
:maxLength=
"50"
style=
"width:40%"
/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
<div
v-if=
"stepsArray[1].showStatus"
>
</div>
...
...
@@ -9,6 +331,10 @@
</div>
<div
v-if=
"stepsArray[3].showStatus"
>
</div>
<div
v-if=
"stepsArray[4].showStatus"
>
</div>
<div
v-if=
"stepsArray[5].showStatus"
>
</div>
</a-form-model>
</div>
</
template
>
...
...
@@ -16,11 +342,14 @@
<
script
>
import
moment
from
'moment'
import
{
isEmptyParams
}
from
"@/views/utils/common"
import
paraRadio
from
'@/views/components/common/paraRadio'
import
paraCheck
from
'@/views/components/common/paraCheck'
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
export
default
{
name
:
"talentEdit"
,
components
:
{
paraRadio
,
paraCheck
,
cascaderSelect
},
props
:
{
value
:
{
...
...
@@ -43,13 +372,155 @@ export default {
},
},
data
()
{
return
{};
return
{
formData
:
{
certId
:
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
,
telephone
:
null
,
},
rules
:
{
certId
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
personName
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
nation
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
sex
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
birthday
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
degree
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
degreeTime
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
degreeUnit
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
spec
:
[{
required
:
false
,
message
:
'*'
,
trigger
:
'change'
}],
graduateTeacher
:
[{
required
:
false
,
message
:
'*'
,
trigger
:
'change'
}],
title
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'change'
},],
politicalParty
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
duty
:
[{
required
:
false
,
message
:
'*'
,
trigger
:
'change'
}],
talentType
:
[{
required
:
false
,
message
:
'*'
,
trigger
:
'change'
}],
honoraryTitle
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
holdPost1
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
holdPost2
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
holdPost3
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
},],
telephone
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
fax
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
email
:
[{
required
:
true
,
message
:
'*'
,
trigger
:
'blur'
}],
},
};
},
created
()
{
},
methods
:
{
moment
,
save
(
step
)
{
},
submit
(
step
,
next
)
{
if
(
this
.
checkInfo
(
step
))
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
$emit
(
'load'
,
true
)
var
arr
=
this
.
completeStatus
.
split
(
','
);
arr
[
step
]
=
"1"
;
this
.
formData
.
completeStatus
=
arr
.
toString
()
var
obj
=
this
.
getObj
(
step
)
obj
.
step
=
step
let
state
=
obj
.
projState
if
(
state
!=
30
&&
step
==
5
)
obj
.
projState
=
10
let
pars
=
isEmptyParams
(
obj
)
let
par
=
{
...
pars
}
this
.
$api
.
project
.
save
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
.
id
=
data
if
(
next
)
{
this
.
$emit
(
'close'
,
'save'
)
this
.
$emit
(
'onStepChange'
,
{
step
:
step
+
1
,
state
:
arr
.
toString
()
})
}
else
{
this
.
$message
.
success
(
'成功!'
)
this
.
$emit
(
'close'
,
'submit'
)
}
}
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
this
.
$emit
(
'load'
,
false
)
})
}
else
{
this
.
$message
.
error
(
'信息未填写完全!'
)
return
false
}
})
}
},
checkInfo
(
step
)
{
switch
(
step
)
{
case
0
:
if
(
this
.
formData
.
certId
==
""
||
this
.
formData
.
certId
==
null
)
{
alert
(
'身份证号不能为空'
)
return
false
}
if
(
this
.
formData
.
personName
==
""
||
this
.
formData
.
personName
==
null
)
{
alert
(
'人员姓名不能为空'
)
return
false
}
else
return
true
break
;
case
1
:
break
;
case
2
:
break
;
case
3
:
break
;
case
4
:
break
;
case
5
:
break
;
}
},
getTalent
()
{
this
.
$emit
(
'load'
,
true
)
if
(
!!
this
.
value
)
{
this
.
$api
.
talent
.
getTalentInfoById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
loadList
()
}
else
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
})
}
else
{
this
.
$api
.
talent
.
getNewTalent
({
projType
:
getType
()
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
loadList
()
}
else
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
})
}
},
loadList
()
{
},
}
};
</
script
>
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