吉安感知网项目-前端
罗广辉
2026-01-14 d21b77a492c4b7b9970837726541d0948847a148
Merge remote-tracking branch 'origin/master'
5 files modified
3 files added
2 files deleted
881 ■■■■■ changed files
applications/mobile-web-view/src/appComponents/workMap/index.vue 297 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/appDataSource/appwork/positioning1.svg 10 ●●●●● 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.json 4 ●●●● patch | view | raw | blame | history
uniapps/work-app/src/pages/work/index.vue 408 ●●●●● patch | view | raw | blame | history
uniapps/work-app/src/static/images/tabbar/icon_speech.png patch | view | raw | blame | history
uniapps/work-app/src/static/images/tabbar/icon_speech_selected.png patch | view | raw | blame | history
uniapps/work-app/src/subPackages/workDetail/addWork/index.vue 52 ●●●●● patch | view | raw | blame | history
uniapps/work-app/src/subPackages/workDetail/index.vue 38 ●●●●● patch | view | raw | blame | history
uniapps/work-app/src/subPackages/workDetail/photoMagnify/index.vue 26 ●●●●● 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 incidentPoint from '@/appDataSource/appwork/positioning1.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/appDataSource/appwork/positioning1.svg
New file
@@ -0,0 +1,10 @@
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame" clip-path="url(#clip0_109_1462)">
<path id="Vector" d="M11.9166 19.4328C9.73119 19.1548 7.73368 18.055 6.33004 16.357C4.9264 14.659 4.22197 12.4903 4.35992 10.2916C4.49788 8.09294 5.46786 6.02927 7.07273 4.52007C8.67759 3.01087 10.7969 2.16939 12.9999 2.16666C15.2056 2.16502 17.329 3.00444 18.9373 4.51389C20.5456 6.02334 21.5179 8.08923 21.656 10.2906C21.7942 12.492 21.0877 14.6632 19.6807 16.3619C18.2736 18.0605 16.2719 19.1588 14.0833 19.4328V21.6797C18.3581 21.7793 21.6666 22.4629 21.6666 23.2917C21.6666 24.1887 17.7861 24.9167 12.9999 24.9167C8.21375 24.9167 4.33325 24.1887 4.33325 23.2917C4.33325 22.4629 7.64175 21.7793 11.9166 21.6797V19.4328ZM12.9999 13C13.5746 13 14.1257 12.7717 14.532 12.3654C14.9383 11.9591 15.1666 11.408 15.1666 10.8333C15.1666 10.2587 14.9383 9.70759 14.532 9.30126C14.1257 8.89493 13.5746 8.66666 12.9999 8.66666C12.4253 8.66666 11.8742 8.89493 11.4679 9.30126C11.0615 9.70759 10.8333 10.2587 10.8333 10.8333C10.8333 11.408 11.0615 11.9591 11.4679 12.3654C11.8742 12.7717 12.4253 13 12.9999 13Z" fill="#FF2121"/>
</g>
<defs>
<clipPath id="clip0_109_1462">
<rect width="26" height="26" fill="white"/>
</clipPath>
</defs>
</svg>
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.json
@@ -110,8 +110,8 @@
        "text": "工单管理"
      },
      {
        "iconPath": "static/images/tabbar/icon_order.png",
        "selectedIconPath": "static/images/tabbar/icon_order_selected.png",
        "iconPath": "static/images/tabbar/icon_speech.png",
        "selectedIconPath": "static/images/tabbar/icon_speech_selected.png",
        "pagePath": "pages/voiceCall/index",
        "text": "语音通话"
      },
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/static/images/tabbar/icon_speech.png
uniapps/work-app/src/static/images/tabbar/icon_speech_selected.png
uniapps/work-app/src/subPackages/workDetail/addWork/index.vue
File was deleted
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 = {
@@ -244,6 +276,8 @@
</script>
<style lang="scss" scoped>
.workDetailContainer {
  // 添加导航栏高度的padding-top,避免内容被遮挡
  padding-top: 44px;
  // 分享按钮样式
  .share-btn {
    color: #1D6FE9;
uniapps/work-app/src/subPackages/workDetail/photoMagnify/index.vue
File was deleted