Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
psa-web
Project
Project
Details
Activity
Releases
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
高滢
psa-web
Commits
31bf840e
Commit
31bf840e
authored
Mar 17, 2025
by
祁正
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
9fb8b9bf
5eae305e
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1471 additions
and
13 deletions
+1471
-13
onboardmanage.js
src/api/onboardmanage/onboardmanage.js
+24
-0
apply.vue
src/views/staffmanage/confirmationmanage/apply.vue
+24
-8
add.vue
src/views/staffmanage/onboardmanage/add.vue
+13
-2
draft.vue
src/views/staffmanage/onboardmanage/draft.vue
+624
-0
edit.vue
src/views/staffmanage/onboardmanage/edit.vue
+0
-1
editDraft.vue
src/views/staffmanage/onboardmanage/editDraft.vue
+782
-0
index.vue
src/views/staffmanage/onboardmanage/index.vue
+4
-2
No files found.
src/api/onboardmanage/onboardmanage.js
View file @
31bf840e
...
@@ -42,3 +42,27 @@ export function delOnBoardManage(id) {
...
@@ -42,3 +42,27 @@ export function delOnBoardManage(id) {
method
:
'delete'
method
:
'delete'
})
})
}
}
// 查询入职草稿箱
export
function
listOnBoardManageDraft
(
query
)
{
return
request
({
url
:
'/staffmanage/onboardmanage/listDraft'
,
method
:
'get'
,
params
:
query
})
}
// 新增入职草稿
export
function
addOnBoardManageDraft
(
data
)
{
return
request
({
url
:
'/staffmanage/onboardmanage/addDraft'
,
method
:
'post'
,
data
:
data
})
}
// 修改入职草稿箱(草稿箱提交 状态修改)
export
function
updateOnBoardManageDraft
(
data
)
{
return
request
({
url
:
'/staffmanage/onboardmanage/updateDraft'
,
method
:
'put'
,
data
:
data
})
}
src/views/staffmanage/confirmationmanage/apply.vue
View file @
31bf840e
...
@@ -56,20 +56,21 @@
...
@@ -56,20 +56,21 @@
<el-input
<el-input
v-model=
"form.achievementDescription"
v-model=
"form.achievementDescription"
type=
"textarea"
type=
"textarea"
autosize
:autosize=
"
{ minRows: 2, maxRows: 4 }"
placeholder=
"试用期工作成果描述(不能超过255个字符)"
placeholder="试用期工作成果描述(不能超过255个字符)"
maxlength=
"255"
maxlength="255"
class=
"applyInput
"
class="applyInput custom-textarea
"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"自我评价"
prop=
"selfEvaluation"
class=
"selfEvaluationInput"
>
<el-form-item
label=
"自我评价"
prop=
"selfEvaluation"
class=
"selfEvaluationInput"
>
<el-input
<el-input
v-model=
"form.selfEvaluation"
v-model=
"form.selfEvaluation"
type=
"textarea"
type=
"textarea"
autosize
:autosize=
"
{ minRows: 2, maxRows: 4 }"
placeholder=
"试用期综合自我评价(不能超过255个字符)"
placeholder="试用期综合自我评价(不能超过255个字符)"
class=
"applyInput
"
class="applyInput custom-textarea
"
maxlength=
"255"
maxlength="255"
/>
/>
</el-form-item>
</el-form-item>
</el-row>
</el-row>
...
@@ -592,4 +593,19 @@ onMounted(() => {
...
@@ -592,4 +593,19 @@ onMounted(() => {
width
:
400px
!important
;
width
:
400px
!important
;
height
:
40px
!important
;
height
:
40px
!important
;
}
}
/* 添加固定高度和滚动条 */
.fixed-textarea
textarea
{
max-height
:
200px
!important
;
overflow-y
:
auto
!important
;
}
/* 增加表单项间距 */
.el-form-item
{
margin-bottom
:
20px
;
}
/* 上传区域增加顶部间距 */
.textForInput
[
prop
=
"confirmationMaterials"
]
{
margin-top
:
20px
;
}
</
style
>
</
style
>
src/views/staffmanage/onboardmanage/add.vue
View file @
31bf840e
...
@@ -234,7 +234,7 @@
...
@@ -234,7 +234,7 @@
</el-row>
</el-row>
<el-form-item
class=
"bottom-button"
>
<el-form-item
class=
"bottom-button"
>
<el-button
@
click=
"cancel"
class=
"cancel-button"
>
取 消
</el-button>
<el-button
@
click=
"cancel"
class=
"cancel-button"
>
取 消
</el-button>
<el-button
class=
"savecConfirm-button"
>
保存
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"saveOnDraft"
>
保存
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"submitForm"
>
确 定
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
@@ -245,7 +245,7 @@
...
@@ -245,7 +245,7 @@
<
script
setup
>
<
script
setup
>
import
{
reactive
}
from
'vue'
import
{
reactive
}
from
'vue'
import
{
listOnBoardManage
,
getOnBoardManage
,
delOnBoardManage
,
addOnBoardManage
,
updateOnBoardManage
}
from
"@/api/onboardmanage/onboardmanage"
;
import
{
listOnBoardManage
,
getOnBoardManage
,
delOnBoardManage
,
addOnBoardManage
,
updateOnBoardManage
,
addOnBoardManageDraft
}
from
"@/api/onboardmanage/onboardmanage"
;
import
{
pcaTextArr
}
from
"element-china-area-data"
;
import
{
pcaTextArr
}
from
"element-china-area-data"
;
import
{
useRouter
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
const
pcaTextArrRef
=
pcaTextArr
;
const
pcaTextArrRef
=
pcaTextArr
;
...
@@ -517,6 +517,17 @@ function submitForm() {
...
@@ -517,6 +517,17 @@ function submitForm() {
}
}
});
});
}
}
function
saveOnDraft
(){
proxy
.
$refs
[
"onboardmanageRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
addOnBoardManageDraft
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"新增成功"
);
router
.
push
(
'/staffManage/draftonboardmanage'
);
getList
();
});
}
});
}
/** 删除按钮操作 */
/** 删除按钮操作 */
function
handleDelete
(
row
)
{
function
handleDelete
(
row
)
{
...
...
src/views/staffmanage/onboardmanage/draft.vue
0 → 100644
View file @
31bf840e
<
template
>
<div
class=
"app-container"
>
<div
class=
"formSearch"
>
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
v-show=
"showSearch"
>
<el-row>
<el-form-item
label=
"姓名"
prop=
"name"
class=
"nameSearch"
>
<el-input
v-model=
"queryParams.name"
placeholder=
"请输入"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"nameInput"
/>
</el-form-item>
<el-form-item
label=
"性别"
prop=
"gender"
class=
"genderSearch"
>
<el-select
v-model=
"queryParams.gender"
placeholder=
"请选择"
class=
"genderInput"
clearable
>
<el-option
v-for=
"item in sys_user_sex"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"身份证号"
prop=
"idNumber"
class=
"idNumberSearch"
>
<el-input
v-model=
"queryParams.idNumber"
placeholder=
"请输入身份证号"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"idNumberInput"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"default"
class=
"el-button-defalut"
icon=
"Refresh"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"Search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
type=
"primary"
link
@
click=
"toggleExpand"
:icon=
"isExpanded ? ArrowUp : ArrowDown"
>
{{
isExpanded
?
'收起'
:
'更多'
}}
</el-button>
</el-form-item>
<!-- 展开区域 -->
<transition
name=
"slide-down"
>
<div
v-show=
"isExpanded"
class=
"expanded-items"
>
<el-form-item
label=
"学历"
prop=
"educationLevel"
class=
"educationLevelSearch"
>
<el-select
v-model=
"queryParams.educationLevel"
placeholder=
"请选择"
clearable
class=
"nameInput"
>
<el-option
v-for=
"item in education_level"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"聘用形式"
prop=
"employmentForm"
class=
"employmentFormSearch"
>
<el-select
v-model=
"queryParams.employmentForm"
placeholder=
"请选择"
clearable
class=
"nameInput"
>
<el-option
v-for=
"item in employment_form"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"员工状态"
prop=
"employeeState"
class=
"employeeStateSearch"
>
<el-select
v-model=
"queryParams.employeeState"
placeholder=
"请选择"
clearable
class=
"nameInput"
>
<el-option
v-for=
"item in employee_state"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</div>
</transition>
</el-row>
</el-form>
</div>
<div
class=
"contentTable"
>
<div
class=
"button-title"
>
<div
class=
"titleForTable"
>
<span>
入职草稿箱
</span>
</div>
<div
class=
"titleLine"
></div>
</div>
<el-table
v-loading=
"loading"
:data=
"onboardmanageList"
@
selection-change=
"handleSelectionChange"
border
:header-cell-style=
"
{ background: '#f6f8fc'}">
<el-table-column
type=
"selection"
width=
"56"
align=
"center"
/>
<el-table-column
label=
"姓名"
width=
"150"
show-overflow-tooltip
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"身份证号"
show-overflow-tooltip
width=
"200"
align=
"center"
prop=
"idNumber"
/>
<el-table-column
label=
"性别"
width=
"80"
align=
"center"
prop=
"gender"
>
<template
#
default=
"scope"
>
<dict-tag
:options=
"sys_user_sex"
:value=
"scope.row.gender"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"手机号"
show-overflow-tooltip
width=
"150"
align=
"center"
prop=
"phone"
/>
<el-table-column
label=
"最高学历"
show-overflow-tooltip
width=
"120"
align=
"center"
prop=
"educationLevel"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"education_level"
:value=
"scope.row.educationLevel"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"聘用形式 "
width=
"120"
align=
"center"
prop=
"employmentForm"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"employment_form"
:value=
"scope.row.employmentForm"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"员工状态"
width=
"120"
align=
"center"
prop=
"employeeState"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"employee_state"
:value=
"scope.row.employeeState"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"是否有试用期"
width=
"150"
align=
"center"
prop=
"isTrialPeriod"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"is_trial_period"
:value=
"scope.row.isTrialPeriod"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"入职日期"
class=
"el-table-column-serviceDate"
align=
"center"
prop=
"serviceDate"
width=
"140"
>
<
template
#
default=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
serviceDate
,
'{y
}
-{m
}
-{d
}
'
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<!--
<
el
-
table
-
column
label
=
"转正日期"
align
=
"center"
prop
=
"dateOfConfirmation"
width
=
"180"
>
<
template
#
default
=
"scope"
>
<
span
>
{{
parseTime
(
scope
.
row
.
dateOfConfirmation
,
'{y
}
-{m
}
-{d
}
'
)
}}
<
/span
>
<
/template
>
<
/el-table-column>--
>
<
el
-
table
-
column
label
=
"操作"
width
=
"227"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
fixed
=
"right"
>
<
template
#
default
=
"scope"
>
<
div
class
=
"button-container"
>
<
el
-
tooltip
effect
=
"dark"
content
=
"编辑"
placement
=
"top"
>
<
el
-
button
link
type
=
"primary"
@
click
=
"handleUpdate(scope.row)"
v
-
hasPermi
=
"['staffmanage:onboardmanage:edit']"
>
<
img
src
=
"@/assets/icons/common/edit.png"
>
<
/el-button
>
<
/el-tooltip
>
<
el
-
tooltip
effect
=
"dark"
content
=
"删除"
placement
=
"top"
>
<
el
-
button
link
type
=
"primary"
@
click
=
"handleDelete(scope.row)"
v
-
hasPermi
=
"['staffmanage:onboardmanage:remove']"
>
<
img
src
=
"@/assets/icons/common/delete.png"
>
<
/el-button
>
<
/el-tooltip
>
<
/div
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
<
div
class
=
"pagination-containers"
>
<
pagination
v
-
show
=
"total>0"
:
total
=
"total"
v
-
model
:
page
=
"queryParams.pageNum"
v
-
model
:
limit
=
"queryParams.pageSize"
@
pagination
=
"getList"
/>
<
/div
>
<
/div
>
<
/div
>
<
/template
>
<
script
setup
name
=
"Onboardmanage"
>
import
{
listOnBoardManage
,
getOnBoardManage
,
delOnBoardManage
,
addOnBoardManage
,
updateOnBoardManage
,
listOnBoardManageDraft
}
from
"@/api/onboardmanage/onboardmanage"
;
import
{
useRouter
}
from
'vue-router'
;
import
{
getToken
}
from
"@/utils/auth"
;
import
{
pcaTextArr
}
from
"element-china-area-data"
;
import
{
ref
,
reactive
}
from
'vue'
import
{
ArrowUp
,
ArrowDown
}
from
'@element-plus/icons-vue'
const
{
proxy
}
=
getCurrentInstance
();
const
{
sys_user_sex
,
home_type
,
political_outlook
,
marital_status
,
employment_form
,
employee_state
,
is_trial_period
,
education_level
,
emergency_contact_relation
}
=
proxy
.
useDict
(
'sys_user_sex'
,
'home_type'
,
'political_outlook'
,
'marital_status'
,
'employment_form'
,
'employee_state'
,
'is_trial_period'
,
'education_level'
,
'emergency_contact_relation'
);
const
isExpanded
=
ref
(
false
)
// 方法
const
toggleExpand
=
()
=>
{
isExpanded
.
value
=
!
isExpanded
.
value
}
const
pcaTextArrRef
=
pcaTextArr
;
const
tableData
=
ref
([
{
emergencyContactName
:
''
,
emergencyContactPhone
:
''
,
emergencyContactRelation
:
''
}
]);
const
selectedRows
=
ref
([]);
const
selectedOptions
=
ref
([]);
const
onboardmanageList
=
ref
([]);
const
open
=
ref
(
false
);
const
loading
=
ref
(
true
);
const
showSearch
=
ref
(
true
);
const
ids
=
ref
([]);
const
single
=
ref
(
true
);
const
multiple
=
ref
(
true
);
const
total
=
ref
(
0
);
const
title
=
ref
(
""
);
/*** 用户导入参数 */
const
upload
=
reactive
({
// 是否显示弹出层(用户导入)
open
:
false
,
// 弹出层标题(用户导入)
title
:
""
,
// 是否禁用上传
isUploading
:
false
,
// 是否更新已经存在的用户数据
updateSupport
:
0
,
// 设置上传的请求头部
headers
:
{
Authorization
:
"Bearer "
+
getToken
()
}
,
// 上传的地址
url
:
import
.
meta
.
env
.
VITE_APP_BASE_API
+
"/staffmanage/onboardmanage/importData"
}
);
const
workPicList
=
ref
([]);
const
diplomaPicList
=
ref
([]);
const
degreePicList
=
ref
([]);
const
otherCertificationList
=
ref
([]);
const
workPicAction
=
'http://localhost:8080/file/upload'
;
const
genderOptions
=
ref
([]);
const
homeTypeOptions
=
ref
([]);
const
politicalOutlookOptions
=
ref
([]);
const
maritalStatusOptions
=
ref
([]);
const
employmentFormOptions
=
ref
([]);
const
employeeStateOptions
=
ref
([]);
const
isTrialPeriodOptions
=
ref
([]);
const
educationLevelOptions
=
ref
([]);
const
relationOptions
=
ref
([
{
label
:
'父亲'
,
value
:
0
}
,
{
label
:
'母亲'
,
value
:
1
}
,
{
label
:
'配偶'
,
value
:
2
}
,
{
label
:
'子女'
,
value
:
3
}
,
{
label
:
'其他'
,
value
:
4
}
]);
const
serviceDepartOptions
=
ref
([]);
const
managerOpinions
=
ref
([]);
//const genderDict = ref([]); // 性别字典
const
homeTypeDict
=
ref
([]);
// 户籍类型字典
const
politicalOutlookDict
=
ref
([]);
// 政治面貌字典
const
maritalStatusDict
=
ref
([]);
// 婚姻状况字典
const
employmentFormDict
=
ref
([]);
// 聘用形式字典
const
employeeStateDict
=
ref
([]);
// 员工状态字典
const
isTrialPeriodDict
=
ref
([]);
// 是否试用期字典
const
educationLevelDict
=
ref
([]);
// 学历字典
const
relationDict
=
ref
([]);
// 关系字典
const
serviceDepartDict
=
ref
([]);
//
const
managerOpinionsDict
=
ref
([]);
// 总经理意见字典
const
data
=
reactive
({
form
:
{
name
:
''
,
gender
:
null
,
}
,
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
name
:
null
,
idNumber
:
null
,
gender
:
null
,
educationLevel
:
null
,
employmentForm
:
null
,
employeeState
:
null
,
serviceCompany
:
null
,
}
,
rules
:
{
}
}
);
const
{
queryParams
,
form
,
rules
}
=
toRefs
(
data
);
// 取消按钮
function
cancel
()
{
open
.
value
=
false
;
reset
();
}
// 表单重置
function
reset
()
{
form
.
value
=
{
id
:
null
,
name
:
null
,
idNumber
:
null
,
gender
:
null
,
birthday
:
null
,
phone
:
null
,
homeType
:
null
,
nativePlace
:
null
,
nationality
:
null
,
homeAddress
:
null
,
permanentAddress
:
null
,
politicalOutlook
:
null
,
maritalStatus
:
null
,
workDate
:
null
,
workerPic
:
null
,
emergencyContactName
:
null
,
emergencyContactPhone
:
null
,
emergencyContactRelation
:
null
,
insuredCity
:
null
,
socialSecurityAccount
:
null
,
housingFundAccount
:
null
,
bankAccount
:
null
,
openingBank
:
null
,
serviceDate
:
null
,
serviceDepart
:
null
,
entryPosition
:
null
,
employmentForm
:
null
,
formalSalary
:
null
,
employeeState
:
null
,
isTrialPeriod
:
null
,
trialPeriodSalary
:
null
,
trialPeriodDay
:
null
,
dateOfConfirmation
:
null
,
educationLevel
:
null
,
diplomaPic
:
null
,
degreePic
:
null
,
otherCertification
:
null
,
university
:
null
,
graduationDate
:
null
,
majorStudied
:
null
,
signature
:
null
,
applicationTime
:
null
,
managerOpinion
:
null
,
approvalTime
:
null
,
managerSignature
:
null
,
submitter
:
null
,
submissionTime
:
null
,
updateTime
:
null
,
processState
:
null
,
currentNode
:
null
,
currentResponsiblePerson
:
null
,
}
;
proxy
.
resetForm
(
"onboardmanageRef"
);
}
function
fieldBeforeUpload
(
file
)
{
let
isRightSize
=
file
.
size
/
1024
/
1024
<
2
if
(
!
isRightSize
)
{
this
.
$message
.
error
(
'文件大小超过 2MB'
)
}
return
isRightSize
}
/** 查询入职审批列表 */
function
getList
()
{
loading
.
value
=
true
;
listOnBoardManageDraft
(
queryParams
.
value
).
then
(
response
=>
{
onboardmanageList
.
value
=
response
.
rows
;
total
.
value
=
response
.
total
;
loading
.
value
=
false
;
}
);
}
/** 搜索按钮操作 */
function
handleQuery
()
{
queryParams
.
value
.
pageNum
=
1
;
getList
();
}
/** 重置按钮操作 */
function
resetQuery
()
{
proxy
.
resetForm
(
"queryRef"
);
handleQuery
();
}
/** 导入按钮操作 */
function
handleImport
()
{
upload
.
title
=
"数据导入"
;
upload
.
open
=
true
;
}
;
/** 下载模板操作 */
function
importTemplate
()
{
proxy
.
download
(
"staffmanage/onboardmanage/importTemplate"
,
{
}
,
`user_information_${new Date().getTime()
}
.xlsx`
);
}
;
/**文件上传中处理 */
const
handleFileUploadProgress
=
(
event
,
file
,
fileList
)
=>
{
upload
.
isUploading
=
true
;
}
;
/** 文件上传成功处理 */
const
handleFileSuccess
=
(
response
,
file
,
fileList
)
=>
{
upload
.
open
=
false
;
upload
.
isUploading
=
false
;
proxy
.
$refs
[
"uploadRef"
].
handleRemove
(
file
);
proxy
.
$alert
(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>"
+
response
.
msg
+
"</div>"
,
"导入结果"
,
{
dangerouslyUseHTMLString
:
true
}
);
getList
();
}
;
/** 提交上传文件 */
function
submitFileForm
()
{
proxy
.
$refs
[
"uploadRef"
].
submit
();
}
;
// 多选框选中数据
function
handleSelectionChange
(
selection
)
{
ids
.
value
=
selection
.
map
(
item
=>
item
.
id
);
single
.
value
=
selection
.
length
!=
1
;
multiple
.
value
=
!
selection
.
length
;
}
const
router
=
useRouter
();
/** 修改按钮操作 */
const
handleUpdate
=
(
row
)
=>
{
reset
();
const
_id
=
row
.
id
||
ids
.
value
;
router
.
push
({
path
:
'/staffmanage/editdraftonboardmanage'
,
query
:
{
id
:
_id
}
}
);
}
;
const
handleCheck
=
(
row
)
=>
{
reset
();
const
_id
=
row
.
id
||
ids
.
value
;
router
.
push
({
path
:
'/staffmanage/checkemployee'
,
query
:
{
id
:
_id
}
}
);
}
;
/** 提交按钮 */
function
submitForm
()
{
proxy
.
$refs
[
"onboardmanageRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
form
.
value
.
id
!=
null
)
{
updateOnBoardManage
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"修改成功"
);
open
.
value
=
false
;
getList
();
}
);
}
else
{
addOnBoardManage
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"新增成功"
);
open
.
value
=
false
;
getList
();
}
);
}
}
}
);
}
/** 删除按钮操作 */
function
handleDelete
(
row
)
{
const
_ids
=
row
.
id
||
ids
.
value
;
proxy
.
$modal
.
confirm
(
'是否删除姓名为"'
+
row
.
name
+
'"的数据项?'
).
then
(
function
()
{
return
delOnBoardManage
(
_ids
);
}
).
then
(()
=>
{
getList
();
proxy
.
$modal
.
msgSuccess
(
"删除成功"
);
}
).
catch
(()
=>
{
}
);
}
/** 导出按钮操作 */
function
handleExport
()
{
proxy
.
download
(
'staffmanage/onboardmanage/export'
,
{
...
queryParams
.
value
}
,
`onboardmanage_${new Date().getTime()
}
.xlsx`
)
}
onMounted
(()
=>
{
getList
();
}
);
getList
();
<
/script
>
<
style
scoped
>
::
v
-
deep
.
el
-
table
th
{
height
:
56
px
;
padding
:
10
px
0
;
/* 上下内边距各 10px,总高度 50px */
line
-
height
:
30
px
;
/* 调整行高以适应内容 */
}
.
img
-
container
{
width
:
38
px
;
height
:
38
px
;
background
:
#
F6F8FC
;
border
-
radius
:
10
px
;
}
.
main
-
container
{
float
:
right
;
margin
-
right
:
94
px
;
margin
-
top
:
-
42
px
;
}
.
button
-
title
{
margin
-
bottom
:
40
px
;
}
.
employeeStateSearch
{
margin
-
left
:
100
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
margin
-
top
:
20
px
;
}
.
educationLevelSearch
{
margin
-
left
:
32
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
margin
-
top
:
20
px
;
}
.
employmentFormSearch
{
margin
-
left
:
68
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
margin
-
top
:
20
px
;
}
.
serviceCompanySearch
{
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
margin
-
top
:
20
px
;
}
.
nameSearch
{
margin
-
left
:
32
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
}
.
nameInput
{
width
:
220
px
;
height
:
36
px
;
margin
-
left
:
12
px
;
}
.
genderSearch
{
margin
-
left
:
100
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
}
.
genderInput
{
width
:
220
px
;
height
:
36
px
;
margin
-
left
:
12
px
;
}
.
idNumberSearch
{
margin
-
left
:
100
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
13
px
;
}
.
idNumberInput
{
width
:
220
px
;
height
:
36
px
;
margin
-
left
:
12
px
;
}
.
titleForTable
{
width
:
100
px
;
height
:
15
px
;
position
:
relative
;
margin
-
top
:
27
px
;
margin
-
left
:
32
px
;
font
-
family
:
PingFangSC
-
Medium
;
font
-
weight
:
500
;
font
-
size
:
18
px
;
color
:
#
0
D162A
;
letter
-
spacing
:
0
;
line
-
height
:
15
px
;
}
.
titleLine
{
width
:
90
px
;
height
:
4
px
;
background
:
#
0062
FF
;
margin
-
left
:
32
px
;
margin
-
top
:
8
px
}
.
add
-
button
{
width
:
120
px
;
height
:
36
px
;
border
:
1
px
solid
#
0062
FF
;
border
-
radius
:
2
px
;
font
-
family
:
PingFangSC
-
Regular
;
font
-
weight
:
400
;
font
-
size
:
16
px
;
color
:
#
0062
FF
;
letter
-
spacing
:
0
;
text
-
align
:
center
;
line
-
height
:
13
px
;
margin
-
top
:
-
36
px
;
float
:
right
;
margin
-
right
:
100
px
}
.
pagination
-
containers
{
display
:
flex
;
justify
-
content
:
center
;
margin
-
left
:
250
px
;
margin
-
top
:
100
px
;
}
.
button
-
container
{
display
:
flex
;
justify
-
content
:
center
;
align
-
items
:
center
;
}
.
button
-
container
.
el
-
button
{
margin
-
right
:
5
px
;
}
.
button
-
container
.
el
-
button
:
last
-
child
{
margin
-
right
:
0
;
}
/* 过渡动画 */
/* 自定义展开动画 */
.
slide
-
down
-
enter
-
active
,
.
slide
-
down
-
leave
-
active
{
transition
:
all
0.3
s
ease
;
overflow
:
hidden
;
}
.
slide
-
down
-
enter
-
from
,
.
slide
-
down
-
leave
-
to
{
max
-
height
:
0
;
opacity
:
0
;
padding
-
top
:
0
;
margin
-
top
:
0
;
}
.
slide
-
down
-
enter
-
to
,
.
slide
-
down
-
leave
-
from
{
max
-
height
:
100
px
;
opacity
:
1
;
}
<
/style
>
src/views/staffmanage/onboardmanage/edit.vue
View file @
31bf840e
...
@@ -224,7 +224,6 @@
...
@@ -224,7 +224,6 @@
</el-row>
</el-row>
<el-form-item
class=
"bottom-button"
>
<el-form-item
class=
"bottom-button"
>
<el-button
@
click=
"goBack"
class=
"cancel-button"
>
取 消
</el-button>
<el-button
@
click=
"goBack"
class=
"cancel-button"
>
取 消
</el-button>
<el-button
class=
"savecConfirm-button"
>
保存
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"submitForm"
>
确 定
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
...
src/views/staffmanage/onboardmanage/editDraft.vue
0 → 100644
View file @
31bf840e
<
template
>
<div
class=
"app-container"
>
<div
class=
"content"
>
<div
class=
"titleBox"
>
<span
class=
"titleForTable"
>
修改人员
</span>
<div
class=
"titleLine"
></div>
</div>
<div
class=
"addForm"
>
<el-form
ref=
"onboardmanageRef"
:model=
"form"
:rules=
"rules"
label-width=
"auto"
>
<el-row>
<el-form-item
label=
"姓名"
prop=
"name"
class=
"textForInput"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入姓名"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"身份证号"
prop=
"idNumber"
class=
"contentInput"
>
<el-input
v-model=
"form.idNumber"
placeholder=
"请输入身份证号"
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"性别"
prop=
"gender"
class=
"textForInput"
>
<el-select
v-model=
"form.gender"
placeholder=
"请选择"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in genderOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"出生日期"
prop=
"birthday"
class=
"contentInput"
>
<el-date-picker
clearable
v-model=
"form.birthday"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"请选择出生日期"
class=
"addInput"
>
</el-date-picker>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"手机号"
prop=
"phone"
class=
"textForInput"
>
<el-input
v-model=
"form.phone"
placeholder=
"请输入手机号"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"户籍类型"
prop=
"homeType"
class=
"contentInput"
>
<el-radio-group
v-model=
"form.homeType"
size=
"medium"
>
<el-radio
v-for=
"(item, index) in homeTypeOptions"
:key=
"index"
:label=
"item.value"
:disabled=
"item.disabled"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"籍贯"
prop=
"nativePlace"
class=
"textForInput"
>
<el-cascader
size=
"large"
:options=
"pcaTextArr"
v-model=
"form.nativePlace"
class=
"addInput"
clearable
></el-cascader>
</el-form-item>
<el-form-item
label=
"民族"
prop=
"nationality"
class=
"contentInput"
>
<el-input
v-model=
"form.nationality"
placeholder=
"请输入民族"
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"户籍所在地"
prop=
"homeAddress"
class=
"textForInput"
>
<el-input
v-model=
"form.homeAddress"
placeholder=
"请输入户籍所在地"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"常住地址"
prop=
"permanentAddress"
class=
"contentInput"
>
<el-input
v-model=
"form.permanentAddress"
placeholder=
"请输入常住地址"
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"政治面貌"
prop=
"politicalOutlook"
class=
"textForInput"
>
<el-select
v-model=
"form.politicalOutlook"
placeholder=
"请选择"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in politicalOutlookOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"婚姻状态"
prop=
"maritalStatus"
class=
"contentInput"
>
<el-radio-group
v-model=
"form.maritalStatus"
size=
"medium"
>
<el-radio
v-for=
"(item, index) in maritalStatusOptions"
:key=
"index"
:label=
"item.value"
:disabled=
"item.disabled"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"参加工作日期"
prop=
"workDate"
class=
"textForInput"
>
<el-date-picker
clearable
v-model=
"form.workDate"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"请选择参加工作日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"员工照片"
prop=
"workerPic"
class=
"contentInput"
>
<el-upload
ref=
"field170"
:file-list=
"workPicList"
:action=
"workPicAction"
:before-upload=
"fieldBeforeUpload"
>
<span
class=
"uploadText"
><img
src=
"@/assets/icons/common/upload.png"
class=
"uploadPic"
>
点击上传附件
</span>
</el-upload>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"紧急联系人姓名"
prop=
"emergencyContactName"
class=
"textForInput"
>
<el-input
v-model=
"form.emergencyContactName"
placeholder=
"请输入紧急联系人姓名"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"与联系人关系"
prop=
"emergencyContactRelation"
class=
"contentInput"
>
<el-select
v-model=
"form.emergencyContactRelation"
placeholder=
"请选择"
clearable
>
<el-option
v-for=
"item in relationOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"紧急联系人电话"
prop=
"emergencyContactPhone"
class=
"textForInput"
>
<el-input
v-model=
"form.emergencyContactPhone"
placeholder=
"请输入紧急联系人电话"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"银行账号"
prop=
"bankAccount"
class=
"contentInput"
>
<el-input
v-model=
"form.bankAccount"
placeholder=
"请输入银行账号"
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"开户行"
prop=
"openingBank"
class=
"textForInput"
>
<el-input
v-model=
"form.openingBank"
placeholder=
"请输入开户行"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"入职日期"
prop=
"serviceDate"
class=
"contentInput"
>
<el-date-picker
clearable
v-model=
"form.serviceDate"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"请选择入职日期"
class=
"addInput"
>
</el-date-picker>
</el-form-item>
</el-row>
<el-row>
</el-row>
<el-row>
<el-form-item
label=
"入职部门"
prop=
"serviceDepart"
class=
"textForInput"
>
<el-select
v-model=
"form.serviceDepart"
placeholder=
"请选择部门"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in serviceDepartOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"入职岗位 "
prop=
"entryPosition"
class=
"contentInput"
>
<el-input
v-model=
"form.entryPosition"
placeholder=
"请输入入职岗位 "
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"聘用形式"
prop=
"employmentForm"
class=
"textForInput"
>
<el-select
v-model=
"form.employmentForm"
placeholder=
"请选择聘用形式"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in employmentFormOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"正式薪资"
prop=
"formalSalary"
class=
"contentInput"
>
<el-input
v-model=
"form.formalSalary"
placeholder=
"请输入正式薪资"
class=
"addInput"
/>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"员工状态"
prop=
"employeeState"
class=
"textForInput"
>
<el-select
v-model=
"form.employeeState"
placeholder=
"请选择员工状态"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in employeeStateOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"是否有试用期"
prop=
"isTrialPeriod"
class=
"contentInput"
>
<el-radio-group
v-model=
"form.isTrialPeriod"
size=
"medium"
>
<el-radio
v-for=
"(item, index) in isTrialPeriodOptions"
:key=
"index"
:label=
"item.value"
:disabled=
"item.disabled"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<div
v-if=
"form.isTrialPeriod == 0"
>
<el-form-item
label=
"试用期薪资"
prop=
"trialPeriodSalary"
class=
"textForInput"
>
<el-input
v-model=
"form.trialPeriodSalary"
placeholder=
"请输入试用期薪资"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"试用期天数"
prop=
"trialPeriodDay"
class=
"textForInput"
>
<el-input
v-model=
"form.trialPeriodDay"
placeholder=
"请输入试用期天数"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"转正日期"
prop=
"dateOfConfirmation"
class=
"textForInput"
>
<el-date-picker
clearable
v-model=
"form.dateOfConfirmation"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"请选择转正日期"
>
</el-date-picker>
</el-form-item>
</div>
<el-row>
<el-form-item
label=
"最高学历"
prop=
"educationLevel"
class=
"textForInput"
>
<el-select
v-model=
"form.educationLevel"
placeholder=
"请选择最高学历"
clearable
class=
"addInput"
>
<el-option
v-for=
"item in educationLevelOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"毕业证"
prop=
"diplomaPic"
class=
"contentInput"
>
<el-upload
ref=
"field170"
:file-list=
"diplomaPicList"
:action=
"workPicAction"
:before-upload=
"fieldBeforeUpload"
>
<span
class=
"uploadText"
><img
src=
"@/assets/icons/common/upload.png"
class=
"uploadPic"
>
点击上传附件
</span>
</el-upload>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"学位证"
prop=
"degreePic"
class=
"textForInput"
>
<el-upload
ref=
"field170"
:file-list=
"degreePicList"
:action=
"workPicAction"
:before-upload=
"fieldBeforeUpload"
>
<span
class=
"uploadText"
><img
src=
"@/assets/icons/common/upload.png"
class=
"uploadPic"
>
点击上传附件
</span>
</el-upload>
</el-form-item>
<el-form-item
label=
"其他资质证书"
prop=
"otherCertification"
class=
"contentInputPic textForInput"
>
<el-upload
ref=
"field170"
:file-list=
"otherCertificationList"
:action=
"workPicAction"
:before-upload=
"fieldBeforeUpload"
>
<span
class=
"uploadText"
><img
src=
"@/assets/icons/common/upload.png"
class=
"uploadPic"
>
点击上传附件
</span>
</el-upload>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"是否借用公司资产"
prop=
"isBorrowCompanyAssets"
class=
"textForInput"
>
<el-radio-group
v-model=
"form.isBorrowCompanyAssets"
size=
"medium"
>
<el-radio
v-for=
"(item, index) in isBorrowCompanyAssetsOptions"
:key=
"index"
:label=
"item.value"
:disabled=
"item.disabled"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<div
v-if=
"form.isBorrowCompanyAssets =='0'"
class=
"borrowAssets"
>
<el-form-item
label=
"资产名称"
prop=
"assetsName"
class=
"textForInput"
>
<el-input
v-model=
"form.assetsName"
placeholder=
"请输入资产名称"
class=
"addInput"
/>
</el-form-item>
</div>
<el-row>
<el-form-item
label=
"本人签名"
prop=
"signature"
class=
"textForInput"
>
<el-input
v-model=
"form.signature"
placeholder=
"请输入本人签名"
class=
"addInput"
/>
</el-form-item>
<el-form-item
label=
"提交时间"
prop=
"submissionTime"
class=
"contentInput"
>
<el-date-picker
clearable
v-model=
"form.submissionTime"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"请选择提交时间"
>
</el-date-picker>
</el-form-item>
</el-row>
<el-form-item
class=
"bottom-button"
>
<el-button
@
click=
"goBack"
class=
"cancel-button"
>
取 消
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"saveOnDraft"
>
保存
</el-button>
<el-button
class=
"savecConfirm-button"
@
click=
"submitForm"
>
确 定
</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</
template
>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
useRoute
}
from
'vue-router'
;
import
{
listOnBoardManage
,
getOnBoardManage
,
delOnBoardManage
,
updateOnBoardManage
,
updateOnBoardManageDraft
}
from
"@/api/onboardmanage/onboardmanage"
;
import
{
pcaTextArr
}
from
"element-china-area-data"
;
const
pcaTextArrRef
=
pcaTextArr
;
const
{
proxy
}
=
getCurrentInstance
();
const
{
sys_user_sex
,
home_type
,
political_outlook
,
marital_status
,
employment_form
,
employee_state
,
is_trial_period
,
education_level
,
emergency_contact_relation
,
service_depart
,
is_borrow_company_assets
}
=
proxy
.
useDict
(
'sys_user_sex'
,
'home_type'
,
'political_outlook'
,
'marital_status'
,
'employment_form'
,
'employee_state'
,
'is_trial_period'
,
'education_level'
,
'emergency_contact_relation'
,
'service_depart'
,
'is_borrow_company_assets'
);
const
tableData
=
ref
([
{
emergencyContactName
:
''
,
emergencyContactPhone
:
''
,
emergencyContactRelation
:
''
}
]);
const
goBack
=
()
=>
{
router
.
back
();
};
const
selectedRows
=
ref
([]);
const
selectedOptions
=
ref
([]);
const
onboardmanageList
=
ref
([]);
const
open
=
ref
(
false
);
const
loading
=
ref
(
true
);
const
showSearch
=
ref
(
true
);
const
ids
=
ref
([]);
const
single
=
ref
(
true
);
const
multiple
=
ref
(
true
);
const
total
=
ref
(
0
);
const
title
=
ref
(
""
);
const
workPicList
=
ref
([]);
const
diplomaPicList
=
ref
([]);
const
degreePicList
=
ref
([]);
const
otherCertificationList
=
ref
([]);
const
workPicAction
=
'http://localhost:8080/file/upload'
;
const
genderOptions
=
ref
([]);
const
homeTypeOptions
=
ref
([]);
const
politicalOutlookOptions
=
ref
([]);
const
maritalStatusOptions
=
ref
([]);
const
employmentFormOptions
=
ref
([]);
const
employeeStateOptions
=
ref
([]);
const
isTrialPeriodOptions
=
ref
([]);
const
educationLevelOptions
=
ref
([]);
const
relationOptions
=
ref
([
]);
const
serviceDepartOptions
=
ref
([]);
const
managerOpinions
=
ref
([]);
const
isBorrowCompanyAssetsOptions
=
ref
([]);
const
serviceCompanyOpinions
=
ref
([]);
const
genderDict
=
ref
([]);
// 性别字典
const
homeTypeDict
=
ref
([]);
// 户籍类型字典
const
politicalOutlookDict
=
ref
([]);
// 政治面貌字典
const
maritalStatusDict
=
ref
([]);
// 婚姻状况字典
const
employmentFormDict
=
ref
([]);
// 聘用形式字典
const
employeeStateDict
=
ref
([]);
// 员工状态字典
const
isTrialPeriodDict
=
ref
([]);
// 是否试用期字典
const
educationLevelDict
=
ref
([]);
// 学历字典
const
relationDict
=
ref
([]);
// 关系字典
const
serviceDepartDict
=
ref
([]);
//
const
managerOpinionsDict
=
ref
([]);
// 总经理意见字典
const
isBorrowCompanyAssetsDict
=
ref
([]);
// 是否借用公司资产字典
const
serviceCompanyDict
=
ref
([]);
// 所在公司字典
const
data
=
reactive
({
form
:
{},
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
name
:
null
,
idNumber
:
null
,
gender
:
null
,
phone
:
null
,
nativePlace
:
null
,
nationality
:
null
,
homeAddress
:
null
,
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"姓名不能为空"
,
trigger
:
"blur"
}],
idNumber
:
[{
required
:
true
,
message
:
"身份证号不能为空"
,
trigger
:
"blur"
}],
gender
:
[{
required
:
true
,
message
:
"性别不能为空"
,
trigger
:
"change"
}],
birthday
:
[{
required
:
true
,
message
:
"出生日期不能为空"
,
trigger
:
"change"
}],
phone
:
[{
required
:
true
,
message
:
"电话不能为空"
,
trigger
:
"blur"
}],
homeType
:
[{
required
:
true
,
message
:
"户籍类型不能为空"
,
trigger
:
"change"
}],
nativePlace
:
[{
required
:
true
,
message
:
"籍贯不能为空"
,
trigger
:
"blur"
}],
nationality
:
[{
required
:
true
,
message
:
"民族不能为空"
,
trigger
:
"blur"
}],
homeAddress
:
[{
required
:
true
,
message
:
"家庭住址不能为空"
,
trigger
:
"blur"
}],
permanentAddress
:
[{
required
:
true
,
message
:
"常住地址不能为空"
,
trigger
:
"blur"
}],
politicalOutlook
:
[{
required
:
true
,
message
:
"政治面貌不能为空"
,
trigger
:
"change"
}],
maritalStatus
:
[{
required
:
true
,
message
:
"婚姻状况不能为空"
,
trigger
:
"change"
}],
workDate
:
[{
required
:
true
,
message
:
"入职日期不能为空"
,
trigger
:
"change"
}],
insuredCity
:
[{
required
:
true
,
message
:
"参保城市不能为空"
,
trigger
:
"blur"
}],
bankAccount
:
[{
required
:
true
,
message
:
"银行卡号不能为空"
,
trigger
:
"blur"
}],
openingBank
:
[{
required
:
true
,
message
:
"开户银行不能为空"
,
trigger
:
"blur"
}],
serviceDate
:
[{
required
:
true
,
message
:
"参加工作日期不能为空"
,
trigger
:
"change"
}],
serviceDepart
:
[{
required
:
true
,
message
:
"部门不能为空"
,
trigger
:
"change"
}],
entryPosition
:
[{
required
:
true
,
message
:
"入职职位不能为空"
,
trigger
:
"blur"
}],
employmentForm
:
[{
required
:
true
,
message
:
"聘用形式不能为空"
,
trigger
:
"change"
}],
formalSalary
:
[{
required
:
true
,
message
:
"正式薪资不能为空"
,
trigger
:
"blur"
}],
employeeState
:
[{
required
:
true
,
message
:
"员工状态不能为空"
,
trigger
:
"change"
}],
isTrialPeriod
:
[{
required
:
true
,
message
:
"是否试用期不能为空"
,
trigger
:
"change"
}],
trialPeriodSalary
:
[{
required
:
true
,
message
:
"试用期薪资不能为空"
,
trigger
:
"blur"
}],
trialPeriodDay
:
[{
required
:
true
,
message
:
"试用期天数不能为空"
,
trigger
:
"blur"
}],
educationLevel
:
[{
required
:
true
,
message
:
"学历不能为空"
,
trigger
:
"change"
}],
/*diplomaPic: [{required: true, message: "毕业证书不能为空", trigger: "change"}],
degreePic: [{required: true, message: "学位证不能为空", trigger: "change"}],
otherCertification: [{required: true, message: "其他证件不能为空", trigger: "change"}]*/
signature
:
[{
required
:
true
,
message
:
"本人签名不能为空"
,
trigger
:
"blur"
}],
managerSignature
:
[{
required
:
true
,
message
:
"审批人签名不能为空"
,
trigger
:
"blur"
}],
managerOpinion
:
[{
required
:
true
,
message
:
"审批意见不能为空"
,
trigger
:
"change"
}],
submissionTime
:
[{
required
:
true
,
message
:
"提交时间不能为空"
,
trigger
:
"change"
}],
emergencyContactName
:[{
required
:
true
,
message
:
"紧急联系人姓名不能为空"
,
trigger
:
"blur"
}],
emergencyContactPhone
:
[{
required
:
true
,
message
:
"紧急联系人电话不能为空"
,
trigger
:
"blur"
}],
emergencyContactRelation
:
[{
required
:
true
,
message
:
"紧急联系人关系不能为空"
,
trigger
:
"change"
}],
isBorrowCompanyAssets
:
[{
required
:
true
,
message
:
"是否借用公司资产不能为空"
,
trigger
:
"change"
}],
assetsName
:
[{
required
:
true
,
message
:
"资产名称不能为空"
,
trigger
:
"blur"
}],
}
});
const
{
queryParams
,
form
,
rules
}
=
toRefs
(
data
);
const
route
=
useRoute
();
/*const form=ref({})*/
onMounted
(
async
()
=>
{
const
id
=
route
.
query
.
id
;
if
(
id
){
const
res
=
await
getOnBoardManage
(
id
);
form
.
value
=
res
.
data
;
}
})
//取消按钮
function
cancel
()
{
open
.
value
=
false
;
reset
();
}
// 表单重置
function
reset
()
{
form
.
value
=
{
id
:
null
,
name
:
null
,
idNumber
:
null
,
gender
:
null
,
birthday
:
null
,
phone
:
null
,
homeType
:
null
,
nativePlace
:
null
,
nationality
:
null
,
homeAddress
:
null
,
permanentAddress
:
null
,
politicalOutlook
:
null
,
maritalStatus
:
null
,
workDate
:
null
,
workerPic
:
null
,
emergencyContactName
:
null
,
emergencyContactPhone
:
null
,
emergencyContactRelation
:
null
,
insuredCity
:
null
,
socialSecurityAccount
:
null
,
housingFundAccount
:
null
,
bankAccount
:
null
,
openingBank
:
null
,
serviceDate
:
null
,
serviceDepart
:
null
,
entryPosition
:
null
,
employmentForm
:
null
,
formalSalary
:
null
,
employeeState
:
null
,
isTrialPeriod
:
null
,
trialPeriodSalary
:
null
,
trialPeriodDay
:
null
,
dateOfConfirmation
:
null
,
educationLevel
:
null
,
diplomaPic
:
null
,
degreePic
:
null
,
otherCertification
:
null
,
university
:
null
,
graduationDate
:
null
,
majorStudied
:
null
,
signature
:
null
,
applicationTime
:
null
,
managerOpinion
:
null
,
approvalTime
:
null
,
managerSignature
:
null
,
submitter
:
null
,
submissionTime
:
null
,
updateTime
:
null
,
processState
:
null
,
currentNode
:
null
,
currentResponsiblePerson
:
null
};
proxy
.
resetForm
(
"onboardmanageRef"
);
}
const
addRow
=
()
=>
{
tableData
.
value
.
push
({
emergencyContactName
:
''
,
emergencyContactPhone
:
''
,
emergencyContactRelation
:
''
});
};
const
deleteRow
=
(
index
)
=>
{
tableData
.
value
.
splice
(
index
,
1
);
};
const
router
=
useRouter
();
const
deleteSelectedRows
=
()
=>
{
selectedRows
.
value
.
forEach
(
row
=>
{
const
index
=
tableData
.
value
.
indexOf
(
row
);
if
(
index
>
-
1
)
{
tableData
.
value
.
splice
(
index
,
1
);
}
});
selectedRows
.
value
=
[];
};
const
formatGenderType
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
genderDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatHomeType
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
homeTypeDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatPoliticalOutlook
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
politicalOutlookDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatMaritalStatus
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
maritalStatusDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatEmploymentForm
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
employmentFormDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatEmployeeState
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
employeeStateDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatIsTrialPeriod
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
isTrialPeriodDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
const
formatEducationLevel
=
(
row
,
column
,
cellValue
)
=>
{
const
value
=
String
(
cellValue
);
const
dictItem
=
educationLevelDict
.
value
.
find
(
item
=>
String
(
item
.
dictValue
)
===
value
);
return
dictItem
?
dictItem
.
dictLabel
:
cellValue
;
};
function
fieldBeforeUpload
(
file
)
{
let
isRightSize
=
file
.
size
/
1024
/
1024
<
2
if
(
!
isRightSize
)
{
this
.
$message
.
error
(
'文件大小超过 2MB'
)
}
return
isRightSize
}
function
handleSelectionChange1
(
val
)
{
this
.
selectedRows
=
val
;
}
/** 查询入职审批列表 */
function
getList
()
{
loading
.
value
=
true
;
listOnBoardManage
(
queryParams
.
value
).
then
(
response
=>
{
onboardmanageList
.
value
=
response
.
rows
;
total
.
value
=
response
.
total
;
loading
.
value
=
false
;
});
}
/** 搜索按钮操作 */
function
handleQuery
()
{
queryParams
.
value
.
pageNum
=
1
;
getList
();
}
/** 重置按钮操作 */
function
resetQuery
()
{
proxy
.
resetForm
(
"queryRef"
);
handleQuery
();
}
// 多选框选中数据
function
handleSelectionChange
(
selection
)
{
ids
.
value
=
selection
.
map
(
item
=>
item
.
id
);
single
.
value
=
selection
.
length
!=
1
;
multiple
.
value
=
!
selection
.
length
;
}
/** 新增按钮操作 */
function
handleAdd
()
{
reset
();
//open.value = true;
const
router
=
useRouter
();
this
.
$router
.
push
({
path
:
'/staffManage/addemployee'
});
// 替换为你要跳转的实际路径
title
.
value
=
"添加员工"
;
}
/** 修改按钮操作 */
function
handleUpdate
(
row
)
{
reset
();
const
_id
=
row
.
id
||
ids
.
value
getOnBoardManage
(
_id
).
then
(
response
=>
{
form
.
value
=
response
.
data
;
open
.
value
=
true
;
title
.
value
=
"修改员工"
;
});
}
/** 提交按钮 */
function
submitForm
()
{
proxy
.
$refs
[
"onboardmanageRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
updateOnBoardManageDraft
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"修改成功"
);
router
.
push
(
'/staffManage/onboardmanage'
);
getList
();
});
}
});
}
function
saveOnDraft
(){
proxy
.
$refs
[
"onboardmanageRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
updateOnBoardManage
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"保存成功"
);
router
.
push
(
'/staffManage/draftonboardmanage'
);
getList
();
});
}
});
}
onMounted
(()
=>
{
getList
();
proxy
.
$getDicts
(
"sys_user_sex"
).
then
(
res
=>
{
genderDict
.
value
=
res
.
data
;
genderOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"home_type"
).
then
(
res
=>
{
homeTypeDict
.
value
=
res
.
data
;
homeTypeOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"political_outlook"
).
then
(
res
=>
{
politicalOutlookDict
.
value
=
res
.
data
;
politicalOutlookOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"marital_status"
).
then
(
res
=>
{
maritalStatusDict
.
value
=
res
.
data
;
maritalStatusOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"employment_form"
).
then
(
res
=>
{
employmentFormDict
.
value
=
res
.
data
;
employmentFormOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"employee_state"
).
then
(
res
=>
{
employeeStateDict
.
value
=
res
.
data
;
employeeStateOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"is_trial_period"
).
then
(
res
=>
{
isTrialPeriodDict
.
value
=
res
.
data
;
isTrialPeriodOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"education_level"
).
then
(
res
=>
{
educationLevelDict
.
value
=
res
.
data
;
educationLevelOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"emergency_contact_relation"
).
then
(
res
=>
{
relationDict
.
value
=
res
.
data
;
relationOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"service_depart"
).
then
(
res
=>
{
serviceDepartDict
.
value
=
res
.
data
;
serviceDepartOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"manager_opinion"
).
then
(
res
=>
{
managerOpinionsDict
.
value
=
res
.
data
;
managerOpinions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"is_borrow_company_assets"
).
then
(
res
=>
{
isBorrowCompanyAssetsDict
.
value
=
res
.
data
;
isBorrowCompanyAssetsOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
proxy
.
$getDicts
(
"service_company"
).
then
(
res
=>
{
serviceCompanyDict
.
value
=
res
.
data
;
serviceCompanyOpinions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
parseInt
(
item
.
dictValue
,
10
),
label
:
item
.
dictLabel
,
disabled
:
item
.
disabled
}));
});
console
.
log
(
"sys_user_sex 结构:"
,
sys_user_sex
);
});
</
script
>
<
style
scoped
>
.textForInput
{
font-family
:
PingFangSC-Regular
;
font-weight
:
400
;
font-size
:
16px
;
color
:
#282D35
;
letter-spacing
:
0
;
text-align
:
right
;
line-height
:
13px
;
}
.borrowAssets
{
margin-bottom
:
50px
;
}
.contentInput
{
margin-left
:
200px
;
font-family
:
PingFangSC-Regular
;
font-weight
:
400
;
font-size
:
16px
;
color
:
#282D35
;
letter-spacing
:
0
;
text-align
:
right
;
line-height
:
13px
;
}
.titleForTable
{
width
:
72px
;
height
:
15px
;
margin-left
:
32px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
500
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
.titleLine
{
margin-top
:
57px
;
width
:
72px
;
height
:
4px
;
background
:
#0062FF
;
margin-left
:
32px
;
margin-top
:
8px
}
.addForm
{
margin-top
:
42px
;
margin-left
:
28px
;
}
.addInput
{
width
:
400px
!important
;
height
:
40px
!important
;
}
:deep
(
.el-date-editor
)
{
width
:
400px
!important
;
height
:
40px
!important
;
}
:deep
(
.el-select__wrapper
)
{
width
:
400px
!important
;
height
:
40px
!important
;
}
:deep
(
.el-input--large
.el-input__wrapper
)
{
width
:
400px
!important
;
height
:
40px
!important
;
}
.uploadPic
{
}
.uploadText
{
font-family
:
PingFangSC-Regular
;
font-weight
:
400
;
font-size
:
16px
;
color
:
#0062FF
;
letter-spacing
:
0
;
line-height
:
13px
;
}
.contentInputPic
{
margin-left
:
484px
;
}
.bottom-button
{
float
:
right
;
margin-right
:
52px
;
margin-top
:
50px
;
}
.cancel-button
{
width
:
116px
;
height
:
40px
;
font-family
:
PingFangSC-Regular
;
font-weight
:
400
;
font-size
:
16px
;
color
:
#536387
;
letter-spacing
:
0
;
text-align
:
center
;
line-height
:
13px
;
}
.savecConfirm-button
{
width
:
116px
;
height
:
40px
;
background
:
#0147EB
;
font-family
:
PingFangSC-Regular
;
font-weight
:
400
;
font-size
:
16px
;
color
:
#FFFFFF
;
letter-spacing
:
0
;
text-align
:
center
;
line-height
:
13px
;
}
</
style
>
src/views/staffmanage/onboardmanage/index.vue
View file @
31bf840e
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
>
新增入职
</el-button>
>
新增入职
</el-button>
<div
class=
"main-container"
>
<div
class=
"main-container"
>
<el-tooltip
effect=
"dark"
content=
"草稿箱"
placement=
"top"
class=
"img-container"
>
<el-tooltip
effect=
"dark"
content=
"草稿箱"
placement=
"top"
class=
"img-container"
>
<el-button
link
type=
"primary"
>
<el-button
link
type=
"primary"
@
click=
"handleDrafts"
>
<img
src=
"@/assets/icons/common/rightone.png"
>
<img
src=
"@/assets/icons/common/rightone.png"
>
</el-button>
</el-button>
</el-tooltip>
</el-tooltip>
...
@@ -426,7 +426,9 @@ function handleImport() {
...
@@ -426,7 +426,9 @@ function handleImport() {
upload
.
title
=
"数据导入"
;
upload
.
title
=
"数据导入"
;
upload
.
open
=
true
;
upload
.
open
=
true
;
}
;
}
;
function
handleDrafts
(){
router
.
push
({
path
:
'/staffmanage/draftonboardmanage'
}
);
}
/** 下载模板操作 */
/** 下载模板操作 */
function
importTemplate
()
{
function
importTemplate
()
{
proxy
.
download
(
"staffmanage/onboardmanage/importTemplate"
,
{
proxy
.
download
(
"staffmanage/onboardmanage/importTemplate"
,
{
...
...
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