@@ -138,9 +150,8 @@
import { showConfirmDialog, showSuccessToast, showDialog } from 'vant';
import { getReserveList, getReserveDetail, approveReserve, rejectReserveBySystem, getReserveGroupMembers } from '@/api/enforcement/reserve';
-const selectedId = ref(null);
-const groupMembers = ref([]); // 选中卡片的同组关联计划
-const groupLoading = ref(false);
+const groupMembersMap = ref({}); // key=item.id, value=关联计划列表
+const groupLoadingSet = ref(new Set());
const reserveList = ref([]);
const loading = ref(false);
const finished = ref(false);
@@ -181,6 +192,17 @@ const getPlanTimeText = (time) => {
return map[time] || '';
};
+// 格式化执法人员信息(姓名+电话多行展示)
+const formatUserInfo = (names, tels) => {
+ if (!names) return '-';
+ const nameArr = names.split(',');
+ const telArr = tels ? tels.split(',') : [];
+ return nameArr.map((n, i) => {
+ const tel = telArr[i] ? ' ' + telArr[i].trim() : '';
+ return n.trim() + tel;
+ }).join('\n');
+};
+
// 格式化日期(带时分)
const formatDate = (dateStr) => {
if (!dateStr) return '-';
@@ -210,37 +232,13 @@ const onLoad = () => {
fetchList();
};
-// 选中卡片(再次点击取消选中)
-const onSelectCard = (item) => {
- if (selectedId.value === item.id) {
- selectedId.value = null;
- groupMembers.value = [];
- return;
- }
- selectedId.value = item.id;
- groupMembers.value = [];
- // 加载同组关联计划
- if (item.planGroupId) {
- groupLoading.value = true;
- getReserveGroupMembers(
- item.planGroupId,
- item.id,
- (res) => {
- groupLoading.value = false;
- if (res.code === 200) {
- groupMembers.value = res.data || [];
- }
- },
- () => { groupLoading.value = false; }
- );
- }
-};
-
// 下拉刷新
const onRefresh = () => {
pageNum.value = 1;
finished.value = false;
reserveList.value = [];
+ groupMembersMap.value = {};
+ groupLoadingSet.value = new Set();
fetchList();
};
@@ -274,6 +272,8 @@ const fetchList = () => {
} else {
pageNum.value++;
}
+ // 第二次请求:自动加载关联计划
+ loadGroupMembers(rows);
} else {
finished.value = true;
}
@@ -286,6 +286,28 @@ const fetchList = () => {
);
};
+// 自动加载关联计划(第二次请求)
+const loadGroupMembers = (rows) => {
+ const itemsWithGroup = rows.filter(item => item.planGroupId && !groupMembersMap.value[item.id]);
+ if (itemsWithGroup.length === 0) return;
+ itemsWithGroup.forEach(item => {
+ groupLoadingSet.value.add(item.id);
+ getReserveGroupMembers(
+ item.planGroupId,
+ item.id,
+ (res) => {
+ groupLoadingSet.value.delete(item.id);
+ if (res.code === 200) {
+ groupMembersMap.value[item.id] = res.data || [];
+ }
+ },
+ () => {
+ groupLoadingSet.value.delete(item.id);
+ }
+ );
+ });
+};
+
// 查看备注
const onShowMessage = (item) => {
showDialog({
@@ -348,7 +370,8 @@ const buildTimeOptions = (item) => {
});
}
// 关联计划的时间
- for (const member of groupMembers.value) {
+ const members = groupMembersMap.value[item.id] || [];
+ for (const member of members) {
if (member.planDate) {
options.push({
bureauDeptName: member.bureauDeptName || '-',
@@ -374,7 +397,7 @@ const doApprove = (id, params) => {
approveReserve(id, params, (res) => {
if (res.code === 200) {
showSuccessToast('已同意');
- afterOperate();
+ onRefresh();
} else {
showDialog({ title: '提示', message: res.msg || '操作失败' });
}
@@ -390,21 +413,13 @@ const onReject = (item) => {
rejectReserveBySystem(item.id, (res) => {
if (res.code === 200) {
showSuccessToast('已拒绝');
- afterOperate();
+ onRefresh();
} else {
showDialog({ title: '提示', message: res.msg || '操作失败' });
}
});
}).catch(() => {});
};
-
-// 操作后置处理
-const afterOperate = () => {
- selectedId.value = null;
- groupMembers.value = [];
- pendingApproveItem.value = null;
- onRefresh();
-};