吉安感知网项目-前端
张含笑
2026-01-14 b787a9ce7788cc320b1682bfb1b0353b89e48a8c
feat:工单
4 files modified
785 ■■■■■ changed files
applications/mobile-web-view/src/appComponents/workMap/index.vue 295 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/appPages/work/workDetail/mapWork/index.vue 46 ●●●● patch | view | raw | blame | history
uniapps/work-app/src/pages/work/index.vue 408 ●●●●● patch | view | raw | blame | history
uniapps/work-app/src/subPackages/workDetail/index.vue 36 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/appComponents/workMap/index.vue
@@ -1,77 +1,21 @@
<template>
    <div class="page-container">
        <div class="map" id="map"></div>
        <div class="weather-box" v-show="weatherShow">
            <div class="icon">
                <van-image :src="WEATHER?.[weather] || ''" width="100%" height="100%"></van-image>
            </div>
            <div class="content">
                <span class="tq">{{ weather }} {{ temperature }}</span>
                <span class="tq">风速:{{ windVelocity }}</span>
            </div>
        </div>
        <div class="back-btn" @click="goBackWork" v-show="workNavigationShow">
            <van-image width="20" height="20" :src="backIcon" />
            <div class="label">返回</div>
        </div>
        <div class="layer-btn" @click="layerChangePopupShow = true" v-show="layerShow">
            <van-image width="20" height="20" :src="layerIcon" />
            <div class="label">图层</div>
        </div>
        <div class="location-btn" @click="setMapLocation" v-show="locationShow">
            <van-image width="20" height="20" :src="locationIcon" />
            <div class="label">定位</div>
        </div>
        <!-- 事件导航按钮 -->
        <div class="work-btn" v-show="workNavigationShow">
            <van-button round block type="primary" color="#1D6FE9" @click="openAmap">事件导航</van-button>
        </div>
        <slot name="searchBar"></slot>
        <slot name="eventNav"></slot>
        <van-popup v-model:show="layerChangePopupShow" position="bottom" round>
            <div class="popup-container">
                <div class="category-content">
                    <div class="header">
                        <div class="title">底图切换</div>
                    </div>
                    <div class="content">
                        <div
                            class="layer-box"
                            :class="{ on: setSelectMapLayerKey === item.key }"
                            v-for="(item, ind) in layers"
                            :key="ind"
                            @click="setMapLayer(item)"
                        >
                            <div class="image">
                                <van-image :src="item.src" width="100%" height="100%"></van-image>
                            </div>
                            <div class="label">{{ item.name }}</div>
                        </div>
                    </div>
                <div class="location-btn" @click="setMapLocation" v-show="locationShow">
                    <van-image width="20" height="20" :src="locationIcon" />
                    <div class="label">定位</div>
                </div>
            </div>
        </van-popup>
    </div>
