This commit is contained in:
dhr
2025-09-30 17:57:19 +08:00
parent fe0ffbdf11
commit 0022ca0d01
10 changed files with 433 additions and 223 deletions

View File

@ -33,21 +33,11 @@
<el-option label="已完成" value="completed"></el-option>
</el-select>
</div>
<div class="filter-item">
<el-select v-model="planType" placeholder="全部计划">
<el-option label="全部计划" value="all"></el-option>
<el-option label="每日巡检计划" value="daily"></el-option>
<el-option label="每周巡检计划" value="weekly"></el-option>
<el-option label="每月巡检计划" value="monthly"></el-option>
<el-option label="每季度巡检计划" value="quarterly"></el-option>
</el-select>
</div>
<div class="filter-item">
<el-select v-model="executor" placeholder="执行人">
<el-option label="全部人员" value="all"></el-option>
<el-option label="张明" value="zhangming"></el-option>
<el-option label="李华" value="lihua"></el-option>
<el-option label="王强" value="wangqiang"></el-option>
<el-select v-model="executor" placeholder="维修人" :loading="loadingUsers">
<el-option label="全部维修人" value="all"></el-option>
<el-option v-for="user in usersList" :key="user.id" :label="user.name" :value="user.id"></el-option>
</el-select>
</div>
<div class="filter-actions">
@ -427,7 +417,7 @@ import router from '@/router';
import { ElMessage } from 'element-plus';
import { qiangxiuDetail, qiangxiulist, addqiangxiu, updateqiangxiu } from '@/api/zhinengxunjian/qiangxiu';
import { xunjianUserlist } from '@/api/zhinengxunjian/xunjian';
const taskStatus = ref('all');
const taskStatus = ref('');
const planType = ref('all');
const executor = ref('all');
const keyword = ref('');
@ -987,12 +977,13 @@ const handleSaveResult = async () => {
}
};
// 状态映射辅助函数
// 状态映射辅助函数 - 严格匹配JSON数据中的status字段
function mapStatusToKey(status) {
const statusMap = {
'1': 'pending', // 待处理
'2': 'executing', // 处理中
'3': 'completed' // 已完成
'3': 'completed', // 已完成
'4': 'delayed' // 已延期
};
return statusMap[status] || 'pending';
}
@ -1085,21 +1076,43 @@ async function getTaskList() {
projectId: 1,
pageNum: currentPage.value,
pageSize: pageSize.value
// 严格匹配JSON数据结构
};
// 添加任务状态筛选条件
// 添加任务状态筛选条件 - 严格匹配JSON数据中的status字段
if (taskStatus.value && taskStatus.value !== 'all') {
requestParams.status = taskStatus.value;
// 状态映射pending -> 1(待处理), executing -> 2(处理中), completed -> 3(已完成), delayed -> 4(已延期)
const statusMap = {
'pending': '1',
'executing': '2',
'completed': '3',
'delayed': '4'
};
requestParams.status = statusMap[taskStatus.value] || taskStatus.value;
}
// 添加计划类型筛选条件
// 添加故障类型筛选条件 - 严格匹配JSON数据中的type字段
if (planType.value && planType.value !== 'all') {
requestParams.planType = planType.value;
// 类型映射electric -> 1(电力故障), device -> 2(设备故障), software -> 3(软件故障), network -> 4(网络故障), environment -> 5(环境问题)
const typeMap = {
'electric': '1',
'device': '2',
'software': '3',
'network': '4',
'environment': '5'
};
requestParams.type = typeMap[planType.value] || planType.value;
}
// 添加执行人筛选条件
// 添加维修人员筛选条件 - 严格匹配JSON数据中的sendPerson字段
if (executor.value && executor.value !== 'all') {
requestParams.executor = executor.value;
// 直接使用用户ID作为sendPerson参数
requestParams.sendPerson = executor.value;
}
// 添加关键词搜索条件
if (keyword.value && keyword.value.trim()) {
requestParams.keyword = keyword.value.trim();
}
const res = await qiangxiulist(requestParams);
@ -1114,38 +1127,40 @@ async function getTaskList() {
leftLineClass: getLeftLineClass(item.status, item.level),
priorityClass: getPriorityClass(item.level),
priority: getPriorityText(item.level),
// 修复报修时间字段名,使用与模板一致的createTime
// 严格匹配JSON数据中的createTime字段
createTime: formatDate(item.createTime),
// 修复报修人字段,使用reportName
// 严格匹配JSON数据中的reportName字段
reporter: item.reportName || '未知报修人',
// 修复维修人字段,从sendPersonVo对象中获取用户名
// 严格匹配JSON数据中的sendPerson和sendPersonVo字段
maintainer: item.sendPersonVo?.userName || '未分配',
completeTime: item.reportFinishTime ? formatDate(item.reportFinishTime) : '',
actionText: getActionText(item.status),
actionClass: getActionClass(item.status),
reportInfo: item.reportInfo,
position: item.position,
fileUrl: item.fileUrl,
reportInfo: item.reportInfo || '',
position: item.position || '',
fileUrl: item.fileUrl || '',
reportPhone: item.reportPhone || '',
type: item.type || '',
// 保留原始数据用于详情查看
sendPersonVo: item.sendPersonVo,
faultType: getFaultTypeText(item.type),
// 保留expectedTime字段用于任务修改
expectedTime: item.expectedTime || '',
// 添加needSupport字段确保从API返回数据中获取实际值
needSupport: item.support || ''
// 严格匹配JSON数据中的expectedTime字段
expectedTime: item.expectedTime ? formatDate(item.expectedTime) : '',
// 严格匹配JSON数据中的support字段
needSupport: item.support || '',
// 添加额外的原始字段用于筛选和展示
sendPerson: item.sendPerson,
level: item.level,
createBy: item.createBy
}));
// 关键词过滤
const kw = keyword.value.trim().toLowerCase();
const filtered = kw
? mapped.filter((t) =>
[t.title, t.reporter, t.maintainer, t.position, t.statusText]
.filter(Boolean)
.some((v) => String(v).toLowerCase().includes(kw))
[t.title, t.reporter, t.maintainer, t.position, t.statusText].filter(Boolean).some((v) => String(v).toLowerCase().includes(kw))
)
: mapped;
@ -1180,6 +1195,7 @@ function getFaultTypeText(type) {
// 初始化时调用接口获取数据
setTimeout(() => {
getTaskList();
getUsersList(); // 获取用户列表用于维修人筛选
}, 0);
</script>