|
@@ -1,14 +1,14 @@
|
|
|
<template>
|
|
|
- <Dialog custom-show type="sm" title="任务下达" height="500px" @confirm="confirmRegister" @close="closeDialog">
|
|
|
+ <Dialog custom-show type="sm" title="任务下达" height="630px" @confirm="confirmRegister" @close="closeDialog">
|
|
|
<div class="dialog-content">
|
|
|
<div class="dialog-body">
|
|
|
- <el-form ref="taskFormRef" :model="newTask">
|
|
|
- <el-form-item label="任务内容" label-width="60px">
|
|
|
- <el-input v-model="newTask.task_description" class="custom-input2" clearable placeholder="请输入相关任务描述" />
|
|
|
+ <el-form ref="taskFormRef" :model="form" :rules="rules">
|
|
|
+ <el-form-item label="任务内容:" label-width="80px" prop="task_description">
|
|
|
+ <el-input v-model="form.task_description" class="custom-input2" clearable placeholder="请输入相关任务描述" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="任务类型" label-width="60px">
|
|
|
+ <el-form-item label="任务类型:" label-width="80px" prop="task_type">
|
|
|
<el-select
|
|
|
- v-model="newTask.task_type"
|
|
|
+ v-model="form.task_type"
|
|
|
placeholder="选择任务类型"
|
|
|
class="custom-select"
|
|
|
size="large"
|
|
@@ -17,48 +17,47 @@
|
|
|
clearable
|
|
|
filterable
|
|
|
>
|
|
|
- <el-option v-for="type in taskTypes" :key="type.id" :label="type.name" />
|
|
|
+ <el-option v-for="type in opt_task_type" :key="type.value" :label="type.text" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="执行单位" label-width="60px">
|
|
|
+ <el-form-item label="执行单位:" label-width="80px" prop="unit_name">
|
|
|
<el-select
|
|
|
- v-model="newTask.unit_name"
|
|
|
- placeholder="全部"
|
|
|
+ v-model="form.unit_name"
|
|
|
+ placeholder="选择执行单位"
|
|
|
class="custom-select"
|
|
|
size="large"
|
|
|
popper-class="custom-select-popper"
|
|
|
:teleported="false"
|
|
|
clearable
|
|
|
- filterable
|
|
|
- @input="fetchFilteredUnits"
|
|
|
- >
|
|
|
+ filterable>
|
|
|
<el-option v-for="unit in filteredUnits" :key="unit.id" :label="unit.unit_name" :value="unit.unit_name" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="执行人" label-width="60px">
|
|
|
- <el-input v-model="newTask.registrar" class="custom-input2" type="text" readonly />
|
|
|
+ <el-form-item label="执行人:" label-width="80px" prop="executor">
|
|
|
+ <el-input v-model="form.executor" class="custom-input2" type="text" placeholder="请输入执行人" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="登记人" label-width="60px">
|
|
|
- <el-input v-model="newTask.registrar" class="custom-input2" type="text" readonly />
|
|
|
+ <el-form-item label="登记人:" label-width="80px" prop="registrar">
|
|
|
+ <el-input v-model="form.registrar" class="custom-input2" type="text" readonly />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="联系电话" label-width="60px">
|
|
|
- <el-input v-model="newTask.contact_phone" class="custom-input2" placeholder="发布人的联系电话" />
|
|
|
+ <el-form-item label="联系电话:" label-width="80px" prop="contact_phone">
|
|
|
+ <el-input v-model="form.contact_phone" class="custom-input2" placeholder="发布人的联系电话" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="完成时限" label-width="60px">
|
|
|
+ <el-form-item label="完成时限:" label-width="80px" prop="expire_time">
|
|
|
<el-date-picker
|
|
|
- v-model="newTask.complete_time"
|
|
|
+ v-model="form.expire_time"
|
|
|
type="date"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
class="common-date-picker"
|
|
|
popper-class="common-date-popper"
|
|
|
- placeholder="选择完成时间"
|
|
|
+ placeholder="选择完成时限"
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="上传图片" label-width="60px">
|
|
|
- <FileUpload v-model="newTask.imgList" :file-type="['jpg', 'jpeg', 'png']" :limit="9" :file-size="5" class="upload-box" />
|
|
|
+ <el-form-item label="上传图片:" label-width="80px" prop="imgList">
|
|
|
+ <FileUpload v-model="form.imgList" :file-type="['jpg', 'jpeg', 'png']" :limit="9" :file-size="5" class="upload-box" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="上传文件" label-width="60px">
|
|
|
- <FileUpload v-model="newTask.fileList" :file-type="['mp4', 'avi', 'wmv']" :limit="6" :file-size="1024" class="upload-box" />
|
|
|
+ <el-form-item label="上传文件:" label-width="80px" prop="fileList">
|
|
|
+ <FileUpload v-model="form.fileList" :file-type="['mp4', 'avi', 'wmv']" :limit="6" :file-size="1024" class="upload-box" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -68,21 +67,44 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive, onMounted } from 'vue';
|
|
|
-import { addTask, getUnits, getUser } from '@/api/emergencyCommandMap/JointDuty.ts';
|
|
|
+import { addTask, getUnits, getUser } from '@/api/emergencyCommandMap/JointDuty';
|
|
|
+const proxy = getCurrentInstance()?.proxy;
|
|
|
|
|
|
-const taskTypes = ref([{ name: '事件处置' }, { name: '防范措施' }, { name: '险情处理' }, { name: '督办任务' }]);
|
|
|
-const newTask = reactive({
|
|
|
+const opt_task_type = [
|
|
|
+ { text: "事件处置", value: "0" },
|
|
|
+ { text: "防范措施", value: "1" },
|
|
|
+ { text: "险情处理", value: "2" },
|
|
|
+ { text: "督办任务", value: "3" }
|
|
|
+];
|
|
|
+// 表单初始数据
|
|
|
+const initFormData = {
|
|
|
task_description: '',
|
|
|
task_type: '',
|
|
|
unit_name: '',
|
|
|
registrar: '',
|
|
|
+ executor: '',
|
|
|
contact_phone: '',
|
|
|
- complete_time: '',
|
|
|
+ expire_time: '',
|
|
|
+ event_code: '',
|
|
|
imgList: [],
|
|
|
fileList: []
|
|
|
-});
|
|
|
-const units = ref([]);
|
|
|
+};
|
|
|
|
|
|
+const data = reactive({
|
|
|
+ form: { ...initFormData },
|
|
|
+ rules: {
|
|
|
+ task_description: [{ required: true, message: '任务描述不能为空', trigger: 'blur' }],
|
|
|
+ task_type: [{ required: true, message: '任务类型不能为空', trigger: 'blur' }],
|
|
|
+ unit_name: [{ required: true, message: '执行单位不能为空', trigger: 'blur' }],
|
|
|
+ registrar: [{ required: true, message: '登记人不能为空', trigger: 'blur' }],
|
|
|
+ executor: [{ required: true, message: '执行人不能为空', trigger: 'blur' }],
|
|
|
+ contact_phone: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
|
|
|
+ expire_time: [{ required: true, message: '完成时限不能为空', trigger: 'blur' }],
|
|
|
+ }
|
|
|
+});
|
|
|
+const taskFormRef = ref();
|
|
|
+const filteredUnits = ref([]);
|
|
|
+const { form, rules } = toRefs(data);
|
|
|
const props = defineProps<{
|
|
|
eventId?: string;
|
|
|
}>();
|
|
@@ -90,11 +112,11 @@ const props = defineProps<{
|
|
|
// 获取当前登录用户信息
|
|
|
const fetchUser = async () => {
|
|
|
try {
|
|
|
- const response = await getUser();
|
|
|
+ const response = await getUser({});
|
|
|
if (response.code === 200) {
|
|
|
- // 假设返回的用户信息中包含 username 字段
|
|
|
- newTask.registrar = response.data.user.userName;
|
|
|
- newTask.contact_phone = response.data.user.contactPhone;
|
|
|
+ form.value.registrar = response.data.user.nickName;
|
|
|
+ form.value.executor = response.data.user.nickName;
|
|
|
+ form.value.contact_phone = response.data.user.phonenumber;
|
|
|
} else {
|
|
|
console.error('获取用户信息失败:', response.msg);
|
|
|
}
|
|
@@ -105,9 +127,9 @@ const fetchUser = async () => {
|
|
|
|
|
|
const fetchUnits = async () => {
|
|
|
try {
|
|
|
- const response = await getUnits();
|
|
|
+ const response = await getUnits({});
|
|
|
if (response.code === 200) {
|
|
|
- units.value = response.data;
|
|
|
+ filteredUnits.value = response.data;
|
|
|
} else {
|
|
|
console.error('获取单位数据失败:', response.msg);
|
|
|
}
|
|
@@ -122,19 +144,20 @@ const closeDialog = () => {
|
|
|
emit('update:show', false);
|
|
|
};
|
|
|
|
|
|
-const confirmRegister = async () => {
|
|
|
- try {
|
|
|
- newTask.event_code = props.eventId;
|
|
|
- const response = await addTask(newTask);
|
|
|
- if (response.code === 200) {
|
|
|
- console.log('任务登记成功');
|
|
|
- closeDialog();
|
|
|
- } else {
|
|
|
- console.error('任务登记失败:', response.msg);
|
|
|
+const confirmRegister = () => {
|
|
|
+ taskFormRef.value?.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ form.value.event_code = props.eventId;
|
|
|
+ addTask(form.value).then((response)=>{
|
|
|
+ if (response.code === 200) {
|
|
|
+ proxy?.$modal.msgSuccess('任务登记成功');
|
|
|
+ closeDialog();
|
|
|
+ } else {
|
|
|
+ console.error('任务登记失败:', response.msg);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
- } catch (error) {
|
|
|
- console.error('请求任务登记失败:', error);
|
|
|
- }
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
onMounted(() => {
|