</template>
<script setup>
import { searchGeocoder } from '@/utils/util'
import mapnavIcon from '@/appDataSource/appwork/mapnav.svg'
import backIcon from '@/appDataSource/leafletMapIcon/back-icon.svg'
import incidentPoint from '@/appDataSource/appwork/positioning.svg'
import droneIcon from '@/appDataSource/leafletMapIcon/drone-icon.svg'
import userLocationIcon from '@/appDataSource/leafletMapIcon/user-location.svg'
import layerIcon from '@/appDataSource/leafletMapIcon/layer-icon.svg'
import locationIcon from '@/appDataSource/leafletMapIcon/location-icon.svg'
import { useStore } from 'vuex'
import { getDroneSuggest } from '@/api/home/common'
import DroneMarkerPopup from '@/appComponents/DroneMarkerPopup/index.vue'
import EventMarkerPopup from '@/appComponents/EventMarkerPopup/index.vue'
import { basemapLayer0, basemapLayer1, basemapLayer2, basemapLayer3 } from '@/const/leafletConst'
import L from 'leaflet'
@@ -79,24 +23,12 @@
import sl from '@/appDataSource/leafletMapIcon/sl.svg'
import yx from '@/appDataSource/leafletMapIcon/yx.svg'
import EventBus from '@/utils/eventBus'
import { polygonTransformScale } from '@/utils/turfFunc'
import { getEventImage } from '@/utils/stateToImageMap/event'
import { getDroneStatusImage } from '@/utils/stateToImageMap/drone'
import { WEATHER } from '@/const/weather'
import { wgs84ToGcj02 } from '@/utils/coordinateTransformation'
const emit = defineEmits(['location-selected'])
import _ from 'lodash'
import { useAreaBoundary } from '@/hooks/useAreaBoundary'
const { weatherShow, layerShow, locationShow, createWorkShow, workNavigationShow, mapCurrentDetail, clearMarker } =
const {  locationShow, createWorkShow, workNavigationShow, mapCurrentDetail, clearMarker } =
    defineProps({
        weatherShow: {
            type: Boolean,
            default: false,
        },
        layerShow: {
            type: Boolean,
            default: false,
        },
        locationShow: {
            type: Boolean,
            default: false,
@@ -140,9 +72,7 @@
    },
]
const layerChangePopupShow = ref(false)
const setSelectMapLayerKey = ref(1) // 选择的地图图层
let boundaryInstance = useAreaBoundary({ initFly: true })
let markersLayer = null
const initMap = () => {
    if (map) return
@@ -155,7 +85,6 @@
        doubleClickZoom: false,
        editable: true, //绘制控件
    }).setView([25.992338, 114.823254], 13)
    boundaryInstance.initBoundary(map)
    markersLayer = L.layerGroup().addTo(map) // 创建一个标注层,便于管理和移除
    if (createWorkShow) {
@@ -311,29 +240,6 @@
const store = useStore()
const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
const weather = ref('')
// 风速
const windVelocity = ref('')
const temperature = ref('')
// 获取天气建议
const getWeatherSuggest = () => {
    getDroneSuggest({ areaCode: selectedAreaCode.value }).then(res => {
        if (res.data.code !== 0) return
        weather.value = res.data.data.weather
        windVelocity.value = res.data.data.windPower
        temperature.value = res.data.data.temperature
    })
}
const goBackWork = () => {
    const transmitData = { data: { type: 'workDetailback' } }
    wx.miniProgram.navigateBack({
      delta: 1,
    })
    wx.miniProgram.postMessage(transmitData)
    uni.postMessage(transmitData)
    markersLayer.removeLayer(incidentMarker)
}
// 存储事件点标记实例,用于后续更新或移除
let incidentMarker = null
@@ -398,28 +304,8 @@
    { immediate: true, deep: true }
)
const openAmap = () => {
    if (!mapCurrentDetailData.value.longitude || !mapCurrentDetailData.value.latitude) {
        showToast('未获取到事件坐标')
        return
    }
    // wgs84ToGcj02(Number(item.longitude), Number(item.latitude))
    // wgs84ToGcj02(mapCurrentDetailData.value.longitude, mapCurrentDetailData.value.latitude)
    const [gcjLng, gcjLat] = wgs84ToGcj02(
        Number(mapCurrentDetailData.value.longitude),
        Number(mapCurrentDetailData.value.latitude)
    )
    // 高德地图URL Scheme
    const url = `https://uri.amap.com/marker?position=${gcjLng},${gcjLat}&name=%E4%BA%8B%E4%BB%B6%E7%82%B9&from='ztzf'`
    const transmitData = { data: { type: 'browser', data: { url: url } } }
    wx.miniProgram.navigateTo({ url: `/subPackages/browser/index?url=${encodeURIComponent(url)}` })
    wx.miniProgram.postMessage(transmitData)
    uni.postMessage(transmitData)
}
onMounted(async () => {
    getWeatherSuggest()
    await nextTick()
    initMap()
@@ -453,83 +339,7 @@
        width: 100%;
        height: 100%;
    }
    // 事件导航按钮
    .work-btn {
        position: absolute;
        bottom: 80px;
        left: 0;
        right: 0;
        z-index: 996;
        padding: 0 16px;
        display: flex;
        justify-content: center;
    }
    .work-btn :deep(.van-button) {
        width: 100%;
        max-width: 194px;
        height: 38px;
    }
    .weather-box {
        padding: 4px 0;
        padding-right: 6px;
        display: flex;
        justify-content: center;
        align-items: center;
        position: absolute;
        top: 12px;
        left: 12px;
        height: 48px;
        background: #fff;
        z-index: 996;
        box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.18);
        border-radius: 6px 6px 6px 6px;
        .icon {
            margin-left: 10px;
            width: 24px;
            height: 24px;
        }
        .content {
            height: 100%;
            margin-left: 4px;
            display: flex;
            flex-direction: column;
            justify-content: space-around;
            font-family: Source Han Sans CN, Source Han Sans CN;
            font-weight: 400;
            font-size: 12px;
            color: #757575;
            text-align: left;
            font-style: normal;
            text-transform: none;
        }
        .tq {
            margin: 0 5px;
        }
        .qk {
            margin-left: 5px;
            color: #04f043;
        }
        .yellowqk {
            margin-left: 5px;
            color: yellow;
        }
        .redqk {
            margin-left: 5px;
            color: red;
        }
    }
    .location-btn,
    .layer-btn,
    .back-btn {
    .location-btn{
        display: flex;
        flex-direction: column;
        justify-content: center;
@@ -547,99 +357,8 @@
            font-size: 10px;
        }
    }
    .back-btn {
        bottom: 185px;
    }
    .layer-btn {
        bottom: 130px;
    }
    .location-btn {
        bottom: 76px;
    }
}
.popup-container {
    padding: 10px 22px;
    background: #fff;
    border-radius: 12px 12px 0 0;
    .category-content {
        .header {
            height: 20px;
            font-family: Source Han Sans CN, Source Han Sans CN;
            font-weight: bold;
            font-size: 16px;
            color: #222324;
            line-height: 20px;
            text-align: left;
            font-style: normal;
            text-transform: none;
        }
        .content {
            padding: 12px;
            display: flex;
            background: #fff;
            border-radius: 16px;
            .layer-box {
                margin-left: calc((100% / 3 - 84px) * 3 / 2);
                &:first-child {
                    margin-left: 0;
                }
                &.on {
                    .image {
                        position: relative;
                        &::after {
                            content: '';
                            position: absolute;
                            top: 0;
                            left: 0;
                            width: 100%;
                            height: 100%;
                            border-radius: 4px 4px 4px 4px;
                            border: 4px solid #1d6fe9;
                            z-index: 1;
                            box-sizing: border-box;
                        }
                    }
                    .label {
                        color: #1d6fe9;
                    }
                }
                .image {
                    width: 84px;
                    height: 82px;
                    border-radius: 4px 4px 4px 4px;
                    overflow: hidden;
                    box-sizing: border-box;
                    border: none;
                }
                .label {
                    margin-top: 6px;
                    height: 20px;
                    font-family: Source Han Sans CN, Source Han Sans CN;
                    font-weight: 400;
                    font-size: 14px;
                    color: #222324;
                    line-height: 20px;
                    text-align: center;
                    font-style: normal;
                    text-transform: none;
                }
            }
            .layer-box:nth-child(3n + 1) {
                margin-left: 0;
            }
        }
    }
}
</style>
applications/mobile-web-view/src/appPages/work/workDetail/mapWork/index.vue
@@ -1,5 +1,5 @@
<template>
    <div class="wrapper" :style="{ paddingTop: route.query.topMargin + 'px' }">
    <div class="wrapper" >
        <WorkMap
            :weatherShow="true"
            :layerShow="true"
