Browse Source

Merge branch 'yjf_v3'

# Conflicts:
#	src/api/hr/people/index.ts
#	src/types/components.d.ts
#	src/views/hr/archives/basicinformation/appraisalrecord.vue
lwx_v12
超级管理员 1 year ago
parent
commit
06582a3d92
  1. 249
      src/api/hr/people/datacont.ts
  2. 218
      src/api/hr/people/index.ts
  3. 183
      src/api/hr/people/type.ts
  4. 17
      src/types/components.d.ts
  5. 491
      src/views/hr/archives/archivescont.vue
  6. 140
      src/views/hr/archives/basicinformation/appraisalrecord.vue
  7. 118
      src/views/hr/archives/basicinformation/appraisalrecordadd.vue
  8. 135
      src/views/hr/archives/basicinformation/appraisalrecordedit.vue
  9. 183
      src/views/hr/archives/basicinformation/certificates.vue
  10. 130
      src/views/hr/archives/basicinformation/certificatesadd.vue
  11. 142
      src/views/hr/archives/basicinformation/certificatesedit.vue
  12. 252
      src/views/hr/archives/basicinformation/charactercolor.vue
  13. 261
      src/views/hr/archives/basicinformation/content.vue
  14. 604
      src/views/hr/archives/basicinformation/editcontent.vue
  15. 28
      src/views/hr/archives/basicinformation/educationalexperience.vue
  16. 25
      src/views/hr/archives/basicinformation/educationalexperienceadd.vue
  17. 28
      src/views/hr/archives/basicinformation/educationalexperienceedit.vue
  18. 129
      src/views/hr/archives/basicinformation/emergencycontact.vue
  19. 68
      src/views/hr/archives/basicinformation/emergencycontactadd.vue
  20. 15
      src/views/hr/archives/basicinformation/emergencycontactedit.vue
  21. 126
      src/views/hr/archives/basicinformation/employmentrelations.vue
  22. 129
      src/views/hr/archives/basicinformation/employmentrelationsadd.vue
  23. 140
      src/views/hr/archives/basicinformation/employmentrelationsedit.vue
  24. 126
      src/views/hr/archives/basicinformation/jobtitle.vue
  25. 116
      src/views/hr/archives/basicinformation/jobtitleadd.vue
  26. 128
      src/views/hr/archives/basicinformation/jobtitleedit.vue
  27. 145
      src/views/hr/archives/basicinformation/rewardsandpunishments.vue
  28. 127
      src/views/hr/archives/basicinformation/rewardsandpunishmentsadd.vue
  29. 146
      src/views/hr/archives/basicinformation/rewardsandpunishmentsedit.vue
  30. 138
      src/views/hr/archives/basicinformation/talentinventory.vue
  31. 103
      src/views/hr/archives/basicinformation/talentinventoryadd.vue
  32. 118
      src/views/hr/archives/basicinformation/talentinventoryedit.vue

249
src/api/hr/people/datacont.ts

