This commit is contained in:
2026-04-29 10:16:25 +08:00
parent 557b8a6ae4
commit 9b2181ee3b
2 changed files with 50 additions and 24 deletions

View File

@ -18,20 +18,13 @@
<div v-for="alert in filteredAlerts" :key="alert.id" class="alert-card">
<!-- 等级标题和状态标签 -->
<div class="card-header">
<span class="status-tag" :class="getStatusClass(alert.taskStatus)">
{{ statusMap[alert.taskStatus] }}
</span>
<span class="status-tag" :class="getStatusClass(alert.taskStatus)">{{ statusMap[alert.taskStatus] }}</span>
</div>
<!-- 图片 -->
<div class="card-image">
<van-image :src="alert.imgUrl" fit="cover" class="alert-img" />
</div>
<div class="card-image"><van-image :src="alert.imgUrl" fit="cover" class="alert-img" /></div>
<div class="card-title-row">
<span class="level-tag" :class="getLevelClass(alert.eventLevel)">
{{ levelMap[alert.eventLevel] }}
</span>
<span class="level-tag" :class="getLevelClass(alert.eventLevel)">{{ levelMap[alert.eventLevel] }}</span>
<span class="alert-title">{{ alert.eventType }}</span>
</div>
@ -58,15 +51,7 @@
</van-button>
<!-- 待派发 - 显示定位打卡 -->
<!-- <van-button
block
round
type="primary"
class="action-btn"
@click="handleCheckIn(alert)"
>
定位打卡
</van-button> -->
<!-- <van-button @click="handleCheckIn(alert)" block round type="primary" class="action-btn"> 定位打卡 </van-button> -->
</div>
</div>
</van-list>

View File

@ -134,9 +134,9 @@
<!-- 底部按钮 - 未执行状态 -->
<div v-if="allDetail.taskStatus == '0'" class="action-bar">
<!-- <div v-if="allDetail.taskStatus == '0'" class="action-bar">
<van-button block round type="primary" class="action-btn" @click="handleCheckIn">定位打卡</van-button>
</div>
</div> -->
<!-- 底部按钮 - 执行中状态 -->
<div v-if="allDetail.taskStatus == '1'" class="action-bar">
@ -164,12 +164,16 @@
<script setup>
import TopNav from "@/components/topNav.vue";
import { hintToast } from "@/utils/tools";
import { clockIn } from "@/api/traffic";
import { ref, computed, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { getTrafficEventDetail, interceptNotSuccess } from "@/api/traffic";
const router = useRouter();
const route = useRoute();
const isLocationVerified = ref(false);
const locationCoords = ref("");
const location = ref("正在获取位置...");
// 获取URL参数
const violationId = route.query.id || "1";
const status = route.query.status || "未执行";
@ -208,12 +212,13 @@ const fetchDetail = async () => {
try {
const res = await getTrafficEventDetail(violationId);
if (res) {
const data = res.data || res;
// 处理详情数据
const data = res.data || res; // 处理详情数据
violationDetail.value = data.eventDetailVO;
taskDetail.value = data.eventDetailVO.tasksVo;
allDetail.value = data
checkinAlerts.value = data.interceptWarns || [];
// 未执行状态 === 自动打卡
if(allDetail.taskStatus == '0') handlePunchIn();
}
} catch (error) {
console.error("获取详情失败:", error);
@ -221,6 +226,41 @@ const fetchDetail = async () => {
loading.value = false;
}
};
// 提交打卡
function handlePunchIn() {
try{
let data = {
taskId:violationId,
address: '测试',
// address: location.value,
clickLatLong: "1,1",
// clickLatLong: locationCoords.value,
}
clockIn(data).then(() => {
hintToast("打卡成功");
}).catch((e) => {
hintToast(e || "打卡失败");
})
}catch{
}
}
// 获取实际位置
function initLocation() {
try {
const loc = JSON.parse(bridge.getLocation());
const addr = loc.address || loc.addr || "";
location.value = addr || "未知位置";
locationCoords.value = `${loc.app_x},${loc.app_y}`;
isLocationVerified.value = !!(loc.app_x && loc.app_y);
} catch (e) {
location.value = "获取位置失败";
isLocationVerified.value = false;
}
}
// 状态标签样式
const statusTagClass = computed(() => {
if (status === "执行中") return "status-blue";
@ -288,6 +328,7 @@ function handlePlateMatch(matched) {
}
// 页面初始化
onMounted(() => {
initLocation();
fetchDetail();
});
</script>