@@ -7,9 +7,9 @@
            :workNavigationShow="true"
            :mapCurrentDetail="mapCurrentDetail"
        >
            <template #eventNav>
                <EventNavigation :mapCurrentDetail="mapCurrentDetail"></EventNavigation>
            </template>
<!--            <template #eventNav>-->
<!--                <EventNavigation :mapCurrentDetail="mapCurrentDetail"></EventNavigation>-->
<!--            </template>-->
        </WorkMap>
    </div>
</template>
@@ -25,7 +25,39 @@
const store = useStore()
const userInfo = computed(() => store?.state?.user?.userInfo)
const route = useRoute()
const mapCurrentDetail = ref({})
const mapCurrentDetail = ref({
    "id": 8474,
    "wayline_job_id": "51835088-cd94-42f8-b2ec-a9069ced4e7b",
    "event_name": "测试",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "file_path": "upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "longitude": "115.85649472222222",
    "latitude": "28.624301527777778",
    "create_time": "2026-01-13 16:51:57",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260113002",
    "ai_types": "道路裂缝",
    "ai_type_key_list": [
        "DLLFSB"
    ],
    "work_order_type_dict_key": "ZHZLL",
    "work_order_type": "交通运输与交管​",
    "create_user": "曾超杰",
    "update_user": "管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "2009140684346388482",
    "user_id": "1991745495648227330",
    "handle_user_id": "1123598821738675201",
    "address": "江西省南昌市西湖区朝农街道抚生南路1806号南昌台湾健康产业城",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "content": "测试",
    "work_type": "3",
    "job_name": "定向拍照2",
    "is_review": 0,
    "job_create_time": "2026-01-13 16:51:57"
})
const eventNum = ref('')
// 机巢数据
let machineData = ref([]);
@@ -54,9 +86,9 @@
    }
}
onMounted(async () => {
  handleNodeClick()
  // handleNodeClick()
    eventNum.value = route.query.currentItem
    await getDataList(eventNum.value)
    // await getDataList(eventNum.value)
})
</script>
uniapps/work-app/src/pages/work/index.vue
@@ -40,7 +40,405 @@
import { getStatusBarHeight } from '@/utils/common';
const userStore = useUserStore()
const userInfo = userStore.userInfo
const dataList = ref([])
const dataList = ref([
  {
    "id": 8474,
    "wayline_job_id": "51835088-cd94-42f8-b2ec-a9069ced4e7b",
    "event_name": "测试",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "file_path": "upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "longitude": "115.85649472222222",
    "latitude": "28.624301527777778",
    "create_time": "2026-01-13 16:51:57",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260113002",
    "ai_types": "道路裂缝",
    "ai_type_key_list": [
      "DLLFSB"
    ],
    "work_order_type_dict_key": "ZHZLL",
    "work_order_type": "交通运输与交管​",
    "create_user": "曾超杰",
    "update_user": "管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "2009140684346388482",
    "user_id": "1991745495648227330",
    "handle_user_id": "1123598821738675201",
    "address": "江西省南昌市西湖区朝农街道抚生南路1806号南昌台湾健康产业城",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "content": "测试",
    "work_type": "3",
    "job_name": "定向拍照2",
    "is_review": 0,
    "job_create_time": "2026-01-13 16:51:57"
  },
  {
    "id": 8472,
    "wayline_job_id": "6beae73e-2d5d-47e5-859b-e2a1955d6e3b",
    "event_name": "车事件",
    "event_dict_key": "Traffic_flow",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket//6beae73e-2d5d-47e5-859b-e2a1955d6e3b/DJI_202601091336_002_6beae73e-2d5d-47e5-859b-e2a1955d6e3b/车AI20260112144421001.jpeg",
    "file_path": "/6beae73e-2d5d-47e5-859b-e2a1955d6e3b/DJI_202601091336_002_6beae73e-2d5d-47e5-859b-e2a1955d6e3b/车AI20260112144421001.jpeg",
    "longitude": "115.85502433333333",
    "latitude": "28.623021472222224",
    "create_time": "2026-01-12 14:44:25",
    "media_type": "PHOTO_TYPE",
    "event_num": "AI20260112144421001",
    "remark": "江西省南昌市西湖区朝农街道翠菊路银燕物流基地发生车事件",
    "ai_types": "车",
    "ai_type_key_list": [
      "CGL_CLLTJ"
    ],
    "work_order_type_dict_key": "ZHZLL",
    "work_order_type": "交通运输与交管​",
    "create_user": "曾超杰",
    "update_user": "空间大厦管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "2009140684346388482",
    "user_id": "1991745495648227330",
    "handle_user_id": "1979075301412524033",
    "address": "江西省南昌市西湖区朝农街道翠菊路银燕物流基地",
    "content": "测试",
    "work_type": "2",
    "job_name": "马上智飞202601091336",
    "is_review": 0,
    "job_create_time": "2026-01-09 13:36:42"
  },
  {
    "id": 8464,
    "wayline_job_id": "8b4b7529-13ee-4885-a7b8-4a52667444fb",
    "event_name": "1212",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/5e6bc6ecedd830f2415a959667b3841a.jpeg",
    "file_path": "upload/20260107/5e6bc6ecedd830f2415a959667b3841a.jpeg",
    "longitude": "115.85803208048642",
    "latitude": "28.625135341676483",
    "create_time": "2026-01-07 11:18:35",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260107003",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "罗广辉",
    "update_user": "空间大厦管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1896495271624384514",
    "user_id": "1991745495648227330",
    "handle_user_id": "1979075301412524033",
    "address": "江西省南昌市西湖区朝农街道抚生南路世纪吉的堡幼儿园",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/5e6bc6ecedd830f2415a959667b3841a.jpeg",
    "content": "2121",
    "work_type": "3",
    "job_name": "马上智飞202601051720",
    "is_review": 0,
    "job_create_time": "2026-01-07 11:18:35"
  },
  {
    "id": 8463,
    "wayline_job_id": "8b4b7529-13ee-4885-a7b8-4a52667444fb",
    "event_name": "122112",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/a52b1adda405b94a4f9436e43e1b3185.jpeg",
    "file_path": "upload/20260107/a52b1adda405b94a4f9436e43e1b3185.jpeg",
    "longitude": "115.85780692063119",
    "latitude": "28.624775436656122",
    "create_time": "2026-01-07 11:17:47",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260107002",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "罗广辉",
    "update_user": "空间大厦管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1896495271624384514",
    "user_id": "1991745495648227330",
    "handle_user_id": "1979075301412524033",
    "address": "江西省南昌市西湖区朝农街道抚生南路世纪吉的堡幼儿园",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/a52b1adda405b94a4f9436e43e1b3185.jpeg",
    "content": "1",
    "work_type": "3",
    "job_name": "马上智飞202601051720",
    "is_review": 0,
    "job_create_time": "2026-01-07 11:17:48"
  },
  {
    "id": 8462,
    "wayline_job_id": "8b4b7529-13ee-4885-a7b8-4a52667444fb",
    "event_name": "1",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/a138491d214cc0ce7a5a3eedf6b79680.jpeg",
    "file_path": "upload/20260107/a138491d214cc0ce7a5a3eedf6b79680.jpeg",
    "longitude": "115.85763536212585",
    "latitude": "28.626095211224335",
    "create_time": "2026-01-07 11:14:41",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260107001",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "罗广辉",
    "update_user": "江西融媒",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1896495271624384514",
    "user_id": "1991745495648227330",
    "handle_user_id": "1993119267150655490",
    "address": "江西省南昌市西湖区朝农街道国贸天琴湾东区",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260107/a138491d214cc0ce7a5a3eedf6b79680.jpeg",
    "content": "1",
    "work_type": "3",
    "job_name": "马上智飞202601051720",
    "is_review": 0,
    "job_create_time": "2026-01-07 11:14:42"
  },
  {
    "id": 8461,
    "wayline_job_id": "038b8f48-1704-4adc-abb7-7deb85eba101",
    "event_name": "测试",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/c94dca50d34e13f53fd5a5c05abfe03f.jpeg",
    "file_path": "upload/20260106/c94dca50d34e13f53fd5a5c05abfe03f.jpeg",
    "longitude": "115.85623975",
    "latitude": "28.624919472222224",
    "create_time": "2026-01-06 13:38:03",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106018",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "张含笑",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1909067460995813377",
    "address": "江西省南昌市西湖区朝农街道抚生南路1818号国贸天琴湾",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/c94dca50d34e13f53fd5a5c05abfe03f.jpeg",
    "content": "123",
    "work_type": "3",
    "job_name": "定向拍照-1-5",
    "is_review": 0,
    "job_create_time": "2026-01-06 13:38:03"
  },
  {
    "id": 8460,
    "wayline_job_id": "8b4b7529-13ee-4885-a7b8-4a52667444fb",
    "event_name": "11",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/6ef9355b143d4e89d83c77d18f4e312f.jpeg",
    "file_path": "upload/20260106/6ef9355b143d4e89d83c77d18f4e312f.jpeg",
    "longitude": "115.85763536212585",
    "latitude": "28.626095211224335",
    "create_time": "2026-01-06 11:08:51",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106017",
    "ai_types": "建筑垃圾",
    "ai_type_key_list": [
      "GCL_JZLJSB"
    ],
    "work_order_type_dict_key": "CGL",
    "work_order_type": "城市管理与综合执法",
    "create_user": "张含笑",
    "update_user": "罗广辉",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1896495271624384514",
    "address": "江西省南昌市西湖区朝农街道国贸天琴湾东区",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/6ef9355b143d4e89d83c77d18f4e312f.jpeg",
    "content": "12",
    "work_type": "3",
    "job_name": "马上智飞202601051720",
    "is_review": 0,
    "job_create_time": "2026-01-06 11:08:52"
  },
  {
    "id": 8459,
    "wayline_job_id": "038b8f48-1704-4adc-abb7-7deb85eba101",
    "event_name": "122",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/96c7769b12f2e55b7e788e8f35b0364b.jpeg",
    "file_path": "upload/20260106/96c7769b12f2e55b7e788e8f35b0364b.jpeg",
    "longitude": "115.85623975",
    "latitude": "28.624919472222224",
    "create_time": "2026-01-06 11:08:00",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106016",
    "ai_types": "水生植物漂浮物",
    "ai_type_key_list": [
      "SMPFWSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "张含笑",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1909067460995813377",
    "address": "江西省南昌市西湖区朝农街道抚生南路1818号国贸天琴湾",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/96c7769b12f2e55b7e788e8f35b0364b.jpeg",
    "content": "1",
    "work_type": "3",
    "job_name": "定向拍照-1-5",
    "is_review": 0,
    "job_create_time": "2026-01-06 11:08:00"
  },
  {
    "id": 8458,
    "wayline_job_id": "8b4b7529-13ee-4885-a7b8-4a52667444fb",
    "event_name": "12",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/2e065c4f0e78d4fa1cfdd15f65397b85.jpeg",
    "file_path": "upload/20260106/2e065c4f0e78d4fa1cfdd15f65397b85.jpeg",
    "longitude": "115.85677911492691",
    "latitude": "28.62569394530331",
    "create_time": "2026-01-06 11:00:53",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106015",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "罗广辉",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1896495271624384514",
    "address": "江西省南昌市西湖区朝农街道抚生南路1836号国贸天琴湾东区",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/2e065c4f0e78d4fa1cfdd15f65397b85.jpeg",
    "content": "22",
    "work_type": "3",
    "job_name": "马上智飞202601051720",
    "is_review": 0,
    "job_create_time": "2026-01-06 11:00:54"
  },
  {
    "id": 8457,
    "wayline_job_id": "038b8f48-1704-4adc-abb7-7deb85eba101",
    "event_name": "发布事件",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/ecdfe6c661dba2fa03efcc19a5863680.jpeg",
    "file_path": "upload/20260106/ecdfe6c661dba2fa03efcc19a5863680.jpeg",
    "longitude": "115.85623975",
    "latitude": "28.624919472222224",
    "create_time": "2026-01-06 10:43:29",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106014",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "张含笑",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1909067460995813377",
    "address": "江西省南昌市西湖区朝农街道抚生南路1818号国贸天琴湾",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/ecdfe6c661dba2fa03efcc19a5863680.jpeg",
    "content": "11",
    "work_type": "3",
    "job_name": "定向拍照-1-5",
    "is_review": 0,
    "job_create_time": "2026-01-06 10:43:30"
  },
  {
    "id": 8456,
    "wayline_job_id": "038b8f48-1704-4adc-abb7-7deb85eba101",
    "event_name": "122",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/fc9820c440da478fa5312e8647e1e311.jpeg",
    "file_path": "upload/20260106/fc9820c440da478fa5312e8647e1e311.jpeg",
    "longitude": "115.85623975",
    "latitude": "28.624919472222224",
    "create_time": "2026-01-06 10:38:20",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106013",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "张含笑",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1909067460995813377",
    "address": "江西省南昌市西湖区朝农街道抚生南路1818号国贸天琴湾",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/fc9820c440da478fa5312e8647e1e311.jpeg",
    "content": "3",
    "work_type": "3",
    "job_name": "定向拍照-1-5",
    "is_review": 0,
    "job_create_time": "2026-01-06 10:38:20"
  },
  {
    "id": 8455,
    "wayline_job_id": "038b8f48-1704-4adc-abb7-7deb85eba101",
    "event_name": "122",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/d9a152ab1484348be5e126f854eca86a.jpeg",
    "file_path": "upload/20260106/d9a152ab1484348be5e126f854eca86a.jpeg",
    "longitude": "115.85623975",
    "latitude": "28.624919472222224",
    "create_time": "2026-01-06 10:38:18",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260106012",
    "ai_types": "水体污染",
    "ai_type_key_list": [
      "STWLSB"
    ],
    "work_order_type_dict_key": "SLL",
    "work_order_type": "生态环境与水务",
    "create_user": "张含笑",
    "update_user": "张含笑",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "1909067460995813377",
    "user_id": "1991745495648227330",
    "handle_user_id": "1909067460995813377",
    "address": "江西省南昌市西湖区朝农街道抚生南路1818号国贸天琴湾",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260106/d9a152ab1484348be5e126f854eca86a.jpeg",
    "content": "3",
    "work_type": "3",
    "job_name": "定向拍照-1-5",
    "is_review": 0,
    "job_create_time": "2026-01-06 10:38:18"
  }
])
const currentTab=ref('all')
const loading = ref(false)
const hasMore = ref(true)
@@ -152,10 +550,10 @@
}
const topMargin = getStatusBarHeight()
onShow(() => {
  listParams.value.current = 1
  hasMore.value = true
  dataList.value = []
  getDataList()
  // listParams.value.current = 1
  // hasMore.value = true
  // dataList.value = []
  // getDataList()
})
</script>
uniapps/work-app/src/subPackages/workDetail/index.vue
@@ -98,10 +98,42 @@
}
const eventNum = ref('')
// 工单内容
const workDetailData = ref({})
const workDetailData = ref({
  "id": 8474,
  "wayline_job_id": "51835088-cd94-42f8-b2ec-a9069ced4e7b",
  "event_name": "测试",
  "device_sn": "7CTDM5E00B3H61",
  "status": 3,
  "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
  "file_path": "upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
  "longitude": "115.85649472222222",
  "latitude": "28.624301527777778",
  "create_time": "2026-01-13 16:51:57",
  "media_type": "PHOTO_TYPE",
  "event_num": "BHJC20260113002",
  "ai_types": "道路裂缝",
  "ai_type_key_list": [
    "DLLFSB"
  ],
  "work_order_type_dict_key": "ZHZLL",
  "work_order_type": "交通运输与交管​",
  "create_user": "曾超杰",
  "update_user": "管理员",
  "dept_name": "中图智飞(江西省)",
  "create_user_id": "2009140684346388482",
  "user_id": "1991745495648227330",
  "handle_user_id": "1123598821738675201",
  "address": "江西省南昌市西湖区朝农街道抚生南路1806号南昌台湾健康产业城",
  "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
  "content": "测试",
  "work_type": "3",
  "job_name": "定向拍照2",
  "is_review": 0,
  "job_create_time": "2026-01-13 16:51:57"
},)
onLoad(async options => {
  eventNum.value = options.eventNum
  await getDataList(eventNum.value)
  // await getDataList(eventNum.value)
})
const getDataList = async val => {
  const params = {