@ -1,3 +1,5 @@
import { id } from "element-plus/es/locale";
/** /**
* 1:临时工 , 2:编外人员 ;3:实习&;4567891011退1213退14', * 1:临时工 , 2:编外人员 ;3:实习&;4567891011退1213退14',
`company` ', `company` ',
@ -548,3 +550,250 @@ export const postChangeType=[
name:"最高学历" name:"最高学历"
} }
] ]
//户口性质
export const Householdregistration = [
{
id:1,
name:'农业户口'
},
{
id:2,
name:'非农业户口'
}
]
//年份
export const year = [
{
id:1,
name:'2020年'
},
{
id:2,
name:'2021年'
},
{
id:3,
name:'2022年'
},
{
id:4,
name:'2023年'
},
]
//等级
export const level = [
{
id:1,
name:'A'
},
{
id:2,
name:'B'
},
{
id:3,
name:'C'
},
{
id:4,
name:'D'
}
,
{
id:5,
name:'E'
}
,
{
id:6,
name:'F'
}
]
//学历类型
export const educationtype = [
{
id:1,
name:'全日制统招'
}
,
{
id:2,
name:'成人高考'
}
,
{
id:3,
name:'网络教育'
}
,
{
id:4,
name:'国家开放大学'
}
,
{
id:5,
name:'自学考试'
}
,
{
id:6,
name:'其他'
}
]
//院校类型
export const schooltype = [
{
id:1,
name:'双一流院校'
}
,
{
id:2,
name:'"985"工程院校'
}
,
{
id:3,
name:'"211"工程院校'
}
,
{
id:4,
name:'公办本科院校'
}
,
{
id:5,
name:'公办专科院校'
}
,
{
id:6,
name:'民办本科院校'
}
,
{
id:7,
name:'民办专科院校'
}
,
{
id:8,
name:'部队院校'
}
,
{
id:9,
name:'高职院校'
}
,
{
id:10,
name:'公立中学'
}
,
{
id:11,
name:'公立中专'
}
,
{
id:12,
name:'其他'
}
]
//奖惩级别
export const rewardlevel = [
{
id:1,
name:'公司级'
}
,
{
id:2,
name:'部门级'
}
,
{
id:3,
name:'团队级'
}
,
{
id:4,
name:'个人级'
}
,
{
id:5,
name:'县级'
}
,
{
id:6,
name:'市级'
}
,
{
id:7,
name:'省级'
}
,
{
id:8,
name:'国家级'
}
]
//入职渠道
export const entrychannel = [
{
id:1,
name:'社会招聘'
}
,
{
id:2,
name:'校园招聘'
}
,
{
id:3,
name:'内部推荐'
}
,
{
id:4,
name:'其他'
}
]
//职称级别
export const jobtitlelevel = [
{
id:1,
name:'员级'
}
,
{
id:2,
name:'助理级'
}
,
{
id:3,
name:'中级'
}
,
{
id:4,
name:'副高级'
}
,
{
id:5,
name:'正高级'
}
]

218
src/api/hr/people/index.ts

@ -22,7 +22,20 @@ import {
editUserAboutOrg, editUserAboutOrg,
teamClassQueay, teamClassQueay,
searchPeoleCont, searchPeoleCont,
queryPeopleCont queryPeopleCont,
RewardsAndPunishmentsContAdd,
RewardsAndPunishmentsContEdit,
AppraisalrecordContAdd,
AppraisalrecordContEdit,
TalentinventoryContEdit,
TalentinventoryContAdd,
EmploymentrelationsContEdit,
EmploymentrelationsContAdd,
JobtitleContAdd,
JobtitleContEdit,
CertificatesContAdd,
CertificatesContEdit,
contNumber,
} from './type'; } from './type';
/** /**
* *
@ -366,6 +379,7 @@ import {
data: data data: data
}); });
} }
<<<<<<< HEAD
/** /**
* ID获取当前行政组织人员及子行政组织 * ID获取当前行政组织人员及子行政组织
@ -393,11 +407,18 @@ export function searchOrgUser(data: any) {
export function gainAllRole(data: any) { export function gainAllRole(data: any) {
return request({ return request({
url: '/systemapi/public/gainAllRole', url: '/systemapi/public/gainAllRole',
=======
//获取性格色彩
export function getCharacterColor(data?: contNumber):any {
return request({
url: '/hrapi/staff/getPeopleColor',
>>>>>>> yjf_v3
method: 'post', method: 'post',
data: data data: data
}); });
} }
<<<<<<< HEAD
/** /**
* *
*/ */
@ -439,3 +460,198 @@ export function searchOrgUser(data: any) {
data: data data: data
}); });
} }
=======
// 获取奖惩记录
export function getRewardsAndPunishmentsCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加奖惩记录
export function addRewardsAndPunishmentsCont(data?: RewardsAndPunishmentsContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑奖惩记录
export function editRewardsAndPunishmentsCont(data?: RewardsAndPunishmentsContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑奖惩记录状态
export function editRewardsAndPunishmentsContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//获取考评记录
export function getAppraisalrecordCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加考评记录
export function addAppraisalrecordCont(data?: AppraisalrecordContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑考评记录
export function editAppraisalrecordCont(data?: AppraisalrecordContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑考评记录状态
export function editAppraisalrecordContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//获取人才盘点
export function getTalentinventoryCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加人才盘点
export function addTalentinventoryCont(data?: TalentinventoryContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑人才盘点
export function editTalentinventoryCont(data?: TalentinventoryContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑人才盘点状态
export function editTalentinventoryContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//获取用工关系
export function getEmploymentrelationsCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加用工关系
export function addEmploymentrelationsCont(data?: EmploymentrelationsContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑用工关系
export function editEmploymentrelationsCont(data?: EmploymentrelationsContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑用工关系状态
export function editEmploymentrelationsContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//获取职称信息
export function getJobtitleCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加职称信息
export function addJobtitleCont(data?: JobtitleContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑职称信息
export function editJobtitleCont(data?: JobtitleContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑职称信息状态
export function editJobtitleContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//获取证书信息
export function getCertificatesCont(data?: contId) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//添加证书信息
export function addCertificatesCont(data?: CertificatesContAdd) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑证书信息
export function editCertificatesCont(data?: CertificatesContEdit) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
//编辑证书信息状态
export function editCertificatesContState(data?: delJjlxr) {
return request({
url: '/hrapi/',
method: 'post',
data: data
})
}
>>>>>>> yjf_v3

183
src/api/hr/people/type.ts

@ -74,6 +74,10 @@ export interface archivesCont{
keystr?:string //"4929995352838144"; keystr?:string //"4929995352838144";
teamname?:string //""; teamname?:string //"";
personincharge?:number // 2 personincharge?:number // 2
//新增
interests?:string
bloodtype?:string
natureofAccount?:string
} }
/** /**
* *
@ -142,6 +146,12 @@ export interface shuangzhigong{
time?:number time?:number
state?:number state?:number
key?:number key?:number
workcouple?:string
section?:string
job?:string
level?:string
mobilephone?:string
} }
/** /**
* *
@ -181,6 +191,9 @@ export interface jiaoyujingli{
educationcn?:string educationcn?:string
admissiontimestr?:string admissiontimestr?:string
graduationtimestr?:string graduationtimestr?:string
educationtype?:string
faculty?:string
schooltype?:string
} }
/** /**
* *
@ -322,6 +335,9 @@ export interface myinfostruct{
rulename?:string //"", rulename?:string //"",
orgreslist?:any //null orgreslist?:any //null
keystr?:string // keystr?:string //
interests?:string
bloodtype?:string
natureofAccount?:string
} }
/** /**
* Id * Id
@ -366,6 +382,9 @@ export interface userManOrFucont{
workwechat?: string workwechat?: string
constellationing?: number constellationing?: number
maritalstatus?: number maritalstatus?: number
interests?:string
bloodtype?:string
natureofAccount?:string
} }
/** /**
* *
@ -374,6 +393,8 @@ export interface emergencyContactInfo extends contId{
name?: string name?: string
relationship?: string relationship?: string
mobilephone?: string mobilephone?: string
political?: string
company?: string
} }
/** /**
* *
@ -402,6 +423,12 @@ export interface doubleWorkCont extends contId{
department?:string department?:string
position?:string position?:string
mobilephone?:string mobilephone?:string
workcouple?:string
section?:string
job?:string
level?:string
time?:string
} }
/** /**
* *
@ -438,6 +465,9 @@ export interface educExpInfo{
graduationtime?:string //"2008-06-06", graduationtime?:string //"2008-06-06",
academicdegree?:string //"1", academicdegree?:string //"1",
level?:string //"1" level?:string //"1"
educationtype?:string
faculty?:string
schooltype?:string
} }
/** /**
* *
@ -566,3 +596,156 @@ export interface queryPeopleCont{
tema:number // 1, tema:number // 1,
temaname:string // "长白班" temaname:string // "长白班"
} }
//根据工号获取性格色彩
export interface contNumber{
number:number;
}
export interface charactercolor{
id:string;
number:number;
color?:string;
}
//奖惩记录
export interface jiangchengjilu{
id:string;
level:string;
type:string;
content:string;
time:string;
company:string;
}
export interface RewardsAndPunishmentsCont{
id?:string;
level?:string;
type?:string;
content?:string;
time?:string;
company?:string;
}
//添加奖惩记录
export interface RewardsAndPunishmentsContAdd extends contId{
list?:RewardsAndPunishmentsCont[]
}
// 编辑奖惩记录
export interface RewardsAndPunishmentsContEdit extends RewardsAndPunishmentsCont{
id?: string
}
// 考评记录
export interface kaopingjilu{
id?:string;
level?:string;
year:string;
}
export interface AppraisalrecordCont{
id?:string;
level?:string;
year?:string;
}
// 添加考评记录
export interface AppraisalrecordContAdd extends contId{
list?:AppraisalrecordCont[]
}
// 编辑考评记录
export interface AppraisalrecordContEdit extends AppraisalrecordCont{
id?: string
}
// 人才盘点
export interface rencaipandian{
id?:string;
career?:string;
expecthelp:string;
}
export interface TalentinventoryCont{
id?:string;
career?:string;
expecthelp?:string;
}
// 添加人才盘点
export interface TalentinventoryContAdd extends contId{
list?:TalentinventoryCont[]
}
// 编辑人才盘点
export interface TalentinventoryContEdit extends TalentinventoryCont{
id?: string
}
// 用工关系
export interface yonggongguanxi{
id?:string;
entrychannel?:string;
startdate:string;
seniority?:string;
joindate?:string;
cliqueseniority?:string;
}
export interface EmploymentrelationsCont{
id?:string;
entrychannel?:string;
startdate?:string;
seniority?:number;
joindate?:string;
cliqueseniority?:number;
}
// 添加用工关系
export interface EmploymentrelationsContAdd extends contId{
list?:EmploymentrelationsCont[]
}
// 编辑用工关系
export interface EmploymentrelationsContEdit extends EmploymentrelationsCont{
id?: string
}
// 职称信息
export interface zhichengxinxi{
id?:string;
level?:string;
series?:string;
profession?:string;
serialnumber?:string;
effectivetime?:string;
}
export interface JobtitleCont{
id?:string;
level?:string;
series?:string;
profession?:string;
serialnumber?:string;
effectivetime?:string;
}
// 添加职称信息
export interface JobtitleContAdd extends contId{
list?:JobtitleCont[]
}
// 编辑职称信息
export interface JobtitleContEdit extends JobtitleCont{
id?: string
}
//证书信息
export interface zhengshuxinxi{
id?:string;
name?:string;
number?:string;
issuingunit?:string;
effectivetime?:string;
deadline?:string;
validity?:string;
iseffective?:string;
}
export interface CertificatesCont{
id?:string;
name?:string;
number?:string;
issuingunit?:string;
effectivetime?:string;
deadline?:string;
validity?:string;
iseffective?:string;
}
// 添加证书信息
export interface CertificatesContAdd extends contId{
list?:CertificatesCont[]
}
// 编辑证书信息
export interface CertificatesContEdit extends CertificatesCont{
id?: string
}

17
src/types/components.d.ts

@ -23,10 +23,14 @@ declare module '@vue/runtime-core' {
DesignLayoutPage: typeof import('./../components/DesignForm/designLayout/designLayoutPage.vue')['default'] DesignLayoutPage: typeof import('./../components/DesignForm/designLayout/designLayoutPage.vue')['default']
DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default'] DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default']
DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default'] DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default']
<<<<<<< HEAD
DragControlApp: typeof import('./../components/DesignForm/dragControlApp.vue')['default'] DragControlApp: typeof import('./../components/DesignForm/dragControlApp.vue')['default']
DragControlNew: typeof import('./../components/DesignForm/dragControlNew.vue')['default'] DragControlNew: typeof import('./../components/DesignForm/dragControlNew.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix'] ElAffix: typeof import('element-plus/es')['ElAffix']
ElAlert: typeof import('element-plus/es')['ElAlert'] ElAlert: typeof import('element-plus/es')['ElAlert']
=======
ElAffix: typeof import('element-plus/es')['ElAffix']
>>>>>>> yjf_v3
ElAside: typeof import('element-plus/es')['ElAside'] ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
@ -53,6 +57,7 @@ declare module '@vue/runtime-core' {
ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm'] ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader'] ElHeader: typeof import('element-plus/es')['ElHeader']
@ -77,9 +82,11 @@ declare module '@vue/runtime-core' {
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElSelectV2: typeof import('element-plus/es')['ElSelectV2']
ElSlider: typeof import('element-plus/es')['ElSlider'] ElSlider: typeof import('element-plus/es')['ElSlider']
<<<<<<< HEAD
ElSpace: typeof import('element-plus/es')['ElSpace'] ElSpace: typeof import('element-plus/es')['ElSpace']
=======
>>>>>>> yjf_v3
ElStep: typeof import('element-plus/es')['ElStep'] ElStep: typeof import('element-plus/es')['ElStep']
ElSteps: typeof import('element-plus/es')['ElSteps'] ElSteps: typeof import('element-plus/es')['ElSteps']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
@ -124,14 +131,15 @@ declare module '@vue/runtime-core' {
HeadToolsNew: typeof import('./../components/DesignForm/public/headToolsNew.vue')['default'] HeadToolsNew: typeof import('./../components/DesignForm/public/headToolsNew.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default'] IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
IEpClose: typeof import('~icons/ep/close')['default'] IEpClose: typeof import('~icons/ep/close')['default']
IEpCollection: typeof import('~icons/ep/collection')['default']
IEpDelete: typeof import('~icons/ep/delete')['default'] IEpDelete: typeof import('~icons/ep/delete')['default']
IEpDownload: typeof import('~icons/ep/download')['default'] IEpDownload: typeof import('~icons/ep/download')['default']
IEpEdit: typeof import('~icons/ep/edit')['default'] IEpEdit: typeof import('~icons/ep/edit')['default']
IEpMessageBox: typeof import('~icons/ep/message-box')['default'] IEpMessageBox: typeof import('~icons/ep/message-box')['default']
<<<<<<< HEAD
IEpMinus: typeof import('~icons/ep/minus')['default'] IEpMinus: typeof import('~icons/ep/minus')['default']
=======
>>>>>>> yjf_v3
IEpOperation: typeof import('~icons/ep/operation')['default'] IEpOperation: typeof import('~icons/ep/operation')['default']
IEpPicture: typeof import('~icons/ep/picture')['default'] IEpPicture: typeof import('~icons/ep/picture')['default']
IEpPlus: typeof import('~icons/ep/plus')['default'] IEpPlus: typeof import('~icons/ep/plus')['default']
@ -140,9 +148,12 @@ declare module '@vue/runtime-core' {
IEpRefreshLeft: typeof import('~icons/ep/refresh-left')['default'] IEpRefreshLeft: typeof import('~icons/ep/refresh-left')['default']
IEpSearch: typeof import('~icons/ep/search')['default'] IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default'] IEpSetting: typeof import('~icons/ep/setting')['default']
<<<<<<< HEAD
IEpTop: typeof import('~icons/ep/top')['default'] IEpTop: typeof import('~icons/ep/top')['default']
IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default'] IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
IEpUser: typeof import('~icons/ep/user')['default'] IEpUser: typeof import('~icons/ep/user')['default']
=======
>>>>>>> yjf_v3
IEpView: typeof import('~icons/ep/view')['default'] IEpView: typeof import('~icons/ep/view')['default']
LangSelect: typeof import('./../components/LangSelect/index.vue')['default'] LangSelect: typeof import('./../components/LangSelect/index.vue')['default']
LayoutPage: typeof import('./../components/DesignForm/layoutPage/index.vue')['default'] LayoutPage: typeof import('./../components/DesignForm/layoutPage/index.vue')['default']

491
src/views/hr/archives/archivescont.vue

@ -3,58 +3,71 @@
@ 时间: 2023-06-15 13:01:11 @ 时间: 2023-06-15 13:01:11
@ 备注: 员工档案 @ 备注: 员工档案
--> -->
<script lang='ts' setup> <script lang="ts" setup>
/** /**
* 引入页面 * 引入页面
*/ */
import UserContent from '@/views/hr/archives/basicinformation/content.vue' import UserContent from "@/views/hr/archives/basicinformation/content.vue";
import EditUserContent from '@/views/hr/archives/basicinformation/editcontent.vue' import EditUserContent from "@/views/hr/archives/basicinformation/editcontent.vue";
import OrgNexus from '@/views/hr/archives/basicinformation/orgnexus.vue' import OrgNexus from "@/views/hr/archives/basicinformation/orgnexus.vue";
import EmergencyContactPage from '@/views/hr/archives/basicinformation/emergencycontact.vue' import EmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontact.vue";
import WorkingCouplePage from '@/views/hr/archives/basicinformation/workingcouple.vue' import WorkingCouplePage from "@/views/hr/archives/basicinformation/workingcouple.vue";
import FamilyMembers from '@/views/hr/archives/basicinformation/familymembers.vue' import FamilyMembers from "@/views/hr/archives/basicinformation/familymembers.vue";
import EducationalExperience from '@/views/hr/archives/basicinformation/educationalexperience.vue' import EducationalExperience from "@/views/hr/archives/basicinformation/educationalexperience.vue";
import InnerWork from '@/views/hr/archives/basicinformation/innerwork.vue' import InnerWork from "@/views/hr/archives/basicinformation/innerwork.vue";
import OutsideWork from '@/views/hr/archives/basicinformation/outsideWork.vue' import OutsideWork from "@/views/hr/archives/basicinformation/outsideWork.vue";
import Editpwd from '@/views/hr/archives/basicinformation/editpwd.vue' import Editpwd from "@/views/hr/archives/basicinformation/editpwd.vue";
import EditOrg from '@/views/hr/archives/basicinformation/editorg.vue' import EditOrg from "@/views/hr/archives/basicinformation/editorg.vue";
import CharacterColor from "@/views/hr/archives/basicinformation/charactercolor.vue";
import Rewardsandpunishments from "@/views/hr/archives/basicinformation/rewardsandpunishments.vue";
import Appraisalrecord from "@/views/hr/archives/basicinformation/appraisalrecord.vue";
import Talentinventory from "@/views/hr/archives/basicinformation/talentinventory.vue";
import Employmentrelations from "@/views/hr/archives/basicinformation/employmentrelations.vue";
import Jobtitle from "@/views/hr/archives/basicinformation/jobtitle.vue";
import Certificates from "@/views/hr/archives/basicinformation/certificates.vue";
import { archivesCont } from '@/api/hr/people/type' import { archivesCont } from "@/api/hr/people/type";
import SvgIcon from '@/components/SvgIcon/index.vue'; import SvgIcon from "@/components/SvgIcon/index.vue";
import UserRole from '@/assets/icons/user.svg' import UserRole from "@/assets/icons/user.svg";
import { myinfostruct } from '@/api/hr/people/type'
import { getMyInfoing,editMyInfoIcon } from '@/api/hr/people/index'
import type { UploadProps } from 'element-plus'
import { myinfostruct } from "@/api/hr/people/type";
import { getMyInfoing, editMyInfoIcon } from "@/api/hr/people/index";
import type { UploadProps } from "element-plus";
const props = defineProps({ const props = defineProps({
isShow:{ isShow: {
type:Boolean, type: Boolean,
default:false default: false,
},
archivesdata: {
type: Object,
default() {
return {};
},
}, },
archivesdata:{
type:Object,
default(){
return {}
}
}
}); });
const emits = defineEmits(["update:isShow","updatemyconting","getarchivespageclick"]); // const emits = defineEmits([
"update:isShow",
"updatemyconting",
"getarchivespageclick",
]); //
const boxTitle = ref<string>(); // const boxTitle = ref<string>(); //
const userIcon = ref<string>(); // const userIcon = ref<string>(); //
const activeName = ref("1") const activeName = ref("1");
const editMyCont = ref(false); const editMyCont = ref(false);
// const userConting = ref<myinfostruct>(); // const userConting = ref<myinfostruct>();
const userConting = reactive<myinfostruct>({entrydatetime:"",probationperiod:1}); const userConting = reactive<myinfostruct>({
const rowLoading = ref(false) entrydatetime: "",
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API+"/api/upordown" probationperiod: 1,
});
const rowLoading = ref(false);
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown";
const editMyOrgCont = ref(false); const editMyOrgCont = ref(false);
/** /**
* 弹窗显示控制 * 弹窗显示控制
*/ */
const boxShow = computed({ const boxShow = computed({
get: () => props.isShow, get: () => props.isShow,
set: (val) => { set: (val) => {
emits("update:isShow", val); emits("update:isShow", val);
@ -63,136 +76,150 @@ const editMyOrgCont = ref(false);
/** /**
* 获取人员数据 * 获取人员数据
*/ */
function getjtcyList(){ function getjtcyList() {
rowLoading.value = true; rowLoading.value = true;
getMyInfoing({id:props.archivesdata.id,idstr:props.archivesdata.idstr}) getMyInfoing({ id: props.archivesdata.id, idstr: props.archivesdata.idstr })
.then(( data )=>{ .then((data) => {
// userConting.value = data.data // userConting.value = data.data
userConting.id = data.data.id userConting.id = data.data.id;
userConting.number = data.data.number //"300450", userConting.number = data.data.number; //"300450",
userConting.name = data.data.name //"", userConting.name = data.data.name; //"",
userConting.icon = data.data.icon // userConting.icon = data.data.icon; //
userConting.hireclass = data.data.hireclass //1, userConting.hireclass = data.data.hireclass; //1,
userConting.emptype = data.data.emptype //8, userConting.emptype = data.data.emptype; //8,
userConting.company = data.data.company //309, userConting.company = data.data.company; //309,
userConting.maindeparment = data.data.maindeparment //102, userConting.maindeparment = data.data.maindeparment; //102,
userConting.sunmaindeparment = data.data.sunmaindeparment //272, userConting.sunmaindeparment = data.data.sunmaindeparment; //272,
userConting.deparment = data.data.deparment //"", userConting.deparment = data.data.deparment; //"",
userConting.adminorg = data.data.adminorg //272, userConting.adminorg = data.data.adminorg; //272,
userConting.teamid = data.data.teamid //1, userConting.teamid = data.data.teamid; //1,
userConting.position = data.data.position //2184, userConting.position = data.data.position; //2184,
userConting.jobclass = data.data.jobclass //5, userConting.jobclass = data.data.jobclass; //5,
userConting.jobid = data.data.jobid //36, userConting.jobid = data.data.jobid; //36,
userConting.jobleve = data.data.jobleve //3, userConting.jobleve = data.data.jobleve; //3,
userConting.time = data.data.time //1656984567, userConting.time = data.data.time; //1656984567,
userConting.eitetime = data.data.eitetime //1671160648, userConting.eitetime = data.data.eitetime; //1671160648,
userConting.wechat = data.data.wechat //"", userConting.wechat = data.data.wechat; //"",
userConting.workwechat = data.data.workwechat //"KaiXinGuo", userConting.workwechat = data.data.workwechat; //"KaiXinGuo",
userConting.state = data.data.state //1, userConting.state = data.data.state; //1,
userConting.key = data.data.key //15993815826844528, userConting.key = data.data.key; //15993815826844528,
userConting.isadmin = data.data.isadmin //4, userConting.isadmin = data.data.isadmin; //4,
userConting.password = data.data.password //"ecffe8715d2d3c2743bab6abc90e1331", userConting.password = data.data.password; //"ecffe8715d2d3c2743bab6abc90e1331",
userConting.role = data.data.role //"1", userConting.role = data.data.role; //"1",
userConting.idcardno = data.data.idcardno //"370921198810151515", userConting.idcardno = data.data.idcardno; //"370921198810151515",
userConting.passportno = data.data.passportno //"", userConting.passportno = data.data.passportno; //"",
userConting.globalroaming = data.data.globalroaming //"", userConting.globalroaming = data.data.globalroaming; //"",
userConting.mobilephone = data.data.mobilephone //"15069130853", userConting.mobilephone = data.data.mobilephone; //"15069130853",
userConting.email = data.data.email //"", userConting.email = data.data.email; //"",
userConting.gender = data.data.gender //1, userConting.gender = data.data.gender; //1,
userConting.birthday = data.data.birthday //592848000, userConting.birthday = data.data.birthday; //592848000,
userConting.myfolk = data.data.myfolk //"", userConting.myfolk = data.data.myfolk; //"",
userConting.nativeplace = data.data.nativeplace //"15", userConting.nativeplace = data.data.nativeplace; //"15",
userConting.idcardstartdate = data.data.idcardstartdate //0, userConting.idcardstartdate = data.data.idcardstartdate; //0,
userConting.idcardenddate = data.data.idcardenddate //0, userConting.idcardenddate = data.data.idcardenddate; //0,
userConting.idcardaddress = data.data.idcardaddress //"", userConting.idcardaddress = data.data.idcardaddress; //"",
userConting.idcardIssued = data.data.idcardIssued //"", userConting.idcardIssued = data.data.idcardIssued; //"",
userConting.health = data.data.health //2, userConting.health = data.data.health; //2,
userConting.maritalstatus = data.data.maritalstatus //2, userConting.maritalstatus = data.data.maritalstatus; //2,
userConting.internaltelephone = data.data.internaltelephone //"", userConting.internaltelephone = data.data.internaltelephone; //"",
userConting.currentresidence = data.data.currentresidence //"11302", userConting.currentresidence = data.data.currentresidence; //"11302",
userConting.constellationing = data.data.constellationing //1, userConting.constellationing = data.data.constellationing; //1,
userConting.isdoubleworker = data.data.isdoubleworker //2, userConting.isdoubleworker = data.data.isdoubleworker; //2,
userConting.isveterans = data.data.isveterans //2, userConting.isveterans = data.data.isveterans; //2,
userConting.veteransnumber = data.data.veteransnumber //"", userConting.veteransnumber = data.data.veteransnumber; //"",
userConting.jobstartdate = data.data.jobstartdate //0, userConting.jobstartdate = data.data.jobstartdate; //0,
userConting.entrydate = data.data.entrydate //0, userConting.entrydate = data.data.entrydate; //0,
userConting.probationperiod = data.data.probationperiod //0, userConting.probationperiod = data.data.probationperiod; //0,
userConting.planformaldate = data.data.planformaldate //0, userConting.planformaldate = data.data.planformaldate; //0,
userConting.politicaloutlook = data.data.politicaloutlook //1, userConting.politicaloutlook = data.data.politicaloutlook; //1,
userConting.nameusedbefore = data.data.nameusedbefore //"", userConting.nameusedbefore = data.data.nameusedbefore; //"",
userConting.iconphoto = data.data.iconphoto //" userConting.iconphoto = data.data.iconphoto; //"
userConting.responsibledepartment = data.data.responsibledepartment //"", userConting.responsibledepartment = data.data.responsibledepartment; //"",
userConting.responsibledepartmentjson = data.data.responsibledepartmentjson //"", userConting.responsibledepartmentjson = data.data.responsibledepartmentjson; //"",
userConting.birthdaytime = data.data.birthdaytime //"1988-10-15", userConting.birthdaytime = data.data.birthdaytime; //"1988-10-15",
userConting.idcardstarttimedata = data.data.idcardstarttimedata //"", userConting.idcardstarttimedata = data.data.idcardstarttimedata; //"",
userConting.idcardendtimedata = data.data.idcardendtimedata //"", userConting.idcardendtimedata = data.data.idcardendtimedata; //"",
userConting.entrydatetime = data.data.entrydatetime //"", userConting.entrydatetime = data.data.entrydatetime; //"",
userConting.planformaldatetime = data.data.planformaldatetime //"", userConting.planformaldatetime = data.data.planformaldatetime; //"",
userConting.doubleworkerlist = data.data.doubleworkerlist //null, userConting.doubleworkerlist = data.data.doubleworkerlist; //null,
userConting.educationalexperience = data.data.educationalexperience //null, userConting.educationalexperience = data.data.educationalexperience; //null,
userConting.emergencycontact = data.data.emergencycontact //null, userConting.emergencycontact = data.data.emergencycontact; //null,
userConting.memberoffamily = data.data.memberoffamily //null, userConting.memberoffamily = data.data.memberoffamily; //null,
userConting.workhistorylist = data.data.workhistorylist //null, userConting.workhistorylist = data.data.workhistorylist; //null,
userConting.groupworkhistorylist = data.data.groupworkhistorylist //null, userConting.groupworkhistorylist = data.data.groupworkhistorylist; //null,
userConting.idstr = data.data.idstr //"78", userConting.idstr = data.data.idstr; //"78",
userConting.companyname = data.data.companyname //"", userConting.companyname = data.data.companyname; //"",
userConting.maindeparmentname = data.data.maindeparmentname //"", userConting.maindeparmentname = data.data.maindeparmentname; //"",
userConting.adminorgname = data.data.adminorgname //"", userConting.adminorgname = data.data.adminorgname; //"",
userConting.positionname = data.data.positionname //"", userConting.positionname = data.data.positionname; //"",
userConting.jobclassname = data.data.jobclassname //"", userConting.jobclassname = data.data.jobclassname; //"",
userConting.jobidname = data.data.jobidname //"", userConting.jobidname = data.data.jobidname; //"",
userConting.politicaloutlookname = data.data.politicaloutlookname //"", userConting.politicaloutlookname = data.data.politicaloutlookname; //"",
userConting.jobstartdatestr = data.data.jobstartdatestr //"", userConting.jobstartdatestr = data.data.jobstartdatestr; //"",
userConting.entrydatestr = data.data.entrydatestr //"", userConting.entrydatestr = data.data.entrydatestr; //"",
userConting.personincharge = data.data.personincharge //2, userConting.personincharge = data.data.personincharge; //2,
userConting.sunmaindeparmentname = data.data.sunmaindeparmentname //"", userConting.sunmaindeparmentname = data.data.sunmaindeparmentname; //"",
userConting.workpostname = data.data.workpostname //"", userConting.workpostname = data.data.workpostname; //"",
userConting.teamname = data.data.teamname //"", userConting.teamname = data.data.teamname; //"",
userConting.allorglist = data.data.allorglist //[309,102,272], userConting.allorglist = data.data.allorglist; //[309,102,272],
userConting.ruleid = data.data.ruleid //"0", userConting.ruleid = data.data.ruleid; //"0",
userConting.rulename = data.data.rulename //"", userConting.rulename = data.data.rulename; //"",
userConting.orgreslist = data.data.orgreslist //null userConting.orgreslist = data.data.orgreslist; //null
userConting.keystr = data.data.keystr // userConting.keystr = data.data.keystr; //
userConting.interests = data.data.interests;
userConting.bloodtype = data.data.bloodtype;
userConting.natureofAccount = data.data.natureofAccount;
}) })
.finally(()=>{rowLoading.value = false;}) .finally(() => {
rowLoading.value = false;
});
} }
/** /**
* 关闭弹窗 * 关闭弹窗
*/ */
function closeArchivesBox(){ function closeArchivesBox() {
emits("update:isShow", false); emits("update:isShow", false);
activeName.value = "1"; activeName.value = "1";
editMyCont.value=false; editMyCont.value = false;
} }
/** /**
* 选项卡翻页 * 选项卡翻页
*/ */
const handleClickUser = (tab: any, event: Event) => { const handleClickUser = (tab: any, event: Event) => {
// console.log(tab, event) // console.log(tab, event)
} };
/** /**
* 监听数据 * 监听数据
*/ */
watch(() => props.isShow,() => { watch(
() => props.isShow,
() => {
// console.log("",props.archivesdata ) // console.log("",props.archivesdata )
if(props.isShow){ if (props.isShow) {
getjtcyList(); getjtcyList();
boxTitle.value = "查看 "+ props.archivesdata.name + "(工号:"+ props.archivesdata.number +")" +" 详情"; boxTitle.value =
if(props.archivesdata.icon != ""){ "查看 " +
userIcon.value = props.archivesdata.icon props.archivesdata.name +
}else if(props.archivesdata.iconphoto !=""){ "(工号:" +
userIcon.value = props.archivesdata.iconphoto props.archivesdata.number +
}else{ ")" +
userIcon.value =UserRole " 详情";
if (props.archivesdata.icon != "") {
userIcon.value = props.archivesdata.icon;
} else if (props.archivesdata.iconphoto != "") {
userIcon.value = props.archivesdata.iconphoto;
} else {
userIcon.value = UserRole;
} }
} }
}) }
);
/** /**
* 刷新编辑页面 * 刷新编辑页面
*/ */
function refreshContPage(cont:archivesCont){ function refreshContPage(cont: archivesCont) {
emits("updatemyconting", cont); emits("updatemyconting", cont);
getjtcyList(); getjtcyList();
// console.log("",cont) // console.log("",cont)
@ -285,29 +312,41 @@ function refreshContPage(cont:archivesCont){
// userConting.keystr = cont.keystr // // userConting.keystr = cont.keystr //
getjtcyList(); getjtcyList();
} }
const handleAvatarSuccess: UploadProps['onSuccess'] = (response,uploadFile,uploadFiles) => { const handleAvatarSuccess: UploadProps["onSuccess"] = (
userIcon.value = URL.createObjectURL(uploadFile.raw!) response,
uploadFile,
uploadFiles
) => {
userIcon.value = URL.createObjectURL(uploadFile.raw!);
// console.log("---1--->",response) // console.log("---1--->",response)
// console.log("---2--->",uploadFile) // console.log("---2--->",uploadFile)
// console.log("----3-->",uploadFiles) // console.log("----3-->",uploadFiles)
editMyInfoIcon({id:props.archivesdata.id,iconpath:response.data.url}) editMyInfoIcon({
.then(( data )=>{ id: props.archivesdata.id,
iconpath: response.data.url,
}).then((data) => {
// userConting.value = data.data // userConting.value = data.data
ElMessage.success("编辑成功"); ElMessage.success("编辑成功");
emits("getarchivespageclick"); emits("getarchivespageclick");
}) });
} };
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => { const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => {
// console.log("------>",rawFile) // console.log("------>",rawFile)
} };
function editmvorg(){ function editmvorg() {
editMyOrgCont.value = true; editMyOrgCont.value = true;
} }
</script> </script>
<template> <template>
<el-dialog v-model="boxShow" custom-class="dialog_box" :title="boxTitle" top="50px" :before-close="closeArchivesBox" width="80%"> <el-dialog
v-model="boxShow"
<el-row v-loading="rowLoading" :gutter="20" > custom-class="dialog_box"
:title="boxTitle"
top="50px"
:before-close="closeArchivesBox"
width="80%"
>
<el-row v-loading="rowLoading" :gutter="20">
<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
<el-card shadow="always" class="box-card-left"> <el-card shadow="always" class="box-card-left">
<el-row> <el-row>
@ -320,29 +359,36 @@ function editmvorg(){
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
> >
<el-avatar :size="180" :src="userIcon" /> <el-avatar :size="180" :src="userIcon" />
</el-upload> </el-upload>
</el-col> </el-col>
<el-col :span="24"><el-text class="mx-1 username">{{ userConting.name }}</el-text></el-col> <el-col :span="24"
<el-col :span="24"><el-text class="mx-1 usernumber">NO.{{ userConting.number }}</el-text></el-col> ><el-text class="mx-1 username">{{
userConting.name
}}</el-text></el-col
>
<el-col :span="24"
><el-text class="mx-1 usernumber"
>NO.{{ userConting.number }}</el-text
></el-col
>
<el-col :span="24"> <el-col :span="24">
<el-row class="user_cont"> <el-row class="user_cont">
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="gender" class="svg_box"></svg-icon> <svg-icon icon-class="gender" class="svg_box"></svg-icon>
<span v-if="userConting.gender==1"></span> <span v-if="userConting.gender == 1"></span>
<span v-else></span> <span v-else></span>
</el-text> </el-text>
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="marriageregistration" class="svg_box"></svg-icon> <svg-icon
<span v-if="userConting.maritalstatus==2">已婚</span> icon-class="marriageregistration"
<span v-else-if="userConting.maritalstatus==3">丧偶</span> class="svg_box"
<span v-else-if="userConting.maritalstatus==4">离异</span> ></svg-icon>
<span v-if="userConting.maritalstatus == 2">已婚</span>
<span v-else-if="userConting.maritalstatus == 3">丧偶</span>
<span v-else-if="userConting.maritalstatus == 4">离异</span>
<span v-else>未婚</span> <span v-else>未婚</span>
</el-text> </el-text>
</el-col> </el-col>
@ -354,11 +400,14 @@ function editmvorg(){
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="healthcondition" class="svg_box"></svg-icon> <svg-icon
<span v-if="userConting.health==2">良好</span> icon-class="healthcondition"
<span v-else-if="userConting.health==3">较弱</span> class="svg_box"
<span v-else-if="userConting.health==4">有生理缺陷</span> ></svg-icon>
<span v-else-if="userConting.health==5">残废</span> <span v-if="userConting.health == 2">良好</span>
<span v-else-if="userConting.health == 3">较弱</span>
<span v-else-if="userConting.health == 4">有生理缺陷</span>
<span v-else-if="userConting.health == 5">残废</span>
<span v-else>一般</span> <span v-else>一般</span>
</el-text> </el-text>
</el-col> </el-col>
@ -378,42 +427,65 @@ function editmvorg(){
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="zhiye" class="svg_box"></svg-icon> <svg-icon icon-class="zhiye" class="svg_box"></svg-icon>
{{ userConting.companyname }} / {{ userConting.maindeparmentname }} {{ userConting.companyname }} /
{{ userConting.maindeparmentname }}
</el-text> </el-text>
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="iconfont-mingpian" class="svg_box"></svg-icon> <svg-icon
icon-class="iconfont-mingpian"
class="svg_box"
></svg-icon>
{{ userConting.positionname }} {{ userConting.positionname }}
</el-text> </el-text>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col> <el-col>
<el-button type="primary" style="margin-top: 15px;" @click="editmvorg">编辑主行政组织</el-button> <el-button
type="primary"
style="margin-top: 15px"
@click="editmvorg"
>编辑主行政组织</el-button
>
</el-col> </el-col>
</el-row> </el-row>
</el-card> </el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16"> <el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16">
<el-card shadow="always" class="box-card"> <el-card shadow="always" class="box-card">
<el-tabs
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClickUser"> v-model="activeName"
class="demo-tabs"
@tab-click="handleClickUser"
>
<el-tab-pane label="基本信息" name="1"> <el-tab-pane label="基本信息" name="1">
<UserContent v-if="!editMyCont&&activeName=='1'" v-model:editShow="editMyCont" :usercont="userConting" :tabsid="activeName" /> <UserContent
<EditUserContent v-if="editMyCont" v-model:editShow="editMyCont" :usercont="userConting" :tabsid="activeName" @refreshcontdata="refreshContPage" /> v-if="!editMyCont && activeName == '1'"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
/>
<EditUserContent
v-if="editMyCont"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
@refreshcontdata="refreshContPage"
/>
</el-tab-pane>
<el-tab-pane label="性格色彩" name="2">
<CharacterColor :usercont="userConting" :tabsid="activeName" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="彩色性格" name="2">彩色性格</el-tab-pane>
<el-tab-pane label="行政组织关系" name="3"> <el-tab-pane label="行政组织关系" name="3">
<OrgNexus :usercont="userConting" :tabsid="activeName" /> <OrgNexus :usercont="userConting" :tabsid="activeName" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="紧急联系人" name="4"> <el-tab-pane label="紧急联系人" name="4">
<EmergencyContactPage :usercont="userConting" :tabsid="activeName" /> <EmergencyContactPage
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="双职工" name="5"> <el-tab-pane label="双职工" name="5">
<WorkingCouplePage :usercont="userConting" :tabsid="activeName" /> <WorkingCouplePage :usercont="userConting" :tabsid="activeName" />
@ -422,7 +494,10 @@ function editmvorg(){
<FamilyMembers :usercont="userConting" :tabsid="activeName" /> <FamilyMembers :usercont="userConting" :tabsid="activeName" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="教育经历" name="7"> <el-tab-pane label="教育经历" name="7">
<EducationalExperience :usercont="userConting" :tabsid="activeName" /> <EducationalExperience
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="集团内部工作履历" name="8"> <el-tab-pane label="集团内部工作履历" name="8">
<InnerWork :usercont="userConting" :tabsid="activeName" /> <InnerWork :usercont="userConting" :tabsid="activeName" />
@ -430,48 +505,70 @@ function editmvorg(){
<el-tab-pane label="集团外部工作履历" name="9"> <el-tab-pane label="集团外部工作履历" name="9">
<OutsideWork :usercont="userConting" :tabsid="activeName" /> <OutsideWork :usercont="userConting" :tabsid="activeName" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="奖惩记录" name="10">奖惩记录</el-tab-pane> <el-tab-pane label="奖惩记录" name="10">
<el-tab-pane label="考评记录" name="11">考评记录</el-tab-pane> <Rewardsandpunishments
<el-tab-pane label="修改登陆密码" name="12"> :usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="考评记录" name="11">
<Appraisalrecord :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="人才盘点" name="12">
<Talentinventory :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="员工用工关系" name="13">
<Employmentrelations :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="职称信息" name="14">
<Jobtitle :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="证书信息" name="15">
<Certificates :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="修改登陆密码" name="16">
<Editpwd :usercont="userConting" :tabsid="activeName" /> <Editpwd :usercont="userConting" :tabsid="activeName" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
<EditOrg v-model:editShow="editMyOrgCont" :usercont="userConting" :tabsid="activeName" @refreshcontdata="refreshContPage" /> <EditOrg
v-model:editShow="editMyOrgCont"
:usercont="userConting"
:tabsid="activeName"
@refreshcontdata="refreshContPage"
/>
</el-dialog> </el-dialog>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.bjg{ .bjg {
background-color: aqua; background-color: aqua;
height: 50px; height: 50px;
} }
.box-card-left{ .box-card-left {
text-align: center; text-align: center;
.username{ .username {
margin-top: 20px; margin-top: 20px;
font-size: 35px; font-size: 35px;
} }
.usernumber{ .usernumber {
margin-top: 10px; margin-top: 10px;
font-size: 25px; font-size: 25px;
} }
.user_cont{ .user_cont {
width: 90%; width: 90%;
margin: auto; margin: auto;
text-align: left; text-align: left;
.col_box{ .col_box {
margin-top: 10px; margin-top: 10px;
.cont_size{ .cont_size {
font-size: 16px; font-size: 16px;
.svg_box{ .svg_box {
margin-right: 10px; margin-right: 10px;
} }
} }
} }
} }
} }
</style> </style>

140
src/views/hr/archives/basicinformation/appraisalrecord.vue

@ -1,4 +1,5 @@
<!-- <!--
<<<<<<< HEAD
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-21 15:44:18 @ 时间: 2024-03-21 15:44:18
@ 备注: @ 备注:
@ -12,3 +13,142 @@
<style lang='scss' scoped> <style lang='scss' scoped>
</style> </style>
=======
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 考评记录
-->
<script lang="ts" setup>
import { kaopingjilu } from "@/api/hr/people/type";
import {
getAppraisalrecordCont,
editAppraisalrecordContState,
} from "@/api/hr/people/index";
import AddAppraisalrecord from "@/views/hr/archives/basicinformation/appraisalrecordadd.vue";
import EditAppraisalrecord from "@/views/hr/archives/basicinformation/appraisalrecordedit.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const addkpjlBoxPage = ref(false);
const editkpjlBoxPage = ref(false);
const tableLoading = ref(false);
const kpjlList = ref<kaopingjilu[]>([]);
const kpjlInfo = ref<kaopingjilu>();
const getkpjlList = () => {
tableLoading.value = true;
getAppraisalrecordCont({ id: props.usercont.keystr })
.then((data) => {
kpjlList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
};
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "3") {
getkpjlList();
}
}
);
/**
* 添加数据
*/
const addkpjlBox = (key: string) => {
addkpjlBoxPage.value = true;
};
/**
* 编辑考评记录
*/
const editkpjlBox = (cont: kaopingjilu) => {
kpjlInfo.value = cont;
editkpjlBoxPage.value = true;
};
/**
* 删除考评记录
*/
const delkpjlBox = (cont: kaopingjilu) => {
ElMessageBox.confirm("确认删除<" + cont.id + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editAppraisalrecordContState({ id: toString(), state: 3, isdel: 1 }).then(
() => {
ElMessage.success("删除成功");
getkpjlList();
}
);
});
};
</script>
<template>
<AddAppraisalrecord
v-model:addisshow="addkpjlBoxPage"
:keyval="props.usercont.keystr"
@restdata="getkpjlList"
/>
<EditAppraisalrecord
v-model:editisshow="editkpjlBoxPage"
:keyval="props.usercont.keystr"
:datacont="kpjlInfo"
@restdata="getkpjlList"
/>
<el-table
v-loading="tableLoading"
highlight-current-row
:data="kpjlList"
border
:header-cell-style="{ background: '#F5F7FA' }"
>
<el-table-column label="考核年度" prop="year" />
<el-table-column label="考核等级" prop="level" />
<el-table-column fixed="right" align="right" width="130">
<template #header>
<el-button
type="primary"
link
size="small"
@click.stop="addkpjlBox(props.usercont.keystr)"
>
<i-ep-plus /> 新增
</el-button>
</template>
<template #default="scope">
<el-button
type="primary"
link
size="small"
@click.stop="editkpjlBox(scope.row)"
>
<i-ep-edit />编辑
</el-button>
<el-button
type="primary"
link
size="small"
@click.stop="delkpjlBox(scope.row)"
>
<i-ep-delete />删除
</el-button>
</template>
</el-table-column>
</el-table>
</template>
<style></style>
>>>>>>> yjf_v3

118
src/views/hr/archives/basicinformation/appraisalrecordadd.vue

@ -0,0 +1,118 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加考评记录
-->
<script lang="ts" setup>
import { AppraisalrecordCont } from "@/api/hr/people/type";
import { addAppraisalrecordCont } from "@/api/hr/people/index";
import { year } from "@/api/hr/people/datacont";
import { level } from "@/api/hr/people/datacont";
const props = defineProps({
addisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
});
const addLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const addkpjlFormRef = ref(ElForm);
const kpjlFormData = reactive<AppraisalrecordCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addkpjlRules = reactive({});
/**
* 关闭弹窗
*/
const clostAddBoxkpjl = () => {
emits("update:addisshow", false);
initkpjlData();
};
/**
* 初始化数据
*/
const initkpjlData = () => {
addkpjlFormRef.value.resetFields();
addLoading.value = false;
};
/**
* 提交数据
*/
const submitAddkpjl = () => {
addkpjlFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array();
listAry.push(kpjlFormData);
addAppraisalrecordCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxkpjl();
emits("restdata");
})
.finally(() => {
addLoading.value = false;
});
}
});
};
</script>
<template>
<el-dialog
v-model="addshow"
width="500"
title="添加考评记录"
append-to-body
:before-close="clostAddBoxkpjl"
>
<el-form
ref="addkpjlFormRef"
:model="kpjlFormData"
:rules="addkpjlRules"
label-width="140px"
>
<el-form-item label="考核年度" prop="year">
<el-select v-model="kpjlFormData.year" placeholder="请选择考核年度">
<el-option
v-for="item in year"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="考核等级" prop="level">
<el-select v-model="kpjlFormData.level" placeholder="请选择考核等级">
<el-option
v-for="item in level"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddkpjl"
> </el-button
>
<el-button @click="clostAddBoxkpjl"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style></style>

135
src/views/hr/archives/basicinformation/appraisalrecordedit.vue

@ -0,0 +1,135 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑考评记录
-->
<script lang="ts" setup>
import { AppraisalrecordCont } from "@/api/hr/people/type";
import { editAppraisalrecordCont } from "@/api/hr/people/index";
import { year } from "@/api/hr/people/datacont";
import { level } from "@/api/hr/people/datacont";
const props = defineProps({
editisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
datacont: {
type: Object,
default() {
return {};
},
},
});
const editLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const editkpjlFormRef = ref(ElForm);
const kpjlFormData = reactive<AppraisalrecordCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const editkpjlRules = reactive({});
/**
* 关闭弹窗
*/
const clostEditBoxkpjl = () => {
emits("update:addisshow", false);
initkpjlData();
};
/**
* 初始化数据
*/
const initkpjlData = () => {
editkpjlFormRef.value.resetFields();
editLoading.value = false;
};
/**
* 提交数据
*/
const submitEditkpjl = () => {
editkpjlFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editAppraisalrecordCont(kpjlFormData)
.then(() => {
ElMessage.success("编辑成功");
clostEditBoxkpjl();
emits("restdata");
})
.finally(() => {
editLoading.value = false;
});
}
});
};
/**
* 监听数据
*/
watch(
() => props.editisshow,
() => {
if (props.editisshow) {
kpjlFormData.id = props.datacont.id.toString();
kpjlFormData.level = props.datacont.level;
kpjlFormData.year = props.datacont.year;
}
}
);
</script>
<template>
<el-dialog
v-model="editshow"
width="500"
title="编辑考评记录"
append-to-body
:before-close="clostEditBoxkpjl"
>
<el-form
ref="editkpjlFormRef"
:model="kpjlFormData"
:rules="editkpjlRules"
label-width="140px"
>
<el-form-item label="考核年度" prop="year">
<el-select v-model="kpjlFormData.year" placeholder="请选择考核年度">
<el-option
v-for="item in year"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="考核等级" prop="level">
<el-select v-model="kpjlFormData.level" placeholder="请选择考核等级">
<el-option
v-for="item in level"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditkpjl"
> </el-button
>
<el-button @click="clostEditBoxkpjl"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style></style>

183
src/views/hr/archives/basicinformation/certificates.vue

@ -0,0 +1,183 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-28
@ 备注: 证书信息
-->
<script lang="ts" setup>
import {reactive} from 'vue';
import { zhengshuxinxi } from "@/api/hr/people/type";
import {
getCertificatesCont,
editCertificatesContState,
} from "@/api/hr/people/index";
/**
* 引入页面
*/
import EditCertificates from "@/views/hr/archives/basicinformation/certificatesedit.vue";
import AddCertificates from "@/views/hr/archives/basicinformation/certificatesadd.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const addzsxxBoxPage = ref(false);
const editzsxxBoxPage = ref(false);
const tableLoading = ref(false);
const zsxxList = ref<zhengshuxinxi[]>([]);
const zsxxInfo = ref<zhengshuxinxi>();
const getzsxxList = () => {
tableLoading.value = true;
getCertificatesCont({ id: props.usercont.keystr })
.then((data) => {
zsxxList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
}
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "4") {
getzsxxList();
}
}
);
/**
* 添加数据
*/
const addzsxxBox = () => {
addzsxxBoxPage.value = true;
}
/**
* 编辑证书信息
*/
const editzsxxBox = (cont: zhengshuxinxi) => {
zsxxInfo.value = cont;
editzsxxBoxPage.value = true;
}
/**
* 删除证书信息
*/
const delzsxxBox = (cont: zhengshuxinxi) => {
ElMessageBox.confirm("确认删除<" + cont.id + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editCertificatesContState({ id: toString(), state: 3, isdel: 1 }).then(
() => {
ElMessage.success("删除成功");
getzsxxList();
});
});
}
</script>
<template>
<AddCertificates
v-model:addisshow="addzsxxBoxPage"
:keyval="props.usercont.keystr"
@restdata="getzsxxList" />
<EditCertificates
v-model:editisshow="editzsxxBoxPage"
:keyval="props.usercont.keystr"
:datacont="zsxxInfo"
@restdata="getzsxxList"
/>
<el-row>
<el-col v-for="(item, index) in zsxxList" :key="index" :span="24" class="colBox">
<el-descriptions
class="margin-top"
:column="3"
border
>
<template #extra>
<el-button
type="primary"
link
size="small"
@click.stop="editzsxxBox(item)"
>
<i-ep-edit />编辑
</el-button>
<el-button
type="primary"
link
size="small"
@click.stop="delzsxxBox(item)"
>
<i-ep-delete />删除
</el-button>
</template>
<el-descriptions-item>
<template #label>
<el-text><el-icon><Tickets /></el-icon> </el-text>
</template>
{{ item.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.number }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><el-icon><OfficeBuilding /></el-icon> </el-text>
</template>
{{ item.issuingunit }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="yunxing" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.effectivetime }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="stop" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.deadline }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="time" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.validity }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><el-icon><QuestionFilled /></el-icon> </el-text>
</template>
{{ item.iseffective }}
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="24" class="colBut">
<el-button type="primary" @click="addzsxxBox"><i-ep-plus />新增证书信息</el-button>
</el-col>
</el-row>
</template>
<style lang="scss" scoped>
.colBox{
margin-top:25px;
}
.colBut{
margin-top:25px;
text-align:right
}
</style>

130
src/views/hr/archives/basicinformation/certificatesadd.vue

@ -0,0 +1,130 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加证书信息
-->
<script lang='ts' setup>
import { CertificatesCont } from '@/api/hr/people/type'
import { addCertificatesCont } from '@/api/hr/people/index'
import { yesOrno } from '@/api/hr/people/datacont'
const props = defineProps({
addisshow: {
type: Boolean,
default: false
},
keyval: {
type: String,
default: ""
}
});
const addLoading = ref(false)
const emits = defineEmits(["update:addisshow", "restdata"]);
const addzsxxFormRef = ref(ElForm);
const zsxxFormData = reactive<CertificatesCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addzsxxRules = reactive({
});
/**
* 关闭弹窗
*/
const clostAddBoxzsxx = () => {
emits("update:addisshow", false);
initzsxxData()
}
/**
* 初始化数据
*/
const initzsxxData = () => {
addzsxxFormRef.value.resetFields();
addLoading.value = false;
}
/**
* 提交数据
*/
const submitAddzsxx = () => {
addzsxxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array
listAry.push(zsxxFormData)
addCertificatesCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxzsxx();
emits('restdata');
})
.finally(() => {
addLoading.value = false;
})
}
});
}
</script>
<template>
<el-dialog v-model="addshow" width="500" title="添加证书信息" append-to-body :before-close="clostAddBoxzsxx">
<el-form ref="addzsxxFormRef" :model="zsxxFormData" :rules="addzsxxRules" label-width="140px">
<el-form-item label="证书名称" prop="name">
<el-input v-model="zsxxFormData.name" placeholder="请输入证书名称" />
</el-form-item>
<el-form-item label="证书编号" prop="number">
<el-input v-model="zsxxFormData.number" placeholder="请输入证书编号" />
</el-form-item>
<el-form-item label="发证单位" prop="issuingunit">
<el-input v-model="zsxxFormData.issuingunit" placeholder="请输入发证单位" />
</el-form-item>
<el-form-item label="生效时间" prop="effectivetime">
<el-date-picker
v-model="zsxxFormData.effectivetime"
type="date"
placeholder="请选择生效时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="截止时间" prop="deadline">
<el-date-picker
v-model="zsxxFormData.deadline"
type="date"
placeholder="请选择截止时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="有效期限" prop="validity">
<el-input v-model="zsxxFormData.validity" placeholder="请输入有效期限" />
</el-form-item>
<el-form-item label="是否生效" prop="iseffective">
<el-select v-model="zsxxFormData.iseffective" placeholder="请选择是或否">
<el-option
v-for="item in yesOrno"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddzsxx"> </el-button>
<el-button @click="clostAddBoxzsxx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped></style>

142
src/views/hr/archives/basicinformation/certificatesedit.vue

@ -0,0 +1,142 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑证书信息
-->
<script lang='ts' setup>
import { CertificatesCont } from '@/api/hr/people/type'
import { editCertificatesCont } from '@/api/hr/people/index'
import { yesOrno } from '@/api/hr/people/datacont'
const props = defineProps({
editisshow:{
type:Boolean,
default:false
},
keyval:{
type:String,
default:""
},
datacont:{
type:Object,
default(){
return {}
}
}
});
const editLoading = ref(false)
const emits = defineEmits(["update:editisshow","restdata"]);
const editzsxxFormRef = ref(ElForm);
const zsxxFormData = reactive<CertificatesCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:editisshow", val);
},
});
/**
* 表单验证规则
*/
const addzsxxRules = reactive({
});
/**
* 关闭弹窗
*/
const clostEditBoxzsxx = () =>{
emits("update:editisshow", false);
initzsxxData()
}
/**
* 初始化数据
*/
const initzsxxData = () =>{
editzsxxFormRef.value.resetFields();
editLoading.value = false;
}
/**
* 提交数据
*/
const submitEditzsxx = () =>{
editzsxxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editCertificatesCont(zsxxFormData)
.then(() =>{
ElMessage.success("编辑成功");
clostEditBoxzsxx();
emits('restdata');
})
.finally(() =>{editLoading.value = false;})
}
});
}
/**
* 监听数据
*/
watch(() => props.editisshow,() => {
if(props.editisshow){
zsxxFormData.id= props.datacont.id.toString();
}
})
</script>
<template>
<el-dialog v-model="editshow" width="500" title="添加职称信息" append-to-body :before-close="clostEditBoxzsxx">
<el-form ref="editzsxxFormRef" :model="zsxxFormData" :rules="addzsxxRules" label-width="140px">
<el-form-item label="证书名称" prop="name">
<el-input v-model="zsxxFormData.name" placeholder="请输入证书名称" />
</el-form-item>
<el-form-item label="证书编号" prop="number">
<el-input v-model="zsxxFormData.number" placeholder="请输入证书编号" />
</el-form-item>
<el-form-item label="发证单位" prop="issuingunit">
<el-input v-model="zsxxFormData.issuingunit" placeholder="请输入发证单位" />
</el-form-item>
<el-form-item label="生效时间" prop="effectivetime">
<el-date-picker
v-model="zsxxFormData.effectivetime"
type="date"
placeholder="请选择生效时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="截止时间" prop="deadline">
<el-date-picker
v-model="zsxxFormData.deadline"
type="date"
placeholder="请选择截止时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="有效期限" prop="validity">
<el-input v-model="zsxxFormData.validity" placeholder="请输入有效期限" />
</el-form-item>
<el-form-item label="是否生效" prop="iseffective">
<el-select v-model="zsxxFormData.iseffective" placeholder="请选择是或否">
<el-option
v-for="item in yesOrno"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditzsxx"> </el-button>
<el-button @click="clostEditBoxzsxx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

