daofu-gov-pc/src/views/resumption/post_config/details.vue

247 lines
6.7 KiB
Vue
Raw Normal View History

2024-01-23 09:11:49 +08:00
<template>
<el-dialog
v-model="props.visible"
:append-to-body="true"
width="50%"
custom-class="custom-dialog"
@open="initDialog"
@close="handleClose"
>
<template #header="{ clone }">
<div class="custom-dialog-title">
<span
>{{
addPostFactorForm.hasOwnProperty("listfactorid") && !props.readonly
? "修改"
: "添加"
}}履职清单</span
>
<svg-icon
name="close"
:cursor="true"
class="icon-style"
@click="onclone"
></svg-icon>
<hr />
</div>
</template>
<div class="custom-dialog-content">
<div class="add-resump-record">
<el-form
ref="formRef"
label-position="right"
:disabled="props.readonly"
label-width="120px"
:rules="ruleForm"
:model="addPostFactorForm"
>
<el-form-item label="年份" prop="sysyear">
<el-select
v-model="addPostFactorForm.sysyear"
placeholder="请选择年份"
clearable
>
<el-option
v-for="(item, index) in years"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="履职类型" prop="type">
<el-select
v-model="addPostFactorForm.type"
placeholder="请选择类型"
clearable
>
<el-option
v-for="(item, index) in types"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="履职内容" prop="factorcnt">
<el-input
placeholder="请输入履职内容"
type="textarea"
:rows="4"
v-model.trim="addPostFactorForm.factorcnt"
>
</el-input>
</el-form-item>
<el-form-item label="考核指标" prop="checkstandard">
<el-select
v-model="addPostFactorForm.checkstandard"
placeholder="请选择指标"
clearable
>
<el-option
v-for="(item, index) in indexClassify"
:key="index"
:label="item.value"
:value="item.key"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="次数" prop="frequency">
<el-input-number
v-model.trim="addPostFactorForm.frequency"
:min="0"
:step="1"
step-strictly
></el-input-number>
</el-form-item>
<el-form-item label="红色预警(天)" prop="redalert">
<el-input-number
v-model.trim="addPostFactorForm.redalert"
:min="0"
:step="1"
step-strictly
></el-input-number>
</el-form-item>
<el-form-item label="黄色预警(天)" prop="yellowalert">
<el-input-number
v-model.trim="addPostFactorForm.yellowalert"
:min="0"
:step="1"
step-strictly
></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
<template #footer="{ clone }">
<span class="dialog-footer" v-show="!props.readonly">
<el-button @click="onclone"> </el-button>
<el-button
type="primary"
@click="handleSubmit('addPostFactorForm')"
:loading="loading"
> </el-button
>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts" >
import { reactive, ref, onMounted, watch } from "vue";
import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getYears } from "@/utils/common";
2024-02-06 10:46:11 +08:00
// import {
// getFactorCheckstandard,
// addFactor,
// updateFactor,
// } from "@/api/performDuties";
2024-01-23 09:11:49 +08:00
const formRef = ref<FormInstance>();
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const indexClassify = ref([]);
const loading = ref(false);
const ruleForm = reactive<FormRules>({
sysyear: [{ required: true, message: "请选择年份", trigger: "blur" }],
type: [{ required: true, message: "请选择履职类型", trigger: "blur" }],
factorcnt: [{ required: true, message: "请输入履职内容", trigger: "blur" }],
checkstandard: [{ required: true, message: "请选择指标", trigger: "blur" }],
frequency: [{ required: true, message: "请输入次数", trigger: "blur" }],
redalert: [{ required: true, message: "请输入天数", trigger: "blur" }],
yellowalert: [{ required: true, message: "请输入天数", trigger: "blur" }],
});
const props = defineProps({
visible: {
type: Boolean,
default: false,
},
form: Object,
readonly: {
type: Boolean,
default: false,
},
id: String,
});
const types = ref([
{
label: "检查",
value: 1,
},
{
label: "会议",
value: 2,
},
{
label: "调研",
value: 3,
},
{
label: "其他",
value: 4,
},
]);
const years = ref(getYears(new Date().getFullYear()));
const addPostFactorForm = ref(<any>{});
const emits = defineEmits(["close", "onSubmit"]);
const handleClose = () => {
addPostFactorForm.value = {};
formRef.value.clearValidate();
// emits("close");
};
const FactorCheckstandard = () => {
getFactorCheckstandard().then((res: any) => {
indexClassify.value = res.data;
});
};
const handleSubmit = () => {
formRef.value?.validate((valid) => {
if (valid) {
loading.value = true;
if (addPostFactorForm.value.listfactorid) {
updateFactor(addPostFactorForm.value).then((res: any) => {
loading.value = false;
if (res.code == 1) {
onclone();
}
});
} else {
addPostFactorForm.value.userId = userId.value;
addFactor(addPostFactorForm.value).then((res: any) => {
loading.value = false;
if (res.code == 1) {
onclone();
}
});
}
}
return false;
});
};
//关闭弹窗
const onclone = () => {
emits("close");
};
onMounted(() => {
FactorCheckstandard();
});
watch(
() => props.form,
(val) => {
console.log(333, props);
if (val) {
if (!props.visible) return;
addPostFactorForm.value = val;
}
}
);
</script>
<style lang="scss" scoped>
</style>