226 lines
5.6 KiB
Vue
Raw Normal View History

2023-08-11 18:23:36 +08:00
<template>
2023-08-15 12:34:16 +08:00
<div class="edit-popup">
<popup
ref="popupRef"
:title="title"
:async="true"
width="800px"
@confirm="handleSubmit"
@close="handleClose"
:clickModalClose="mode == 'show'"
:button="mode != 'show'"
>
<el-form
ref="formRef"
:rules="rules"
class="formdata"
:model="formData"
label-width="120px"
>
<el-form-item v-if="formData.id" label="任务ID" prop="id">
<el-input
:disabled="true"
v-model="formData.id"
clearable
placeholder="请输入任务模板"
/>
</el-form-item>
<el-form-item label="任务日期" prop="datetime">
<el-date-picker
:disabled="isDisabled"
v-model="formData.datetime"
name="datetime"
type="daterange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
@change="changeDateTime"
/>
</el-form-item>
<el-form-item label="任务模板" prop="template_id">
<el-input
:disabled="isDisabled"
v-model="formData.template_name"
@click="isShow = true"
name="template_id"
clearable
placeholder="请输入任务模板"
/>
</el-form-item>
2023-08-16 12:10:56 +08:00
<el-form-item label="任务描述" v-if="formData.template_name">
<el-input
disabled
v-model="formData.content"
placeholder="没有任务描述"
/>
</el-form-item>
2023-08-18 12:10:37 +08:00
<!-- <el-form-item v-if="mode == 'show'" label="">
2023-08-15 12:34:16 +08:00
<el-button type="primary" @click="clickUpdate"> 修改 </el-button>
<el-button type="danger" @click="clickDelete"> 删除 </el-button>
2023-08-18 12:10:37 +08:00
</el-form-item> -->
2023-08-15 12:34:16 +08:00
</el-form>
</popup>
<el-dialog v-model="isShow" title="选择任务模板" width="60%">
2023-08-17 10:00:38 +08:00
<DialogIndex @customEvent="customEvent" :company_id="props.company_id" />
2023-08-15 12:34:16 +08:00
</el-dialog>
</div>
2023-08-11 18:23:36 +08:00
</template>
<script lang="ts" setup name="taskEidt">
2023-08-15 12:34:16 +08:00
import type { FormInstance, FormRules } from "element-plus";
import Popup from "@/components/popup/index.vue";
import { apiTaskAdd, apiTaskEdit, apiTaskDelete } from "@/api/task";
import { reactive, onUpdated, type PropType } from "vue";
import DialogIndex from "@/views/task_template/list_two.vue";
import { timeFormat } from "@/utils/util";
import feedback from "@/utils/feedback";
const route = useRoute();
2023-08-11 18:23:36 +08:00
2023-08-15 12:34:16 +08:00
const emit = defineEmits(["success", "close"]);
const popupRef = shallowRef<InstanceType<typeof Popup>>();
const mode = ref("add");
const detailsdt = ref({});
const isShow = ref(false);
const title = ref("创建日程安排");
2023-08-14 12:05:31 +08:00
const changeDateTime = (e: any) => {
2023-08-15 12:34:16 +08:00
formData.start_time = timeFormat(e[0]).split(" ")[0];
formData.end_time = timeFormat(e[1]).split(" ")[0];
};
2023-08-11 18:23:36 +08:00
// 表单数据
const formData = reactive({
2023-08-15 12:34:16 +08:00
id: "",
create_user_id: "",
status: "",
template_id: "",
scheduling_id: "",
template_name: "",
start_time: "",
end_time: "",
datetime: "",
2023-08-16 12:10:56 +08:00
content: "",
2023-08-15 12:34:16 +08:00
});
2023-08-14 12:05:31 +08:00
interface RuleForm {
2023-08-15 12:34:16 +08:00
datetime: Date | string;
template_id: string;
2023-08-14 12:05:31 +08:00
}
const rules = reactive<FormRules<RuleForm>>({
2023-08-15 12:34:16 +08:00
datetime: { required: true, message: "请选择时间范围", trigger: "blur" },
template_id: {
required: true,
message: "请选择任务模板",
trigger: "change",
},
});
2023-08-14 12:05:31 +08:00
2023-08-12 16:05:13 +08:00
function customEvent(data: any) {
2023-08-15 12:34:16 +08:00
isShow.value = false;
formData.template_id = data.id;
formData.template_name = data.title;
2023-08-12 16:05:13 +08:00
}
2023-08-11 18:23:36 +08:00
2023-08-15 12:34:16 +08:00
const formRef = ref(null);
2023-08-14 12:05:31 +08:00
const props = defineProps({
2023-08-15 12:34:16 +08:00
task: {
type: Object,
defualt: () => {
null;
},
},
2023-08-17 10:00:38 +08:00
company_id: {
type: String,
default: "",
},
2023-08-15 12:34:16 +08:00
});
const isDisabled = ref(false);
2023-08-14 12:05:31 +08:00
2023-08-15 12:34:16 +08:00
const updatedForm = async (task: any = null) => {
try {
formRef.value.clearValidate && formRef.value?.clearValidate();
} catch (error) {
console.log(error);
}
if (mode.value == "show") {
title.value = "查看日程安排";
isDisabled.value = true;
Object.keys(formData).forEach((key: any) => {
if (task[key] != null && task[key] != undefined)
formData[key] = task[key];
});
formData.datetime = [
formData.start_time.split(" ")[0],
formData.end_time.split(" ")[0],
];
} else {
isDisabled.value = false;
Object.keys(formData).forEach((key: any) => {
formData[key] = "";
});
}
};
2023-08-14 12:05:31 +08:00
const clickUpdate = () => {
2023-08-15 12:34:16 +08:00
mode.value = "edit";
isDisabled.value = false;
};
2023-08-14 12:05:31 +08:00
// 删除
const clickDelete = () => {
2023-08-15 12:34:16 +08:00
feedback.confirm("确定要删除吗?").then(async (e) => {
if (e == "confirm") {
await apiTaskDelete({ id: formData.id });
popupRef.value?.close();
emit("success");
}
});
};
2023-08-14 12:05:31 +08:00
2023-08-11 18:23:36 +08:00
// 提交按钮
2023-08-14 12:05:31 +08:00
const handleSubmit = () => {
2023-08-15 12:34:16 +08:00
if (mode.value == "show") return popupRef.value?.close();
else {
formRef.value.validate(async (e: boolean) => {
if (e) {
const data = { ...formData };
if (route.query.id) {
data.scheduling_id = route.query.id.toString();
}
data.start_time = data.start_time.split(" ")[0];
data.end_time = data.end_time.split(" ")[0];
mode.value == "edit" ? await apiTaskEdit(data) : await apiTaskAdd(data);
popupRef.value?.close();
emit("success");
}
});
}
};
2023-08-11 18:23:36 +08:00
//打开弹窗
2023-08-15 12:34:16 +08:00
const open = (type = "add") => {
mode.value = type;
popupRef.value?.open();
};
2023-08-11 18:23:36 +08:00
// 关闭回调
const handleClose = () => {
2023-08-15 12:34:16 +08:00
emit("close");
};
2023-08-11 18:23:36 +08:00
defineExpose({
2023-08-15 12:34:16 +08:00
open,
updatedForm,
});
2023-08-11 18:23:36 +08:00
</script>
<style lang="scss" scoped>
.formdata {
2023-08-15 12:34:16 +08:00
.el-form-item {
.el-date-picker {
width: 100%;
2023-08-11 18:23:36 +08:00
}
2023-08-15 12:34:16 +08:00
}
2023-08-11 18:23:36 +08:00
}
</style>