252
src/views/hr/archives/basicinformation/charactercolor.vue

@ -0,0 +1,252 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 性格色彩
-->
<script lang="ts" setup>
import { ref, onMounted, onUnmounted, nextTick } from 'vue';
import * as echarts from 'echarts';
import { getCharacterColor } from '@/api/hr/people';
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont:{
type:Object,
default(){
return {}
}
}
});
//
const chartContainer = ref<HTMLDivElement | null>(null);
let chartInstance: echarts.ECharts | null = null;
// ColourNameList
const ColourNameList = ref<string[]>([]);
const error = ref<string | null>(null);
//
let resizeObserver: ResizeObserver | null = null;
// 使number
const isReadyToInit = computed(() => {
return props.usercont.number !== undefined && props.usercont.number.trim() !== '';
});
// ECharts
const initChart = async () => {
// console.log(chartContainer.value)
//
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
//chartContainerDOM
if (!chartContainer.value) {
console.warn('DOM元素未找到,无法初始化图表');
return;
}
try {
// usercont.number
if (!isReadyToInit.value) {
throw new Error("员工信息未准备好,无法初始化图表");
}
//
const response = await getCharacterColor({ number: props.usercont.number });
//
chartInstance = echarts.init(chartContainer.value);
// console.log('Response:', response, chartInstance);
if (response.code === 0) {
//
const { ColourNameList: apiColourNameList, RadarColour } = response.data;
ColourNameList.value = apiColourNameList; //
// 使ColourNameList
const allColours = ["红色", "蓝色", "黄色", "绿色"];
//
updateRadarChart(chartInstance, RadarColour, allColours);
} else {
ElMessage.error(response.data.msg || '系统出错');
}
} catch (e) {
console.error(e);
}
}
//
const updateRadarChart = (chart: echarts.ECharts, radarColour: any[], colourNameList: string[]) => {
const radarOptions = createRadarOptions(radarColour, colourNameList);
chart.setOption(radarOptions);
chart.resize();
// colourNameListColourNameList便使
// ColourNameList.value = colourNameList;
}
//
const createRadarOptions = (radarColour: any[], colourNameList: string[]) => {
let maxVal = Math.max(...radarColour);
return {
tooltip: { trigger: "item" },
radar: {
indicator: colourNameList.map((color, index) => ({
name: color,
max: maxVal + 2,
min: 0 ,
})),
shape: "circle",
splitNumber: 4,
},
series: [
{
name: "个人性格色彩",
type: "radar",
areaStyle: {
//
color: '#a0c3f8',
},
data: [{ value: radarColour,
name: "个人色彩分布"
}],
itemStyle: { color: "#3c96ff" }, //
},
],
};
}
onMounted(async () => {
//DOMecharts
await nextTick();
// console.log(chartContainer.value);
// ResizeObserver
resizeObserver = new ResizeObserver(() => {
if (chartInstance) {
chartInstance.resize();
}
});
resizeObserver.observe(chartContainer.value!); // chartContainer
});
//
watch(
() => ({
usercont: props.usercont,
tabsid: props.tabsid
}),
async (newValues) => {
const { usercont, tabsid } = newValues;
// tabsid'2'usercont.number
if (tabsid === '2' && usercont.number) {
error.value = null;
await nextTick();
await initChart();
} else if (usercont.number) {
// usercont.number
error.value = null;
await nextTick();
await initChart();
} else {
error.value = "员工信息未准备好";
}
},
{ immediate: true, deep: true }
);
// ECharts
onUnmounted(() => {
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
// ResizeObserver
if (resizeObserver) {
resizeObserver.disconnect();
resizeObserver = null;
}
});
//tabsid
// watch(()=>props.tabsid,(val:string)=>{
// if(val == '2'){
// initChart();
// }
// })
</script>
<template>
<!-- 在模板中根据loading状态显示加载提示 -->
<div class="chart-container">
<div ref="chartContainer" class="chart"></div>
<div v-for="(item, index) in ColourNameList" :key="index">
<div v-if="item == '红色'">
<el-text type="info" class="color-title">{{ item }}<br/></el-text>
<el-text type="info">他们的优势是<br /></el-text>
<el-text type="info">积极乐观</el-text>
<el-text type="info">真诚主动</el-text>
<el-text type="info">善于表达</el-text>
<el-text type="info">富有感染力<br /></el-text>
<el-text type="info">有时很可恶因为<br /></el-text>
<el-text type="info">情绪波动大起大落</el-text>
<el-text type="info">开玩笑不分场合</el-text>
<el-text type="info">疏于兑现承诺</el-text>
<el-text type="info">这山望着那山高<br /></el-text>
</div>
<div v-if="item == '蓝色'">
<el-text type="info" class="color-title">{{ item }}<br /></el-text>
<el-text type="info">他们的优势是<br /></el-text>
<el-text type="info">思想深邃</el-text>
<el-text type="info">默默关怀他人</el-text>
<el-text type="info">敏感而细腻</el-text>
<el-text type="info">计划性强<br /></el-text>
<el-text type="info">有时不太招人喜欢<br /></el-text>
<el-text type="info">情感脆弱</el-text>
<el-text type="info">喜好批判和挑剔</el-text>
<el-text type="info">不主动与人沟通</el-text>
<el-text type="info">患得患失<br /></el-text>
</div>
<div v-if="item == '黄色'">
<el-text type="info" class="color-title">{{ item }}<br/></el-text>
<el-text type="info">他们的优势是<br /></el-text>
<el-text type="info">行动迅速</el-text>
<el-text type="info">目标导向</el-text>
<el-text type="info">不感情用事</el-text>
<el-text type="info">坚持不懈<br /></el-text>
<el-text type="info">有时会被抱怨<br /></el-text>
<el-text type="info">死不认错</el-text>
<el-text type="info">控制欲强</el-text>
<el-text type="info">咄咄逼人</el-text>
<el-text type="info">容易发怒<br /></el-text>
</div>
<div v-if="item == '绿色'">
<el-text type="info" class="color-title">{{ item }}<br /></el-text>
<el-text type="info">他们的优势是<br /></el-text>
<el-text type="info">温柔祥和</el-text>
<el-text type="info">为他人考虑</el-text>
<el-text type="info">与世无争</el-text>
<el-text type="info">善于协调<br /></el-text>
<el-text type="info">他们的局限在于<br /></el-text>
<el-text type="info">拒绝改变</el-text>
<el-text type="info">胆小被动</el-text>
<el-text type="info">没有主见</el-text>
<el-text type="info">缺乏创意<br /></el-text>
</div>
</div>
</div>
</template>
<style scoped>
.chart-container {
width: 100%;
height: 100%;
}
.title {
font-size: 18px;
font-weight: bold;
}
.chart {
height: 270px;
width: 100%;
}
.text-content {
padding: 20px;
background-color: #f5f7fa;
border-radius: 10px;
font-size:medium
}
.el-col {
margin-bottom: 10px;
}
.color-title {
font-size: 15px;
font-weight:bold;
color: #6e6e6e;
}
</style>

