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. 953
      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. 591
      src/views/hr/archives/basicinformation/content.vue
  14. 1122
      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. 145
      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']

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

File diff suppressed because it is too large

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>

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

@ -3,295 +3,334 @@
@ 时间: 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"
},
editShow:{
type:Boolean,
default:false
},
usercont:{
type:Object,
default(){
return {}
}
}
tabsid: {
type: String,
default: "1",
},
editShow: {
type: Boolean,
default: false,
},
usercont: {
type: Object,
default() {
return {};
},
},
});
const emitsed = defineEmits(["update:editShow","updatemyconting"]); //
const emitsed = defineEmits(["update:editShow", "updatemyconting"]); //
/**
* 编辑控制
*/
const boxShow = computed({
get: () => props.editShow,
set: (val) => {
emitsed("update:editShow", val);
},
get: () => props.editShow,
set: (val) => {
emitsed("update:editShow", val);
},
});
/**
* 编辑信息
*/
function editCont(){
emitsed("update:editShow", true);
function editCont() {
emitsed("update:editShow", true);
}
</script>
<template>
<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>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="user" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.name }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="uv" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.nameusedbefore }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<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-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>
<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>
</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-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>
<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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</template>
{{ props.usercont.internaltelephone }}&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>
</template>
{{ props.usercont.nativeplace }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.myfolk }}&nbsp;
</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>
<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>
</template>
<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>
<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>
</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>
</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>
</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>
</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>
</template>
<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>
</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>
</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>
</template>
{{ props.usercont.globalroaming }}&nbsp;
</el-descriptions-item>
<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>
<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>
</template>
{{ props.usercont.workwechat }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="user" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.name }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="uv" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.nameusedbefore }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<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-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>
<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>
</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-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>
<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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</template>
{{ props.usercont.nativeplace }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<el-text><svg-icon icon-class="qxsp" class="svg_box"></svg-icon> </el-text>
</template>
{{ props.usercont.myfolk }}&nbsp;
</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>
<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>
</template>
<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>
<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>
</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>
</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>
</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>
</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>
</template>
<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>
</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>
</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>
</template>
{{ props.usercont.globalroaming }}&nbsp;
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<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>
</template>
{{ props.usercont.workwechat }}&nbsp;
</el-descriptions-item>
<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>
<el-descriptions-item :span="2"> &nbsp; </el-descriptions-item>
</el-descriptions>
</template>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

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

File diff suppressed because it is too large

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

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

@ -3,125 +3,126 @@
@ 时间: 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();
});
});
}
</script>
<template>
<el-table
v-loading="tableLoading"
highlight-current-row
: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 fixed="right" align="right" width="150">
v-loading="tableLoading"
highlight-current-row
: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