feat: new api
This commit is contained in:
@@ -107,7 +107,13 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="区域" prop="regionId">
|
||||
<el-select v-model="form.regionId" placeholder="请选择区域" filterable style="width: 100%">
|
||||
<el-select
|
||||
v-model="form.regionId"
|
||||
placeholder="请选择任务模板后自动填充"
|
||||
filterable
|
||||
style="width: 100%"
|
||||
:disabled="!!form.taskId && !form.id"
|
||||
>
|
||||
<el-option v-for="region in regionOptions" :key="region.id" :label="region.regionName" :value="region.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -121,7 +127,8 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!-- 仅编辑时显示状态字段 -->
|
||||
<el-col v-if="form.id" :span="12">
|
||||
<el-form-item label="执行状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择状态" style="width: 100%">
|
||||
<el-option label="待执行" value="pending" />
|
||||
@@ -134,34 +141,90 @@
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="left">执行角色</el-divider>
|
||||
|
||||
<!-- 操作人和监护人 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="操作人" prop="operatorName">
|
||||
<el-input v-model="form.operatorName" placeholder="请输入操作人姓名" />
|
||||
<el-input
|
||||
v-model="form.operatorName"
|
||||
placeholder="请选择操作人"
|
||||
readonly
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="User" @click="operatorSelectRef.open()" />
|
||||
<el-button v-if="form.operatorName" icon="Close" @click="clearUser('operator')" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="监护人" prop="custodianName">
|
||||
<el-input v-model="form.custodianName" placeholder="请输入监护人姓名" />
|
||||
<el-input
|
||||
v-model="form.custodianName"
|
||||
placeholder="请选择监护人"
|
||||
readonly
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="User" @click="custodianSelectRef.open()" />
|
||||
<el-button v-if="form.custodianName" icon="Close" @click="clearUser('custodian')" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 送电人和受电人 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="送电人" prop="senderName">
|
||||
<el-input v-model="form.senderName" placeholder="请输入送电人姓名" />
|
||||
<el-input
|
||||
v-model="form.senderName"
|
||||
placeholder="请选择送电人"
|
||||
readonly
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="User" @click="senderSelectRef.open()" />
|
||||
<el-button v-if="form.senderName" icon="Close" @click="clearUser('sender')" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="受电人" prop="recipientName">
|
||||
<el-input v-model="form.recipientName" placeholder="请输入受电人姓名" />
|
||||
<el-input
|
||||
v-model="form.recipientName"
|
||||
placeholder="请选择受电人"
|
||||
readonly
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="User" @click="recipientSelectRef.open()" />
|
||||
<el-button v-if="form.recipientName" icon="Close" @click="clearUser('recipient')" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 指挥人 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="指挥人" prop="commanderName">
|
||||
<el-input v-model="form.commanderName" placeholder="请输入指挥人姓名" />
|
||||
<el-input
|
||||
v-model="form.commanderName"
|
||||
placeholder="请选择指挥人"
|
||||
readonly
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="User" @click="commanderSelectRef.open()" />
|
||||
<el-button v-if="form.commanderName" icon="Close" @click="clearUser('commander')" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -173,18 +236,27 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 用户选择组件 -->
|
||||
<UserSelect ref="operatorSelectRef" :multiple="false" @confirmCallBack="handleOperatorSelect" />
|
||||
<UserSelect ref="custodianSelectRef" :multiple="false" @confirmCallBack="handleCustodianSelect" />
|
||||
<UserSelect ref="senderSelectRef" :multiple="false" @confirmCallBack="handleSenderSelect" />
|
||||
<UserSelect ref="recipientSelectRef" :multiple="false" @confirmCallBack="handleRecipientSelect" />
|
||||
<UserSelect ref="commanderSelectRef" :multiple="false" @confirmCallBack="handleCommanderSelect" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ArExecution" lang="ts">
|
||||
import { listArExecution, getArExecution, delArExecution, addArExecution, updateArExecution } from '@/api/inspection/execution';
|
||||
import { ArExecutionVO, ArExecutionQuery, ArExecutionForm } from '@/api/inspection/execution/types';
|
||||
import { listArTask } from '@/api/inspection/task';
|
||||
import { listArTask, getArTask } from '@/api/inspection/task';
|
||||
import { ArTaskVO } from '@/api/inspection/task/types';
|
||||
import { listArRegion } from '@/api/inspection/region';
|
||||
import { ArRegionVO } from '@/api/inspection/region/types';
|
||||
import { listArDevice } from '@/api/inspection/device';
|
||||
import { ArDeviceVO } from '@/api/inspection/device/types';
|
||||
import { UserVO } from '@/api/system/user/types';
|
||||
import UserSelect from '@/components/UserSelect/index.vue';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -203,6 +275,12 @@ const total = ref(0);
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const executionFormRef = ref<ElFormInstance>();
|
||||
|
||||
const operatorSelectRef = ref();
|
||||
const custodianSelectRef = ref();
|
||||
const senderSelectRef = ref();
|
||||
const recipientSelectRef = ref();
|
||||
const commanderSelectRef = ref();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
@@ -369,6 +447,90 @@ const handleExport = () => {
|
||||
);
|
||||
};
|
||||
|
||||
/** 监听任务模板变化,自动填充区域 */
|
||||
watch(() => form.value.taskId, async (newTaskId) => {
|
||||
if (newTaskId && !form.value.id) { // 仅新增时自动填充
|
||||
try {
|
||||
const res = await getArTask(newTaskId);
|
||||
if (res.data && res.data.regionId) {
|
||||
form.value.regionId = res.data.regionId;
|
||||
const region = regionOptions.value.find(r => r.id === res.data.regionId);
|
||||
if (region) {
|
||||
proxy?.$modal.msgSuccess(`已自动填充区域:${region.regionName}`);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取任务模板详情失败', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/** 操作人选择回调 */
|
||||
const handleOperatorSelect = (users: UserVO[]) => {
|
||||
if (users && users.length > 0) {
|
||||
form.value.operatorId = users[0].userId;
|
||||
form.value.operatorName = users[0].nickName;
|
||||
}
|
||||
};
|
||||
|
||||
/** 监护人选择回调 */
|
||||
const handleCustodianSelect = (users: UserVO[]) => {
|
||||
if (users && users.length > 0) {
|
||||
form.value.custodianId = users[0].userId;
|
||||
form.value.custodianName = users[0].nickName;
|
||||
}
|
||||
};
|
||||
|
||||
/** 送电人选择回调 */
|
||||
const handleSenderSelect = (users: UserVO[]) => {
|
||||
if (users && users.length > 0) {
|
||||
form.value.senderId = users[0].userId;
|
||||
form.value.senderName = users[0].nickName;
|
||||
}
|
||||
};
|
||||
|
||||
/** 受电人选择回调 */
|
||||
const handleRecipientSelect = (users: UserVO[]) => {
|
||||
if (users && users.length > 0) {
|
||||
form.value.recipientId = users[0].userId;
|
||||
form.value.recipientName = users[0].nickName;
|
||||
}
|
||||
};
|
||||
|
||||
/** 指挥人选择回调 */
|
||||
const handleCommanderSelect = (users: UserVO[]) => {
|
||||
if (users && users.length > 0) {
|
||||
form.value.commanderId = users[0].userId;
|
||||
form.value.commanderName = users[0].nickName;
|
||||
}
|
||||
};
|
||||
|
||||
/** 清空人员选择 */
|
||||
const clearUser = (role: 'operator' | 'custodian' | 'sender' | 'recipient' | 'commander') => {
|
||||
switch (role) {
|
||||
case 'operator':
|
||||
form.value.operatorId = undefined;
|
||||
form.value.operatorName = undefined;
|
||||
break;
|
||||
case 'custodian':
|
||||
form.value.custodianId = undefined;
|
||||
form.value.custodianName = undefined;
|
||||
break;
|
||||
case 'sender':
|
||||
form.value.senderId = undefined;
|
||||
form.value.senderName = undefined;
|
||||
break;
|
||||
case 'recipient':
|
||||
form.value.recipientId = undefined;
|
||||
form.value.recipientName = undefined;
|
||||
break;
|
||||
case 'commander':
|
||||
form.value.commanderId = undefined;
|
||||
form.value.commanderName = undefined;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getOptions();
|
||||
getList();
|
||||
|
||||
Reference in New Issue
Block a user