261
src/views/hr/archives/basicinformation/content.vue

@ -3,25 +3,25 @@
@ 时间: 2023-06-15 15:32:46 @ 时间: 2023-06-15 15:32:46
@ 备注: 基本信息 @ 备注: 基本信息
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import SvgIcon from '@/components/SvgIcon/index.vue'; import SvgIcon from "@/components/SvgIcon/index.vue";
const props = defineProps({ const props = defineProps({
tabsid:{ tabsid: {
type:String, type: String,
default:"1" default: "1",
},
editShow: {
type: Boolean,
default: false,
},
usercont: {
type: Object,
default() {
return {};
}, },
editShow:{
type:Boolean,
default:false
}, },
usercont:{
type:Object,
default(){
return {}
}
}
}); });
const emitsed = defineEmits(["update:editShow","updatemyconting"]); // const emitsed = defineEmits(["update:editShow", "updatemyconting"]); //
/** /**
* 编辑控制 * 编辑控制
*/ */
@ -34,19 +34,12 @@ const boxShow = computed({
/** /**
* 编辑信息 * 编辑信息
*/ */
function editCont(){ function editCont() {
emitsed("update:editShow", true); emitsed("update:editShow", true);
} }
</script> </script>
<template> <template>
<el-descriptions <el-descriptions class="margin-top" direction="vertical" :column="4" border :width="80">
class="margin-top"
direction="vertical"
:column="4"
border
:width="80"
>
<template #extra> <template #extra>
<el-button type="primary" link size="small" @click="editCont"><i-ep-edit />编辑</el-button> <el-button type="primary" link size="small" @click="editCont"><i-ep-edit />编辑</el-button>
</template> </template>
@ -65,113 +58,136 @@ function editCont(){
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="gender" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="gender" class="svg_box"></svg-icon>
性别</el-text>
</template> </template>
<span v-if="props.usercont.gender==3">中性</span> <span v-if="props.usercont.gender == 3">中性</span>
<span v-if="props.usercont.gender==2"></span> <span v-if="props.usercont.gender == 2"></span>
<span v-else></span>&nbsp; <span v-else></span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon>
</template> 健康状况</el-text>
<span v-if="props.usercont.health==1">良好</span> </template>
<span v-else-if="props.usercont.health==2">一般</span> <span v-if="props.usercont.health == 1">良好</span>
<span v-else-if="props.usercont.health==3">较弱</span> <span v-else-if="props.usercont.health == 2">一般</span>
<span v-else-if="props.usercont.health==4">有生理缺陷</span> <span v-else-if="props.usercont.health == 3">较弱</span>
<span v-else-if="props.usercont.health==5">残废</span> <span v-else-if="props.usercont.health == 4">有生理缺陷</span>
<span v-else-if="props.usercont.health == 5">残废</span>
<span v-else>良好</span>&nbsp; <span v-else>良好</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="marriageregistration" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="marriageregistration" class="svg_box"></svg-icon>
婚姻状况</el-text>
</template> </template>
<span v-if="props.usercont.maritalstatus==2">已婚</span> <span v-if="props.usercont.maritalstatus == 2">已婚</span>
<span v-else-if="props.usercont.maritalstatus==3">丧偶</span> <span v-else-if="props.usercont.maritalstatus == 3">丧偶</span>
<span v-else-if="props.usercont.maritalstatus==4">离异</span> <span v-else-if="props.usercont.maritalstatus == 4">离异</span>
<span v-else>未婚</span>&nbsp; <span v-else>未婚</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon>
</template> 政治面貌</el-text>
<span v-if="props.usercont.politicaloutlook==2">无党派</span> </template>
<span v-else-if="props.usercont.politicaloutlook==3">台盟会员</span> <span v-if="props.usercont.politicaloutlook == 2">无党派</span>
<span v-else-if="props.usercont.politicaloutlook==4">九三社员</span> <span v-else-if="props.usercont.politicaloutlook == 3">台盟会员</span>
<span v-else-if="props.usercont.politicaloutlook==5">致公党员</span> <span v-else-if="props.usercont.politicaloutlook == 4">九三社员</span>
<span v-else-if="props.usercont.politicaloutlook==6">农工党员</span> <span v-else-if="props.usercont.politicaloutlook == 5">致公党员</span>
<span v-else-if="props.usercont.politicaloutlook==7">民进会员</span> <span v-else-if="props.usercont.politicaloutlook == 6">农工党员</span>
<span v-else-if="props.usercont.politicaloutlook==8">民建会员</span> <span v-else-if="props.usercont.politicaloutlook == 7">民进会员</span>
<span v-else-if="props.usercont.politicaloutlook==9">民盟盟员</span> <span v-else-if="props.usercont.politicaloutlook == 8">民建会员</span>
<span v-else-if="props.usercont.politicaloutlook==10">民革会员</span> <span v-else-if="props.usercont.politicaloutlook == 9">民盟盟员</span>
<span v-else-if="props.usercont.politicaloutlook==11">共青团员</span> <span v-else-if="props.usercont.politicaloutlook == 10">民革会员</span>
<span v-else-if="props.usercont.politicaloutlook==12">预备党员</span> <span v-else-if="props.usercont.politicaloutlook == 11">共青团员</span>
<span v-else-if="props.usercont.politicaloutlook==13">中共党员</span> <span v-else-if="props.usercont.politicaloutlook == 12">预备党员</span>
<span v-else-if="props.usercont.politicaloutlook == 13">中共党员</span>
<span v-else>群众</span>&nbsp; <span v-else>群众</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="shengri" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="shengri" class="svg_box"></svg-icon>
出生日期</el-text>
</template> </template>
{{ props.usercont.birthdaytime }}&nbsp; {{ props.usercont.birthdaytime }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="zhqxgl" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="zhqxgl" class="svg_box"></svg-icon>
身份证号</el-text>
</template> </template>
{{ props.usercont.idcardno }}&nbsp; {{ props.usercont.idcardno }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon>
身份证有效期开始</el-text>
</template> </template>
{{ props.usercont.idcardstarttimedata }}&nbsp; {{ props.usercont.idcardstarttimedata }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon>
身份证有效期结束</el-text>
</template> </template>
{{ props.usercont.idcardendtimedata }}&nbsp; {{ props.usercont.idcardendtimedata }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon>
身份证地址</el-text>
</template> </template>
{{ props.usercont.idcardaddress }}&nbsp; {{ props.usercont.idcardaddress }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="archives" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="archives" class="svg_box"></svg-icon>
身份证签发机关</el-text>
</template> </template>
{{ props.usercont.idcardIssued }}&nbsp; {{ props.usercont.idcardIssued }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon>
手机号码</el-text>
</template> </template>
{{ props.usercont.mobilephone }}&nbsp; {{ props.usercont.mobilephone }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="address" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="address" class="svg_box"></svg-icon>
现居住地</el-text>
</template> </template>
{{ props.usercont.currentresidence }}&nbsp; {{ props.usercont.currentresidence }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="email" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="email" class="svg_box"></svg-icon>
电子邮件</el-text>
</template> </template>
{{ props.usercont.email }}&nbsp; {{ props.usercont.email }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon> 线</el-text> <el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon>
内线电话</el-text>
</template> </template>
{{ props.usercont.internaltelephone }}&nbsp; {{ props.usercont.internaltelephone }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text>
<i class="fa fa-medkit"></i>
血型</el-text>
</template>
{{ props.usercont.bloodtype }}&nbsp;
</el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon>
籍贯</el-text>
</template> </template>
{{ props.usercont.nativeplace }}&nbsp; {{ props.usercont.nativeplace }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
@ -183,115 +199,138 @@ function editCont(){
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon>
</template> 星座</el-text>
<span v-if="props.usercont.constellationing==2">金牛座</span> </template>
<span v-else-if="props.usercont.constellationing==3">双子座</span> <span v-if="props.usercont.constellationing == 2">金牛座</span>
<span v-else-if="props.usercont.constellationing==4">巨蟹座</span> <span v-else-if="props.usercont.constellationing == 3">双子座</span>
<span v-else-if="props.usercont.constellationing==5">狮子座</span> <span v-else-if="props.usercont.constellationing == 4">巨蟹座</span>
<span v-else-if="props.usercont.constellationing==6">处女座</span> <span v-else-if="props.usercont.constellationing == 5">狮子座</span>
<span v-else-if="props.usercont.constellationing==7">天枰座</span> <span v-else-if="props.usercont.constellationing == 6">处女座</span>
<span v-else-if="props.usercont.constellationing==8">天蝎座</span> <span v-else-if="props.usercont.constellationing == 7">天枰座</span>
<span v-else-if="props.usercont.constellationing==9">射手座</span> <span v-else-if="props.usercont.constellationing == 8">天蝎座</span>
<span v-else-if="props.usercont.constellationing==10">摩羯座</span> <span v-else-if="props.usercont.constellationing == 9">射手座</span>
<span v-else-if="props.usercont.constellationing==11">水瓶座</span> <span v-else-if="props.usercont.constellationing == 10">摩羯座</span>
<span v-else-if="props.usercont.constellationing==12">双鱼座</span> <span v-else-if="props.usercont.constellationing == 11">水瓶座</span>
<span v-else-if="props.usercont.constellationing == 12">双鱼座</span>
<span v-else>白羊座</span>&nbsp; <span v-else>白羊座</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="guyong" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="guyong" class="svg_box"></svg-icon>
雇佣类型</el-text>
</template> </template>
<span v-if="props.usercont.hireclass==2">再入职</span> <span v-if="props.usercont.hireclass == 2">再入职</span>
<span v-else>雇佣入职</span>&nbsp; <span v-else>雇佣入职</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon>
</template> 用工关系</el-text>
<span v-if="props.usercont.emptype==2">编外人员</span> </template>
<span v-else-if="props.usercont.emptype==3">实习&实习生</span> <span v-if="props.usercont.emptype == 2">编外人员</span>
<span v-else-if="props.usercont.emptype==4">试用员工</span> <span v-else-if="props.usercont.emptype == 3">实习&实习生</span>
<span v-else-if="props.usercont.emptype==5">待分配</span> <span v-else-if="props.usercont.emptype == 4">试用员工</span>
<span v-else-if="props.usercont.emptype==6">待岗</span> <span v-else-if="props.usercont.emptype == 5">待分配</span>
<span v-else-if="props.usercont.emptype==7">临时调入</span> <span v-else-if="props.usercont.emptype == 6">待岗</span>
<span v-else-if="props.usercont.emptype==8">正式员工</span> <span v-else-if="props.usercont.emptype == 7">临时调入</span>
<span v-else-if="props.usercont.emptype==9">长期病假</span> <span v-else-if="props.usercont.emptype == 8">正式员工</span>
<span v-else-if="props.usercont.emptype==10">停薪留职</span> <span v-else-if="props.usercont.emptype == 9">长期病假</span>
<span v-else-if="props.usercont.emptype==11">退休</span> <span v-else-if="props.usercont.emptype == 10">停薪留职</span>
<span v-else-if="props.usercont.emptype==12">辞职</span> <span v-else-if="props.usercont.emptype == 11">退休</span>
<span v-else-if="props.usercont.emptype==13">辞退</span> <span v-else-if="props.usercont.emptype == 12">辞职</span>
<span v-else-if="props.usercont.emptype==14">离职</span> <span v-else-if="props.usercont.emptype == 13">辞退</span>
<span v-else-if="props.usercont.emptype == 14">离职</span>
<span v-else>临时工</span>&nbsp; <span v-else>临时工</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="role" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="role" class="svg_box"></svg-icon>
入职日期</el-text>
</template> </template>
{{ props.usercont.entrydatetime }}&nbsp; {{ props.usercont.entrydatetime }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="iconfont-riyongbaihuo" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="iconfont-riyongbaihuo" class="svg_box"></svg-icon>
试用期</el-text>
</template> </template>
<span v-if="props.usercont.probationperiod != 0">{{ props.usercont.probationperiod }}</span>&nbsp; <span v-if="props.usercont.probationperiod != 0">{{ props.usercont.probationperiod }}</span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon>
预计转正日期</el-text>
</template> </template>
{{ props.usercont.planformaldatetime }}&nbsp; {{ props.usercont.planformaldatetime }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="gdqr" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="gdqr" class="svg_box"></svg-icon>
参加工作日期</el-text>
</template> </template>
{{ props.usercont.jobstartdatestr }}&nbsp; {{ props.usercont.jobstartdatestr }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="tyjr" class="svg_box"></svg-icon> 退</el-text> <el-text><svg-icon icon-class="tyjr" class="svg_box"></svg-icon>
是否为退役军人</el-text>
</template> </template>
<span v-if="props.usercont.isveterans==2"></span> <span v-if="props.usercont.isveterans == 2"></span>
<span v-else></span>&nbsp; <span v-else></span>&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> 退</el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
退役证编号</el-text>
</template> </template>
{{ props.usercont.veteransnumber }}&nbsp; {{ props.usercont.veteransnumber }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
护照号码</el-text>
</template> </template>
{{ props.usercont.passportno }}&nbsp; {{ props.usercont.passportno }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
国际区号</el-text>
</template> </template>
{{ props.usercont.globalroaming }}&nbsp; {{ props.usercont.globalroaming }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="wechat" class="svg_box"></svg-icon> </el-text> <el-text><i class="fa fa-home"></i>
户口类型</el-text>
</template>
<span v-if="props.usercont.natureofAccount == 2">农业户口</span>
<span v-else>非农业户口</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="wechat" class="svg_box"></svg-icon>
绑定微信</el-text>
</template> </template>
{{ props.usercont.wechat }}&nbsp; {{ props.usercont.wechat }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="workwechat" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="workwechat" class="svg_box"></svg-icon>
绑定企业微信</el-text>
</template> </template>
{{ props.usercont.workwechat }}&nbsp; {{ props.usercont.workwechat }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item>
<el-descriptions-item :span="2"> <template #label>
&nbsp; <el-text><i class="fa fa-heart-o"></i>
兴趣爱好</el-text>
</template>
{{ props.usercont.interests }}&nbsp;
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> &nbsp; </el-descriptions-item>
</el-descriptions> </el-descriptions>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

604
src/views/hr/archives/basicinformation/editcontent.vue

@ -3,46 +3,67 @@
@ 时间: 2023-06-18 08:41:31 @ 时间: 2023-06-18 08:41:31
@ 备注: 编辑员工信息 @ 备注: 编辑员工信息
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { myinfostruct,userManOrFucont } from '@/api/hr/people/type' import { myinfostruct, userManOrFucont } from "@/api/hr/people/type";
import { editMyInfoing } from '@/api/hr/people/index' import { editMyInfoing } from "@/api/hr/people/index";
// import { calculateDatesMonth } from '@/api/publicapi' // import { calculateDatesMonth } from '@/api/publicapi'
import { haveDateTime } from '@/api/handle' import { haveDateTime } from "@/api/handle";
import { userGender,healthStates,userMaritalstatus,userPoliticaloutloo,userConstellationing,userHireclass,emptypeOptionsAll,yesOrno } from '@/api/hr/people/datacont' import {
userGender,
healthStates,
userMaritalstatus,
userPoliticaloutloo,
userConstellationing,
userHireclass,
emptypeOptionsAll,
yesOrno,
Householdregistration,
} from "@/api/hr/people/datacont";
const props = defineProps({ const props = defineProps({
editShow:{ editShow: {
type:Boolean, type: Boolean,
default:false default: false,
}, },
usercont:{ usercont: {
type:Object, type: Object,
default(){ default() {
return {} return {};
} },
} },
});
const emits = defineEmits(["update:editShow", "refreshcontdata"]); //
const myContData = reactive<myinfostruct>({
entrydatetime: "",
probationperiod: 1,
}); });
const emits = defineEmits(["update:editShow","refreshcontdata"]); //
const myContData = reactive<myinfostruct>({entrydatetime:"",probationperiod:1})
const editPostFormRef = ref(ElForm); // const editPostFormRef = ref(ElForm); //
const editLoading = ref(false) const editLoading = ref(false);
const submitEditCont = reactive<userManOrFucont>({}) const submitEditCont = reactive<userManOrFucont>({});
/** /**
* 表单验证规则 * 表单验证规则
*/ */
const editMycontRules = reactive({ const editMycontRules = reactive({
name: [{ required: true, message: "请输入姓名", trigger: "blur" }], name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
gender: [{ required: true, message: "请选择性别", trigger: "blur" }], gender: [{ required: true, message: "请选择性别", trigger: "blur" }],
health: [{ required: true, message: "请选择健康状况", trigger: "blur" }], health: [{ required: true, message: "请选择健康状况", trigger: "blur" }],
birthdaytime: [{ required: true, message: "请选择出生日期", trigger: "blur" }], birthdaytime: [
{ required: true, message: "请选择出生日期", trigger: "blur" },
],
idcardno: [{ required: true, message: "请输入身份证号", trigger: "blur" }], idcardno: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
mobilephone: [{ required: true, message: "请输入手机号码", trigger: "blur" }], mobilephone: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
currentresidence: [{ required: true, message: "请输入现居住地", trigger: "blur" }], currentresidence: [
{ required: true, message: "请输入现居住地", trigger: "blur" },
],
myfolk: [{ required: true, message: "请输入民族", trigger: "blur" }], myfolk: [{ required: true, message: "请输入民族", trigger: "blur" }],
hireclass: [{ required: true, message: "请选雇佣类型", trigger: "blur" }], hireclass: [{ required: true, message: "请选雇佣类型", trigger: "blur" }],
emptype: [{ required: true, message: "请选择工关系", trigger: "blur" }], emptype: [{ required: true, message: "请选择工关系", trigger: "blur" }],
entrydatetime: [{ required: true, message: "请输入入职日期", trigger: "blur" }], entrydatetime: [
probationperiod: [{ required: true, message: "请输入试用期(月)", trigger: "blur" }], { required: true, message: "请输入入职日期", trigger: "blur" },
],
probationperiod: [
{ required: true, message: "请输入试用期(月)", trigger: "blur" },
],
}); });
/** /**
* 编辑控制 * 编辑控制
@ -56,175 +77,177 @@ const boxShow = computed({
/** /**
* 提交 * 提交
*/ */
function submitEditMyCont(){ function submitEditMyCont() {
// console.log("--myContData-->",myContData) // console.log("--myContData-->",myContData)
editLoading.value = true; editLoading.value = true;
editPostFormRef.value.validate((isValid: boolean) => { editPostFormRef.value.validate((isValid: boolean) => {
if (isValid) { if (isValid) {
submitEditCont.id = myContData.idstr submitEditCont.id = myContData.idstr;
submitEditCont.name = myContData.name submitEditCont.name = myContData.name;
submitEditCont.mobilephone = myContData.mobilephone submitEditCont.mobilephone = myContData.mobilephone;
submitEditCont.idcardno = myContData.idcardno submitEditCont.idcardno = myContData.idcardno;
submitEditCont.entrydatetime = myContData.entrydatetime submitEditCont.entrydatetime = myContData.entrydatetime;
submitEditCont.probationperiod = myContData.probationperiod submitEditCont.probationperiod = myContData.probationperiod;
submitEditCont.confirmationdate = myContData.planformaldatetime submitEditCont.confirmationdate = myContData.planformaldatetime;
submitEditCont.jobstartdatestr = myContData.jobstartdatestr submitEditCont.jobstartdatestr = myContData.jobstartdatestr;
submitEditCont.nameusedbefore = myContData.nameusedbefore submitEditCont.nameusedbefore = myContData.nameusedbefore;
submitEditCont.gender = myContData.gender submitEditCont.gender = myContData.gender;
submitEditCont.myfolk = myContData.myfolk submitEditCont.myfolk = myContData.myfolk;
submitEditCont.politicaloutlook = myContData.politicaloutlook submitEditCont.politicaloutlook = myContData.politicaloutlook;
submitEditCont.health = myContData.health submitEditCont.health = myContData.health;
submitEditCont.birthdaytime = myContData.birthdaytime submitEditCont.birthdaytime = myContData.birthdaytime;
submitEditCont.idcardstarttimedata = myContData.idcardstarttimedata submitEditCont.idcardstarttimedata = myContData.idcardstarttimedata;
submitEditCont.idcardendtimedata = myContData.idcardendtimedata submitEditCont.idcardendtimedata = myContData.idcardendtimedata;
submitEditCont.idcardaddress = myContData.idcardaddress submitEditCont.idcardaddress = myContData.idcardaddress;
submitEditCont.idcardIssued = myContData.idcardIssued submitEditCont.idcardIssued = myContData.idcardIssued;
submitEditCont.currentresidence = myContData.currentresidence submitEditCont.currentresidence = myContData.currentresidence;
submitEditCont.nativeplace = myContData.nativeplace submitEditCont.nativeplace = myContData.nativeplace;
submitEditCont.email = myContData.email submitEditCont.email = myContData.email;
submitEditCont.internaltelephone = myContData.internaltelephone submitEditCont.internaltelephone = myContData.internaltelephone;
submitEditCont.hireclass = myContData.hireclass submitEditCont.hireclass = myContData.hireclass;
submitEditCont.emptype = myContData.emptype submitEditCont.emptype = myContData.emptype;
submitEditCont.isveterans = myContData.isveterans submitEditCont.isveterans = myContData.isveterans;
submitEditCont.veteransnumber = myContData.veteransnumber submitEditCont.veteransnumber = myContData.veteransnumber;
submitEditCont.passportno = myContData.passportno submitEditCont.passportno = myContData.passportno;
submitEditCont.globalroaming = myContData.globalroaming submitEditCont.globalroaming = myContData.globalroaming;
submitEditCont.wechat = myContData.wechat submitEditCont.wechat = myContData.wechat;
submitEditCont.workwechat = myContData.workwechat submitEditCont.workwechat = myContData.workwechat;
submitEditCont.constellationing = myContData.constellationing submitEditCont.constellationing = myContData.constellationing;
submitEditCont.maritalstatus = myContData.maritalstatus submitEditCont.maritalstatus = myContData.maritalstatus;
submitEditCont.interests = myContData.interests;
submitEditCont.bloodtype = myContData.bloodtype;
submitEditCont.natureofAccount = myContData.natureofAccount;
editMyInfoing(submitEditCont) editMyInfoing(submitEditCont)
.then(() =>{ .then(() => {
ElMessage.success("编辑成功"); ElMessage.success("编辑成功");
emits("refreshcontdata", myContData); emits("refreshcontdata", myContData);
emits("update:editShow", false); emits("update:editShow", false);
}) })
.finally(() =>{editLoading.value = false;}) .finally(() => {
editLoading.value = false;
});
} }
}); });
} }
/** /**
* 取消修改 * 取消修改
*/ */
function handleCloseMyCont(){ function handleCloseMyCont() {
emits("update:editShow", false); emits("update:editShow", false);
} }
// //
onMounted(() => { onMounted(() => {
myContData.id = props.usercont.id //78, myContData.id = props.usercont.id; //78,
myContData.number = props.usercont.number //"300450", myContData.number = props.usercont.number; //"300450",
myContData.name = props.usercont.name //"", myContData.name = props.usercont.name; //"",
myContData.icon = props.usercont.icon //"", myContData.icon = props.usercont.icon; //"",
myContData.hireclass = props.usercont.hireclass //1, myContData.hireclass = props.usercont.hireclass; //1,
myContData.emptype = props.usercont.emptype //8, myContData.emptype = props.usercont.emptype; //8,
myContData.company = props.usercont.company //309, myContData.company = props.usercont.company; //309,
myContData.maindeparment = props.usercont.maindeparment //102, myContData.maindeparment = props.usercont.maindeparment; //102,
myContData.sunmaindeparment = props.usercont.sunmaindeparment //272, myContData.sunmaindeparment = props.usercont.sunmaindeparment; //272,
myContData.deparment = props.usercont.deparment //"", myContData.deparment = props.usercont.deparment; //"",
myContData.adminorg = props.usercont.adminorg //272, myContData.adminorg = props.usercont.adminorg; //272,
myContData.teamid = props.usercont.teamid //1, myContData.teamid = props.usercont.teamid; //1,
myContData.position = props.usercont.position //2184, myContData.position = props.usercont.position; //2184,
myContData.jobclass = props.usercont.jobclass //5, myContData.jobclass = props.usercont.jobclass; //5,
myContData.jobid = props.usercont.jobid //36, myContData.jobid = props.usercont.jobid; //36,
myContData.jobleve = props.usercont.jobleve //3, myContData.jobleve = props.usercont.jobleve; //3,
myContData.time = props.usercont.time //1656984567, myContData.time = props.usercont.time; //1656984567,
myContData.eitetime = props.usercont.eitetime //1671160648, myContData.eitetime = props.usercont.eitetime; //1671160648,
myContData.wechat = props.usercont.wechat //"", myContData.wechat = props.usercont.wechat; //"",
myContData.workwechat = props.usercont.workwechat //"KaiXinGuo", myContData.workwechat = props.usercont.workwechat; //"KaiXinGuo",
myContData.state = props.usercont.state //1, myContData.state = props.usercont.state; //1,
myContData.key = props.usercont.key //15993815826844528, myContData.key = props.usercont.key; //15993815826844528,
myContData.isadmin = props.usercont.isadmin //4, myContData.isadmin = props.usercont.isadmin; //4,
myContData.password = props.usercont.password //"ecffe8715d2d3c2743bab6abc90e1331", myContData.password = props.usercont.password; //"ecffe8715d2d3c2743bab6abc90e1331",
myContData.role = props.usercont.role //"1", myContData.role = props.usercont.role; //"1",
myContData.idcardno = props.usercont.idcardno //"370921198810151515", myContData.idcardno = props.usercont.idcardno; //"370921198810151515",
myContData.passportno = props.usercont.passportno //"", myContData.passportno = props.usercont.passportno; //"",
myContData.globalroaming = props.usercont.globalroaming //"", myContData.globalroaming = props.usercont.globalroaming; //"",
myContData.mobilephone = props.usercont.mobilephone //"15069130853", myContData.mobilephone = props.usercont.mobilephone; //"15069130853",
myContData.email = props.usercont.email //"", myContData.email = props.usercont.email; //"",
myContData.gender = props.usercont.gender //1, myContData.gender = props.usercont.gender; //1,
myContData.birthday = props.usercont.birthday //592848000, myContData.birthday = props.usercont.birthday; //592848000,
myContData.myfolk = props.usercont.myfolk //"", myContData.myfolk = props.usercont.myfolk; //"",
myContData.nativeplace = props.usercont.nativeplace //"15", myContData.nativeplace = props.usercont.nativeplace; //"15",
myContData.idcardstartdate = props.usercont.idcardstartdate //0, myContData.idcardstartdate = props.usercont.idcardstartdate; //0,
myContData.idcardenddate = props.usercont.idcardenddate //0, myContData.idcardenddate = props.usercont.idcardenddate; //0,
myContData.idcardaddress = props.usercont.idcardaddress //"", myContData.idcardaddress = props.usercont.idcardaddress; //"",
myContData.idcardIssued = props.usercont.idcardIssued //"", myContData.idcardIssued = props.usercont.idcardIssued; //"",
myContData.health = props.usercont.health //2, myContData.health = props.usercont.health; //2,
myContData.maritalstatus = props.usercont.maritalstatus //2, myContData.maritalstatus = props.usercont.maritalstatus; //2,
myContData.internaltelephone = props.usercont.internaltelephone //"", myContData.internaltelephone = props.usercont.internaltelephone; //"",
myContData.currentresidence = props.usercont.currentresidence //"11302", myContData.currentresidence = props.usercont.currentresidence; //"11302",
myContData.constellationing = props.usercont.constellationing //1, myContData.constellationing = props.usercont.constellationing; //1,
myContData.isdoubleworker = props.usercont.isdoubleworker //2, myContData.isdoubleworker = props.usercont.isdoubleworker; //2,
myContData.isveterans = props.usercont.isveterans //2, myContData.isveterans = props.usercont.isveterans; //2,
myContData.veteransnumber = props.usercont.veteransnumber //"", myContData.veteransnumber = props.usercont.veteransnumber; //"",
myContData.jobstartdate = props.usercont.jobstartdate //0, myContData.jobstartdate = props.usercont.jobstartdate; //0,
myContData.entrydate = props.usercont.entrydate //0, myContData.entrydate = props.usercont.entrydate; //0,
myContData.probationperiod = props.usercont.probationperiod //0, myContData.probationperiod = props.usercont.probationperiod; //0,
myContData.planformaldate = props.usercont.planformaldate //0, myContData.planformaldate = props.usercont.planformaldate; //0,
myContData.politicaloutlook = props.usercont.politicaloutlook //1, myContData.politicaloutlook = props.usercont.politicaloutlook; //1,
myContData.nameusedbefore = props.usercont.nameusedbefore //"", myContData.nameusedbefore = props.usercont.nameusedbefore; //"",
myContData.iconphoto = props.usercont.iconphoto // myContData.iconphoto = props.usercont.iconphoto; //
myContData.responsibledepartment = props.usercont.responsibledepartment //"", myContData.responsibledepartment = props.usercont.responsibledepartment; //"",
myContData.responsibledepartmentjson = props.usercont.responsibledepartmentjson //"", myContData.responsibledepartmentjson =
myContData.birthdaytime = props.usercont.birthdaytime //"1988-10-15", props.usercont.responsibledepartmentjson; //"",
myContData.idcardstarttimedata = props.usercont.idcardstarttimedata //"", myContData.birthdaytime = props.usercont.birthdaytime; //"1988-10-15",
myContData.idcardendtimedata = props.usercont.idcardendtimedata //"", myContData.idcardstarttimedata = props.usercont.idcardstarttimedata; //"",
myContData.entrydatetime = props.usercont.entrydatetime //"", myContData.idcardendtimedata = props.usercont.idcardendtimedata; //"",
myContData.planformaldatetime = props.usercont.planformaldatetime //"", myContData.entrydatetime = props.usercont.entrydatetime; //"",
myContData.doubleworkerlist = props.usercont.doubleworkerlist //, myContData.planformaldatetime = props.usercont.planformaldatetime; //"",
myContData.educationalexperience = props.usercont.educationalexperience //, myContData.doubleworkerlist = props.usercont.doubleworkerlist; //,
myContData.emergencycontact = props.usercont.emergencycontact //, myContData.educationalexperience = props.usercont.educationalexperience; //,
myContData.memberoffamily = props.usercont.memberoffamily //, myContData.emergencycontact = props.usercont.emergencycontact; //,
myContData.workhistorylist = props.usercont.workhistorylist //, myContData.memberoffamily = props.usercont.memberoffamily; //,
myContData.groupworkhistorylist = props.usercont.groupworkhistorylist //, myContData.workhistorylist = props.usercont.workhistorylist; //,
myContData.idstr = props.usercont.idstr //"78", myContData.groupworkhistorylist = props.usercont.groupworkhistorylist; //,
myContData.companyname = props.usercont.companyname //"", myContData.idstr = props.usercont.idstr; //"78",
myContData.maindeparmentname = props.usercont.maindeparmentname //"", myContData.companyname = props.usercont.companyname; //"",
myContData.adminorgname = props.usercont.adminorgname //"", myContData.maindeparmentname = props.usercont.maindeparmentname; //"",
myContData.positionname = props.usercont.positionname //"", myContData.adminorgname = props.usercont.adminorgname; //"",
myContData.jobclassname = props.usercont.jobclassname //"", myContData.positionname = props.usercont.positionname; //"",
myContData.jobidname = props.usercont.jobidname //"", myContData.jobclassname = props.usercont.jobclassname; //"",
myContData.politicaloutlookname = props.usercont.politicaloutlookname //"", myContData.jobidname = props.usercont.jobidname; //"",
myContData.jobstartdatestr = props.usercont.jobstartdatestr //"", myContData.politicaloutlookname = props.usercont.politicaloutlookname; //"",
myContData.entrydatestr = props.usercont.entrydatestr //"", myContData.jobstartdatestr = props.usercont.jobstartdatestr; //"",
myContData.personincharge = props.usercont.personincharge //2, myContData.entrydatestr = props.usercont.entrydatestr; //"",
myContData.sunmaindeparmentname = props.usercont.sunmaindeparmentname //"", myContData.personincharge = props.usercont.personincharge; //2,
myContData.workpostname = props.usercont.workpostname //"", myContData.sunmaindeparmentname = props.usercont.sunmaindeparmentname; //"",
myContData.teamname = props.usercont.teamname //"", myContData.workpostname = props.usercont.workpostname; //"",
myContData.allorglist = props.usercont.allorglist //[309,102,272], myContData.teamname = props.usercont.teamname; //"",
myContData.ruleid = props.usercont.ruleid //"0", myContData.allorglist = props.usercont.allorglist; //[309,102,272],
myContData.rulename = props.usercont.rulename //"", myContData.ruleid = props.usercont.ruleid; //"0",
myContData.orgreslist = props.usercont.orgreslist // myContData.rulename = props.usercont.rulename; //"",
myContData.keystr = props.usercont.keystr // myContData.orgreslist = props.usercont.orgreslist; //
myContData.keystr = props.usercont.keystr; //
myContData.interests = props.usercont.interests;
myContData.bloodtype = props.usercont.bloodtype;
myContData.natureofAccount = props.usercont.natureofAccount;
}); });
/** /**
* 计算时间 * 计算时间
*/ */
const computingTime = (value: any) => { const computingTime = (value: any) => {
let dataCont = myContData.entrydatetime?.toString() let dataCont = myContData.entrydatetime?.toString();
myContData.planformaldatetime = haveDateTime(dataCont,value,false) myContData.planformaldatetime = haveDateTime(dataCont, value, false);
} };
/** /**
* 选择入职时间 * 选择入职时间
*/ */
const computingClickTime = (value: string) => { const computingClickTime = (value: string) => {
myContData.planformaldatetime = haveDateTime(value,myContData.probationperiod,false) myContData.planformaldatetime = haveDateTime(
} value,
myContData.probationperiod,
false
);
};
</script> </script>
<template> <template>
<el-form <el-form ref="editPostFormRef" :model="myContData" :rules="editMycontRules">
ref="editPostFormRef" <el-descriptions class="margin-top" direction="vertical" :column="4" border :width="80">
:model="myContData"
:rules="editMycontRules"
>
<el-descriptions
class="margin-top"
direction="vertical"
:column="4"
border
:width="80"
>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="user" class="svg_box"></svg-icon> 姓名<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="user" class="svg_box"></svg-icon> 姓名<i class="hong_mi">*</i></el-text>
@ -235,7 +258,8 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="uv" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="uv" class="svg_box"></svg-icon>
曾用名</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-input v-model="myContData.nameusedbefore" placeholder="请输入曾用名" /> <el-input v-model="myContData.nameusedbefore" placeholder="请输入曾用名" />
@ -247,79 +271,58 @@ const computingClickTime = (value: string) => {
</template> </template>
<el-form-item prop="gender"> <el-form-item prop="gender">
<el-select v-model="myContData.gender" class="m-2" placeholder="请选择性别" size="default"> <el-select v-model="myContData.gender" class="m-2" placeholder="请选择性别" size="default">
<el-option <el-option v-for="item in userGender" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in userGender"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon> 健康状况<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon>
健康状况<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="health"> <el-form-item prop="health">
<el-select v-model="myContData.health" class="m-2" placeholder="请选择健康状况" size="default"> <el-select v-model="myContData.health" class="m-2" placeholder="请选择健康状况" size="default">
<el-option <el-option v-for="item in healthStates" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in healthStates"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="marriageregistration" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="marriageregistration" class="svg_box"></svg-icon>
婚姻状况</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-select v-model="myContData.maritalstatus" class="m-2" placeholder="请选择婚姻状况" size="default"> <el-select v-model="myContData.maritalstatus" class="m-2" placeholder="请选择婚姻状况" size="default">
<el-option <el-option v-for="item in userMaritalstatus" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in userMaritalstatus"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon>
政治面貌</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-select v-model="myContData.politicaloutlook" class="m-2" placeholder="请选择政治面貌" size="default"> <el-select v-model="myContData.politicaloutlook" class="m-2" placeholder="请选择政治面貌" size="default">
<el-option <el-option v-for="item in userPoliticaloutloo" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in userPoliticaloutloo"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="shengri" class="svg_box"></svg-icon> 出生日期<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="shengri" class="svg_box"></svg-icon>
出生日期<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="birthdaytime"> <el-form-item prop="birthdaytime">
<el-date-picker <el-date-picker
v-model="myContData.birthdaytime" v-model="myContData.birthdaytime" type="date" placeholder="请选择出生日期" format="YYYY-MM-DD"
type="date" value-format="YYYY-MM-DD" style="width: 100%" size="default" />
placeholder="请选择出生日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="zhqxgl" class="svg_box"></svg-icon> 身份证号<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="zhqxgl" class="svg_box"></svg-icon>
身份证号<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="idcardno"> <el-form-item prop="idcardno">
<el-input v-model="myContData.idcardno" placeholder="请输入身份证号" /> <el-input v-model="myContData.idcardno" placeholder="请输入身份证号" />
@ -327,39 +330,30 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon>
身份证有效期开始</el-text>
</template> </template>
<el-form-item > <el-form-item>
<el-date-picker <el-date-picker
v-model="myContData.idcardstarttimedata" v-model="myContData.idcardstarttimedata" type="date" placeholder="身份证有效期开始"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 100%" size="default" />
placeholder="身份证有效期开始"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="bdzj-bg" class="svg_box"></svg-icon>
身份证有效期结束</el-text>
</template> </template>
<el-form-item > <el-form-item>
<el-date-picker <el-date-picker
v-model="myContData.idcardendtimedata" v-model="myContData.idcardendtimedata" type="date" placeholder="身份证有效期结束" format="YYYY-MM-DD"
type="date" value-format="YYYY-MM-DD" style="width: 100%" size="default" />
placeholder="身份证有效期结束"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon>
身份证地址</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.idcardaddress" placeholder="请输入身份证地址" /> <el-input v-model="myContData.idcardaddress" placeholder="请输入身份证地址" />
@ -367,7 +361,8 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="archives" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="archives" class="svg_box"></svg-icon>
身份证签发机关</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.idcardIssued" placeholder="请输入身份证签发机关" /> <el-input v-model="myContData.idcardIssued" placeholder="请输入身份证签发机关" />
@ -383,7 +378,8 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="address" class="svg_box"></svg-icon> 现居住地<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="address" class="svg_box"></svg-icon>
现居住地<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="currentresidence"> <el-form-item prop="currentresidence">
<el-input v-model="myContData.currentresidence" placeholder="请输入现居住地" /> <el-input v-model="myContData.currentresidence" placeholder="请输入现居住地" />
@ -391,25 +387,37 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="email" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="email" class="svg_box"></svg-icon>
电子邮件</el-text>
</template> </template>
<el-form-item > <el-form-item>
<el-input v-model="myContData.email" placeholder="请输入电子邮件" /> <el-input v-model="myContData.email" placeholder="请输入电子邮件" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon> 线</el-text> <el-text><svg-icon icon-class="phone" class="svg_box"></svg-icon>
内线电话</el-text>
</template> </template>
<el-form-item > <el-form-item>
<el-input v-model="myContData.internaltelephone" placeholder="请输入内线电话" /> <el-input v-model="myContData.internaltelephone" placeholder="请输入内线电话" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><i class="fa fa-medkit"></i>
血型</el-text>
</template>
<el-form-item>
<el-input v-model="myContData.bloodtype" placeholder="请输入血型" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :span="2"> <el-descriptions-item :span="2">
<template #label> <template #label>
<el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="0213-lmp" class="svg_box"></svg-icon>
籍贯</el-text>
</template> </template>
<el-form-item > <el-form-item>
<el-input v-model="myContData.nativeplace" placeholder="请输入籍贯" /> <el-input v-model="myContData.nativeplace" placeholder="请输入籍贯" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
@ -423,46 +431,34 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon>
星座</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-select v-model="myContData.constellationing" class="m-2" placeholder="请选择星座" size="default"> <el-select v-model="myContData.constellationing" class="m-2" placeholder="请选择星座" size="default">
<el-option <el-option v-for="item in userConstellationing" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in userConstellationing"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="guyong" class="svg_box"></svg-icon> 雇佣类型<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="guyong" class="svg_box"></svg-icon>
雇佣类型<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="hireclass"> <el-form-item prop="hireclass">
<el-select v-model="myContData.hireclass" class="m-2" placeholder="请选雇佣类型" size="default"> <el-select v-model="myContData.hireclass" class="m-2" placeholder="请选雇佣类型" size="default">
<el-option <el-option v-for="item in userHireclass" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in userHireclass"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon> 用工关系<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon>
用工关系<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="emptype"> <el-form-item prop="emptype">
<el-select v-model="myContData.emptype" class="m-2" placeholder="请选择工关系" size="default"> <el-select v-model="myContData.emptype" class="m-2" placeholder="请选择工关系" size="default">
<el-option <el-option v-for="item in emptypeOptionsAll" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in emptypeOptionsAll"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
@ -472,75 +468,58 @@ const computingClickTime = (value: string) => {
</template> </template>
<el-form-item prop="entrydatetime"> <el-form-item prop="entrydatetime">
<el-date-picker <el-date-picker
v-model="myContData.entrydatetime" v-model="myContData.entrydatetime" type="date" placeholder="入职日期" format="YYYY-MM-DD"
type="date" value-format="YYYY-MM-DD" style="width: 100%" size="default" @change="computingClickTime" />
placeholder="入职日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
@change="computingClickTime"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="iconfont-riyongbaihuo" class="svg_box"></svg-icon> 试用期(月)<i class="hong_mi">*</i></el-text> <el-text><svg-icon icon-class="iconfont-riyongbaihuo" class="svg_box"></svg-icon>
试用期()<i class="hong_mi">*</i></el-text>
</template> </template>
<el-form-item prop="probationperiod"> <el-form-item prop="probationperiod">
<el-input-number v-model="myContData.probationperiod" :min="1" placeholder="请输入试用期(月)" style="width:100%" @change="computingTime" /> <el-input-number
v-model="myContData.probationperiod" :min="1" placeholder="请输入试用期(月)" style="width: 100%"
@change="computingTime" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon>
预计转正日期</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-date-picker <el-date-picker
v-model="myContData.planformaldatetime" v-model="myContData.planformaldatetime" type="date" placeholder="预计转正日期" format="YYYY-MM-DD"
type="date" value-format="YYYY-MM-DD" style="width: 100%" size="default" />
placeholder="预计转正日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="gdqr" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="gdqr" class="svg_box"></svg-icon>
参加工作日期</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-date-picker <el-date-picker
v-model="myContData.jobstartdatestr" v-model="myContData.jobstartdatestr" type="date" placeholder="参加工作日期" format="YYYY-MM-DD"
type="date" value-format="YYYY-MM-DD" style="width: 100%" size="default" />
placeholder="参加工作日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="tyjr" class="svg_box"></svg-icon> 退</el-text> <el-text><svg-icon icon-class="tyjr" class="svg_box"></svg-icon>
是否为退役军人</el-text>
</template> </template>
<el-form-item> <el-form-item>
<el-select v-model="myContData.isveterans" class="m-2" placeholder="请选是否为退役军人" size="default"> <el-select v-model="myContData.isveterans" class="m-2" placeholder="请选是否为退役军人" size="default">
<el-option <el-option v-for="item in yesOrno" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in yesOrno"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> 退</el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
退役证编号</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.veteransnumber" placeholder="请输入退役证编号" /> <el-input v-model="myContData.veteransnumber" placeholder="请输入退役证编号" />
@ -548,7 +527,8 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
护照号码</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.passportno" placeholder="请输入护照号码" /> <el-input v-model="myContData.passportno" placeholder="请输入护照号码" />
@ -556,16 +536,28 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="number" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="number" class="svg_box"></svg-icon>
国际区号</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.globalroaming" placeholder="请输入国际区号" /> <el-input v-model="myContData.globalroaming" placeholder="请输入国际区号" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="wechat" class="svg_box"></svg-icon> </el-text> <el-text><i class="fa fa-home"></i>
户口类型</el-text>
</template>
<el-form-item>
<el-select v-model="myContData.natureofAccount" class="m-2" placeholder="请选择户口类型" size="default">
<el-option v-for="item in Householdregistration" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="wechat" class="svg_box"></svg-icon>
绑定微信</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.wechat" placeholder="请输入绑定微信" /> <el-input v-model="myContData.wechat" placeholder="请输入绑定微信" />
@ -573,33 +565,43 @@ const computingClickTime = (value: string) => {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="workwechat" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="workwechat" class="svg_box"></svg-icon>
绑定企业微信</el-text>
</template> </template>
<el-form-item prop="nameusedbefore"> <el-form-item prop="nameusedbefore">
<el-input v-model="myContData.workwechat" placeholder="请输入绑定企业微信" /> <el-input v-model="myContData.workwechat" placeholder="请输入绑定企业微信" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item>
<el-descriptions-item :span="2"> <template #label>
&nbsp; <el-text><i class="fa fa-heart-o"></i>
兴趣爱好</el-text>
</template>
<el-form-item prop="nameusedbefore">
<el-input v-model="myContData.interests" placeholder="请输入兴趣爱好" />
</el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2"> &nbsp; </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-form> </el-form>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditMyCont" > </el-button> <el-button type="primary" :loading="editLoading" @click="submitEditMyCont"> </el-button>
<el-button @click="handleCloseMyCont"> </el-button> <el-button @click="handleCloseMyCont"> </el-button>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.el-form-item--default{ .el-form-item--default {
margin-bottom: 0px; margin-bottom: 0px;
} }
.dialog-footer{
.dialog-footer {
margin-top: 15px; margin-top: 15px;
text-align: right; text-align: right;
} }
.hong_mi{
color: #FF0000; .hong_mi {
color: #ff0000;
margin-left: 5px; margin-left: 5px;
} }
</style> </style>

28
src/views/hr/archives/basicinformation/educationalexperience.vue

@ -113,15 +113,27 @@ function editXueLiBox(cont:jiaoyujingli){
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="dict" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="xueli" class="svg_box"></svg-icon> </el-text>
</template> </template>
{{ item.subject }} {{ item.educationcn }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="xueli" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="xueli" class="svg_box"></svg-icon> </el-text>
</template> </template>
{{ item.educationcn }} {{ item.educationtype }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><el-icon><School /></el-icon> </el-text>
</template>
{{ item.faculty }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="school" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.schooltype }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
@ -129,6 +141,14 @@ function editXueLiBox(cont:jiaoyujingli){
</template> </template>
{{ item.academicdegreecn }} {{ item.academicdegreecn }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="dict" class="svg_box"></svg-icon> </el-text>
</template>
{{ item.subject }}
</el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> <template #label>
<el-text><svg-icon icon-class="time" class="svg_box"></svg-icon> </el-text> <el-text><svg-icon icon-class="time" class="svg_box"></svg-icon> </el-text>

25
src/views/hr/archives/basicinformation/educationalexperienceadd.vue

@ -6,7 +6,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { educExpInfo } from '@/api/hr/people/type' import { educExpInfo } from '@/api/hr/people/type'
import { addEducExpCont } from '@/api/hr/people/index' import { addEducExpCont } from '@/api/hr/people/index'
import { education,xuliClass,academicDegree } from '@/api/hr/people/datacont' import { education,xuliClass,academicDegree,educationtype,schooltype } from '@/api/hr/people/datacont'
const props = defineProps({ const props = defineProps({
addisshow:{ addisshow:{
type:Boolean, type:Boolean,
@ -95,6 +95,9 @@ function submitAddJyjl(){
<el-form-item label="专业" prop="subject"> <el-form-item label="专业" prop="subject">
<el-input v-model="JyjlFormData.subject" placeholder="请输入专业" /> <el-input v-model="JyjlFormData.subject" placeholder="请输入专业" />
</el-form-item> </el-form-item>
<el-form-item label="所属院系" prop="faculty">
<el-input v-model="JyjlFormData.faculty" placeholder="请输入所属院系" />
</el-form-item>
<el-form-item label="学历" prop="education"> <el-form-item label="学历" prop="education">
<el-select v-model="JyjlFormData.education" placeholder="请选择学历" > <el-select v-model="JyjlFormData.education" placeholder="请选择学历" >
<el-option <el-option
@ -105,6 +108,26 @@ function submitAddJyjl(){
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="院校类型" prop="schooltype">
<el-select v-model="JyjlFormData.schooltype" placeholder="请选择学历类型" >
<el-option
v-for="item in schooltype"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="学历类型" prop="educationtype">
<el-select v-model="JyjlFormData.educationtype" placeholder="请选择学历类型" >
<el-option
v-for="item in educationtype"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="学历性质"> <el-form-item label="学历性质">
<el-select v-model="JyjlFormData.level" placeholder="请选择学历性质" > <el-select v-model="JyjlFormData.level" placeholder="请选择学历性质" >
<el-option <el-option

28
src/views/hr/archives/basicinformation/educationalexperienceedit.vue

@ -6,7 +6,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { editEducExpInfoing } from '@/api/hr/people/type' import { editEducExpInfoing } from '@/api/hr/people/type'
import { editEducExpCont } from '@/api/hr/people/index' import { editEducExpCont } from '@/api/hr/people/index'
import { education,xuliClass,academicDegree } from '@/api/hr/people/datacont' import { education,xuliClass,academicDegree,educationtype,schooltype } from '@/api/hr/people/datacont'
const props = defineProps({ const props = defineProps({
editisshow:{ editisshow:{
type:Boolean, type:Boolean,
@ -92,6 +92,9 @@ function submitEditJyjl(){
JyjlFormData.graduationtime = props.datacont.graduationtimestr; JyjlFormData.graduationtime = props.datacont.graduationtimestr;
JyjlFormData.academicdegree = props.datacont.academicdegree; JyjlFormData.academicdegree = props.datacont.academicdegree;
JyjlFormData.level = props.datacont.level; JyjlFormData.level = props.datacont.level;
JyjlFormData.schooltype = props.datacont.schooltype;
JyjlFormData.faculty = props.datacont.faculty;
JyjlFormData.educationtype = props.datacont.educationtype;
} }
}) })
@ -116,6 +119,9 @@ function submitEditJyjl(){
<el-form-item label="专业" prop="subject"> <el-form-item label="专业" prop="subject">
<el-input v-model="JyjlFormData.subject" placeholder="请输入专业" /> <el-input v-model="JyjlFormData.subject" placeholder="请输入专业" />
</el-form-item> </el-form-item>
<el-form-item label="所属院系" prop="faculty">
<el-input v-model="JyjlFormData.faculty" placeholder="请输入所属院系" />
</el-form-item>
<el-form-item label="学历" prop="education"> <el-form-item label="学历" prop="education">
<el-select v-model="JyjlFormData.education" placeholder="请选择学历" > <el-select v-model="JyjlFormData.education" placeholder="请选择学历" >
<el-option <el-option
@ -126,6 +132,26 @@ function submitEditJyjl(){
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="院校类型" prop="schooltype">
<el-select v-model="JyjlFormData.schooltype" placeholder="请选择学历类型" >
<el-option
v-for="item in schooltype"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="学历类型" prop="educationtype">
<el-select v-model="JyjlFormData.educationtype" placeholder="请选择学历类型" >
<el-option
v-for="item in educationtype"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="学历性质"> <el-form-item label="学历性质">
<el-select v-model="JyjlFormData.level" placeholder="请选择学历性质" > <el-select v-model="JyjlFormData.level" placeholder="请选择学历性质" >
<el-option <el-option

129
src/views/hr/archives/basicinformation/emergencycontact.vue

@ -3,75 +3,87 @@
@ 时间: 2023-06-16 11:17:50 @ 时间: 2023-06-16 11:17:50
@ 备注: 紧急联系人 @ 备注: 紧急联系人
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { emergencyContact } from '@/api/hr/people/type' import { emergencyContact } from "@/api/hr/people/type";
import { getEmergencyContact,editEmergencyContactState } from '@/api/hr/people/index' import {
getEmergencyContact,
editEmergencyContactState,
} from "@/api/hr/people/index";
/** /**
* 引入页面 * 引入页面
*/ */
import EditEmergencyContactPage from '@/views/hr/archives/basicinformation/emergencycontactedit.vue' import EditEmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontactedit.vue";
import AddEmergencyContactPage from '@/views/hr/archives/basicinformation/emergencycontactadd.vue' import AddEmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontactadd.vue";
const props = defineProps({ const props = defineProps({
tabsid:{ tabsid: {
type:String, type: String,
default:"1" default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
}, },
usercont:{
type:Object,
default(){
return {}
}
}
}); });
const addJjlxrBoxPage = ref(false) // const addJjlxrBoxPage = ref(false); //
const editJjlxrBoxPage = ref(false) // const editJjlxrBoxPage = ref(false); //
const tableLoading = ref(false) const tableLoading = ref(false);
const jinjilianxirenList = ref<emergencyContact[]>([]) const jinjilianxirenList = ref<emergencyContact[]>([]);
const jjlxrCont = ref<emergencyContact>() const jjlxrCont = ref<emergencyContact>();
function getJinjiLianXirenList(){ function getJinjiLianXirenList() {
tableLoading.value = true; tableLoading.value = true;
getEmergencyContact({id:props.usercont.keystr}) getEmergencyContact({ id: props.usercont.keystr })
.then(( data )=>{ .then((data) => {
jinjilianxirenList.value = data.data jinjilianxirenList.value = data.data;
}) })
.finally(()=>{tableLoading.value = false;}) .finally(() => {
tableLoading.value = false;
});
} }
/** /**
* 监听数据 * 监听数据
*/ */
watch(() => props.tabsid,() => { watch(
if(props.tabsid == "4"){ () => props.tabsid,
getJinjiLianXirenList() () => {
if (props.tabsid == "4") {
getJinjiLianXirenList();
} }
}) }
/** );
/**
* 添加数据 * 添加数据
*/ */
function addJjlxrBox(key:string){ function addJjlxrBox(key: string) {
addJjlxrBoxPage.value = true; addJjlxrBoxPage.value = true;
} }
/** /**
* 编辑紧急联系人 * 编辑紧急联系人
*/ */
function editJjlxrBox(cont:emergencyContact){ function editJjlxrBox(cont: emergencyContact) {
jjlxrCont.value = cont jjlxrCont.value = cont;
editJjlxrBoxPage.value = true; editJjlxrBoxPage.value = true;
// console.log("--------->",cont) // console.log("--------->",cont)
} }
/** /**
* 删除紧急联系人 * 删除紧急联系人
*/ */
function delJjlxrBox(cont:emergencyContact){ function delJjlxrBox(cont: emergencyContact) {
ElMessageBox.confirm("确认删除<"+cont.name+">此数据项?", "警告", { ElMessageBox.confirm("确认删除<" + cont.name + ">此数据项?", "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
editEmergencyContactState({id:cont.id.toString(),state:3,isdel:1}).then(() => { editEmergencyContactState({
id: cont.id.toString(),
state: 3,
isdel: 1,
}).then(() => {
ElMessage.success("删除成功"); ElMessage.success("删除成功");
getJinjiLianXirenList() getJinjiLianXirenList();
}); });
}); });
} }
@ -80,48 +92,37 @@ function delJjlxrBox(cont:emergencyContact){
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
highlight-current-row highlight-current-row
:data="jinjilianxirenList" :data="jinjilianxirenList" border
border :header-cell-style="{ background: '#F5F7FA' }">
:header-cell-style="{background:'#F5F7FA'}"
>
<el-table-column label="姓名" prop="name" width="150" /> <el-table-column label="姓名" prop="name" width="150" />
<el-table-column label="联系电话" prop="tel" /> <el-table-column label="联系电话" prop="tel" />
<el-table-column label="与本人关系" prop="relationship" width="150" align="center" /> <el-table-column label="与本人关系" prop="relationship" width="150" align="center" />
<el-table-column label="工作单位" prop="company" align="center" />
<el-table-column label="政治面貌" prop="political" width="90" align="center" />
<el-table-column fixed="right" align="right" width="150"> <el-table-column fixed="right" align="right" width="150">
<template #header> <template #header>
<el-button <el-button type="primary" link size="small" @click.stop="addJjlxrBox(props.usercont.keystr)">
type="primary"
link
size="small"
@click.stop="addJjlxrBox(props.usercont.keystr)"
>
<i-ep-plus /> 新增 <i-ep-plus /> 新增
</el-button> </el-button>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-button <el-button type="primary" link size="small" @click.stop="editJjlxrBox(scope.row)">
type="primary"
link
size="small"
@click.stop="editJjlxrBox(scope.row)"
>
<i-ep-edit />编辑 <i-ep-edit />编辑
</el-button> </el-button>
<el-button <el-button type="primary" link size="small" @click.stop="delJjlxrBox(scope.row)">
type="primary"
link
size="small"
@click.stop="delJjlxrBox(scope.row)"
>
<i-ep-delete />删除 <i-ep-delete />删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<AddEmergencyContactPage v-model:addisshow="addJjlxrBoxPage" :keyval="props.usercont.keystr" @restdata="getJinjiLianXirenList" /> <AddEmergencyContactPage
<EditEmergencyContactPage v-model:editisshow="editJjlxrBoxPage" :keyval="props.usercont.keystr" :datacont="jjlxrCont" @restdata="getJinjiLianXirenList" /> v-model:addisshow="addJjlxrBoxPage"
:keyval="props.usercont.keystr"
@restdata="getJinjiLianXirenList" />
<EditEmergencyContactPage
v-model:editisshow="editJjlxrBoxPage"
:keyval="props.usercont.keystr"
:datacont="jjlxrCont"
@restdata="getJinjiLianXirenList" />
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

68
src/views/hr/archives/basicinformation/emergencycontactadd.vue

@ -4,23 +4,24 @@
@ 备注: 新增紧急联系人 @ 备注: 新增紧急联系人
--> -->
<script lang='ts' setup> <script lang='ts' setup>
import { emergencyContactInfo,emergencyContactAdd } from '@/api/hr/people/type' import { emergencyContactInfo, emergencyContactAdd } from '@/api/hr/people/type'
import { addEmergencyContactInfo } from '@/api/hr/people/index' import { addEmergencyContactInfo } from '@/api/hr/people/index'
import { userPoliticaloutloo } from '@/api/hr/people/datacont'
const props = defineProps({ const props = defineProps({
addisshow:{ addisshow: {
type:Boolean, type: Boolean,
default:false default: false
}, },
keyval:{ keyval: {
type:String, type: String,
default:"" default: ""
} }
}); });
const addLoading = ref(false) const addLoading = ref(false)
const emits = defineEmits(["update:addisshow","restdata"]); // const emits = defineEmits(["update:addisshow", "restdata"]); //
const addJjlxrFormRef = ref(ElForm); // const addJjlxrFormRef = ref(ElForm); //
const jjlxrFormData = reactive<emergencyContactInfo>({id:""}); const jjlxrFormData = reactive<emergencyContactInfo>({ id: "" });
/** /**
* 弹窗显示控制 * 弹窗显示控制
*/ */
@ -33,60 +34,51 @@ const addshow = computed({
/** /**
* 表单验证规则 * 表单验证规则
*/ */
const addJjlxrRules = reactive({ const addJjlxrRules = reactive({
name: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }], name: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }],
relationship: [{ required: true, message: "请输入与紧急联系人关系", trigger: "blur" }], relationship: [{ required: true, message: "请输入与紧急联系人关系", trigger: "blur" }],
mobilephone: [{ required: true, message: "请输入紧急联系人联系方式", trigger: "blur" }], mobilephone: [{ required: true, message: "请输入紧急联系人联系方式", trigger: "blur" }],
company: [{ required: false, message: "请输入紧急联系人工作单位", trigger: "blur" }],
political: [{ required: false, message: "请选择紧急联系人政治面貌", trigger: "blur" }],
}); });
/** /**
* 关闭弹窗 * 关闭弹窗
*/ */
function clostAddBoxJjlxr(){ function clostAddBoxJjlxr() {
emits("update:addisshow", false); emits("update:addisshow", false);
initJjlxrData() initJjlxrData()
} }
/** /**
* 初始化数据 * 初始化数据
*/ */
function initJjlxrData(){ function initJjlxrData() {
addJjlxrFormRef.value.resetFields(); addJjlxrFormRef.value.resetFields();
addLoading.value = false; addLoading.value = false;
} }
/** /**
* 提交数据 * 提交数据
*/ */
function submitAddJjlxr(){ function submitAddJjlxr() {
// console.log("",jjlxrFormData) // console.log("",jjlxrFormData)
// addLoading.value = true; // addLoading.value = true;
addJjlxrFormRef.value.validate((isValid: boolean) => { addJjlxrFormRef.value.validate((isValid: boolean) => {
if (isValid) { if (isValid) {
let listAry = new Array let listAry = new Array
listAry.push(jjlxrFormData) listAry.push(jjlxrFormData)
addEmergencyContactInfo({id:props.keyval,list:listAry}) addEmergencyContactInfo({ id: props.keyval, list: listAry })
.then(() =>{ .then(() => {
ElMessage.success("新增成功"); ElMessage.success("新增成功");
clostAddBoxJjlxr(); clostAddBoxJjlxr();
emits('restdata'); emits('restdata');
}) })
.finally(() =>{addLoading.value = false;}) .finally(() => { addLoading.value = false; })
} }
}); });
} }
</script> </script>
<template> <template>
<el-dialog <el-dialog v-model="addshow" width="500" title="添加紧急联系人" append-to-body :before-close="clostAddBoxJjlxr">
v-model="addshow" <el-form ref="addJjlxrFormRef" :model="jjlxrFormData" :rules="addJjlxrRules" label-width="140px">
width="500"
title="添加紧急联系人"
append-to-body
:before-close="clostAddBoxJjlxr"
>
<el-form
ref="addJjlxrFormRef"
:model="jjlxrFormData"
:rules="addJjlxrRules"
label-width="140px"
>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input v-model="jjlxrFormData.name" placeholder="请输入紧急联系人姓名" /> <el-input v-model="jjlxrFormData.name" placeholder="请输入紧急联系人姓名" />
</el-form-item> </el-form-item>
@ -96,15 +88,25 @@ function submitAddJjlxr(){
<el-form-item label="与紧急联系人关系" prop="relationship"> <el-form-item label="与紧急联系人关系" prop="relationship">
<el-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" /> <el-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" />
</el-form-item> </el-form-item>
<el-form-item label="工作单位" prop="company">
<el-input v-model="jjlxrFormData.company" placeholder="请输入紧急联系人工作单位" />
</el-form-item>
<el-form-item label="政治面貌" prop="political">
<el-select v-model="jjlxrFormData.political" placeholder="请选择紧急联系人政治面貌">
<el-option
v-for="item in userPoliticaloutloo"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddJjlxr" > </el-button> <el-button type="primary" :loading="addLoading" @click="submitAddJjlxr"> </el-button>
<el-button @click="clostAddBoxJjlxr"> </el-button> <el-button @click="clostAddBoxJjlxr"> </el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped></style>
</style>

15
src/views/hr/archives/basicinformation/emergencycontactedit.vue

@ -6,6 +6,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { emergencyContactInfo,emergencyContactAdd } from '@/api/hr/people/type' import { emergencyContactInfo,emergencyContactAdd } from '@/api/hr/people/type'
import { editEmergencyContactInfo } from '@/api/hr/people/index' import { editEmergencyContactInfo } from '@/api/hr/people/index'
import { userPoliticaloutloo } from '@/api/hr/people/datacont'
const props = defineProps({ const props = defineProps({
editisshow:{ editisshow:{
type:Boolean, type:Boolean,
@ -42,6 +43,8 @@ const editshow = computed({
name: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }], name: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }],
relationship: [{ required: true, message: "请输入与紧急联系人关系", trigger: "blur" }], relationship: [{ required: true, message: "请输入与紧急联系人关系", trigger: "blur" }],
mobilephone: [{ required: true, message: "请输入紧急联系人联系方式", trigger: "blur" }], mobilephone: [{ required: true, message: "请输入紧急联系人联系方式", trigger: "blur" }],
company: [{ required: false, message: "请输入紧急联系人工作单位", trigger: "blur" }],
political: [{ required: false, message: "请选择紧急联系人政治面貌", trigger: "blur" }],
}); });
/** /**
* 关闭弹窗 * 关闭弹窗
@ -112,6 +115,18 @@ function submitEditJjlxr(){
<el-form-item label="与紧急联系人关系" prop="relationship"> <el-form-item label="与紧急联系人关系" prop="relationship">
<el-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" /> <el-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" />
</el-form-item> </el-form-item>
<el-form-item label="工作单位" prop="company">
<el-input v-model="jjlxrFormData.company" placeholder="请输入紧急联系人工作单位" />
</el-form-item>
<el-form-item label="政治面貌" prop="political">
<el-select v-model="jjlxrFormData.political" placeholder="请选择紧急联系人政治面貌">
<el-option
v-for="item in userPoliticaloutloo"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">

126
src/views/hr/archives/basicinformation/employmentrelations.vue

@ -0,0 +1,126 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 用工关系
-->
<script lang="ts" setup>
import { yonggongguanxi } from "@/api/hr/people/type";
import {
getEmploymentrelationsCont,
editEmploymentrelationsContState,
} from "@/api/hr/people/index";
/**
* 引入页面
*/
import EditEmploymentrelations from "@/views/hr/archives/basicinformation/employmentrelationsedit.vue";
import AddEmploymentrelations from "@/views/hr/archives/basicinformation/employmentrelationsadd.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const addyggxBoxPage = ref(false);
const edityggxBoxPage = ref(false);
const tableLoading = ref(false);
const yggxList = ref<yonggongguanxi[]>([]);
const yggxInfo = ref<yonggongguanxi>();
const getyggxList = () => {
tableLoading.value = true;
getEmploymentrelationsCont({ id: props.usercont.keystr })
.then((data) => {
yggxList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
}
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "4") {
getyggxList();
}
}
);
/**
* 添加数据
*/
const addyggxBox = (key: string) => {
addyggxBoxPage.value = true;
}
/**
* 编辑用工关系
*/
const edityggxBox = (cont: yonggongguanxi) => {
yggxInfo.value = cont;
edityggxBoxPage.value = true;
}
/**
* 删除用工关系
*/
const delyggxBox = (cont: yonggongguanxi) => {
ElMessageBox.confirm("确认删除<" + cont.id + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editEmploymentrelationsContState({ id: toString(), state: 3, isdel: 1 }).then(
() => {
ElMessage.success("删除成功");
getyggxList();
});
});
}
</script>
<template>
<AddEmploymentrelations
v-model:addisshow="addyggxBoxPage"
:keyval="props.usercont.keystr"
@restdata="getyggxList" />
<EditEmploymentrelations
v-model:editisshow="edityggxBoxPage"
:keyval="props.usercont.keystr"
:datacont="yggxInfo"
@restdata="getyggxList"
/>
<el-table
v-loading="tableLoading"
highlight-current-row
:data="yggxList" border
:header-cell-style="{ background: '#F5F7FA' }">
<el-table-column label="入职渠道" prop="entrychannel" align="center"/>
<el-table-column label="参加工作日期" prop="startdate" align="center"/>
<el-table-column label="社会工龄(年)" prop="seniority" align="center"/>
<el-table-column label="加入集团日期" prop="joindate" align="center" />
<el-table-column label="集团工龄(年)" prop="cliqueseniority" align="center" />
<el-table-column fixed="right" align="right" >
<template #header>
<el-button type="primary" link size="small" @click.stop="addyggxBox(props.usercont.keystr)">
<i-ep-plus /> 新增
</el-button>
</template>
<template #default="scope">
<el-button type="primary" link size="small" @click.stop="edityggxBox(scope.row)">
<i-ep-edit />编辑
</el-button>
<el-button type="primary" link size="small" @click.stop="delyggxBox(scope.row)">
<i-ep-delete />删除
</el-button>
</template>
</el-table-column>
</el-table>
</template>
<style lang="scss" scoped></style>

129
src/views/hr/archives/basicinformation/employmentrelationsadd.vue

@ -0,0 +1,129 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加用工关系
-->
<script lang='ts' setup>
import { EmploymentrelationsCont } from '@/api/hr/people/type'
import { addEmploymentrelationsCont } from '@/api/hr/people/index'
import { entrychannel } from '@/api/hr/people/datacont'
const props = defineProps({
addisshow: {
type: Boolean,
default: false
},
keyval: {
type: String,
default: ""
}
});
const addLoading = ref(false)
const emits = defineEmits(["update:addisshow", "restdata"]);
const addyggxFormRef = ref(ElForm);
const yggxFormData = reactive<EmploymentrelationsCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addyggxRules = reactive({
entrychannel: [{ required: true, message: "请选择入职渠道", trigger: "blur" }],
startdate: [{ required: true, message: "请选择参加工作日期", trigger: "blur" }],
seniority: [{ required: true, message: "请输入社会工龄(年)", trigger: "blur" }],
joindate: [{ required: true, message: "请选择加入集团日期", trigger: "blur" }],
cliqueseniority: [{ required: true, message: "请输入集团工龄(年)", trigger: "blur" }],
});
/**
* 关闭弹窗
*/
const clostAddBoxyggx = () => {
emits("update:addisshow", false);
inityggxData()
}
/**
* 初始化数据
*/
const inityggxData = () => {
addyggxFormRef.value.resetFields();
addLoading.value = false;
}
/**
* 提交数据
*/
const submitAddyggx = () => {
addyggxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array
listAry.push(yggxFormData)
addEmploymentrelationsCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxyggx();
emits('restdata');
})
.finally(() => {
addLoading.value = false;
})
}
});
}
</script>
<template>
<el-dialog v-model="addshow" width="500" title="添加用工关系" append-to-body :before-close="clostAddBoxyggx">
<el-form ref="addyggxFormRef" :model="yggxFormData" :rules="addyggxRules" label-width="140px">
<el-form-item label="入职渠道" prop="entrychannel">
<el-select v-model="yggxFormData.entrychannel" placeholder="请选择入职渠道">
<el-option
v-for="item in entrychannel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="参加工作日期" prop="startdate">
<el-date-picker
v-model="yggxFormData.startdate"
type="date"
placeholder="请选择参加工作日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="社会工龄(年)" prop="seniority">
<el-input v-model="yggxFormData.seniority" placeholder="请输入社会工龄" />
</el-form-item>
<el-form-item label="加入集团日期" prop="joindate">
<el-date-picker
v-model="yggxFormData.joindate"
type="date"
placeholder="请选择加入集团日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="集团工龄(年)" prop="cliqueseniority">
<el-input v-model="yggxFormData.cliqueseniority" placeholder="请输入集团工龄" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddyggx"> </el-button>
<el-button @click="clostAddBoxyggx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped></style>

140
src/views/hr/archives/basicinformation/employmentrelationsedit.vue

@ -0,0 +1,140 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑用工关系
-->
<script lang='ts' setup>
import { EmploymentrelationsCont } from '@/api/hr/people/type'
import { editEmploymentrelationsCont } from '@/api/hr/people/index'
import { entrychannel } from '@/api/hr/people/datacont'
const props = defineProps({
editisshow:{
type:Boolean,
default:false
},
keyval:{
type:String,
default:""
},
datacont:{
type:Object,
default(){
return {}
}
}
});
const editLoading = ref(false)
const emits = defineEmits(["update:editisshow","restdata"]);
const edityggxFormRef = ref(ElForm);
const yggxFormData = reactive<EmploymentrelationsCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:editisshow", val);
},
});
/**
* 表单验证规则
*/
const addyggxRules = reactive({
entrychannel: [{ required: true, message: "请选择入职渠道", trigger: "blur" }],
startdate: [{ required: true, message: "请选择参加工作日期", trigger: "blur" }],
seniority: [{ required: true, message: "请输入社会工龄(年)", trigger: "blur" }],
joindate: [{ required: true, message: "请选择加入集团日期", trigger: "blur" }],
cliqueseniority: [{ required: true, message: "请输入集团工龄(年)", trigger: "blur" }],
});
/**
* 关闭弹窗
*/
const clostEditBoxyggx = () =>{
emits("update:editisshow", false);
inityggxData()
}
/**
* 初始化数据
*/
const inityggxData = () =>{
edityggxFormRef.value.resetFields();
editLoading.value = false;
}
/**
* 提交数据
*/
const submitEdityggx = () =>{
edityggxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editEmploymentrelationsCont(yggxFormData)
.then(() =>{
ElMessage.success("编辑成功");
clostEditBoxyggx();
emits('restdata');
})
.finally(() =>{editLoading.value = false;})
}
});
}
/**
* 监听数据
*/
watch(() => props.editisshow,() => {
if(props.editisshow){
yggxFormData.id= props.datacont.id.toString();
}
})
</script>
<template>
<el-dialog v-model="editshow" width="500" title="添加用工关系" append-to-body :before-close="clostEditBoxyggx">
<el-form ref="edityggxFormRef" :model="yggxFormData" :rules="addyggxRules" label-width="140px">
<el-form-item label="入职渠道" prop="entrychannel">
<el-select v-model="yggxFormData.entrychannel" placeholder="请选择入职渠道">
<el-option
v-for="item in entrychannel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="参加工作日期" prop="startdate">
<el-date-picker
v-model="yggxFormData.startdate"
type="date"
placeholder="请选择参加工作日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="社会工龄(年)" prop="seniority">
<el-input v-model="yggxFormData.seniority" placeholder="请输入社会工龄" />
</el-form-item>
<el-form-item label="加入集团日期" prop="joindate">
<el-date-picker
v-model="yggxFormData.joindate"
type="date"
placeholder="请选择加入集团日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="集团工龄(年)" prop="cliqueseniority">
<el-input v-model="yggxFormData.cliqueseniority" placeholder="请输入集团工龄" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEdityggx"> </el-button>
<el-button @click="clostEditBoxyggx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

126
src/views/hr/archives/basicinformation/jobtitle.vue

@ -0,0 +1,126 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-28
@ 备注: 职称信息
-->
<script lang="ts" setup>
import { zhichengxinxi } from "@/api/hr/people/type";
import {
getJobtitleCont,
editJobtitleContState,
} from "@/api/hr/people/index";
/**
* 引入页面
*/
import EditJobtitle from "@/views/hr/archives/basicinformation/jobtitleedit.vue";
import AddJobtitle from "@/views/hr/archives/basicinformation/jobtitleadd.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const addzcxxBoxPage = ref(false);
const editzcxxBoxPage = ref(false);
const tableLoading = ref(false);
const zcxxList = ref<zhichengxinxi[]>([]);
const zcxxInfo = ref<zhichengxinxi>();
const getzcxxList = () => {
tableLoading.value = true;
getJobtitleCont({ id: props.usercont.keystr })
.then((data) => {
zcxxList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
}
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "4") {
getzcxxList();
}
}
);
/**
* 添加数据
*/
const addzcxxBox = (key: string) => {
addzcxxBoxPage.value = true;
}
/**
* 编辑职称信息
*/
const editzcxxBox = (cont: zhichengxinxi) => {
zcxxInfo.value = cont;
editzcxxBoxPage.value = true;
}
/**
* 删除职称信息
*/
const delzcxxBox = (cont: zhichengxinxi) => {
ElMessageBox.confirm("确认删除<" + cont.id + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editJobtitleContState({ id: toString(), state: 3, isdel: 1 }).then(
() => {
ElMessage.success("删除成功");
getzcxxList();
});
});
}
</script>
<template>
<AddJobtitle
v-model:addisshow="addzcxxBoxPage"
:keyval="props.usercont.keystr"
@restdata="getzcxxList" />
<EditJobtitle
v-model:editisshow="editzcxxBoxPage"
:keyval="props.usercont.keystr"
:datacont="zcxxInfo"
@restdata="getzcxxList"
/>
<el-table
v-loading="tableLoading"
highlight-current-row
:data="zcxxList" border
:header-cell-style="{ background: '#F5F7FA' }">
<el-table-column label="职称级别" prop="level" align="center"/>
<el-table-column label="职称系列" prop="series" align="center"/>
<el-table-column label="职称专业" prop="profession" align="center" />
<el-table-column label="资格证书编号" prop="serialnumber" align="center" />
<el-table-column label="生效时间" prop="effectivetime" align="center" />
<el-table-column fixed="right" align="right" >
<template #header>
<el-button type="primary" link size="small" @click.stop="addzcxxBox(props.usercont.keystr)">
<i-ep-plus /> 新增
</el-button>
</template>
<template #default="scope">
<el-button type="primary" link size="small" @click.stop="editzcxxBox(scope.row)">
<i-ep-edit />编辑
</el-button>
<el-button type="primary" link size="small" @click.stop="delzcxxBox(scope.row)">
<i-ep-delete />删除
</el-button>
</template>
</el-table-column>
</el-table>
</template>
<style lang="scss" scoped></style>

116
src/views/hr/archives/basicinformation/jobtitleadd.vue

@ -0,0 +1,116 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加职称信息
-->
<script lang='ts' setup>
import { JobtitleCont } from '@/api/hr/people/type'
import { addJobtitleCont } from '@/api/hr/people/index'
import { jobtitlelevel } from '@/api/hr/people/datacont'
const props = defineProps({
addisshow: {
type: Boolean,
default: false
},
keyval: {
type: String,
default: ""
}
});
const addLoading = ref(false)
const emits = defineEmits(["update:addisshow", "restdata"]);
const addzcxxFormRef = ref(ElForm);
const zcxxFormData = reactive<JobtitleCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addzcxxRules = reactive({
});
/**
* 关闭弹窗
*/
const clostAddBoxzcxx = () => {
emits("update:addisshow", false);
initzcxxData()
}
/**
* 初始化数据
*/
const initzcxxData = () => {
addzcxxFormRef.value.resetFields();
addLoading.value = false;
}
/**
* 提交数据
*/
const submitAddzcxx = () => {
addzcxxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array
listAry.push(zcxxFormData)
addJobtitleCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxzcxx();
emits('restdata');
})
.finally(() => {
addLoading.value = false;
})
}
});
}
</script>
<template>
<el-dialog v-model="addshow" width="500" title="添加职称信息" append-to-body :before-close="clostAddBoxzcxx">
<el-form ref="addzcxxFormRef" :model="zcxxFormData" :rules="addzcxxRules" label-width="140px">
<el-form-item label="职称级别" prop="level">
<el-select v-model="zcxxFormData.level" placeholder="请选择职称级别">
<el-option
v-for="item in jobtitlelevel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="职称系列" prop="series">
<el-input v-model="zcxxFormData.series" placeholder="请输入职称系列" />
</el-form-item>
<el-form-item label="职称专业" prop="profession">
<el-input v-model="zcxxFormData.profession" placeholder="请输入职称专业" />
</el-form-item>
<el-form-item label="资格证书编号" prop="serialnumber">
<el-input v-model="zcxxFormData.serialnumber" placeholder="请输入资格证书编号" />
</el-form-item>
<el-form-item label="生效时间" prop="effectivetime">
<el-date-picker
v-model="zcxxFormData.effectivetime"
type="date"
placeholder="请选择生效时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddzcxx"> </el-button>
<el-button @click="clostAddBoxzcxx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped></style>

128
src/views/hr/archives/basicinformation/jobtitleedit.vue

@ -0,0 +1,128 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑职称信息
-->
<script lang='ts' setup>
import { JobtitleCont } from '@/api/hr/people/type'
import { editJobtitleCont } from '@/api/hr/people/index'
import { jobtitlelevel } from '@/api/hr/people/datacont'
const props = defineProps({
editisshow:{
type:Boolean,
default:false
},
keyval:{
type:String,
default:""
},
datacont:{
type:Object,
default(){
return {}
}
}
});
const editLoading = ref(false)
const emits = defineEmits(["update:editisshow","restdata"]);
const editzcxxFormRef = ref(ElForm);
const zcxxFormData = reactive<JobtitleCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:editisshow", val);
},
});
/**
* 表单验证规则
*/
const addzcxxRules = reactive({
});
/**
* 关闭弹窗
*/
const clostEditBoxzcxx = () =>{
emits("update:editisshow", false);
initzcxxData()
}
/**
* 初始化数据
*/
const initzcxxData = () =>{
editzcxxFormRef.value.resetFields();
editLoading.value = false;
}
/**
* 提交数据
*/
const submitEditzcxx = () =>{
editzcxxFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editJobtitleCont(zcxxFormData)
.then(() =>{
ElMessage.success("编辑成功");
clostEditBoxzcxx();
emits('restdata');
})
.finally(() =>{editLoading.value = false;})
}
});
}
/**
* 监听数据
*/
watch(() => props.editisshow,() => {
if(props.editisshow){
zcxxFormData.id= props.datacont.id.toString();
}
})
</script>
<template>
<el-dialog v-model="editshow" width="500" title="添加职称信息" append-to-body :before-close="clostEditBoxzcxx">
<el-form ref="editzcxxFormRef" :model="zcxxFormData" :rules="addzcxxRules" label-width="140px">
<el-form-item label="职称级别" prop="level">
<el-select v-model="zcxxFormData.level" placeholder="请选择职称级别">
<el-option
v-for="item in jobtitlelevel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="职称系列" prop="series">
<el-input v-model="zcxxFormData.series" placeholder="请输入职称系列" />
</el-form-item>
<el-form-item label="职称专业" prop="profession">
<el-input v-model="zcxxFormData.profession" placeholder="请输入职称专业" />
</el-form-item>
<el-form-item label="资格证书编号" prop="serialnumber">
<el-input v-model="zcxxFormData.serialnumber" placeholder="请输入资格证书编号" />
</el-form-item>
<el-form-item label="生效时间" prop="effectivetime">
<el-date-picker
v-model="zcxxFormData.effectivetime"
type="date"
placeholder="请选择生效时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditzcxx"> </el-button>
<el-button @click="clostEditBoxzcxx"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

145
src/views/hr/archives/basicinformation/rewardsandpunishments.vue

@ -0,0 +1,145 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 奖惩记录
-->
<script lang="ts" setup>
import { jiangchengjilu } from "@/api/hr/people/type";
import {
getRewardsAndPunishmentsCont,
editRewardsAndPunishmentsContState,
} from "@/api/hr/people/index";
/**
* 引入页面
*/
import AddRewardsAndPunishments from "@/views/hr/archives/basicinformation/rewardsandpunishmentsadd.vue";
import EditRewardsAndPunishments from "@/views/hr/archives/basicinformation/rewardsandpunishmentsedit.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const addJcjlBoxPage = ref(false);
const editJcjlBoxPage = ref(false);
const tableLoading = ref(false);
const jcjlList = ref<jiangchengjilu[]>([]);
const jcjlInfo = ref<jiangchengjilu>();
const getjcjlList = () => {
tableLoading.value = true;
getRewardsAndPunishmentsCont({ id: props.usercont.keystr })
.then((data) => {
jcjlList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
}
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "6") {
getjcjlList();
}
}
);
/**
* 添加数据
*/
const addJcjlBox = (key: string) => {
addJcjlBoxPage.value = true;
}
/**
* 编辑奖惩记录
*/
const editJcjlBox = (cont: jiangchengjilu) => {
jcjlInfo.value = cont;
editJcjlBoxPage.value = true;
}
/**
* 删除奖惩记录
*/
const delJcjlBox = (cont: jiangchengjilu) => {
ElMessageBox.confirm("确认删除<" + cont.level + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editRewardsAndPunishmentsContState({
id: toString(),
state: 3,
isdel: 1,
}).then(() => {
ElMessage.success("删除成功");
getjcjlList();
});
});
}
</script>
<template>
<AddRewardsAndPunishments
v-model:addisshow="addJcjlBoxPage"
:keyval="props.usercont.keystr"
@restdata="getjcjlList"
/>
<EditRewardsAndPunishments
v-model:editisshow="editJcjlBoxPage"
:keyval="props.usercont.keystr"
:datacont="jcjlInfo"
@restdata="getjcjlList"
/>
<el-table
v-loading="tableLoading"
highlight-current-row
:data="jcjlList"
border
:header-cell-style="{ background: '#F5F7FA' }"
>
<el-table-column label="奖惩级别" prop="level" />
<el-table-column label="奖惩类型" prop="type" />
<el-table-column label="奖惩内容" prop="content" />
<el-table-column label="奖惩时间" prop="time" />
<el-table-column label="奖惩单位" prop="company" />
<el-table-column fixed="right" align="right">
<template #header>
<el-button
type="primary"
link
size="small"
@click.stop="addJcjlBox(props.usercont.keystr)"
>
<i-ep-plus /> 新增
</el-button>
</template>
<template #default="scope">
<el-button
type="primary"
link
size="small"
@click.stop="editJcjlBox(scope.row)"
>
<i-ep-edit />编辑
</el-button>
<el-button
type="primary"
link
size="small"
@click.stop="delJcjlBox(scope.row)"
>
<i-ep-delete />删除
</el-button>
</template>
</el-table-column>
</el-table>
</template>
<style></style>

127
src/views/hr/archives/basicinformation/rewardsandpunishmentsadd.vue

@ -0,0 +1,127 @@
<!--
@ 作者:袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加奖惩记录
-->
<script lang="ts" setup>
import { RewardsAndPunishmentsCont } from "@/api/hr/people/type";
import { addRewardsAndPunishmentsCont } from "@/api/hr/people/index";
import { rewardlevel } from "@/api/hr/people/datacont";
const props = defineProps({
addisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
});
const addLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const addJcjlFormRef = ref(ElForm);
const jcjlFormData = reactive<RewardsAndPunishmentsCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addJcjlRules = reactive({
});
/**
* 关闭弹窗
*/
const clostAddBoxJcjl = () => {
emits("update:addisshow", false);
initJcjlData();
}
/**
* 初始化数据
*/
const initJcjlData = () => {
addJcjlFormRef.value.resetFields();
addLoading.value = false;
}
/**
* 提交数据
*/
const submitAddJcjl = ()=> {
addJcjlFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array();
listAry.push(jcjlFormData);
addRewardsAndPunishmentsCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxJcjl();
emits("restdata");
})
.finally(() => {
addLoading.value = false;
});
}
});
}
</script>
<template>
<el-dialog
v-model="addshow"
width="500"
title="添加奖惩记录"
append-to-body
:before-close="clostAddBoxJcjl"
>
<el-form
ref="addJcjlFormRef"
:model="jcjlFormData"
:rules="addJcjlRules"
label-width="140px"
>
<el-form-item label="奖惩级别" prop="level">
<el-select v-model="jcjlFormData.level" placeholder="请选择奖惩级别">
<el-option
v-for="item in rewardlevel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="奖惩类型" prop="type">
<el-input v-model="jcjlFormData.type" placeholder="请输入奖惩类型" />
</el-form-item>
<el-form-item label="奖惩内容" prop="content">
<el-input v-model="jcjlFormData.content" type="textarea" placeholder="请输入奖惩内容" />
</el-form-item>
<el-form-item label="奖惩时间" prop="time">
<el-date-picker
v-model="jcjlFormData.time"
type="date"
placeholder="请选择奖惩时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="奖惩单位" prop="company">
<el-input v-model="jcjlFormData.company" placeholder="请输入奖惩单位" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddJcjl"
> </el-button
>
<el-button @click="clostAddBoxJcjl"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style lang="scss" scoped></style>

146
src/views/hr/archives/basicinformation/rewardsandpunishmentsedit.vue

@ -0,0 +1,146 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑奖惩记录
-->
<script lang="ts" setup>
import { RewardsAndPunishmentsCont } from "@/api/hr/people/type";
import { editRewardsAndPunishmentsCont } from "@/api/hr/people/index";
import { rewardlevel } from '@/api/hr/people/datacont'
const props = defineProps({
editisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
datacont: {
type: Object,
default() {
return {};
},
},
});
const editLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const editJcjlFormRef = ref(ElForm);
const jcjlFormData = reactive<RewardsAndPunishmentsCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const editJcjlRules = reactive({});
/**
* 关闭弹窗
*/
const clostEditBoxJcjl = () => {
emits("update:addisshow", false);
initJcjlData();
};
/**
* 初始化数据
*/
const initJcjlData = () => {
editJcjlFormRef.value.resetFields();
editLoading.value = false;
};
/**
* 提交数据
*/
const submitEditJcjl = () => {
editJcjlFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editRewardsAndPunishmentsCont(jcjlFormData)
.then(() => {
ElMessage.success("编辑成功");
clostEditBoxJcjl();
emits("restdata");
})
.finally(() => {
editLoading.value = false;
});
}
});
};
/**
* 监听数据
*/
watch(
() => props.editisshow,
() => {
if (props.editisshow) {
jcjlFormData.id = props.datacont.id.toString();
jcjlFormData.level = props.datacont.level;
jcjlFormData.type = props.datacont.type;
jcjlFormData.content = props.datacont.content;
jcjlFormData.time = props.datacont.time;
jcjlFormData.company = props.datacont.company;
}
}
);
</script>
<template>
<el-dialog
v-model="editshow"
width="500"
title="编辑奖惩记录"
append-to-body
:before-close="clostEditBoxJcjl"
>
<el-form
ref="editJcjlFormRef"
:model="jcjlFormData"
:rules="editJcjlRules"
label-width="140px"
>
<el-form-item label="奖惩级别" prop="level">
<el-select v-model="jcjlFormData.level" placeholder="请选择奖惩级别">
<el-option
v-for="item in rewardlevel"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="奖惩类型" prop="type">
<el-input v-model="jcjlFormData.type" placeholder="请输入奖惩类型" />
</el-form-item>
<el-form-item label="奖惩内容" prop="content">
<el-input v-model="jcjlFormData.content" type="textarea" placeholder="请输入奖惩内容" />
</el-form-item>
<el-form-item label="奖惩时间" prop="time">
<el-date-picker
v-model="jcjlFormData.time"
type="date"
placeholder="请选择奖惩时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
size="default"
/>
</el-form-item>
<el-form-item label="奖惩单位" prop="company">
<el-input v-model="jcjlFormData.company" placeholder="请输入奖惩单位" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditJcjl"
> </el-button
>
<el-button @click="clostEditBoxJcjl"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style></style>

138
src/views/hr/archives/basicinformation/talentinventory.vue

@ -0,0 +1,138 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 人才盘点
-->
<script lang="ts" setup>
import { rencaipandian } from "@/api/hr/people/type";
import {
getTalentinventoryCont,
editTalentinventoryContState,
} from "@/api/hr/people/index";
import EditTalentinventory from "@/views/hr/archives/basicinformation/talentinventoryedit.vue";
import AddTalentinventory from "@/views/hr/archives/basicinformation/talentinventoryadd.vue";
const props = defineProps({
tabsid: {
type: String,
default: "1",
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const editrcpdBoxPage = ref(false);
const addrcpdBoxPage = ref(false);
const tableLoading = ref(false);
const rcpdList = ref<rencaipandian[]>([]);
const rcpdInfo = ref<rencaipandian>();
const getrcpdList = () => {
tableLoading.value = true;
getTalentinventoryCont({ id: props.usercont.keystr })
.then((data) => {
rcpdList.value = data.data;
})
.finally(() => {
tableLoading.value = false;
});
};
/**
* 监听数据
*/
watch(
() => props.tabsid,
() => {
if (props.tabsid == "3") {
getrcpdList();
}
}
);
/**
* 添加数据
*/
const addrcpdBox = (key: string) => {
addrcpdBoxPage.value = true;
};
/**
* 编辑人才盘点
*/
const editrcpdBox = (cont: rencaipandian) => {
rcpdInfo.value = cont;
editrcpdBoxPage.value = true;
};
/**
* 删除人才盘点
*/
const delrcpdBox = (cont: rencaipandian) => {
ElMessageBox.confirm("确认删除<" + cont.id + ">此数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
editTalentinventoryContState({ id: toString(), state: 3, isdel: 1 }).then(
() => {
ElMessage.success("删除成功");
getrcpdList();
}
);
});
};
</script>
<template>
<AddTalentinventory
v-model:addisshow="addrcpdBoxPage"
:keyval="props.usercont.keystr"
@restdata="getrcpdList"
/>
<EditTalentinventory
v-model:editisshow="editrcpdBoxPage"
:keyval="props.usercont.keystr"
:datacont="rcpdInfo"
@restdata="getrcpdList"
/>
<el-table
v-loading="tableLoading"
highlight-current-row
:data="rcpdList"
border
:header-cell-style="{ background: '#F5F7FA' }"
>
<el-table-column label="职业生涯规划" prop="career" />
<el-table-column label="期望从组织获得的帮助" prop="expecthelp" />
<el-table-column fixed="right" align="right" width="130">
<template #header>
<el-button
type="primary"
link
size="small"
@click.stop="addrcpdBox(props.usercont.keystr)"
>
<i-ep-plus /> 新增
</el-button>
</template>
<template #default="scope">
<el-button
type="primary"
link
size="small"
@click.stop="editrcpdBox(scope.row)"
>
<i-ep-edit />编辑
</el-button>
<el-button
type="primary"
link
size="small"
@click.stop="delrcpdBox(scope.row)"
>
<i-ep-delete />删除
</el-button>
</template>
</el-table-column>
</el-table>
</template>
<style></style>

103
src/views/hr/archives/basicinformation/talentinventoryadd.vue

@ -0,0 +1,103 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 添加人才盘点
-->
<script lang="ts" setup>
import { TalentinventoryCont } from "@/api/hr/people/type";
import { addTalentinventoryCont } from "@/api/hr/people/index";
const props = defineProps({
addisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
});
const addLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const addrcpdFormRef = ref(ElForm);
const rcpdFormData = reactive<TalentinventoryCont>({});
/**
* 弹窗显示控制
*/
const addshow = computed({
get: () => props.addisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const addrcpdRules = reactive({});
/**
* 关闭弹窗
*/
const clostAddBoxrcpd = () => {
emits("update:addisshow", false);
initrcpdData();
};
/**
* 初始化数据
*/
const initrcpdData = () => {
addrcpdFormRef.value.resetFields();
addLoading.value = false;
};
/**
* 提交数据
*/
const submitAddrcpd = () => {
addrcpdFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array();
listAry.push(rcpdFormData);
addTalentinventoryCont({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxrcpd();
emits("restdata");
})
.finally(() => {
addLoading.value = false;
});
}
});
};
</script>
<template>
<el-dialog
v-model="addshow"
width="500"
title="添加人才盘点"
append-to-body
:before-close="clostAddBoxrcpd"
>
<el-form
ref="addrcpdFormRef"
:model="rcpdFormData"
:rules="addrcpdRules"
label-width="140px"
>
<el-form-item label="职业生涯规划" prop="career">
<el-input v-model="rcpdFormData.career" type="textarea" placeholder="请填写职业生涯规划" />
</el-form-item>
<el-form-item label="期望获得的帮助" prop="expecthelp">
<el-input v-model="rcpdFormData.expecthelp" type="textarea" placeholder="请填写期望从组织获得的帮助" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddrcpd"
> </el-button
>
<el-button @click="clostAddBoxrcpd"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style></style>

118
src/views/hr/archives/basicinformation/talentinventoryedit.vue

@ -0,0 +1,118 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 编辑人才盘点
-->
<script lang="ts" setup>
import { TalentinventoryCont } from "@/api/hr/people/type";
import { editTalentinventoryCont } from "@/api/hr/people/index";
const props = defineProps({
editisshow: {
type: Boolean,
default: false,
},
keyval: {
type: String,
default: "",
},
datacont: {
type: Object,
default() {
return {};
},
},
});
const editLoading = ref(false);
const emits = defineEmits(["update:addisshow", "restdata"]);
const editrcpdFormRef = ref(ElForm);
const rcpdFormData = reactive<TalentinventoryCont>({});
/**
* 弹窗显示控制
*/
const editshow = computed({
get: () => props.editisshow,
set: (val) => {
emits("update:addisshow", val);
},
});
/**
* 表单验证规则
*/
const editrcpdRules = reactive({});
/**
* 关闭弹窗
*/
const clostEditBoxrcpd = () => {
emits("update:addisshow", false);
initrcpdData();
};
/**
* 初始化数据
*/
const initrcpdData = () => {
editrcpdFormRef.value.resetFields();
editLoading.value = false;
};
/**
* 提交数据
*/
const submitEditrcpd = () => {
editrcpdFormRef.value.validate((isValid: boolean) => {
if (isValid) {
editTalentinventoryCont(rcpdFormData)
.then(() => {
ElMessage.success("编辑成功");
clostEditBoxrcpd();
emits("restdata");
})
.finally(() => {
editLoading.value = false;
});
}
});
};
/**
* 监听数据
*/
watch(
() => props.editisshow,
() => {
if (props.editisshow) {
rcpdFormData.id = props.datacont.id.toString();
}
}
);
</script>
<template>
<el-dialog
v-model="editshow"
width="500"
title="编辑人才盘点"
append-to-body
:before-close="clostEditBoxrcpd"
>
<el-form
ref="editrcpdFormRef"
:model="rcpdFormData"
:rules="editrcpdRules"
label-width="140px"
>
<el-form-item label="职业生涯规划" prop="career">
<el-input v-model="rcpdFormData.career" type="textarea" placeholder="请填写职业生涯规划" />
</el-form-item>
<el-form-item label="期望获得的帮助" prop="expecthelp">
<el-input v-model="rcpdFormData.expecthelp" type="textarea" placeholder="请填写期望从组织获得的帮助" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="editLoading" @click="submitEditrcpd"
> </el-button
>
<el-button @click="clostEditBoxrcpd"> </el-button>
</div>
</template>
</el-dialog>
</template>
<style></style>
Loading…
Cancel
Save