Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
hr-admin-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-admin-view
Commits
a0af350f
Commit
a0af350f
authored
Nov 21, 2025
by
刘斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 完善转正和合同续约流程
parent
8d635d57
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1362 additions
and
3 deletions
+1362
-3
contractExpirationReminder.ts
apps/web-antd/src/api/hr/contractExpirationReminder.ts
+102
-0
employeeInfo.ts
apps/web-antd/src/api/hr/employeeInfo.ts
+16
-1
employeeModel.d.ts
apps/web-antd/src/api/hr/employeeModel.d.ts
+56
-0
regularReminder.ts
apps/web-antd/src/api/hr/regularReminder.ts
+98
-0
hr.ts
apps/web-antd/src/router/routes/modules/hr.ts
+25
-0
apply-renewal_contract-model.vue
...ntractExpirationReminder/apply-renewal_contract-model.vue
+179
-0
data.ts
.../web-antd/src/views/hr/contractExpirationReminder/data.ts
+157
-0
list.vue
...web-antd/src/views/hr/contractExpirationReminder/list.vue
+185
-0
apply-resign-model.vue
...web-antd/src/views/hr/employeeInfo/apply-resign-model.vue
+14
-0
fallback-image.txt
apps/web-antd/src/views/hr/employeeInfo/fallback-image.txt
+0
-1
form.vue
apps/web-antd/src/views/hr/employeeInfo/form.vue
+1
-1
apply-regular-model.vue
...antd/src/views/hr/regularReminder/apply-regular-model.vue
+212
-0
data.ts
apps/web-antd/src/views/hr/regularReminder/data.ts
+136
-0
list.vue
apps/web-antd/src/views/hr/regularReminder/list.vue
+181
-0
No files found.
apps/web-antd/src/api/hr/contractExpirationReminder.ts
0 → 100644
View file @
a0af350f
import
type
{
BaseModel
,
PageQuery
}
from
'#/api/baseModel'
;
import
{
commonExport
}
from
'#/api/helper'
;
import
{
requestClient
}
from
'#/api/request'
;
export
namespace
ContractExpirationReminderApi
{
export
interface
ContractExpirationReminder
extends
BaseModel
{
/**
* 板块
*/
plate
?:
string
;
/**
* 一级部门
*/
firstLevelDepartment
?:
string
;
/**
* 二级部门
*/
secondLevelDepartment
?:
string
;
/**
* 三级部门
*/
thirdLevelDepartment
?:
string
;
/**
* 部门ID
*/
deptId
?:
number
;
/**
* 主岗位
*/
position
?:
string
;
/**
* 姓名
*/
name
?:
string
;
/**
* 手机号码
*/
phoneNumber
?:
string
;
/**
* 劳动合同开始时间
*/
contractStartDate
?:
string
;
/**
* 劳动合同截止时间
*/
contractEndDate
?:
string
;
/**
* 合同形式
*/
contractForm
?:
string
;
/**
* 备注
*/
remarks
?:
string
;
}
}
/**
* 查询员工合同续签提醒列表
* @param params
* @returns {*} page
*/
export
function
apiPage
(
params
:
PageQuery
)
{
return
requestClient
.
get
(
'/employee/contractExpiration/page'
,
{
params
});
}
// /**
// * 查询员工合同续签提醒详细
// * @param id
// */
// export function apiDetail(id: number) {
// return requestClient.get(`/employee/contractExpirationReminder/${id}`);
// }
// /**
// * 新增员工合同续签提醒
// * @param data
// */
// export function apiAdd(data: ContractExpirationReminderApi.ContractExpirationReminder) {
// return requestClient.post('/employee/contractExpirationReminder', data);
// }
// /**
// * 修改员工合同续签提醒
// * @param data
// */
// export function apiUpdate(data: ContractExpirationReminderApi.ContractExpirationReminder) {
// return requestClient.put('/employee/contractExpirationReminder', data);
// }
// /**
// * 删除员工合同续签提醒
// * @param id
// */
// export function apiDelete(id: Array<number> | number) {
// return requestClient.delete(`/employee/contractExpirationReminder/${id}`);
// }
/**
* 导出员工合同续签提醒
* @param params
*/
export
function
apiExport
(
params
:
PageQuery
)
{
return
commonExport
(
'/employee/contractExpiration/export'
,
params
);
}
apps/web-antd/src/api/hr/employeeInfo.ts
View file @
a0af350f
...
@@ -84,7 +84,22 @@ export function applyResign(data: EmployeeInfoApi.EmployeeResignApplyBo) {
...
@@ -84,7 +84,22 @@ export function applyResign(data: EmployeeInfoApi.EmployeeResignApplyBo) {
export
function
applyTransfer
(
data
:
EmployeeInfoApi
.
EmployeeTransferApplyBo
)
{
export
function
applyTransfer
(
data
:
EmployeeInfoApi
.
EmployeeTransferApplyBo
)
{
return
requestClient
.
post
(
'/employee/info/applyTransfer'
,
data
);
return
requestClient
.
post
(
'/employee/info/applyTransfer'
,
data
);
}
}
/**
* 申请员工入职
* @param data
*/
export
function
applyRegular
(
data
:
EmployeeInfoApi
.
EmployeeRegularApplyBo
)
{
return
requestClient
.
post
(
'/employee/info/applyRegular'
,
data
);
}
/**
* 申请员工入职
* @param data
*/
export
function
applyRenewalContract
(
data
:
EmployeeInfoApi
.
EmployeeRenewalContractApplyBo
,
)
{
return
requestClient
.
post
(
'/employee/info/applyRenewalContract'
,
data
);
}
/**
/**
* 下载用户导入模板
* 下载用户导入模板
* @returns blob
* @returns blob
...
...
apps/web-antd/src/api/hr/employeeModel.d.ts
View file @
a0af350f
...
@@ -439,6 +439,62 @@ export namespace EmployeeInfoApi {
...
@@ -439,6 +439,62 @@ export namespace EmployeeInfoApi {
*/
*/
finalPayDate
?:
Date
;
finalPayDate
?:
Date
;
}
}
export
interface
EmployeeRegularApplyBo
extends
EmployeeApplyBaseBo
{
/**
* 劳动合同开始时间
*/
contractStartDate
?:
Date
;
/**
* 劳动合同截止时间
*/
contractEndDate
?:
Date
;
/**
* 劳动合同签订情况
*/
contractSigningStatus
?:
string
;
/**
* 合同主体
*/
contractEntity
?:
string
;
/**
* 社保主体
*/
socialSecurityEntity
?:
string
;
/**
* 是否缴纳社保
*/
hasSocialSecurityPaid
?:
string
;
/**
* 公积金主体
*/
providentFundEntity
?:
string
;
/**
* 是否缴纳公积金
*/
hasProvidentFundPaid
?:
string
;
/**
* 转正时间
*/
regularizationDate
?:
Date
;
}
export
interface
EmployeeRenewalContractApplyBo
extends
EmployeeApplyBaseBo
{
/**
* 劳动合同开始时间
*/
contractStartDate
?:
Date
;
/**
* 劳动合同截止时间
*/
contractEndDate
?:
Date
;
/**
* 合同形式
*/
contractForm
?:
string
;
/**
* 劳动合同签订情况
*/
contractSigningStatus
?:
string
;
}
}
}
// export interface EmployeeResign extends EmployeeInfoApi.Employee {
// export interface EmployeeResign extends EmployeeInfoApi.Employee {
...
...
apps/web-antd/src/api/hr/regularReminder.ts
0 → 100644
View file @
a0af350f
import
type
{
BaseModel
,
PageQuery
}
from
'#/api/baseModel'
;
import
{
commonExport
}
from
'#/api/helper'
;
import
{
requestClient
}
from
'#/api/request'
;
export
namespace
EmployeeRegularReminderApi
{
export
interface
EmployeeRegularReminder
extends
BaseModel
{
/**
* 板块
*/
plate
?:
string
;
/**
* 一级部门
*/
firstLevelDepartment
?:
string
;
/**
* 二级部门
*/
secondLevelDepartment
?:
string
;
/**
* 三级部门
*/
thirdLevelDepartment
?:
string
;
/**
* 部门ID
*/
deptId
?:
number
;
/**
* 主岗位
*/
position
?:
string
;
/**
* 姓名
*/
name
?:
string
;
/**
* 手机号码
*/
phoneNumber
?:
string
;
/**
* 入职时间
*/
entryDate
?:
string
;
/**
* 转正时间
*/
expectedRegularDate
?:
string
;
/**
* 备注
*/
remarks
?:
string
;
}
}
/**
* 查询转正提醒列表
* @param params
* @returns {*} page
*/
export
function
apiPage
(
params
:
PageQuery
)
{
return
requestClient
.
get
(
'/employee/regularReminder/page'
,
{
params
});
}
// /**
// * 查询转正提醒详细
// * @param id
// */
// export function apiDetail(id: number) {
// return requestClient.get(`/employee/employeeRegularReminder/${id}`);
// }
// /**
// * 新增转正提醒
// * @param data
// */
// export function apiAdd(data: EmployeeRegularReminderApi.EmployeeRegularReminder) {
// return requestClient.post('/employee/employeeRegularReminder', data);
// }
// /**
// * 修改转正提醒
// * @param data
// */
// export function apiUpdate(data: EmployeeRegularReminderApi.EmployeeRegularReminder) {
// return requestClient.put('/employee/employeeRegularReminder', data);
// }
// /**
// * 删除转正提醒
// * @param id
// */
// export function apiDelete(id: Array<number> | number) {
// return requestClient.delete(`/employee/employeeRegularReminder/${id}`);
// }
/**
* 导出转正提醒
* @param params
*/
export
function
apiExport
(
params
:
PageQuery
)
{
return
commonExport
(
'/employee/regularReminder/export'
,
params
);
}
apps/web-antd/src/router/routes/modules/hr.ts
View file @
a0af350f
...
@@ -48,6 +48,31 @@ const routes: RouteRecordRaw[] = [
...
@@ -48,6 +48,31 @@ const routes: RouteRecordRaw[] = [
componentPath
:
'#/views/hr/phoneBook/list.vue'
,
componentPath
:
'#/views/hr/phoneBook/list.vue'
,
},
},
},
},
{
path
:
'/hr/regularReminder/list'
,
name
:
'RegularReminderList'
,
component
:
()
=>
import
(
'#/views/hr/regularReminder/list.vue'
),
meta
:
{
title
:
'转正提醒管理'
,
icon
:
'solar:monitor-smartphone-outline'
,
keepAlive
:
true
,
permission
:
[
'dashboard'
],
componentPath
:
'#/views/hr/regularReminder/list.vue'
,
},
},
{
path
:
'/hr/contractExpiration/list'
,
name
:
'ContractExpirationReminder'
,
component
:
()
=>
import
(
'#/views/hr/contractExpirationReminder/list.vue'
),
meta
:
{
title
:
'合同续约提醒'
,
icon
:
'solar:monitor-smartphone-outline'
,
keepAlive
:
true
,
permission
:
[
'dashboard'
],
componentPath
:
'#/views/hr/contractExpirationReminder/list.vue'
,
},
},
{
{
name
:
'EmployeeFlowList'
,
name
:
'EmployeeFlowList'
,
path
:
'/hr/employee/flow'
,
path
:
'/hr/employee/flow'
,
...
...
apps/web-antd/src/views/hr/contractExpirationReminder/apply-renewal_contract-model.vue
0 → 100644
View file @
a0af350f
<
script
lang=
"ts"
setup
>
import
type
{
VbenFormSchema
}
from
'#/adapter/form'
;
import
type
{
EmployeeInfoApi
}
from
'#/api/hr/employeeModel'
;
import
{
ref
}
from
'vue'
;
import
{
useVbenModal
}
from
'@vben/common-ui'
;
import
{
getVxePopupContainer
}
from
'@vben/utils'
;
import
{
useVbenForm
}
from
'#/adapter/form'
;
import
{
applyRenewalContract
}
from
'#/api/hr/employeeInfo'
;
import
{
getDictOptions
}
from
'#/utils/dict'
;
import
{
defaultFormValueGetter
,
useBeforeCloseDiff
}
from
'#/utils/popup'
;
import
{
HrDictEnum
}
from
'../dict-enum'
;
const
emit
=
defineEmits
<
{
success
:
[];
}
>
();
const
formData
=
ref
<
EmployeeInfoApi
.
EmployeeRenewalContractApplyBo
>
();
const
formSchema
:
VbenFormSchema
[]
=
[
{
label
:
'主键'
,
fieldName
:
'id'
,
component
:
'Input'
,
dependencies
:
{
show
:
()
=>
false
,
triggerFields
:
[
''
],
},
},
{
component
:
'Input'
,
fieldName
:
'name'
,
label
:
'姓名'
,
disabled
:
true
,
},
{
component
:
'RadioGroup'
,
componentProps
:
{
buttonStyle
:
'solid'
,
optionType
:
'button'
,
options
:
getDictOptions
(
HrDictEnum
.
HR_CONTRACT_FORM
),
},
fieldName
:
'contractForm'
,
label
:
'合同形式'
,
rules
:
'required'
,
},
{
component
:
'DatePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
valueFormat
:
'YYYY-MM-DD'
,
getVxePopupContainer
,
},
fieldName
:
'contractStartDate'
,
label
:
'合同开始时间'
,
rules
:
'required'
,
},
{
component
:
'DatePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
valueFormat
:
'YYYY-MM-DD'
,
getVxePopupContainer
,
},
fieldName
:
'contractEndDate'
,
label
:
'合同截止时间'
,
rules
:
'required'
,
},
// {
// component: 'Input',
// fieldName: 'contractEntity',
// label: '合同主体',
// rules: 'required',
// },
{
component
:
'Textarea'
,
// componentProps: {
// buttonStyle: 'solid',
// optionType: 'button',
// },
fieldName
:
'contractSigningStatus'
,
label
:
'合同签订情况'
,
rules
:
'required'
,
},
// {
// component: 'Input',
// fieldName: 'dictType',
// label: '字典类型',
// rules: 'required',
// },
// {
// component: 'Input',
// fieldName: 'description',
// label: '描述',
// rules: 'required',
// },
{
component
:
'Textarea'
,
fieldName
:
'remark'
,
label
:
'申请备注'
,
formItemClass
:
'items-start'
,
},
];
const
[
BasicForm
,
formApi
]
=
useVbenForm
({
commonConfig
:
{
componentProps
:
{
class
:
'w-full'
,
},
formItemClass
:
'col-span-2'
,
labelWidth
:
100
,
},
schema
:
formSchema
,
showDefaultActions
:
false
,
wrapperClass
:
'grid-cols-2'
,
});
const
{
onBeforeClose
,
markInitialized
,
resetInitialized
}
=
useBeforeCloseDiff
(
{
initializedGetter
:
defaultFormValueGetter
(
formApi
),
currentGetter
:
defaultFormValueGetter
(
formApi
),
},
);
const
[
BasicModal
,
modalApi
]
=
useVbenModal
({
fullscreenButton
:
false
,
onBeforeClose
,
onClosed
:
handleClosed
,
onConfirm
:
onSubmit
,
onOpenChange
:
async
(
isOpen
)
=>
{
if
(
!
isOpen
)
{
return
null
;
}
modalApi
.
modalLoading
(
true
);
const
data
=
modalApi
.
getData
()
as
{
id
?:
number
;
name
?:
string
};
if
(
data
)
{
formData
.
value
=
data
;
await
formApi
.
setValues
(
formData
.
value
);
}
await
markInitialized
();
modalApi
.
modalLoading
(
false
);
},
});
async
function
onSubmit
()
{
const
{
valid
}
=
await
formApi
.
validate
();
if
(
valid
)
{
modalApi
.
lock
();
const
data
=
await
formApi
.
getValues
<
EmployeeInfoApi
.
EmployeeRenewalContractApplyBo
>
();
try
{
await
applyRenewalContract
(
data
);
resetInitialized
();
emit
(
'success'
);
modalApi
.
close
();
}
finally
{
modalApi
.
unlock
();
}
}
}
async
function
handleClosed
()
{
await
formApi
.
resetForm
();
resetInitialized
();
}
// const getModalTitle = computed(() =>
// formData.value?.id ? '修改字典类型' : '新增字典类型',
// );
</
script
>
<
template
>
<BasicModal
title=
"合同续约申请"
>
<BasicForm
class=
"mx-4"
/>
</BasicModal>
</
template
>
apps/web-antd/src/views/hr/contractExpirationReminder/data.ts
0 → 100644
View file @
a0af350f
import
type
{
VbenFormSchema
}
from
'#/adapter/form'
;
import
type
{
VxeTableGridOptions
}
from
'#/adapter/vxe-table'
;
import
type
{
ContractExpirationReminderApi
}
from
'#/api/hr/contractExpirationReminder'
;
import
{
getDictOptions
}
from
'#/utils/dict'
;
import
{
HrDictEnum
}
from
'../dict-enum'
;
export
const
querySchema
:
VbenFormSchema
[]
=
[
{
component
:
'Input'
,
fieldName
:
'plate'
,
label
:
'板块'
,
},
{
component
:
'Input'
,
fieldName
:
'firstLevelDepartment'
,
label
:
'一级部门'
,
},
{
component
:
'Input'
,
fieldName
:
'secondLevelDepartment'
,
label
:
'二级部门'
,
},
{
component
:
'Input'
,
fieldName
:
'thirdLevelDepartment'
,
label
:
'三级部门'
,
},
// {
// component: 'Input',
// fieldName: 'deptId',
// label: '部门ID',
// },
{
component
:
'Input'
,
fieldName
:
'position'
,
label
:
'主岗位'
,
},
{
component
:
'Input'
,
fieldName
:
'name'
,
label
:
'姓名'
,
},
{
component
:
'Input'
,
fieldName
:
'phoneNumber'
,
label
:
'手机号码'
,
},
{
component
:
'RangePicker'
,
fieldName
:
'contractStartDate'
,
label
:
'合同开始时间'
,
},
{
component
:
'RangePicker'
,
fieldName
:
'contractEndDate'
,
label
:
'合同截止时间'
,
},
{
component
:
'Select'
,
componentProps
:
{
options
:
getDictOptions
(
HrDictEnum
.
HR_CONTRACT_FORM
),
},
fieldName
:
'contractForm'
,
label
:
'合同形式'
,
},
// {
// component: 'Input',
// fieldName: 'remarks',
// label: '备注',
// },
];
export
function
useColumns
():
VxeTableGridOptions
<
ContractExpirationReminderApi
.
ContractExpirationReminder
>
[
'columns'
]
{
return
[
{
title
:
'板块'
,
field
:
'plate'
,
},
{
title
:
'一级部门'
,
field
:
'firstLevelDepartment'
,
},
{
title
:
'二级部门'
,
field
:
'secondLevelDepartment'
,
},
{
title
:
'三级部门'
,
field
:
'thirdLevelDepartment'
,
},
// {
// title: '部门ID',
// field: 'deptId',
// },
{
title
:
'主岗位'
,
field
:
'position'
,
},
{
title
:
'姓名'
,
field
:
'name'
,
},
{
title
:
'手机'
,
field
:
'phoneNumber'
,
},
{
title
:
'劳动合同开始时间'
,
field
:
'contractStartDate'
,
formatter
:
'formatDate'
,
},
{
title
:
'劳动合同截止时间'
,
field
:
'contractEndDate'
,
formatter
:
'formatDate'
,
},
{
title
:
'合同形式'
,
field
:
'contractForm'
,
},
{
title
:
'备注'
,
field
:
'remarks'
,
},
{
align
:
'right'
,
slots
:
{
default
:
'action'
},
// cellRender: {
// attrs: {
// nameField: 'name',
// nameTitle: '员工合同续签提醒',
// onClick: onActionClick,
// },
// name: 'CellOperation',
// options: [
// {
// code: 'edit',
// accessCode: ['employee:contractExpirationReminder:edit'],
// }, // 默认的编辑按钮
// {
// code: 'delete',
// accessCode: ['employee:contractExpirationReminder:remove'],
// }, // 默认的删除按钮
// ],
// },
field
:
'action'
,
fixed
:
'right'
,
headerAlign
:
'center'
,
resizable
:
false
,
showOverflow
:
false
,
title
:
'操作'
,
width
:
'auto'
,
},
];
}
apps/web-antd/src/views/hr/contractExpirationReminder/list.vue
0 → 100644
View file @
a0af350f
<
script
lang=
"ts"
setup
>
import
type
{
VbenFormProps
}
from
'@vben/common-ui'
;
import
type
{
VxeTableGridOptions
}
from
'#/adapter/vxe-table'
;
import
type
{
ContractExpirationReminderApi
}
from
'#/api/hr/contractExpirationReminder'
;
import
{
Page
,
useVbenDrawer
,
useVbenModal
}
from
'@vben/common-ui'
;
import
{
Button
,
Space
}
from
'ant-design-vue'
;
import
{
useVbenVxeGrid
}
from
'#/adapter/vxe-table'
;
import
{
apiExport
,
apiPage
}
from
'#/api/hr/contractExpirationReminder'
;
import
{
GhostButton
}
from
'#/components/global/button'
;
import
{
commonDownloadExcel
}
from
'#/utils/file/download'
;
import
employeeDetailDrawer
from
'../employeeInfo/employee-detail-drawer.vue'
;
import
applyRenewalContractModel
from
'./apply-renewal_contract-model.vue'
;
import
{
querySchema
,
useColumns
}
from
'./data'
;
// import Form from './form.vue';
const
formOptions
:
VbenFormProps
=
{
commonConfig
:
{
labelWidth
:
80
,
componentProps
:
{
allowClear
:
true
,
},
},
schema
:
querySchema
,
wrapperClass
:
'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'
,
// 日期选择格式化
fieldMappingTime
:
[
[
'contractStartDate'
,
[
'params[contractStartBeginTime]'
,
'params[contractStartEndTime]'
],
[
'YYYY-MM-DD 00:00:00'
,
'YYYY-MM-DD 23:59:59'
],
],
[
'contractEndDate'
,
[
'params[contractEndBeginTime]'
,
'params[contractEndEndTime]'
],
[
'YYYY-MM-DD 00:00:00'
,
'YYYY-MM-DD 23:59:59'
],
],
],
};
const
[
EmployeeDetailDrawer
,
employeeDetailDrawerApi
]
=
useVbenDrawer
({
connectedComponent
:
employeeDetailDrawer
,
});
const
[
ApplyRenewalContractModel
,
applyRenewalContractModelApi
]
=
useVbenModal
({
connectedComponent
:
applyRenewalContractModel
,
});
const
[
Grid
,
gridApi
]
=
useVbenVxeGrid
({
formOptions
,
gridOptions
:
{
columns
:
useColumns
(),
height
:
'auto'
,
keepSource
:
true
,
pagerConfig
:
{
enabled
:
true
,
},
proxyConfig
:
{
ajax
:
{
query
:
async
({
page
},
formValues
=
{})
=>
{
return
await
apiPage
({
pageNo
:
page
.
currentPage
,
pageSize
:
page
.
pageSize
,
...
formValues
,
});
},
},
},
rowConfig
:
{
keyField
:
'id'
,
// 高亮当前行
isCurrent
:
true
,
},
}
as
VxeTableGridOptions
,
});
// function onActionClick({ code, row }: OnActionClickParams
<
ContractExpirationReminderApi
.
ContractExpirationReminder
>
)
{
// switch (code) {
// case 'delete': {
// onDelete(row);
// break;
// }
// case 'edit': {
// onEdit(row);
// break;
// }
// default: {
// break;
// }
// }
// }
// function onRefresh() {
// gridApi.query();
// }
function
onEdit
(
row
:
ContractExpirationReminderApi
.
ContractExpirationReminder
)
{
employeeDetailDrawerApi
.
setData
({
id
:
row
.
id
}).
open
();
}
function
onApplyRenewalContract
(
row
:
ContractExpirationReminderApi
.
ContractExpirationReminder
,
)
{
applyRenewalContractModelApi
.
setData
({
id
:
row
.
id
,
name
:
row
.
name
}).
open
();
}
// function onCreate() {
// formDrawerApi.setData({}).open();
// }
// function onDelete(row: ContractExpirationReminderApi.ContractExpirationReminder) {
// const hideLoading = message.loading({
// content: `正在删除${row.name}...`,
// duration: 0,
// key: 'action_process_msg',
// });
// apiDelete(row.id || 0)
// .then(() => {
// message.success({
// content: `${row.name}删除成功`,
// key: 'action_process_msg',
// });
// onRefresh();
// })
// .catch(() => {
// hideLoading();
// });
// }
function
handleDownloadExcel
()
{
commonDownloadExcel
(
apiExport
,
'员工合同续签提醒'
,
gridApi
.
formApi
.
form
.
values
,
);
}
</
script
>
<
template
>
<Page
auto-content-height
>
<EmployeeDetailDrawer
/>
<Grid
table-title=
"员工合同续签提醒列表"
>
<template
#
toolbar-tools
>
<Space>
<Button
v-access:code=
"['employee:contractExpiration:export']"
@
click=
"handleDownloadExcel"
>
导出
</Button>
<!--
<Button
v-access:code=
"['employee:contractExpirationReminder:add']"
type=
"primary"
@
click=
"onCreate"
>
<Plus
class=
"size-5"
/>
新增
</Button>
-->
</Space>
</
template
>
<
template
#
action=
"{ row }"
>
<!-- 租户管理员不可修改admin角色 防止误操作 -->
<!-- 超级管理员可通过租户切换来操作租户管理员角色 -->
<!-- -->
<!--
<template
v-if=
"!row.superAdmin && (row.roleKey !== 'admin' || isSuperAdmin)"
>
-->
<Space>
<GhostButton
v-access:code=
"['employee:contractExpiration:query']"
@
click
.
stop=
"onEdit(row)"
>
查看
</GhostButton>
<GhostButton
danger
v-access:code=
"['employee:info:contractRenewal']"
@
click
.
stop=
"onApplyRenewalContract(row)"
>
申请合同续约
</GhostButton>
</Space>
<!--
</
template
>
-->
</template>
</Grid>
<ApplyRenewalContractModel
/>
</Page>
</template>
apps/web-antd/src/views/hr/employeeInfo/apply-resign-model.vue
View file @
a0af350f
...
@@ -9,8 +9,11 @@ import { getVxePopupContainer } from '@vben/utils';
...
@@ -9,8 +9,11 @@ import { getVxePopupContainer } from '@vben/utils';
import
{
useVbenForm
}
from
'#/adapter/form'
;
import
{
useVbenForm
}
from
'#/adapter/form'
;
import
{
applyResign
}
from
'#/api/hr/employeeInfo'
;
import
{
applyResign
}
from
'#/api/hr/employeeInfo'
;
import
{
getDictOptions
}
from
'#/utils/dict'
;
import
{
defaultFormValueGetter
,
useBeforeCloseDiff
}
from
'#/utils/popup'
;
import
{
defaultFormValueGetter
,
useBeforeCloseDiff
}
from
'#/utils/popup'
;
import
{
HrDictEnum
}
from
'../dict-enum'
;
const
emit
=
defineEmits
<
{
const
emit
=
defineEmits
<
{
success
:
[];
success
:
[];
}
>
();
}
>
();
...
@@ -32,6 +35,17 @@ const formSchema: VbenFormSchema[] = [
...
@@ -32,6 +35,17 @@ const formSchema: VbenFormSchema[] = [
label
:
'姓名'
,
label
:
'姓名'
,
disabled
:
true
,
disabled
:
true
,
},
},
{
component
:
'RadioGroup'
,
componentProps
:
{
buttonStyle
:
'solid'
,
optionType
:
'button'
,
options
:
getDictOptions
(
HrDictEnum
.
HR_RESIGNATION_TYPE
),
},
fieldName
:
'resignationType'
,
label
:
'离职类型'
,
rules
:
'required'
,
},
{
{
component
:
'DatePicker'
,
component
:
'DatePicker'
,
componentProps
:
{
componentProps
:
{
...
...
apps/web-antd/src/views/hr/employeeInfo/fallback-image.txt
deleted
100644 → 0
View file @
8d635d57
data:image/png;base64,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
apps/web-antd/src/views/hr/employeeInfo/form.vue
View file @
a0af350f
...
@@ -826,7 +826,7 @@ async function onSubmit() {
...
@@ -826,7 +826,7 @@ async function onSubmit() {
if
(
valid
)
{
if
(
valid
)
{
drawerApi
.
lock
();
drawerApi
.
lock
();
const
data
=
await
formApi
.
getValues
<
EmployeeInfoApi
.
Employee
>
();
const
data
=
await
formApi
.
getValues
<
EmployeeInfoApi
.
Employee
>
();
console
.
log
(
'[data]'
,
data
);
//
console.log('[data]', data);
try
{
try
{
await
(
formData
.
value
?.
id
await
(
formData
.
value
?.
id
?
apiUpdate
({
id
:
formData
.
value
.
id
,
...
data
})
?
apiUpdate
({
id
:
formData
.
value
.
id
,
...
data
})
...
...
apps/web-antd/src/views/hr/regularReminder/apply-regular-model.vue
0 → 100644
View file @
a0af350f
<
script
lang=
"ts"
setup
>
import
type
{
VbenFormSchema
}
from
'#/adapter/form'
;
import
type
{
EmployeeInfoApi
}
from
'#/api/hr/employeeModel'
;
import
{
ref
}
from
'vue'
;
import
{
useVbenModal
}
from
'@vben/common-ui'
;
import
{
DictEnum
}
from
'@vben/constants'
;
import
{
getVxePopupContainer
}
from
'@vben/utils'
;
import
{
useVbenForm
}
from
'#/adapter/form'
;
import
{
applyRegular
}
from
'#/api/hr/employeeInfo'
;
import
{
getDictOptions
}
from
'#/utils/dict'
;
import
{
defaultFormValueGetter
,
useBeforeCloseDiff
}
from
'#/utils/popup'
;
const
emit
=
defineEmits
<
{
success
:
[];
}
>
();
const
formData
=
ref
<
EmployeeInfoApi
.
EmployeeRegularApplyBo
>
();
const
formSchema
:
VbenFormSchema
[]
=
[
{
label
:
'主键'
,
fieldName
:
'id'
,
component
:
'Input'
,
dependencies
:
{
show
:
()
=>
false
,
triggerFields
:
[
''
],
},
},
{
component
:
'Input'
,
fieldName
:
'name'
,
label
:
'姓名'
,
disabled
:
true
,
},
{
component
:
'DatePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
valueFormat
:
'YYYY-MM-DD'
,
getVxePopupContainer
,
},
fieldName
:
'contractStartDate'
,
label
:
'合同开始时间'
,
rules
:
'required'
,
},
{
component
:
'DatePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
valueFormat
:
'YYYY-MM-DD'
,
getVxePopupContainer
,
},
fieldName
:
'contractEndDate'
,
label
:
'合同截止时间'
,
rules
:
'required'
,
},
{
component
:
'Input'
,
fieldName
:
'contractEntity'
,
label
:
'合同主体'
,
rules
:
'required'
,
},
{
component
:
'Input'
,
// componentProps: {
// buttonStyle: 'solid',
// optionType: 'button',
// },
fieldName
:
'contractSigningStatus'
,
label
:
'合同签订情况'
,
rules
:
'required'
,
},
{
component
:
'DatePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
valueFormat
:
'YYYY-MM-DD'
,
getVxePopupContainer
,
},
fieldName
:
'regularizationDate'
,
label
:
'转正时间'
,
rules
:
'required'
,
},
{
component
:
'Input'
,
fieldName
:
'socialSecurityEntity'
,
label
:
'社保主体'
,
// rules: 'required',
},
{
component
:
'RadioGroup'
,
componentProps
:
{
buttonStyle
:
'solid'
,
optionType
:
'button'
,
options
:
getDictOptions
(
DictEnum
.
SYS_YES_NO
),
},
fieldName
:
'hasSocialSecurityPaid'
,
label
:
'是否缴纳社保'
,
// rules: 'required',
},
{
component
:
'Input'
,
fieldName
:
'providentFundEntity'
,
label
:
'公积金主体'
,
// rules: 'required',
},
{
component
:
'RadioGroup'
,
componentProps
:
{
buttonStyle
:
'solid'
,
optionType
:
'button'
,
options
:
getDictOptions
(
DictEnum
.
SYS_YES_NO
),
},
fieldName
:
'hasProvidentFundPaid'
,
label
:
'是否缴纳公积金'
,
// rules: 'required',
},
// {
// component: 'Input',
// fieldName: 'dictType',
// label: '字典类型',
// rules: 'required',
// },
// {
// component: 'Input',
// fieldName: 'description',
// label: '描述',
// rules: 'required',
// },
{
component
:
'Textarea'
,
fieldName
:
'remark'
,
label
:
'申请备注'
,
formItemClass
:
'items-start'
,
},
];
const
[
BasicForm
,
formApi
]
=
useVbenForm
({
commonConfig
:
{
componentProps
:
{
class
:
'w-full'
,
},
formItemClass
:
'col-span-2'
,
labelWidth
:
100
,
},
schema
:
formSchema
,
showDefaultActions
:
false
,
wrapperClass
:
'grid-cols-2'
,
});
const
{
onBeforeClose
,
markInitialized
,
resetInitialized
}
=
useBeforeCloseDiff
(
{
initializedGetter
:
defaultFormValueGetter
(
formApi
),
currentGetter
:
defaultFormValueGetter
(
formApi
),
},
);
const
[
BasicModal
,
modalApi
]
=
useVbenModal
({
fullscreenButton
:
false
,
onBeforeClose
,
onClosed
:
handleClosed
,
onConfirm
:
onSubmit
,
onOpenChange
:
async
(
isOpen
)
=>
{
if
(
!
isOpen
)
{
return
null
;
}
modalApi
.
modalLoading
(
true
);
const
data
=
modalApi
.
getData
()
as
{
id
?:
number
;
name
?:
string
};
if
(
data
)
{
formData
.
value
=
data
;
await
formApi
.
setValues
(
formData
.
value
);
}
await
markInitialized
();
modalApi
.
modalLoading
(
false
);
},
});
async
function
onSubmit
()
{
const
{
valid
}
=
await
formApi
.
validate
();
if
(
valid
)
{
modalApi
.
lock
();
const
data
=
await
formApi
.
getValues
<
EmployeeInfoApi
.
EmployeeRegularApplyBo
>
();
try
{
await
applyRegular
(
data
);
resetInitialized
();
emit
(
'success'
);
modalApi
.
close
();
}
finally
{
modalApi
.
unlock
();
}
}
}
async
function
handleClosed
()
{
await
formApi
.
resetForm
();
resetInitialized
();
}
// const getModalTitle = computed(() =>
// formData.value?.id ? '修改字典类型' : '新增字典类型',
// );
</
script
>
<
template
>
<BasicModal
title=
"转正申请"
>
<BasicForm
class=
"mx-4"
/>
</BasicModal>
</
template
>
apps/web-antd/src/views/hr/regularReminder/data.ts
0 → 100644
View file @
a0af350f
import
type
{
VbenFormSchema
}
from
'#/adapter/form'
;
import
type
{
VxeTableGridOptions
}
from
'#/adapter/vxe-table'
;
import
type
{
EmployeeRegularReminderApi
}
from
'#/api/hr/regularReminder'
;
export
const
querySchema
:
VbenFormSchema
[]
=
[
{
component
:
'Input'
,
fieldName
:
'plate'
,
label
:
'板块'
,
},
{
component
:
'Input'
,
fieldName
:
'firstLevelDepartment'
,
label
:
'一级部门'
,
},
{
component
:
'Input'
,
fieldName
:
'secondLevelDepartment'
,
label
:
'二级部门'
,
},
{
component
:
'Input'
,
fieldName
:
'thirdLevelDepartment'
,
label
:
'三级部门'
,
},
// {
// component: 'Input',
// fieldName: 'deptId',
// label: '部门ID',
// },
{
component
:
'Input'
,
fieldName
:
'position'
,
label
:
'主岗位'
,
},
{
component
:
'Input'
,
fieldName
:
'name'
,
label
:
'姓名'
,
},
{
component
:
'Input'
,
fieldName
:
'phoneNumber'
,
label
:
'手机号码'
,
},
{
component
:
'RangePicker'
,
fieldName
:
'entryDate'
,
label
:
'入职时间'
,
},
{
component
:
'RangePicker'
,
fieldName
:
'expectedRegularDate'
,
label
:
'转正时间'
,
},
];
export
function
useColumns
():
VxeTableGridOptions
<
EmployeeRegularReminderApi
.
EmployeeRegularReminder
>
[
'columns'
]
{
return
[
{
title
:
'板块'
,
field
:
'plate'
,
},
{
title
:
'一级部门'
,
field
:
'firstLevelDepartment'
,
},
{
title
:
'二级部门'
,
field
:
'secondLevelDepartment'
,
},
{
title
:
'三级部门'
,
field
:
'thirdLevelDepartment'
,
},
// {
// title: '部门ID',
// field: 'deptId',
// },
{
title
:
'主岗位'
,
field
:
'position'
,
},
{
title
:
'姓名'
,
field
:
'name'
,
},
{
title
:
'手机号码'
,
field
:
'phoneNumber'
,
},
{
title
:
'入职时间'
,
field
:
'entryDate'
,
formatter
:
'formatDate'
,
},
{
title
:
'转正时间'
,
field
:
'expectedRegularDate'
,
formatter
:
'formatDate'
,
},
{
title
:
'备注'
,
field
:
'remarks'
,
},
{
align
:
'right'
,
slots
:
{
default
:
'action'
},
// cellRender: {
// attrs: {
// nameField: 'name',
// nameTitle: '转正提醒',
// onClick: onActionClick,
// },
// name: 'CellOperation',
// options: [
// {
// code: 'edit',
// accessCode: ['employee:employeeRegularReminder:edit'],
// }, // 默认的编辑按钮
// {
// code: 'delete',
// accessCode: ['employee:employeeRegularReminder:remove'],
// }, // 默认的删除按钮
// ],
// },
field
:
'action'
,
fixed
:
'right'
,
headerAlign
:
'center'
,
resizable
:
false
,
showOverflow
:
false
,
title
:
'操作'
,
width
:
'auto'
,
},
];
}
apps/web-antd/src/views/hr/regularReminder/list.vue
0 → 100644
View file @
a0af350f
<
script
lang=
"ts"
setup
>
import
type
{
VbenFormProps
}
from
'@vben/common-ui'
;
import
type
{
VxeTableGridOptions
}
from
'#/adapter/vxe-table'
;
import
type
{
EmployeeRegularReminderApi
}
from
'#/api/hr/regularReminder'
;
import
{
Page
,
useVbenDrawer
,
useVbenModal
}
from
'@vben/common-ui'
;
import
{
Button
,
Space
}
from
'ant-design-vue'
;
import
{
useVbenVxeGrid
}
from
'#/adapter/vxe-table'
;
import
{
apiExport
,
apiPage
}
from
'#/api/hr/regularReminder'
;
import
{
GhostButton
}
from
'#/components/global/button'
;
import
{
commonDownloadExcel
}
from
'#/utils/file/download'
;
import
employeeDetailDrawer
from
'../employeeInfo/employee-detail-drawer.vue'
;
import
applyRegularModel
from
'./apply-regular-model.vue'
;
import
{
querySchema
,
useColumns
}
from
'./data'
;
// import Form from './form.vue';
const
formOptions
:
VbenFormProps
=
{
commonConfig
:
{
labelWidth
:
80
,
componentProps
:
{
allowClear
:
true
,
},
},
schema
:
querySchema
,
wrapperClass
:
'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'
,
// 日期选择格式化
fieldMappingTime
:
[
[
'entryDate'
,
[
'params[entryBeginTime]'
,
'params[entryEndTime]'
],
[
'YYYY-MM-DD 00:00:00'
,
'YYYY-MM-DD 23:59:59'
],
],
[
'expectedRegularDate'
,
[
'params[expectedRegularBeginTime]'
,
'params[expectedRegularEndTime]'
],
[
'YYYY-MM-DD 00:00:00'
,
'YYYY-MM-DD 23:59:59'
],
],
],
};
const
[
EmployeeDetailDrawer
,
employeeDetailDrawerApi
]
=
useVbenDrawer
({
connectedComponent
:
employeeDetailDrawer
,
});
const
[
ApplyRegularModel
,
applyRegularModelApi
]
=
useVbenModal
({
connectedComponent
:
applyRegularModel
,
});
const
[
Grid
,
gridApi
]
=
useVbenVxeGrid
({
formOptions
,
gridOptions
:
{
columns
:
useColumns
(),
height
:
'auto'
,
keepSource
:
true
,
pagerConfig
:
{
enabled
:
true
,
},
proxyConfig
:
{
ajax
:
{
query
:
async
({
page
},
formValues
=
{})
=>
{
return
await
apiPage
({
pageNo
:
page
.
currentPage
,
pageSize
:
page
.
pageSize
,
...
formValues
,
});
},
},
},
rowConfig
:
{
keyField
:
'id'
,
// 高亮当前行
isCurrent
:
true
,
},
}
as
VxeTableGridOptions
,
});
// function onActionClick({ code, row }: OnActionClickParams
<
EmployeeRegularReminderApi
.
EmployeeRegularReminder
>
)
{
// switch (code) {
// case 'delete': {
// onDelete(row);
// break;
// }
// case 'edit': {
// onEdit(row);
// break;
// }
// default: {
// break;
// }
// }
// }
// function onRefresh() {
// gridApi.query();
// }
function
onEdit
(
row
:
EmployeeRegularReminderApi
.
EmployeeRegularReminder
)
{
employeeDetailDrawerApi
.
setData
({
id
:
row
.
id
}).
open
();
}
function
onApplyRegular
(
row
:
EmployeeRegularReminderApi
.
EmployeeRegularReminder
,
)
{
applyRegularModelApi
.
setData
({
id
:
row
.
id
,
name
:
row
.
name
}).
open
();
}
// function onCreate() {
// formDrawerApi.setData({}).open();
// }
// function onDelete(row: EmployeeRegularReminderApi.EmployeeRegularReminder) {
// const hideLoading = message.loading({
// content: `正在删除${row.name}...`,
// duration: 0,
// key: 'action_process_msg',
// });
// apiDelete(row.id || 0)
// .then(() => {
// message.success({
// content: `${row.name}删除成功`,
// key: 'action_process_msg',
// });
// onRefresh();
// })
// .catch(() => {
// hideLoading();
// });
// }
function
handleDownloadExcel
()
{
commonDownloadExcel
(
apiExport
,
'转正提醒'
,
gridApi
.
formApi
.
form
.
values
);
}
</
script
>
<
template
>
<Page
auto-content-height
>
<EmployeeDetailDrawer
/>
<Grid
table-title=
"转正提醒列表"
>
<template
#
toolbar-tools
>
<Space>
<Button
v-access:code=
"['employee:regularReminder:export']"
@
click=
"handleDownloadExcel"
>
导出
</Button>
<!--
<Button
v-access:code=
"['employee:employeeRegularReminder:add']"
type=
"primary"
@
click=
"onCreate"
>
<Plus
class=
"size-5"
/>
新增
</Button>
-->
</Space>
</
template
>
<
template
#
action=
"{ row }"
>
<!-- 租户管理员不可修改admin角色 防止误操作 -->
<!-- 超级管理员可通过租户切换来操作租户管理员角色 -->
<!-- -->
<!--
<template
v-if=
"!row.superAdmin && (row.roleKey !== 'admin' || isSuperAdmin)"
>
-->
<Space>
<GhostButton
v-access:code=
"['employee:regularReminder:query']"
@
click
.
stop=
"onEdit(row)"
>
查看
</GhostButton>
<GhostButton
danger
v-access:code=
"['employee:info:regular']"
@
click
.
stop=
"onApplyRegular(row)"
>
申请转正
</GhostButton>
</Space>
<!--
</
template
>
-->
</template>
</Grid>
<ApplyRegularModel
/>
</Page>
</template>
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