Browse Source

完善人员档案

yjf_v3
DESKTOP-CUI7KST\HXGK 2 years ago
parent
commit
7d754475f3
  1. 249
      src/api/hr/people/datacont.ts
  2. 160
      src/api/hr/people/index.ts
  3. 174
      src/api/hr/people/type.ts
  4. 14
      src/types/components.d.ts
  5. 491
      src/views/hr/archives/archivescont.vue
  6. 138
      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. 155
      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',
`company` ',
@ -548,3 +550,250 @@ export const postChangeType=[
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:'正高级'
}
]

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

@ -22,7 +22,19 @@ import {
editUserAboutOrg,
teamClassQueay,
searchPeoleCont,
queryPeopleCont
queryPeopleCont,
RewardsAndPunishmentsContAdd,
RewardsAndPunishmentsContEdit,
AppraisalrecordContAdd,
AppraisalrecordContEdit,
TalentinventoryContEdit,
TalentinventoryContAdd,
EmploymentrelationsContEdit,
EmploymentrelationsContAdd,
JobtitleContAdd,
JobtitleContEdit,
CertificatesContAdd,
CertificatesContEdit,
} from './type';
/**
*
@ -366,3 +378,149 @@ import {
data: data
});
}
// 获取奖惩记录
export function getRewardsAndPunishmentsCont(data?: contId) {
return request({
})
}
//添加奖惩记录
export function addRewardsAndPunishmentsCont(data?: RewardsAndPunishmentsContAdd) {
return request({
})
}
//编辑奖惩记录
export function editRewardsAndPunishmentsCont(data?: RewardsAndPunishmentsContEdit) {
return request({
})
}
//编辑奖惩记录状态
export function editRewardsAndPunishmentsContState(data?: delJjlxr) {
return request({
})
}
//获取考评记录
export function getAppraisalrecordCont(data?: contId) {
return request({
})
}
//添加考评记录
export function addAppraisalrecordCont(data?: AppraisalrecordContAdd) {
return request({
})
}
//编辑考评记录
export function editAppraisalrecordCont(data?: AppraisalrecordContEdit) {
return request({
})
}
//编辑考评记录状态
export function editAppraisalrecordContState(data?: delJjlxr) {
return request({
})
}
//获取人才盘点
export function getTalentinventoryCont(data?: contId) {
return request({
})
}
//添加人才盘点
export function addTalentinventoryCont(data?: TalentinventoryContAdd) {
return request({
})
}
//编辑人才盘点
export function editTalentinventoryCont(data?: TalentinventoryContEdit) {
return request({
})
}
//编辑人才盘点状态
export function editTalentinventoryContState(data?: delJjlxr) {
return request({
})
}
//获取用工关系
export function getEmploymentrelationsCont(data?: contId) {
return request({
})
}
//添加用工关系
export function addEmploymentrelationsCont(data?: EmploymentrelationsContAdd) {
return request({
})
}
//编辑用工关系
export function editEmploymentrelationsCont(data?: EmploymentrelationsContEdit) {
return request({
})
}
//编辑用工关系状态
export function editEmploymentrelationsContState(data?: delJjlxr) {
return request({
})
}
//获取职称信息
export function getJobtitleCont(data?: contId) {
return request({
})
}
//添加职称信息
export function addJobtitleCont(data?: JobtitleContAdd) {
return request({
})
}
//编辑职称信息
export function editJobtitleCont(data?: JobtitleContEdit) {
return request({
})
}
//编辑职称信息状态
export function editJobtitleContState(data?: delJjlxr) {
return request({
})
}
//获取证书信息
export function getCertificatesCont(data?: contId) {
return request({
})
}
//添加证书信息
export function addCertificatesCont(data?: CertificatesContAdd) {
return request({
})
}
//编辑证书信息
export function editCertificatesCont(data?: CertificatesContEdit) {
return request({
})
}
//编辑证书信息状态
export function editCertificatesContState(data?: delJjlxr) {
return request({
})
}

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

@ -74,6 +74,10 @@ export interface archivesCont{
keystr?:string //"4929995352838144";
teamname?:string //"";
personincharge?:number // 2
//新增
interests?:string
bloodtype?:string
natureofAccount?:string
}
/**
*
@ -142,6 +146,12 @@ export interface shuangzhigong{
time?:number
state?:number
key?:number
workcouple?:string
section?:string
job?:string
level?:string
mobilephone?:string
}
/**
*
@ -181,6 +191,9 @@ export interface jiaoyujingli{
educationcn?:string
admissiontimestr?:string
graduationtimestr?:string
educationtype?:string
faculty?:string
schooltype?:string
}
/**
*
@ -322,6 +335,9 @@ export interface myinfostruct{
rulename?:string //"",
orgreslist?:any //null
keystr?:string //
interests?:string
bloodtype?:string
natureofAccount?:string
}
/**
* Id
@ -366,6 +382,9 @@ export interface userManOrFucont{
workwechat?: string
constellationing?: number
maritalstatus?: number
interests?:string
bloodtype?:string
natureofAccount?:string
}
/**
*
@ -374,6 +393,8 @@ export interface emergencyContactInfo extends contId{
name?: string
relationship?: string
mobilephone?: string
political?: string
company?: string
}
/**
*
@ -402,6 +423,12 @@ export interface doubleWorkCont extends contId{
department?:string
position?: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",
academicdegree?:string //"1",
level?:string //"1"
educationtype?:string
faculty?:string
schooltype?:string
}
/**
*
@ -566,3 +596,147 @@ export interface queryPeopleCont{
tema:number // 1,
temaname: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
}

14
src/types/components.d.ts

@ -21,6 +21,7 @@ declare module '@vue/runtime-core' {
DesignLayoutPage: typeof import('./../components/DesignForm/designLayout/designLayoutPage.vue')['default']
DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default']
DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
@ -51,8 +52,6 @@ declare module '@vue/runtime-core' {
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElIconExpand: typeof import('@element-plus/icons-vue')['Expand']
ElIconFold: typeof import('@element-plus/icons-vue')['Fold']
ElImage: typeof import('element-plus/es')['ElImage']
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput']
@ -61,7 +60,6 @@ declare module '@vue/runtime-core' {
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
@ -72,8 +70,9 @@ declare module '@vue/runtime-core' {
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSelectV2: typeof import('element-plus/es')['ElSelectV2']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElStep: typeof import('element-plus/es')['ElStep']
ElSteps: typeof import('element-plus/es')['ElSteps']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
@ -82,6 +81,8 @@ declare module '@vue/runtime-core' {
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree']
@ -107,21 +108,16 @@ declare module '@vue/runtime-core' {
HeadToolsNew: typeof import('./../components/DesignForm/public/headToolsNew.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpCollection: typeof import('~icons/ep/collection')['default']
IEpDelete: typeof import('~icons/ep/delete')['default']
IEpEdit: typeof import('~icons/ep/edit')['default']
IEpMessageBox: typeof import('~icons/ep/message-box')['default']
IEpMoreFilled: typeof import('~icons/ep/more-filled')['default']
IEpOperation: typeof import('~icons/ep/operation')['default']
IEpPicture: typeof import('~icons/ep/picture')['default']
IEpPlus: typeof import('~icons/ep/plus')['default']
IEpRefresh: typeof import('~icons/ep/refresh')['default']
IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
IEpStar: typeof import('~icons/ep/star')['default']
IEpUser: typeof import('~icons/ep/user')['default']
IEpView: typeof import('~icons/ep/view')['default']
LangSelect: typeof import('./../components/LangSelect/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
@ 备注: 员工档案
-->
<script lang='ts' setup>
<script lang="ts" setup>
/**
* 引入页面
*/
import UserContent from '@/views/hr/archives/basicinformation/content.vue'
import EditUserContent from '@/views/hr/archives/basicinformation/editcontent.vue'
import OrgNexus from '@/views/hr/archives/basicinformation/orgnexus.vue'
import EmergencyContactPage from '@/views/hr/archives/basicinformation/emergencycontact.vue'
import WorkingCouplePage from '@/views/hr/archives/basicinformation/workingcouple.vue'
import FamilyMembers from '@/views/hr/archives/basicinformation/familymembers.vue'
import EducationalExperience from '@/views/hr/archives/basicinformation/educationalexperience.vue'
import InnerWork from '@/views/hr/archives/basicinformation/innerwork.vue'
import OutsideWork from '@/views/hr/archives/basicinformation/outsideWork.vue'
import Editpwd from '@/views/hr/archives/basicinformation/editpwd.vue'
import EditOrg from '@/views/hr/archives/basicinformation/editorg.vue'
import UserContent from "@/views/hr/archives/basicinformation/content.vue";
import EditUserContent from "@/views/hr/archives/basicinformation/editcontent.vue";
import OrgNexus from "@/views/hr/archives/basicinformation/orgnexus.vue";
import EmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontact.vue";
import WorkingCouplePage from "@/views/hr/archives/basicinformation/workingcouple.vue";
import FamilyMembers from "@/views/hr/archives/basicinformation/familymembers.vue";
import EducationalExperience from "@/views/hr/archives/basicinformation/educationalexperience.vue";
import InnerWork from "@/views/hr/archives/basicinformation/innerwork.vue";
import OutsideWork from "@/views/hr/archives/basicinformation/outsideWork.vue";
import Editpwd from "@/views/hr/archives/basicinformation/editpwd.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 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 SvgIcon from "@/components/SvgIcon/index.vue";
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";
const props = defineProps({
isShow:{
type:Boolean,
default:false
isShow: {
type: Boolean,
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 userIcon = ref<string>(); //
const activeName = ref("1")
const activeName = ref("1");
const editMyCont = ref(false);
// const userConting = ref<myinfostruct>();
const userConting = reactive<myinfostruct>({entrydatetime:"",probationperiod:1});
const rowLoading = ref(false)
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API+"/api/upordown"
const userConting = reactive<myinfostruct>({
entrydatetime: "",
probationperiod: 1,
});
const rowLoading = ref(false);
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown";
const editMyOrgCont = ref(false);
/**
* 弹窗显示控制
*/
const boxShow = computed({
const boxShow = computed({
get: () => props.isShow,
set: (val) => {
emits("update:isShow", val);
@ -63,136 +76,150 @@ const editMyOrgCont = ref(false);
/**
* 获取人员数据
*/
function getjtcyList(){
function getjtcyList() {
rowLoading.value = true;
getMyInfoing({id:props.archivesdata.id,idstr:props.archivesdata.idstr})
.then(( data )=>{
getMyInfoing({ id: props.archivesdata.id, idstr: props.archivesdata.idstr })
.then((data) => {
// userConting.value = data.data
userConting.id = data.data.id
userConting.number = data.data.number //"300450",
userConting.name = data.data.name //"",
userConting.icon = data.data.icon //
userConting.hireclass = data.data.hireclass //1,
userConting.emptype = data.data.emptype //8,
userConting.company = data.data.company //309,
userConting.maindeparment = data.data.maindeparment //102,
userConting.sunmaindeparment = data.data.sunmaindeparment //272,
userConting.deparment = data.data.deparment //"",
userConting.adminorg = data.data.adminorg //272,
userConting.teamid = data.data.teamid //1,
userConting.position = data.data.position //2184,
userConting.jobclass = data.data.jobclass //5,
userConting.jobid = data.data.jobid //36,
userConting.jobleve = data.data.jobleve //3,
userConting.time = data.data.time //1656984567,
userConting.eitetime = data.data.eitetime //1671160648,
userConting.wechat = data.data.wechat //"",
userConting.workwechat = data.data.workwechat //"KaiXinGuo",
userConting.state = data.data.state //1,
userConting.key = data.data.key //15993815826844528,
userConting.isadmin = data.data.isadmin //4,
userConting.password = data.data.password //"ecffe8715d2d3c2743bab6abc90e1331",
userConting.role = data.data.role //"1",
userConting.idcardno = data.data.idcardno //"370921198810151515",
userConting.passportno = data.data.passportno //"",
userConting.globalroaming = data.data.globalroaming //"",
userConting.mobilephone = data.data.mobilephone //"15069130853",
userConting.email = data.data.email //"",
userConting.gender = data.data.gender //1,
userConting.birthday = data.data.birthday //592848000,
userConting.myfolk = data.data.myfolk //"",
userConting.nativeplace = data.data.nativeplace //"15",
userConting.idcardstartdate = data.data.idcardstartdate //0,
userConting.idcardenddate = data.data.idcardenddate //0,
userConting.idcardaddress = data.data.idcardaddress //"",
userConting.idcardIssued = data.data.idcardIssued //"",
userConting.health = data.data.health //2,
userConting.maritalstatus = data.data.maritalstatus //2,
userConting.internaltelephone = data.data.internaltelephone //"",
userConting.currentresidence = data.data.currentresidence //"11302",
userConting.constellationing = data.data.constellationing //1,
userConting.isdoubleworker = data.data.isdoubleworker //2,
userConting.isveterans = data.data.isveterans //2,
userConting.veteransnumber = data.data.veteransnumber //"",
userConting.jobstartdate = data.data.jobstartdate //0,
userConting.entrydate = data.data.entrydate //0,
userConting.probationperiod = data.data.probationperiod //0,
userConting.planformaldate = data.data.planformaldate //0,
userConting.politicaloutlook = data.data.politicaloutlook //1,
userConting.nameusedbefore = data.data.nameusedbefore //"",
userConting.iconphoto = data.data.iconphoto //"
userConting.responsibledepartment = data.data.responsibledepartment //"",
userConting.responsibledepartmentjson = data.data.responsibledepartmentjson //"",
userConting.birthdaytime = data.data.birthdaytime //"1988-10-15",
userConting.idcardstarttimedata = data.data.idcardstarttimedata //"",
userConting.idcardendtimedata = data.data.idcardendtimedata //"",
userConting.entrydatetime = data.data.entrydatetime //"",
userConting.planformaldatetime = data.data.planformaldatetime //"",
userConting.doubleworkerlist = data.data.doubleworkerlist //null,
userConting.educationalexperience = data.data.educationalexperience //null,
userConting.emergencycontact = data.data.emergencycontact //null,
userConting.memberoffamily = data.data.memberoffamily //null,
userConting.workhistorylist = data.data.workhistorylist //null,
userConting.groupworkhistorylist = data.data.groupworkhistorylist //null,
userConting.idstr = data.data.idstr //"78",
userConting.companyname = data.data.companyname //"",
userConting.maindeparmentname = data.data.maindeparmentname //"",
userConting.adminorgname = data.data.adminorgname //"",
userConting.positionname = data.data.positionname //"",
userConting.jobclassname = data.data.jobclassname //"",
userConting.jobidname = data.data.jobidname //"",
userConting.politicaloutlookname = data.data.politicaloutlookname //"",
userConting.jobstartdatestr = data.data.jobstartdatestr //"",
userConting.entrydatestr = data.data.entrydatestr //"",
userConting.personincharge = data.data.personincharge //2,
userConting.sunmaindeparmentname = data.data.sunmaindeparmentname //"",
userConting.workpostname = data.data.workpostname //"",
userConting.teamname = data.data.teamname //"",
userConting.allorglist = data.data.allorglist //[309,102,272],
userConting.ruleid = data.data.ruleid //"0",
userConting.rulename = data.data.rulename //"",
userConting.orgreslist = data.data.orgreslist //null
userConting.keystr = data.data.keystr //
userConting.id = data.data.id;
userConting.number = data.data.number; //"300450",
userConting.name = data.data.name; //"",
userConting.icon = data.data.icon; //
userConting.hireclass = data.data.hireclass; //1,
userConting.emptype = data.data.emptype; //8,
userConting.company = data.data.company; //309,
userConting.maindeparment = data.data.maindeparment; //102,
userConting.sunmaindeparment = data.data.sunmaindeparment; //272,
userConting.deparment = data.data.deparment; //"",
userConting.adminorg = data.data.adminorg; //272,
userConting.teamid = data.data.teamid; //1,
userConting.position = data.data.position; //2184,
userConting.jobclass = data.data.jobclass; //5,
userConting.jobid = data.data.jobid; //36,
userConting.jobleve = data.data.jobleve; //3,
userConting.time = data.data.time; //1656984567,
userConting.eitetime = data.data.eitetime; //1671160648,
userConting.wechat = data.data.wechat; //"",
userConting.workwechat = data.data.workwechat; //"KaiXinGuo",
userConting.state = data.data.state; //1,
userConting.key = data.data.key; //15993815826844528,
userConting.isadmin = data.data.isadmin; //4,
userConting.password = data.data.password; //"ecffe8715d2d3c2743bab6abc90e1331",
userConting.role = data.data.role; //"1",
userConting.idcardno = data.data.idcardno; //"370921198810151515",
userConting.passportno = data.data.passportno; //"",
userConting.globalroaming = data.data.globalroaming; //"",
userConting.mobilephone = data.data.mobilephone; //"15069130853",
userConting.email = data.data.email; //"",
userConting.gender = data.data.gender; //1,
userConting.birthday = data.data.birthday; //592848000,
userConting.myfolk = data.data.myfolk; //"",
userConting.nativeplace = data.data.nativeplace; //"15",
userConting.idcardstartdate = data.data.idcardstartdate; //0,
userConting.idcardenddate = data.data.idcardenddate; //0,
userConting.idcardaddress = data.data.idcardaddress; //"",
userConting.idcardIssued = data.data.idcardIssued; //"",
userConting.health = data.data.health; //2,
userConting.maritalstatus = data.data.maritalstatus; //2,
userConting.internaltelephone = data.data.internaltelephone; //"",
userConting.currentresidence = data.data.currentresidence; //"11302",
userConting.constellationing = data.data.constellationing; //1,
userConting.isdoubleworker = data.data.isdoubleworker; //2,
userConting.isveterans = data.data.isveterans; //2,
userConting.veteransnumber = data.data.veteransnumber; //"",
userConting.jobstartdate = data.data.jobstartdate; //0,
userConting.entrydate = data.data.entrydate; //0,
userConting.probationperiod = data.data.probationperiod; //0,
userConting.planformaldate = data.data.planformaldate; //0,
userConting.politicaloutlook = data.data.politicaloutlook; //1,
userConting.nameusedbefore = data.data.nameusedbefore; //"",
userConting.iconphoto = data.data.iconphoto; //"
userConting.responsibledepartment = data.data.responsibledepartment; //"",
userConting.responsibledepartmentjson = data.data.responsibledepartmentjson; //"",
userConting.birthdaytime = data.data.birthdaytime; //"1988-10-15",
userConting.idcardstarttimedata = data.data.idcardstarttimedata; //"",
userConting.idcardendtimedata = data.data.idcardendtimedata; //"",
userConting.entrydatetime = data.data.entrydatetime; //"",
userConting.planformaldatetime = data.data.planformaldatetime; //"",
userConting.doubleworkerlist = data.data.doubleworkerlist; //null,
userConting.educationalexperience = data.data.educationalexperience; //null,
userConting.emergencycontact = data.data.emergencycontact; //null,
userConting.memberoffamily = data.data.memberoffamily; //null,
userConting.workhistorylist = data.data.workhistorylist; //null,
userConting.groupworkhistorylist = data.data.groupworkhistorylist; //null,
userConting.idstr = data.data.idstr; //"78",
userConting.companyname = data.data.companyname; //"",
userConting.maindeparmentname = data.data.maindeparmentname; //"",
userConting.adminorgname = data.data.adminorgname; //"",
userConting.positionname = data.data.positionname; //"",
userConting.jobclassname = data.data.jobclassname; //"",
userConting.jobidname = data.data.jobidname; //"",
userConting.politicaloutlookname = data.data.politicaloutlookname; //"",
userConting.jobstartdatestr = data.data.jobstartdatestr; //"",
userConting.entrydatestr = data.data.entrydatestr; //"",
userConting.personincharge = data.data.personincharge; //2,
userConting.sunmaindeparmentname = data.data.sunmaindeparmentname; //"",
userConting.workpostname = data.data.workpostname; //"",
userConting.teamname = data.data.teamname; //"",
userConting.allorglist = data.data.allorglist; //[309,102,272],
userConting.ruleid = data.data.ruleid; //"0",
userConting.rulename = data.data.rulename; //"",
userConting.orgreslist = data.data.orgreslist; //null
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);
activeName.value = "1";
editMyCont.value=false;
editMyCont.value = false;
}
/**
* 选项卡翻页
*/
const handleClickUser = (tab: any, event: Event) => {
// console.log(tab, event)
}
// console.log(tab, event)
};
/**
* 监听数据
*/
watch(() => props.isShow,() => {
watch(
() => props.isShow,
() => {
// console.log("",props.archivesdata )
if(props.isShow){
if (props.isShow) {
getjtcyList();
boxTitle.value = "查看 "+ props.archivesdata.name + "(工号:"+ props.archivesdata.number +")" +" 详情";
if(props.archivesdata.icon != ""){
userIcon.value = props.archivesdata.icon
}else if(props.archivesdata.iconphoto !=""){
userIcon.value = props.archivesdata.iconphoto
}else{
userIcon.value =UserRole
boxTitle.value =
"查看 " +
props.archivesdata.name +
"(工号:" +
props.archivesdata.number +
")" +
" 详情";
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);
getjtcyList();
// console.log("",cont)
@ -285,29 +312,41 @@ function refreshContPage(cont:archivesCont){
// userConting.keystr = cont.keystr //
getjtcyList();
}
const handleAvatarSuccess: UploadProps['onSuccess'] = (response,uploadFile,uploadFiles) => {
userIcon.value = URL.createObjectURL(uploadFile.raw!)
const handleAvatarSuccess: UploadProps["onSuccess"] = (
response,
uploadFile,
uploadFiles
) => {
userIcon.value = URL.createObjectURL(uploadFile.raw!);
// console.log("---1--->",response)
// console.log("---2--->",uploadFile)
// console.log("----3-->",uploadFiles)
editMyInfoIcon({id:props.archivesdata.id,iconpath:response.data.url})
.then(( data )=>{
editMyInfoIcon({
id: props.archivesdata.id,
iconpath: response.data.url,
}).then((data) => {
// userConting.value = data.data
ElMessage.success("编辑成功");
emits("getarchivespageclick");
})
}
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
});
};
const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => {
// console.log("------>",rawFile)
}
function editmvorg(){
};
function editmvorg() {
editMyOrgCont.value = true;
}
</script>
<template>
<el-dialog v-model="boxShow" custom-class="dialog_box" :title="boxTitle" top="50px" :before-close="closeArchivesBox" width="80%">
<el-row v-loading="rowLoading" :gutter="20" >
<el-dialog
v-model="boxShow"
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-card shadow="always" class="box-card-left">
<el-row>
@ -320,29 +359,36 @@ function editmvorg(){
:before-upload="beforeAvatarUpload"
>
<el-avatar :size="180" :src="userIcon" />
</el-upload>
</el-col>
<el-col :span="24"><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-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-row class="user_cont">
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<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>
</el-text>
</el-col>
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<svg-icon icon-class="marriageregistration" class="svg_box"></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>
<svg-icon
icon-class="marriageregistration"
class="svg_box"
></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>
</el-text>
</el-col>
@ -354,11 +400,14 @@ function editmvorg(){
</el-col>
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<svg-icon icon-class="healthcondition" class="svg_box"></svg-icon>
<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>
<svg-icon
icon-class="healthcondition"
class="svg_box"
></svg-icon>
<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>
</el-text>
</el-col>
@ -378,42 +427,65 @@ function editmvorg(){
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<svg-icon icon-class="zhiye" class="svg_box"></svg-icon>
{{ userConting.companyname }} / {{ userConting.maindeparmentname }}
{{ userConting.companyname }} /
{{ userConting.maindeparmentname }}
</el-text>
</el-col>
<el-col :span="24" class="col_box">
<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 }}
</el-text>
</el-col>
</el-row>
</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-row>
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16">
<el-card shadow="always" class="box-card">
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClickUser">
<el-tabs
v-model="activeName"
class="demo-tabs"
@tab-click="handleClickUser"
>
<el-tab-pane label="基本信息" name="1">
<UserContent 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" />
<UserContent
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 label="彩色性格" name="2">彩色性格</el-tab-pane>
<el-tab-pane label="行政组织关系" name="3">
<OrgNexus :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="紧急联系人" name="4">
<EmergencyContactPage :usercont="userConting" :tabsid="activeName" />
<EmergencyContactPage
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="双职工" name="5">
<WorkingCouplePage :usercont="userConting" :tabsid="activeName" />
@ -422,7 +494,10 @@ function editmvorg(){
<FamilyMembers :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="教育经历" name="7">
<EducationalExperience :usercont="userConting" :tabsid="activeName" />
<EducationalExperience
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="集团内部工作履历" name="8">
<InnerWork :usercont="userConting" :tabsid="activeName" />
@ -430,48 +505,70 @@ function editmvorg(){
<el-tab-pane label="集团外部工作履历" name="9">
<OutsideWork :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="奖惩记录" name="10">奖惩记录</el-tab-pane>
<el-tab-pane label="考评记录" name="11">考评记录</el-tab-pane>
<el-tab-pane label="修改登陆密码" name="12">
<el-tab-pane label="奖惩记录" name="10">
<Rewardsandpunishments
: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" />
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</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>
</template>
<style lang='scss' scoped>
.bjg{
<style lang="scss" scoped>
.bjg {
background-color: aqua;
height: 50px;
}
.box-card-left{
.box-card-left {
text-align: center;
.username{
.username {
margin-top: 20px;
font-size: 35px;
}
.usernumber{
.usernumber {
margin-top: 10px;
font-size: 25px;
}
.user_cont{
.user_cont {
width: 90%;
margin: auto;
text-align: left;
.col_box{
.col_box {
margin-top: 10px;
.cont_size{
.cont_size {
font-size: 16px;
.svg_box{
.svg_box {
margin-right: 10px;
}
}
}
}
}
</style>

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

@ -0,0 +1,138 @@
<!--
@ 作者: 袁纪菲
@ 时间: 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>

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>

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

@ -0,0 +1,155 @@
<!--
@ 作者: 袁纪菲
@ 时间: 2024-4-22
@ 备注: 性格色彩
-->
<script lang="ts" setup>
import { ref } from "vue";
import * as echarts from "echarts";
// ref
const topTwoColours = ref<string[]>([]);
const option = {
tooltip: {
trigger: "axis",
},
radar: [
{
indicator: [
{ name: "红色", max: 100 },
{ name: "蓝色", max: 100 },
{ name: "黄色", max: 100 },
{ name: "绿色", max: 100 },
],
center: ["50%", "50%"],
radius: 90,
},
],
series: [
{
type: "radar",
tooltip: {
trigger: "item",
},
areaStyle: {},
data: [
{
value: [77, 55, 66, 33],
name: "性格色彩",
},
],
},
],
};
onMounted(() => {
//
const values = option.series[0].data[0].value;
const colors = ["红色", "蓝色", "黄色", "绿色"];
const percentages = values.map((val) => val / 100);
const sortedColors = colors.sort(
(a, b) => percentages[colors.indexOf(b)] - percentages[colors.indexOf(a)]
);
topTwoColours.value = sortedColors.slice(0, 2);
// echarts
Promise.resolve().then(() => {
const dom = document.getElementById("myChart");
const myChart = echarts.init(dom);
window.addEventListener("resize", () => {
myChart.resize(); //
});
myChart.setOption(option);
});
});
</script>
<template>
<div>
<div class="title">性格色彩特质</div>
<!-- 雷达图 -->
<div id="myChart" class="chart"></div>
<!-- 文字部分 -->
<div class="text-content">
<el-row>
<el-col v-for="(item, index) in topTwoColours" :key="index" :span="24">
<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>
</el-col>
</el-row>
</div>
</div>
</template>
<style scoped>
.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
@ 备注: 基本信息
-->
<script lang='ts' setup>
import SvgIcon from '@/components/SvgIcon/index.vue';
<script lang="ts" setup>
import SvgIcon from "@/components/SvgIcon/index.vue";
const props = defineProps({
tabsid:{
type:String,
default:"1"
tabsid: {
type: String,
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);
}
</script>
<template>
<el-descriptions
class="margin-top"
direction="vertical"
:column="4"
border
:width="80"
>
<el-descriptions class="margin-top" direction="vertical" :column="4" border :width="80">
<template #extra>
<el-button type="primary" link size="small" @click="editCont"><i-ep-edit />编辑</el-button>
</template>
@ -65,113 +58,136 @@ function editCont(){
</el-descriptions-item>
<el-descriptions-item>
<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>
<span v-if="props.usercont.gender==3">中性</span>
<span v-if="props.usercont.gender==2"></span>
<span v-if="props.usercont.gender == 3">中性</span>
<span v-if="props.usercont.gender == 2"></span>
<span v-else></span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon> </el-text>
</template>
<span v-if="props.usercont.health==1">良好</span>
<span v-else-if="props.usercont.health==2">一般</span>
<span v-else-if="props.usercont.health==3">较弱</span>
<span v-else-if="props.usercont.health==4">有生理缺陷</span>
<span v-else-if="props.usercont.health==5">残废</span>
<el-text><svg-icon icon-class="healthcondition" class="svg_box"></svg-icon>
健康状况</el-text>
</template>
<span v-if="props.usercont.health == 1">良好</span>
<span v-else-if="props.usercont.health == 2">一般</span>
<span v-else-if="props.usercont.health == 3">较弱</span>
<span v-else-if="props.usercont.health == 4">有生理缺陷</span>
<span v-else-if="props.usercont.health == 5">残废</span>
<span v-else>良好</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
<span v-if="props.usercont.maritalstatus==2">已婚</span>
<span v-else-if="props.usercont.maritalstatus==3">丧偶</span>
<span v-else-if="props.usercont.maritalstatus==4">离异</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 == 4">离异</span>
<span v-else>未婚</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon> </el-text>
</template>
<span v-if="props.usercont.politicaloutlook==2">无党派</span>
<span v-else-if="props.usercont.politicaloutlook==3">台盟会员</span>
<span v-else-if="props.usercont.politicaloutlook==4">九三社员</span>
<span v-else-if="props.usercont.politicaloutlook==5">致公党员</span>
<span v-else-if="props.usercont.politicaloutlook==6">农工党员</span>
<span v-else-if="props.usercont.politicaloutlook==7">民进会员</span>
<span v-else-if="props.usercont.politicaloutlook==8">民建会员</span>
<span v-else-if="props.usercont.politicaloutlook==9">民盟盟员</span>
<span v-else-if="props.usercont.politicaloutlook==10">民革会员</span>
<span v-else-if="props.usercont.politicaloutlook==11">共青团员</span>
<span v-else-if="props.usercont.politicaloutlook==12">预备党员</span>
<span v-else-if="props.usercont.politicaloutlook==13">中共党员</span>
<el-text><svg-icon icon-class="zhengzhi" class="svg_box"></svg-icon>
政治面貌</el-text>
</template>
<span v-if="props.usercont.politicaloutlook == 2">无党派</span>
<span v-else-if="props.usercont.politicaloutlook == 3">台盟会员</span>
<span v-else-if="props.usercont.politicaloutlook == 4">九三社员</span>
<span v-else-if="props.usercont.politicaloutlook == 5">致公党员</span>
<span v-else-if="props.usercont.politicaloutlook == 6">农工党员</span>
<span v-else-if="props.usercont.politicaloutlook == 7">民进会员</span>
<span v-else-if="props.usercont.politicaloutlook == 8">民建会员</span>
<span v-else-if="props.usercont.politicaloutlook == 9">民盟盟员</span>
<span v-else-if="props.usercont.politicaloutlook == 10">民革会员</span>
<span v-else-if="props.usercont.politicaloutlook == 11">共青团员</span>
<span v-else-if="props.usercont.politicaloutlook == 12">预备党员</span>
<span v-else-if="props.usercont.politicaloutlook == 13">中共党员</span>
<span v-else>群众</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.birthdaytime }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.idcardno }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.idcardstarttimedata }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.idcardendtimedata }}&nbsp;
</el-descriptions-item>
<el-descriptions-item :span="2">
<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>
{{ props.usercont.idcardaddress }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.idcardIssued }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.mobilephone }}&nbsp;
</el-descriptions-item>
<el-descriptions-item :span="2">
<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>
{{ props.usercont.currentresidence }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.email }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.internaltelephone }}&nbsp;
</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">
<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>
{{ props.usercont.nativeplace }}&nbsp;
</el-descriptions-item>
@ -183,115 +199,138 @@ function editCont(){
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon> </el-text>
</template>
<span v-if="props.usercont.constellationing==2">金牛座</span>
<span v-else-if="props.usercont.constellationing==3">双子座</span>
<span v-else-if="props.usercont.constellationing==4">巨蟹座</span>
<span v-else-if="props.usercont.constellationing==5">狮子座</span>
<span v-else-if="props.usercont.constellationing==6">处女座</span>
<span v-else-if="props.usercont.constellationing==7">天枰座</span>
<span v-else-if="props.usercont.constellationing==8">天蝎座</span>
<span v-else-if="props.usercont.constellationing==9">射手座</span>
<span v-else-if="props.usercont.constellationing==10">摩羯座</span>
<span v-else-if="props.usercont.constellationing==11">水瓶座</span>
<span v-else-if="props.usercont.constellationing==12">双鱼座</span>
<el-text><svg-icon icon-class="xingzuo" class="svg_box"></svg-icon>
星座</el-text>
</template>
<span v-if="props.usercont.constellationing == 2">金牛座</span>
<span v-else-if="props.usercont.constellationing == 3">双子座</span>
<span v-else-if="props.usercont.constellationing == 4">巨蟹座</span>
<span v-else-if="props.usercont.constellationing == 5">狮子座</span>
<span v-else-if="props.usercont.constellationing == 6">处女座</span>
<span v-else-if="props.usercont.constellationing == 7">天枰座</span>
<span v-else-if="props.usercont.constellationing == 8">天蝎座</span>
<span v-else-if="props.usercont.constellationing == 9">射手座</span>
<span v-else-if="props.usercont.constellationing == 10">摩羯座</span>
<span v-else-if="props.usercont.constellationing == 11">水瓶座</span>
<span v-else-if="props.usercont.constellationing == 12">双鱼座</span>
<span v-else>白羊座</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
<span v-if="props.usercont.hireclass==2">再入职</span>
<span v-if="props.usercont.hireclass == 2">再入职</span>
<span v-else>雇佣入职</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon> </el-text>
</template>
<span v-if="props.usercont.emptype==2">编外人员</span>
<span v-else-if="props.usercont.emptype==3">实习&实习生</span>
<span v-else-if="props.usercont.emptype==4">试用员工</span>
<span v-else-if="props.usercont.emptype==5">待分配</span>
<span v-else-if="props.usercont.emptype==6">待岗</span>
<span v-else-if="props.usercont.emptype==7">临时调入</span>
<span v-else-if="props.usercont.emptype==8">正式员工</span>
<span v-else-if="props.usercont.emptype==9">长期病假</span>
<span v-else-if="props.usercont.emptype==10">停薪留职</span>
<span v-else-if="props.usercont.emptype==11">退休</span>
<span v-else-if="props.usercont.emptype==12">辞职</span>
<span v-else-if="props.usercont.emptype==13">辞退</span>
<span v-else-if="props.usercont.emptype==14">离职</span>
<el-text><svg-icon icon-class="jianzhi" class="svg_box"></svg-icon>
用工关系</el-text>
</template>
<span v-if="props.usercont.emptype == 2">编外人员</span>
<span v-else-if="props.usercont.emptype == 3">实习&实习生</span>
<span v-else-if="props.usercont.emptype == 4">试用员工</span>
<span v-else-if="props.usercont.emptype == 5">待分配</span>
<span v-else-if="props.usercont.emptype == 6">待岗</span>
<span v-else-if="props.usercont.emptype == 7">临时调入</span>
<span v-else-if="props.usercont.emptype == 8">正式员工</span>
<span v-else-if="props.usercont.emptype == 9">长期病假</span>
<span v-else-if="props.usercont.emptype == 10">停薪留职</span>
<span v-else-if="props.usercont.emptype == 11">退休</span>
<span v-else-if="props.usercont.emptype == 12">辞职</span>
<span v-else-if="props.usercont.emptype == 13">辞退</span>
<span v-else-if="props.usercont.emptype == 14">离职</span>
<span v-else>临时工</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.entrydatetime }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
<span v-if="props.usercont.probationperiod != 0">{{ props.usercont.probationperiod }}</span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.planformaldatetime }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.jobstartdatestr }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
<span v-if="props.usercont.isveterans==2"></span>
<span v-if="props.usercont.isveterans == 2"></span>
<span v-else></span>&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.veteransnumber }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.passportno }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.globalroaming }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.wechat }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ props.usercont.workwechat }}&nbsp;
</el-descriptions-item>
<el-descriptions-item :span="2">
&nbsp;
<el-descriptions-item>
<template #label>
<el-text><i class="fa fa-heart-o"></i>
兴趣爱好</el-text>
</template>
{{ props.usercont.interests }}&nbsp;
</el-descriptions-item>
<el-descriptions-item :span="2"> &nbsp; </el-descriptions-item>
</el-descriptions>
</template>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

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

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

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

@ -113,15 +113,27 @@ function editXueLiBox(cont:jiaoyujingli){
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ item.subject }}
{{ item.educationcn }}
</el-descriptions-item>
<el-descriptions-item>
<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>
{{ 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>
<template #label>
@ -129,6 +141,14 @@ function editXueLiBox(cont:jiaoyujingli){
</template>
{{ item.academicdegreecn }}
</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>
<template #label>
<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>
import { educExpInfo } from '@/api/hr/people/type'
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({
addisshow:{
type:Boolean,
@ -95,6 +95,9 @@ function submitAddJyjl(){
<el-form-item label="专业" prop="subject">
<el-input v-model="JyjlFormData.subject" placeholder="请输入专业" />
</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-select v-model="JyjlFormData.education" placeholder="请选择学历" >
<el-option
@ -105,6 +108,26 @@ function submitAddJyjl(){
/>
</el-select>
</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-select v-model="JyjlFormData.level" placeholder="请选择学历性质" >
<el-option

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

@ -6,7 +6,7 @@
<script lang='ts' setup>
import { editEducExpInfoing } from '@/api/hr/people/type'
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({
editisshow:{
type:Boolean,
@ -92,6 +92,9 @@ function submitEditJyjl(){
JyjlFormData.graduationtime = props.datacont.graduationtimestr;
JyjlFormData.academicdegree = props.datacont.academicdegree;
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-input v-model="JyjlFormData.subject" placeholder="请输入专业" />
</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-select v-model="JyjlFormData.education" placeholder="请选择学历" >
<el-option
@ -126,6 +132,26 @@ function submitEditJyjl(){
/>
</el-select>
</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-select v-model="JyjlFormData.level" placeholder="请选择学历性质" >
<el-option

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

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

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

@ -4,23 +4,24 @@
@ 备注: 新增紧急联系人
-->
<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 { userPoliticaloutloo } from '@/api/hr/people/datacont'
const props = defineProps({
addisshow:{
type:Boolean,
default:false
addisshow: {
type: Boolean,
default: false
},
keyval:{
type:String,
default:""
keyval: {
type: String,
default: ""
}
});
const addLoading = ref(false)
const emits = defineEmits(["update:addisshow","restdata"]); //
const emits = defineEmits(["update:addisshow", "restdata"]); //
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" }],
relationship: [{ 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);
initJjlxrData()
}
/**
* 初始化数据
*/
function initJjlxrData(){
function initJjlxrData() {
addJjlxrFormRef.value.resetFields();
addLoading.value = false;
}
/**
* 提交数据
*/
function submitAddJjlxr(){
function submitAddJjlxr() {
// console.log("",jjlxrFormData)
// addLoading.value = true;
addJjlxrFormRef.value.validate((isValid: boolean) => {
if (isValid) {
let listAry = new Array
listAry.push(jjlxrFormData)
addEmergencyContactInfo({id:props.keyval,list:listAry})
.then(() =>{
addEmergencyContactInfo({ id: props.keyval, list: listAry })
.then(() => {
ElMessage.success("新增成功");
clostAddBoxJjlxr();
emits('restdata');
})
.finally(() =>{addLoading.value = false;})
.finally(() => { addLoading.value = false; })
}
});
}
</script>
<template>
<el-dialog
v-model="addshow"
width="500"
title="添加紧急联系人"
append-to-body
:before-close="clostAddBoxJjlxr"
>
<el-form
ref="addJjlxrFormRef"
:model="jjlxrFormData"
:rules="addJjlxrRules"
label-width="140px"
>
<el-dialog v-model="addshow" 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-input v-model="jjlxrFormData.name" placeholder="请输入紧急联系人姓名" />
</el-form-item>
@ -96,15 +88,25 @@ function submitAddJjlxr(){
<el-form-item label="与紧急联系人关系" prop="relationship">
<el-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" />
</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>
<template #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>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>
<style lang='scss' scoped></style>

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

@ -6,6 +6,7 @@
<script lang='ts' setup>
import { emergencyContactInfo,emergencyContactAdd } from '@/api/hr/people/type'
import { editEmergencyContactInfo } from '@/api/hr/people/index'
import { userPoliticaloutloo } from '@/api/hr/people/datacont'
const props = defineProps({
editisshow:{
type:Boolean,
@ -42,6 +43,8 @@ const editshow = computed({
name: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }],
relationship: [{ 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-input v-model="jjlxrFormData.relationship" placeholder="请输入与紧急联系人关系" />
</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>
<template #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