更新
This commit is contained in:
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user