Browse Source
# Conflicts: # src/api/hr/people/index.ts # src/types/components.d.ts # src/views/hr/archives/basicinformation/appraisalrecord.vuelwx_v12
32 changed files with 4910 additions and 1384 deletions
File diff suppressed because it is too large
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -0,0 +1,252 @@ |
|||
<!-- |
|||
@ 作者: 袁纪菲 |
|||
@ 时间: 2024-4-22 |
|||
@ 备注: 性格色彩 |
|||
--> |
|||
<script lang="ts" setup> |
|||
import { ref, onMounted, onUnmounted, nextTick } from 'vue'; |
|||
import * as echarts from 'echarts'; |
|||
import { getCharacterColor } from '@/api/hr/people'; |
|||
const props = defineProps({ |
|||
tabsid: { |
|||
type: String, |
|||
default: "1", |
|||
}, |
|||
usercont:{ |
|||
type:Object, |
|||
default(){ |
|||
return {} |
|||
} |
|||
} |
|||
}); |
|||
// 定义数据和方法 |
|||
const chartContainer = ref<HTMLDivElement | null>(null); |
|||
let chartInstance: echarts.ECharts | null = null; |
|||
// 添加对ColourNameList的响应式引用 |
|||
const ColourNameList = ref<string[]>([]); |
|||
const error = ref<string | null>(null); |
|||
//添加了一个新的变量用来处理尺寸变化 |
|||
let resizeObserver: ResizeObserver | null = null; |
|||
// 使用计算属性确保number存在且非空字符串再初始化 |
|||
const isReadyToInit = computed(() => { |
|||
return props.usercont.number !== undefined && props.usercont.number.trim() !== ''; |
|||
}); |
|||
// 处理数据和初始化ECharts |
|||
const initChart = async () => { |
|||
// console.log(chartContainer.value) |
|||
// 检查并销毁已有实例 |
|||
if (chartInstance) { |
|||
chartInstance.dispose(); |
|||
chartInstance = null; |
|||
} |
|||
//确保chartContainer关联的DOM元素存在 |
|||
if (!chartContainer.value) { |
|||
console.warn('DOM元素未找到,无法初始化图表'); |
|||
return; |
|||
} |
|||
try { |
|||
// 确保usercont.number存在再发起请求 |
|||
if (!isReadyToInit.value) { |
|||
throw new Error("员工信息未准备好,无法初始化图表"); |
|||
} |
|||
// 调用接口获取性格色彩数据 |
|||
const response = await getCharacterColor({ number: props.usercont.number }); |
|||
// 初始化图表实例 |
|||
chartInstance = echarts.init(chartContainer.value); |
|||
// console.log('Response:', response, chartInstance); |
|||
if (response.code === 0) { |
|||
// 处理返回的数据,得到颜色列表和雷达图颜色数据,解构数据 |
|||
const { ColourNameList: apiColourNameList, RadarColour } = response.data; |
|||
ColourNameList.value = apiColourNameList; // 更新响应式数组 |
|||
// 确保所有颜色都在雷达图中显示,即使ColourNameList中没有提及 |
|||
const allColours = ["红色", "蓝色", "黄色", "绿色"]; |
|||
// 更新雷达图 |
|||
updateRadarChart(chartInstance, RadarColour, allColours); |
|||
} else { |
|||
ElMessage.error(response.data.msg || '系统出错'); |
|||
} |
|||
} catch (e) { |
|||
console.error(e); |
|||
} |
|||
} |
|||
// 更新雷达图 |
|||
const updateRadarChart = (chart: echarts.ECharts, radarColour: any[], colourNameList: string[]) => { |
|||
const radarOptions = createRadarOptions(radarColour, colourNameList); |
|||
chart.setOption(radarOptions); |
|||
chart.resize(); |
|||
// 将colourNameList赋值给ColourNameList,以便在模板中使用 |
|||
// ColourNameList.value = colourNameList; |
|||
} |
|||
// 创建雷达图配置项 |
|||
const createRadarOptions = (radarColour: any[], colourNameList: string[]) => { |
|||
let maxVal = Math.max(...radarColour); |
|||
return { |
|||
tooltip: { trigger: "item" }, |
|||
radar: { |
|||
indicator: colourNameList.map((color, index) => ({ |
|||
name: color, |
|||
max: maxVal + 2, |
|||
min: 0 , |
|||
})), |
|||
shape: "circle", |
|||
splitNumber: 4, |
|||
}, |
|||
series: [ |
|||
{ |
|||
name: "个人性格色彩", |
|||
type: "radar", |
|||
areaStyle: { |
|||
// 填充区颜色 |
|||
color: '#a0c3f8', |
|||
}, |
|||
data: [{ value: radarColour, |
|||
name: "个人色彩分布" |
|||
}], |
|||
itemStyle: { color: "#3c96ff" }, // 示例颜色 |
|||
}, |
|||
], |
|||
}; |
|||
} |
|||
onMounted(async () => { |
|||
//在DOM就绪后初始化echarts实例 |
|||
await nextTick(); |
|||
// console.log(chartContainer.value); |
|||
// 初始化ResizeObserver |
|||
resizeObserver = new ResizeObserver(() => { |
|||
if (chartInstance) { |
|||
chartInstance.resize(); |
|||
} |
|||
}); |
|||
resizeObserver.observe(chartContainer.value!); // 监听chartContainer尺寸变化 |
|||
}); |
|||
// 监听员工信息变化 |
|||
watch( |
|||
() => ({ |
|||
usercont: props.usercont, |
|||
tabsid: props.tabsid |
|||
}), |
|||
async (newValues) => { |
|||
const { usercont, tabsid } = newValues; |
|||
// 如果tabsid为'2'且usercont.number准备好了 |
|||
if (tabsid === '2' && usercont.number) { |
|||
error.value = null; |
|||
await nextTick(); |
|||
await initChart(); |
|||
} else if (usercont.number) { |
|||
// 如果只是usercont.number变化了 |
|||
error.value = null; |
|||
await nextTick(); |
|||
await initChart(); |
|||
} else { |
|||
error.value = "员工信息未准备好"; |
|||
} |
|||
}, |
|||
{ immediate: true, deep: true } |
|||
); |
|||
// 组件卸载时清理ECharts实例 |
|||
onUnmounted(() => { |
|||
if (chartInstance) { |
|||
chartInstance.dispose(); |
|||
chartInstance = null; |
|||
} |
|||
// 清理ResizeObserver |
|||
if (resizeObserver) { |
|||
resizeObserver.disconnect(); |
|||
resizeObserver = null; |
|||
} |
|||
}); |
|||
//监听tabsid变化(点击性格色彩选项) |
|||
// watch(()=>props.tabsid,(val:string)=>{ |
|||
// if(val == '2'){ |
|||
// initChart(); |
|||
// } |
|||
// }) |
|||
</script> |
|||
<template> |
|||
<!-- 在模板中根据loading状态显示加载提示 --> |
|||
<div class="chart-container"> |
|||
<div ref="chartContainer" class="chart"></div> |
|||
<div v-for="(item, index) in ColourNameList" :key="index"> |
|||
<div v-if="item == '红色'"> |
|||
<el-text type="info" class="color-title">{{ item }}:<br/></el-text> |
|||
<el-text type="info">——他们的优势是:<br /></el-text> |
|||
<el-text type="info">积极乐观,</el-text> |
|||
<el-text type="info">真诚主动,</el-text> |
|||
<el-text type="info">善于表达,</el-text> |
|||
<el-text type="info">富有感染力。<br /></el-text> |
|||
<el-text type="info">——有时很可恶,因为:<br /></el-text> |
|||
<el-text type="info">情绪波动大起大落,</el-text> |
|||
<el-text type="info">开玩笑不分场合,</el-text> |
|||
<el-text type="info">疏于兑现承诺,</el-text> |
|||
<el-text type="info">这山望着那山高。<br /></el-text> |
|||
</div> |
|||
<div v-if="item == '蓝色'"> |
|||
<el-text type="info" class="color-title">{{ item }}:<br /></el-text> |
|||
<el-text type="info">——他们的优势是:<br /></el-text> |
|||
<el-text type="info">思想深邃,</el-text> |
|||
<el-text type="info">默默关怀他人,</el-text> |
|||
<el-text type="info">敏感而细腻,</el-text> |
|||
<el-text type="info">计划性强。<br /></el-text> |
|||
<el-text type="info">——有时不太招人喜欢:<br /></el-text> |
|||
<el-text type="info">情感脆弱,</el-text> |
|||
<el-text type="info">喜好批判和挑剔,</el-text> |
|||
<el-text type="info">不主动与人沟通,</el-text> |
|||
<el-text type="info">患得患失。<br /></el-text> |
|||
</div> |
|||
<div v-if="item == '黄色'"> |
|||
<el-text type="info" class="color-title">{{ item }}:<br/></el-text> |
|||
<el-text type="info">——他们的优势是:<br /></el-text> |
|||
<el-text type="info">行动迅速,</el-text> |
|||
<el-text type="info">目标导向,</el-text> |
|||
<el-text type="info">不感情用事,</el-text> |
|||
<el-text type="info">坚持不懈。<br /></el-text> |
|||
<el-text type="info">——有时会被抱怨:<br /></el-text> |
|||
<el-text type="info">死不认错,</el-text> |
|||
<el-text type="info">控制欲强,</el-text> |
|||
<el-text type="info">咄咄逼人,</el-text> |
|||
<el-text type="info">容易发怒。<br /></el-text> |
|||
</div> |
|||
<div v-if="item == '绿色'"> |
|||
<el-text type="info" class="color-title">{{ item }}:<br /></el-text> |
|||
<el-text type="info">——他们的优势是:<br /></el-text> |
|||
<el-text type="info">温柔祥和,</el-text> |
|||
<el-text type="info">为他人考虑,</el-text> |
|||
<el-text type="info">与世无争,</el-text> |
|||
<el-text type="info">善于协调。<br /></el-text> |
|||
<el-text type="info">——他们的局限在于:<br /></el-text> |
|||
<el-text type="info">拒绝改变,</el-text> |
|||
<el-text type="info">胆小被动,</el-text> |
|||
<el-text type="info">没有主见,</el-text> |
|||
<el-text type="info">缺乏创意。<br /></el-text> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<style scoped> |
|||
.chart-container { |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.title { |
|||
font-size: 18px; |
|||
font-weight: bold; |
|||
} |
|||
.chart { |
|||
height: 270px; |
|||
width: 100%; |
|||
} |
|||
.text-content { |
|||
padding: 20px; |
|||
background-color: #f5f7fa; |
|||
border-radius: 10px; |
|||
font-size:medium |
|||
} |
|||
.el-col { |
|||
margin-bottom: 10px; |
|||
} |
|||
.color-title { |
|||
font-size: 15px; |
|||
font-weight:bold; |
|||
color: #6e6e6e; |
|||
} |
|||
</style> |
|||
File diff suppressed because it is too large
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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…
Reference in new issue