|
@@ -29,12 +29,25 @@
|
|
|
popper-class="custom-select-popper"
|
|
|
:teleported="false"
|
|
|
clearable
|
|
|
- filterable>
|
|
|
- <el-option v-for="unit in filteredUnits" :key="unit.id" :label="unit.unit_name" :value="unit.unit_name" />
|
|
|
+ filterable
|
|
|
+ @change="handleUnitChange"
|
|
|
+ >
|
|
|
+ <el-option v-for="unit in filteredUnits" :key="unit.unitId" :label="unit.unit_name" :value="unit.unit_name" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="执行人:" label-width="80px" prop="executor">
|
|
|
- <el-input v-model="form.executor" class="custom-input2" type="text" placeholder="请输入执行人" />
|
|
|
+ <el-select
|
|
|
+ v-model="form.executor"
|
|
|
+ placeholder="请选择执行人"
|
|
|
+ class="custom-select"
|
|
|
+ size="large"
|
|
|
+ popper-class="custom-select-popper"
|
|
|
+ :teleported="false"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option v-for="user in executorList" :key="user.userId" :label="user.nickName" :value="user.nickName" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="登记人:" label-width="80px" prop="registrar">
|
|
|
<el-input v-model="form.registrar" class="custom-input2" type="text" readonly />
|
|
@@ -67,14 +80,14 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive, onMounted } from 'vue';
|
|
|
-import { addTask, getUnits, getUser } from '@/api/emergencyCommandMap/JointDuty';
|
|
|
+import { addTask, getUnits, getUser, getUserList } from '@/api/emergencyCommandMap/JointDuty';
|
|
|
const proxy = getCurrentInstance()?.proxy;
|
|
|
|
|
|
const opt_task_type = [
|
|
|
- { text: "事件处置", value: "0" },
|
|
|
- { text: "防范措施", value: "1" },
|
|
|
- { text: "险情处理", value: "2" },
|
|
|
- { text: "督办任务", value: "3" }
|
|
|
+ { text: '事件处置', value: '0' },
|
|
|
+ { text: '防范措施', value: '1' },
|
|
|
+ { text: '险情处理', value: '2' },
|
|
|
+ { text: '督办任务', value: '3' }
|
|
|
];
|
|
|
// 表单初始数据
|
|
|
const initFormData = {
|
|
@@ -99,11 +112,12 @@ const data = reactive({
|
|
|
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' }],
|
|
|
+ expire_time: [{ required: true, message: '完成时限不能为空', trigger: 'blur' }]
|
|
|
}
|
|
|
});
|
|
|
const taskFormRef = ref();
|
|
|
const filteredUnits = ref([]);
|
|
|
+const executorList = ref([]);
|
|
|
const { form, rules } = toRefs(data);
|
|
|
const props = defineProps<{
|
|
|
eventId?: string;
|
|
@@ -115,7 +129,6 @@ const fetchUser = async () => {
|
|
|
const response = await getUser({});
|
|
|
if (response.code === 200) {
|
|
|
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);
|
|
@@ -127,9 +140,18 @@ const fetchUser = async () => {
|
|
|
|
|
|
const fetchUnits = async () => {
|
|
|
try {
|
|
|
- const response = await getUnits({});
|
|
|
+ const response = await getUserList({});
|
|
|
if (response.code === 200) {
|
|
|
- filteredUnits.value = response.data;
|
|
|
+ const units = new Map();
|
|
|
+ response.rows.forEach((unit) => {
|
|
|
+ if (!units.has(unit.deptName)) {
|
|
|
+ units.set(unit.deptName, {
|
|
|
+ unitId: unit.deptId,
|
|
|
+ unit_name: unit.deptName
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ filteredUnits.value = Array.from(units.values());
|
|
|
} else {
|
|
|
console.error('获取单位数据失败:', response.msg);
|
|
|
}
|
|
@@ -138,6 +160,29 @@ const fetchUnits = async () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const fetchUsers = async (deptId) => {
|
|
|
+ try {
|
|
|
+ const response = await getUserList({ deptId });
|
|
|
+ if (response.code === 200 && response.rows && Array.isArray(response.rows)) {
|
|
|
+ executorList.value = response.rows.map((user) => ({
|
|
|
+ userId: user.userId,
|
|
|
+ nickName: user.nickName
|
|
|
+ }));
|
|
|
+ } else {
|
|
|
+ console.error('获取用户列表失败:', response);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('请求用户列表失败:', error);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const handleUnitChange = async (newUnitName) => {
|
|
|
+ const selectedUnit = filteredUnits.value.find((unit) => unit.unit_name === newUnitName);
|
|
|
+ if (selectedUnit) {
|
|
|
+ await fetchUsers(selectedUnit.unitId);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const emit = defineEmits(['update:show']);
|
|
|
|
|
|
const closeDialog = () => {
|
|
@@ -148,13 +193,13 @@ 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);
|
|
|
- }
|
|
|
+ addTask(form.value).then((response) => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ proxy?.$modal.msgSuccess('任务登记成功');
|
|
|
+ closeDialog();
|
|
|
+ } else {
|
|
|
+ console.error('任务登记失败:', response.msg);
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
});
|
|
@@ -163,6 +208,7 @@ const confirmRegister = () => {
|
|
|
onMounted(() => {
|
|
|
fetchUser();
|
|
|
fetchUnits();
|
|
|
+ fetchUsers();
|
|
|
});
|
|
|
</script>
|
|
|
|