Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
hr-mobile-view
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
anjia-hr
hr-mobile-view
Commits
d23f9f06
Commit
d23f9f06
authored
Sep 01, 2026
by
刘斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 保证家庭成员必填
parent
67115fa1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
80 additions
and
50 deletions
+80
-50
App.vue
src/App.vue
+80
-50
No files found.
src/App.vue
View file @
d23f9f06
...
@@ -573,42 +573,82 @@
...
@@ -573,42 +573,82 @@
<div
class=
"form-row-2col"
>
<div
class=
"form-row-2col"
>
<div
class=
"form-col"
>
<div
class=
"form-col"
>
<div
class=
"item-label"
>
关系
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"item-label"
>
关系
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"custom-input dropdown-input"
@
click=
"onFamilyRelationClick(i)"
>
<van-field
<span
style=
"color: #323233"
>
{{ fm.relation || '请选择' }}
</span>
v-model=
"fm.relation"
<van-icon
name=
"arrow-down"
color=
"#969799"
size=
"12"
/>
:name=
"`familyMembers.${i}.relation`"
</div>
readonly
clickable
class=
"custom-field dropdown-input"
:rules=
"[{ required: true, message: `请填写成员${i + 1}的关系` }]"
:border=
"false"
@
click=
"onFamilyRelationClick(i)"
>
<
template
#
right-icon
>
<van-icon
name=
"arrow-down"
color=
"#969799"
size=
"12"
/>
</
template
>
</van-field>
</div>
</div>
<div
class=
"form-col"
>
<div
class=
"form-col"
>
<div
class=
"item-label"
>
姓名
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"item-label"
>
姓名
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"custom-input"
>
<van-field
<input
v-model=
"fm.name"
placeholder=
"姓名"
class=
"native-input"
/>
v-model=
"fm.name"
</div>
:name=
"`familyMembers.${i}.name`"
class=
"custom-field"
placeholder=
"姓名"
:rules=
"[{ required: true, message: `请填写成员${i + 1}的姓名` }]"
:border=
"false"
/>
</div>
</div>
</div>
</div>
<!-- Row 2 -->
<!-- Row 2 -->
<div
class=
"form-item"
>
<div
class=
"form-item"
>
<div
class=
"item-label"
>
出生年月
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"item-label"
>
出生年月
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"date-input-box"
@
click=
"onFamilyBirthClick(i)"
>
<van-field
<span>
{{ fm.birthDate || 'YYYY-MM-DD' }}
</span>
v-model=
"fm.birthDate"
<van-icon
name=
"calendar-o"
color=
"#969799"
/>
:name=
"`familyMembers.${i}.birthDate`"
</div>
readonly
clickable
class=
"custom-field"
placeholder=
"YYYY-MM-DD"
:rules=
"[{ required: true, message: `请选择成员${i + 1}的出生年月` }]"
:border=
"false"
@
click=
"onFamilyBirthClick(i)"
>
<
template
#
right-icon
>
<van-icon
name=
"calendar-o"
color=
"#969799"
/>
</
template
>
</van-field>
</div>
</div>
<!-- Row 3 -->
<!-- Row 3 -->
<div
class=
"form-item"
>
<div
class=
"form-item"
>
<div
class=
"item-label"
>
工作单位及职务
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"item-label"
>
工作单位及职务
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"custom-input"
>
<van-field
<input
v-model=
"fm.companyAndJob"
placeholder=
"单位与职务"
class=
"native-input"
/>
v-model=
"fm.companyAndJob"
</div>
:name=
"`familyMembers.${i}.companyAndJob`"
class=
"custom-field"
placeholder=
"单位与职务"
:rules=
"[{ required: true, message: `请填写成员${i + 1}的工作单位及职务` }]"
:border=
"false"
/>
</div>
</div>
<!-- Row 4 -->
<!-- Row 4 -->
<div
class=
"form-item"
>
<div
class=
"form-item"
>
<div
class=
"item-label"
>
联系方式
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"item-label"
>
联系方式
<span
style=
"color: #ee0a24"
>
*
</span></div>
<div
class=
"custom-input"
>
<van-field
<input
v-model=
"fm.contact"
type=
"tel"
placeholder=
"手机号"
class=
"native-input"
/>
v-model=
"fm.contact"
</div>
:name=
"`familyMembers.${i}.contact`"
type=
"tel"
class=
"custom-field"
placeholder=
"手机号"
:rules=
"[
{ required: true, message: `请填写成员${i + 1}的联系方式` },
{ pattern: /^1\d{10}$/, message: `成员${i + 1}的手机号格式错误` },
]"
:border=
"false"
/>
</div>
</div>
<!-- Row 5 -->
<!-- Row 5 -->
...
@@ -1311,31 +1351,32 @@ async function onSubmit() {
...
@@ -1311,31 +1351,32 @@ async function onSubmit() {
submitting
.
value
=
true
;
submitting
.
value
=
true
;
try
{
try
{
let
externalResumeValue
=
''
;
// 家庭成员最少填写一条,防止列表被清空后绕过校验
if
(
form
.
externalResumeItems
&&
form
.
externalResumeItems
.
length
>
0
)
{
if
(
!
form
.
familyMembers
||
form
.
familyMembers
.
length
===
0
)
{
for
(
const
item
of
form
.
externalResumeItems
)
{
showFailToast
(
'请至少填写一名家庭成员'
);
if
(
return
;
!
item
.
startDate
||
}
!
item
.
endDate
||
// 外部个人履历最少填写一段,防止列表被清空后绕过校验
!
item
.
company
||
if
(
!
form
.
externalResumeItems
||
form
.
externalResumeItems
.
length
===
0
)
{
!
item
.
position
showFailToast
(
'请至少填写一段外部个人履历'
);
)
{
submitting
.
value
=
false
;
showFailToast
(
'个人履历填写不全,请检查!'
);
return
;
submitting
.
value
=
false
;
return
;
}
externalResumeValue
+=
`
${
item
.
startDate
}
-
${
item
.
endDate
}
在
${
item
.
company
}
担任
${
item
.
position
}
职务;\n`
;
}
}
}
if
(
form
.
familyMembers
&&
form
.
familyMembers
.
length
>
0
)
{
let
externalResumeValue
=
''
;
for
(
const
item
of
form
.
familyMembers
)
{
for
(
const
item
of
form
.
externalResumeItems
)
{
if
(
!
item
.
name
||
!
item
.
relation
||
!
item
.
birthDate
||
!
item
.
companyAndJob
||
!
item
.
contact
)
{
if
(
showFailToast
(
'家庭成员信息不全!'
);
!
item
.
startDate
||
submitting
.
value
=
false
;
!
item
.
endDate
||
return
;
!
item
.
company
||
}
!
item
.
position
)
{
showFailToast
(
'个人履历填写不全,请检查!'
);
submitting
.
value
=
false
;
return
;
}
}
externalResumeValue
+=
`
${
item
.
startDate
}
-
${
item
.
endDate
}
在
${
item
.
company
}
担任
${
item
.
position
}
职务;\n`
;
}
}
// 家庭成员必填,最少填写一条,由 van-form 各成员字段的 rules 统一校验
const
payload
=
{
const
payload
=
{
plateId
:
form
.
plateId
,
plateId
:
form
.
plateId
,
plate
:
form
.
plate
,
plate
:
form
.
plate
,
...
@@ -1535,17 +1576,6 @@ void [phoneRules, idRules];
...
@@ -1535,17 +1576,6 @@ void [phoneRules, idRules];
color
:
#323233
;
color
:
#323233
;
}
}
.native-input
{
width
:
100%
;
border
:
none
;
background
:
transparent
;
outline
:
none
;
padding
:
0
;
margin
:
0
;
font-size
:
16px
;
color
:
#323233
;
}
.dropdown-input
{
.dropdown-input
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
...
...
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