吉安感知网项目-前端
16 files modified
1816 ■■■■ changed files
applications/task-work-order/src/components/VideoPlayDialog.vue 120 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue 30 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/index.vue 15 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue 115 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue 9 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue 72 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue 31 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue 110 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue 125 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 62 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 95 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/outcomeData.vue 56 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/taskTypeOptions.js 52 ●●●●● patch | view | raw | blame | history
packages/utils/common/index.js 66 ●●●●● patch | view | raw | blame | history
pnpm-lock.yaml 852 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/components/VideoPlayDialog.vue
@@ -1,56 +1,130 @@
<script setup>
import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'
import videojs from 'video.js'
const props = defineProps({
    width: {
        type: String,
        default: '800'
        default: '800',
    },
    modelValue: {
        type: Boolean,
        default: false
        default: false,
    },
    playUrl: {
        type: String,
        default: ''
        default: '',
    },
    title:{
    title: {
        type: String,
        default: '视频播放'
    }
        default: '视频播放',
    },
})
const emit = defineEmits(['update:modelValue'])
const handleClose = () => {
    emit('update:modelValue', false)
const videoRefs = ref(null)
let player = null
const dialogVisible = computed({
    get: () => props.modelValue,
    set: value => emit('update:modelValue', value),
})
function getVideoType(url) {
    const path = (url || '').split('?')[0].toLowerCase()
    if (path.endsWith('.m3u8')) return 'application/x-mpegURL'
    if (path.endsWith('.mp4')) return 'video/mp4'
    if (path.endsWith('.webm')) return 'video/webm'
    if (path.endsWith('.ogg') || path.endsWith('.ogv')) return 'video/ogg'
    if (path.endsWith('.mov')) return 'video/quicktime'
    return ''
}
function destroyPlayer() {
    if (!player) return
    player.dispose()
    player = null
}
function getSource() {
    const type = getVideoType(props.playUrl)
    return {
        src: props.playUrl,
        ...(type ? { type } : {}),
    }
}
async function initPlayer() {
    if (!props.modelValue || !props.playUrl) return
    await nextTick()
    if (!videoRefs.value) return
    if (player) {
        player.src(getSource())
        player.load()
        return
    }
    player = videojs(videoRefs.value, {
        controls: true,
        preload: 'auto',
        autoplay: false,
        fluid: false,
        width: '100%',
        height: '600px',
        sources: [getSource()],
    })
    player.on('error', () => {
        console.error('视频播放失败:', player?.error(), props.playUrl)
    })
}
watch(
    () => props.playUrl,
    () => {
        if (!props.modelValue || !props.playUrl) return
        initPlayer()
    }
)
onBeforeUnmount(destroyPlayer)
</script>
<template>
    <el-dialog
        class="gd-dialog"
        class="gd-dialog video-dialog"
        :title="props.title"
        append-to-body
        v-model="props.modelValue"
        v-model="dialogVisible"
        width="60%"
        destroy-on-close
        :close-on-click-modal="false"
        @close="handleClose"
        @opened="initPlayer"
        @closed="destroyPlayer"
    >
        <video ref="videoRefs" controls preload="auto"  :src="props.playUrl">
            <source :src="props.playUrl" type="video/mp4" />
        </video>
        <!--            <el-carousel trigger="click" :autoplay="false" @change="handleCarouselChange">-->
        <!--                <el-carousel-item v-for="(item, index) in videoList" :key="index">-->
        <!--                    <video ref="videoRefs" controls preload="auto"  :src="currentVideoUrl" @play="handleVideoPlay" @ended="handleVideoEnded(index)">-->
        <!--                        <source :src="item.smallUrl" type="video/mp4" />-->
        <!--                    </video>-->
        <!--                </el-carousel-item>-->
        <!--            </el-carousel>-->
        <video
            ref="videoRefs"
            id="videoPlayDialogPlayer"
            class="video-js vjs-default-skin vjs-big-play-centered"
            controls
            preload="auto"
            playsinline
        ></video>
    </el-dialog>
</template>
<style lang="scss">
.video-dialog {
    .video-js {
        height: 600px;
        width: 100%;
    }
}
</style>
<style scoped lang="scss">
video {
    height: 600px;
:deep(.video-js .vjs-tech) {
    height: 100%;
    width: 100%;
}
</style>
applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue
@@ -4,11 +4,7 @@
        <!--        <div class="detail-row-view" v-if="dialogReadonly">-->
        <el-table :data="detailsList" class="gd-dialog-table">
            <el-table-column type="index" show-overflow-tooltip label="序号" />
            <el-table-column prop="deviceStatus" show-overflow-tooltip label="设备状态" >
                <template v-slot="{ row }">
                    {{ getStatusText(row.deviceStatus) }}
                </template>
            </el-table-column>
            <el-table-column prop="deviceStatus" show-overflow-tooltip label="设备状态" />
            <el-table-column prop="occurTime" show-overflow-tooltip label="发生时间" />
        </el-table>
        <div class="gd-pagination-parent">
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -30,7 +30,7 @@
      </el-col>
      <el-col :span="12">
        <div class="label">擅长任务类型</div>
        <div class="val">{{ getDictLabel(formData.skilledTaskType, dictObj.workOrderType) }}</div>
        <div class="val">{{ getTaskTypeLabel(formData.skilledTaskType, workOrderTypeXT) }}</div>
      </el-col>
      <el-col :span="12">
        <div class="label">项目经验</div>
@@ -159,20 +159,17 @@
                </el-col>
                <el-col :span="12">
                    <el-form-item label="擅长任务类型" prop="skilledTaskType">
                        <el-select
                            class="gd-select"
                            popper-class="gd-select-popper"
                        <el-cascader
                            class="gd-cascader"
                            popper-class="gd-cascader-popper"
                            v-model="formData.skilledTaskType"
                            :options="workOrderTypeXT"
                            :props="{ ...taskTypeCascaderProps, multiple: true }"
                            placeholder="请选择"
                            :disabled="dialogType === 'view'"
                        >
                            <el-option
                                v-for="item in dictObj.workOrderType"
                                :key="item.dictKey"
                                :label="item.dictValue"
                                :value="item.dictKey"
                            />
                        </el-select>
                            clearable
                            collapse-tags
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
@@ -207,6 +204,10 @@
import { submitFlyingHand } from './flyingHandApi'
import { ElMessage } from 'element-plus'
import { getDictLabel } from '@ztzf/utils'
import {
    getTaskTypeLabel,
    taskTypeCascaderProps,
} from '../orderManage/taskTypeOptions'
import { fieldRules } from '@ztzf/utils'
@@ -227,6 +228,7 @@
})
const dictObj = inject('dictObj') // 擅长任务类型
const workOrderTypeXT = inject('workOrderTypeXT', ref([]))
const flyingHandList = inject('flyingHandList') // 飞手列表
const flyingHandEditList = inject('flyingHandEditList') // 飞手建档列表
@@ -262,6 +264,7 @@
    projectExperience: '',
    technicalStrength: '',
    skilledUavType: '',
    skilledTaskType: [],
    certification: [], // 证书
    regionCode: '', // 区域编码
    flyerAddress: '', // 飞手地址
@@ -318,6 +321,7 @@
        if (newData) {
            Object.assign(formData.value, newData)
            formData.value.flightHours = Number(newData.flightHours)
            formData.value.skilledTaskType = newData.skilledTaskType || []
        }
    },
    { deep: true, immediate: true }
@@ -353,7 +357,7 @@
        projectExperience: '',
        technicalStrength: '',
        skilledUavType: '',
        skilledTaskType: ''
        skilledTaskType: []
    })
}
applications/task-work-order/src/views/orderView/flyingHand/index.vue
@@ -52,7 +52,7 @@
            <div class="gd-table-toolbar">
                <el-button :icon="Plus" color="#4C34FF" type="primary" @click="addFlyingHand">飞手建档</el-button>
            </div>
            <div class="gd-table-content gd-table-content-bg">
                <el-table class="gd-table" :data="list">
                    <el-table-column type="index" width="64" label="序号" />
@@ -72,7 +72,7 @@
                    </el-table-column>
                    <el-table-column prop="skilledTaskType" show-overflow-tooltip label="擅长任务类型">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.skilledTaskType, dictObj.workOrderType) }}
                            {{ getTaskTypeLabel(row.skilledTaskType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns" width="180">
@@ -113,10 +113,14 @@
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { getDictLabel } from '@ztzf/utils'
import { getFlyingHandPage, removeFlyingHand,getAllFlyerIds } from './flyingHandApi'
import { deviceFlyerApi,deviceFlyerDetailApi } from '@/api/zkxt'
import { deviceFlyerApi,deviceFlyerDetailApi, getDictListApi } from '@/api/zkxt'
import FlyingHandDialog from './FlyingHandDialog.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { prod } from 'mathjs'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
} from '../orderManage/taskTypeOptions'
// 初始化查询参数
const initSearchParams = () => ({
@@ -140,8 +144,10 @@
    skilledUavType: [], // 擅长机型
    technicalStrength: [] // 技术特长
})
const workOrderTypeXT = ref([])
provide('dictObj', dictObj)
provide('workOrderTypeXT', workOrderTypeXT)
// 获取列表
async function getList() {
@@ -229,6 +235,9 @@
    getDictionaryByCode('workOrderType,skilledUavType,technicalStrength').then(res => {
        dictObj.value = res.data.data
    })
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || [])
    })
}
// 获取飞手列表
applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
@@ -5,14 +5,13 @@
                <el-table-column label="线索缩略图" width="120">
                    <template v-slot="{ row }">
                        <el-image
                            v-if="row.aiImg || row.resultUrl"
                            :src="row.aiImg || row.resultUrl"
                            :preview-src-list="[row.aiImg || row.resultUrl]"
                            v-if="row.attachmentType === 1 || row.attachmentType === 2"
                            :src="row.attachmentType === 1 ? row.resultUrl : item.aiImg"
                            :preview-src-list="[row.attachmentType === 1 ? row.resultUrl : item.aiImg]"
                            fit="cover"
                            style="width: 80px; height: 60px"
                            style="width: 80px; height: 80px"
                            preview-teleported
                        />
                        <span v-else>-</span>
                    </template>
                </el-table-column>
                <el-table-column prop="resultCode" show-overflow-tooltip label="线索编号" />
@@ -31,8 +30,12 @@
                <el-table-column prop="distributeUserName" show-overflow-tooltip label="分发人员" />
                <el-table-column label="操作" class-name="operation-btns" width="140">
                    <template v-slot="{ row }">
                        <el-link type="primary" @click="openDistributeDialog(row)" v-if="permission.clueEvents_distribute && (row.distributeStatus === 0 || row.distributeStatus === 2)">
                            {{ row.distributeStatus === 2 ? '再次分发':'转为事件并分发' }}
                        <el-link
                            type="primary"
                            @click="openDistributeDialog(row)"
                            v-if="permission.clueEvents_distribute && (row.distributeStatus === 0 || row.distributeStatus === 2)"
                        >
                            {{ row.distributeStatus === 2 ? '再次分发' : '转为事件并分发' }}
                        </el-link>
                        <el-button disabled type="text" v-else>转为事件并分发</el-button>
                    </template>
@@ -57,6 +60,7 @@
import { ref } from 'vue'
import { gdTaskResultListApi } from './achievementApi'
import DistributeDiaLog from './DistributeDiaLog.vue'
import { getAiImg } from '@ztzf/utils'
const store = useStore()
const requester = computed(() => store.state.user.userInfo?.role_id === '2014158512610869250')
@@ -99,91 +103,18 @@
    if (!currentRow.value?.id) return
    loading.value = true
    try {
        const res = await gdTaskResultListApi({ patrolTaskId: currentRow.value.id })
        list.value = res?.data?.data ?? []
        list.value = await Promise.all(list.value.map(async i => {
            const aiImg = await getAiImg(i.resultUrl)
            return { ...i, aiImg }
        }))
        const res = await gdTaskResultListApi({ patrolTaskId: currentRow.value.id,attachmentType: '1,2' })
        list.value = await Promise.all(
            (res?.data?.data ?? []).map(async item => {
                if (item.attachmentType !== 2) return item
                const aiImg = await getAiImg(item.resultUrl,item.geojson)
                return { ...item, aiImg }
            })
        )
    } finally {
        loading.value = false
    }
}
const aiFrame = [
    "{\"score\":0.91357421875,\"bbox\":{\"x_cen\":1246.0,\"y_cen\":209.0,\"width\":166.0,\"height\":334.0},\"class_name\":\"car\",\"algorithmId\":\"e71116098eeb1d60cfebd04d30653b151\"}",
    "{\"score\":0.89697265625,\"bbox\":{\"x_cen\":370.0,\"y_cen\":694.5,\"width\":162.0,\"height\":331.0},\"class_name\":\"car\",\"algorithmId\":\"e71116098eeb1d60cfebd04d30653b151\"}",
    "{\"score\":0.89501953125,\"bbox\":{\"x_cen\":396.0,\"y_cen\":343.0,\"width\":168.0,\"height\":330.0},\"class_name\":\"car\",\"algorithmId\":\"e71116098eeb1d60cfebd04d30653b151\"}",
    "{\"score\":0.79296875,\"bbox\":{\"x_cen\":409.5,\"y_cen\":52.5,\"width\":167.0,\"height\":105.0},\"class_name\":\"car\",\"algorithmId\":\"e71116098eeb1d60cfebd04d30653b151\"}"
]
function getAiImg(url) {
    if (!url) return ''
    const img = new Image()
    img.crossOrigin = 'anonymous';
    return new Promise(resolve => {
        img.onload = () => {
            if (!img.naturalWidth || !img.naturalHeight) {
                resolve('')
                return
            }
            const canvas = document.createElement('canvas')
            const ctx = canvas.getContext('2d')
            if (!ctx) {
                resolve('')
                return
            }
            canvas.width = img.naturalWidth
            canvas.height = img.naturalHeight
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
            aiFrame.forEach(item => {
                let target = item
                try {
                    target = typeof item === 'string' ? JSON.parse(item) : item
                } catch (error) {
                    return
                }
                const { x_cen, y_cen, width, height } = target.bbox || {}
                if ([x_cen, y_cen, width, height].some(value => typeof value !== 'number')) return
                const x = x_cen - width / 2
                const y = y_cen - height / 2
                const label = target.class_name || ''
                const fontSize = Math.max(18, Math.round(canvas.width / 80))
                const labelHeight = fontSize + 10
                const labelY = y - labelHeight >= 0 ? y - labelHeight : y
                ctx.strokeStyle = '#FF3B30'
                ctx.lineWidth = Math.max(3, Math.round(canvas.width / 640))
                ctx.strokeRect(x, y, width, height)
                if (label) {
                    ctx.font = `${fontSize}px Arial`
                    const labelWidth = ctx.measureText(label).width + 16
                    ctx.fillStyle = '#FF3B30'
                    ctx.fillRect(x, labelY, labelWidth, labelHeight)
                    ctx.fillStyle = '#FFFFFF'
                    ctx.textBaseline = 'middle'
                    ctx.fillText(label, x + 8, labelY + labelHeight / 2)
                }
            })
            try {
                resolve(canvas.toDataURL('image/jpeg', 0.92))
            } catch (error) {
                console.log(error)
                resolve('')
            }
        }
        img.onerror = () => resolve('')
        img.src = url
    })
}
// 打开分发弹框
function openDistributeDialog(row) {
@@ -206,8 +137,8 @@
</script>
<style lang="scss" scoped>
    .disabled-text {
        color: #C0C4CC;
        cursor: not-allowed;
    }
.disabled-text {
    color: #c0c4cc;
    cursor: not-allowed;
}
</style>
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue
@@ -18,7 +18,7 @@
                    popper-class="gd-select-popper"
                    v-model="searchParams.patrolTaskType"
                    :options="workOrderTypeXT"
                    :props="taskTypeFilterCascaderProps"
                    :props="taskTypeCascaderProps"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
@@ -118,7 +118,11 @@
import { getDeptTree } from '@/api/system/dept'
import ViewDiaLog from './ViewDiaLog.vue'
import { useStore } from 'vuex'
import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
// 初始化查询参数
const initSearchParams = () => ({
@@ -164,6 +168,7 @@
            startTime: range[0],
            endTime: range[1],
            taskStatus: 8,
            patrolTaskType: searchParams?.value?.patrolTaskType?.join?.(','),
        })
        list.value = res?.data?.data?.records ?? []
        total.value = res?.data?.data?.total ?? 0
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -13,21 +13,16 @@
            </el-form-item>
            <el-form-item label="文档类型" prop="resultType">
                <el-select
                    class="gd-select gray"
                    popper-class="gd-select-popper"
                <el-cascader
                    class="gd-cascader gray"
                    popper-class="gd-cascader-popper"
                    v-model="searchParams.resultType"
                    :options="workOrderTypeXT"
                    :props="taskTypeCascaderProps"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                >
                    <el-option
                        v-for="item in dictObj.workOrderType"
                        :key="item.dictKey"
                        :label="item.dictValue"
                        :value="item.dictKey"
                    />
                </el-select>
                />
            </el-form-item>
            <el-form-item class="gd-search-actions">
@@ -56,7 +51,7 @@
                    <!-- <el-table-column prop="resultType" show-overflow-tooltip label="文档类型" /> -->
                    <el-table-column prop="resultType" show-overflow-tooltip label="文档类型">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.resultType, dictObj.workOrderType) }}
                            {{ getTaskTypeLabel(row.resultType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns">
@@ -94,20 +89,16 @@
                    <el-input v-model="editParams.nickName" class="gd-input" placeholder="请输入" />
                </el-form-item>
                <el-form-item label="文档类型" prop="resultType" v-if="titleTxt === '上传巡查报告'">
                    <el-select
                        class="gd-select"
                        popper-class="gd-select-popper"
                    <el-cascader
                        class="gd-cascader"
                        popper-class="gd-cascader-popper"
                        v-model="editParams.resultType"
                        :options="workOrderTypeXT"
                        :props="{ ...taskTypeCascaderProps, multiple: true }"
                        placeholder="请选择"
                        clearable
                    >
                        <el-option
                            v-for="item in dictObj.workOrderType"
                            :key="item.dictKey"
                            :label="item.dictValue"
                            :value="item.dictKey"
                        />
                    </el-select>
                        collapse-tags
                    />
                </el-form-item>
                <el-form-item label="上传文件" prop="link" v-if="titleTxt === '上传巡查报告'">
                    <el-upload class="avatar-uploader" action="" :show-file-list="false" :before-upload="onUploadFileBefore">
@@ -142,15 +133,19 @@
    </basic-container>
</template>
<script setup>
import { Search, RefreshRight, Download, Upload, Delete } from '@element-plus/icons-vue'
import { fjPageApi, fjSubmitApi, fjRemoveApi, fjDetailApi, fjUploadApi,fjDownloadByByteApi } from './inspectionRequestApi'
import { Search, RefreshRight, Download, Upload } from '@element-plus/icons-vue'
import { fjPageApi, fjSubmitApi, fjRemoveApi, fjUploadApi, fjDownloadByByteApi } from './inspectionRequestApi'
import { useStore } from 'vuex'
import { ref, computed, inject, onMounted } from 'vue'
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
import { getDictLabel } from '@ztzf/utils'
import { ref, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { Base64 } from 'js-base64'
import { getDictListApi } from '@/api/zkxt'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
const store = useStore()
const userInfo = computed(() => store.getters.userInfo)
@@ -173,9 +168,7 @@
// 上传名称
const uploadName = ref('')
const dictObj = ref({
    workOrderType: [], // 巡查任务类型
})
const workOrderTypeXT = ref([])
const searchParams = ref(initSearchParams()) // 查询参数
const total = ref(0) // 总条数
@@ -203,9 +196,13 @@
// 获取字典
function getDictList() {
    getDictionaryByCode('workOrderType').then(res => {
        dictObj.value = res.data.data
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || [])
    })
}
function toTaskTypeQueryValue(value) {
    return Array.isArray(value) ? value.join(',') : value
}
// 将字节大小转换为可读格式的函数
@@ -221,7 +218,10 @@
async function getList() {
    loading.value = true
    try {
        const res = await fjPageApi({ ...searchParams.value })
        const res = await fjPageApi({
            ...searchParams.value,
            resultType: toTaskTypeQueryValue(searchParams.value.resultType),
        })
        list.value = res?.data?.data?.records ?? []
        total.value = res?.data?.data?.total ?? 0
    } finally {
@@ -401,7 +401,7 @@
        if (valid) {
            submitting.value = true
            try {
                await fjSubmitApi({ ...editParams.value })
                await fjSubmitApi(editParams.value)
                ElMessage.success('保存成功')
                isShowEditView.value = false
                getList()
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -103,7 +103,7 @@
                                    popper-class="gd-select-popper"
                                    v-model="row.patrolTaskType"
                                    :options="workOrderTypeXT"
                                    :props="taskTypeCascaderProps"
                                    :props="{...taskTypeCascaderProps,multiple:true}"
                                    placeholder="请选择"
                                    collapse-tags
                                    @change="handlePatrolTaskTypeChange($index, $event)"
@@ -161,8 +161,7 @@
                                    v-model="row.deviceFlyerId"
                                    placeholder="请选择"
                                    filterable
                                    :disabled="dialogReadonly || !hasTaskTypeValue(taskList[$index].patrolTaskType)"
                                    :disabled="dialogReadonly || !taskList[$index].patrolTaskType"
                                >
                                    <el-option
                                        v-for="item in flyerListMap[$index] || []"
@@ -273,10 +272,7 @@
import { airlineListApi, algorithmGroupedApi } from '@/api/zkxt'
import {
    getTaskTypeLabel,
    getTaskTypeLeafValues,
    taskTypeCascaderProps,
    toTaskTypeCascaderValue,
    toTaskTypeRequestValue,
} from '../taskTypeOptions'
// 初始化任务行
@@ -342,14 +338,13 @@
        // 将工单类型赋值给所有子任务行
        const workOrderType = selectedWorkOrder.value?.workOrderType
        if (workOrderType) {
            const patrolTaskType = toTaskTypeCascaderValue(workOrderType)
            taskList.value.forEach((task, index) => {
                taskList.value[index] = {
                    ...initTaskRow(),
                    patrolTaskType,
                    patrolTaskType: workOrderType,
                }
                // 获取对应的飞手列表
                getFlyerList(index, patrolTaskType)
                getFlyerList(index, workOrderType)
            })
        }
    } else {
@@ -377,7 +372,7 @@
    const newTask = initTaskRow()
    // 如果已选择工单,自动填充工单类型
    if (selectedWorkOrder.value?.workOrderType) {
        newTask.patrolTaskType = toTaskTypeCascaderValue(selectedWorkOrder.value.workOrderType)
        newTask.patrolTaskType = selectedWorkOrder.value.workOrderType
    }
    const newIndex = taskList.value.length
    taskList.value.push(newTask)
@@ -441,8 +436,7 @@
// 获取飞手列表
async function getFlyerList(index, skilledTaskType) {
    const leafValues = getTaskTypeLeafValues(skilledTaskType)
    if (!leafValues.length) {
    if (!skilledTaskType.length) {
        flyerListMap.value[index] = []
        return
    }
@@ -450,7 +444,7 @@
    const res = await gdFlyerPageApi({
        size: 999,
        current: 1,
        skilledTaskType: leafValues.join(','),
        skilledTaskType: skilledTaskType.map(item => item[1])?.join?.(','),
        // longitude: obj.longitude || '',
        // latitude: obj.latitude || '',
    })
@@ -477,7 +471,6 @@
function isTaskRowFilled(task) {
    return !!(
        task.patrolTaskName ||
        hasTaskTypeValue(task.patrolTaskType) ||
        task.executeTime ||
        task.patrolRouteUrl ||
        task.deviceFlyerId ||
@@ -485,9 +478,6 @@
    )
}
function hasTaskTypeValue(value) {
    return !!toTaskTypeRequestValue(value).length
}
// 提交新增
async function handleSubmit() {
@@ -509,10 +499,6 @@
        // 已填写的行需要校验完整性
        if (!task.patrolTaskName) {
            ElMessage.warning(`第${i + 1}行: 请输入巡查任务名称`)
            return
        }
        if (!hasTaskTypeValue(task.patrolTaskType)) {
            ElMessage.warning(`第${i + 1}行: 请选择巡查任务类型`)
            return
        }
        if (!task.executeTime) {
@@ -538,7 +524,6 @@
        // 只提交已填写的任务行
        const dataList = filledTasks.map(item => ({
            ...item,
            patrolTaskType: toTaskTypeRequestValue(item.patrolTaskType),
            workOrderId: selectedWorkOrderId.value,
            id: undefined,
        }))
@@ -567,7 +552,7 @@
        // 编辑/查看模式 - 加载已有数据
        selectedWorkOrderId.value = row?.workOrderId
        handleWorkOrderChange(row?.workOrderId)
        taskList.value = [{ ...row, patrolTaskType: toTaskTypeCascaderValue(row?.patrolTaskType) }]
        taskList.value = [{ ...row, patrolTaskType: row?.patrolTaskType || [] }]
        flyerListMap.value = {}
        // 如果有巡查类型,加载对应的飞手列表
        if (row?.patrolTaskType) {
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -82,15 +82,17 @@
                            任务成果({{ taskResultList.length || 0 }}条)
                        </div>
                        <div class="imgBox">
                            <div v-for="item in taskResultList">
                            <div
                                v-for="item in taskResultList.filter(item1 => item1.resultUrl && [1, 2, 3].includes(item1.attachmentType))"
                            >
                                <el-image
                                    v-if="item.attachmentType === 0 && item.resultUrl"
                                    :src="item.resultUrl"
                                    :preview-src-list="[item.resultUrl]"
                                    v-if="item.attachmentType === 1 || item.attachmentType === 2"
                                    :src="item.attachmentType === 1 ? item.resultUrl : item.aiImg"
                                    :preview-src-list="[item.attachmentType === 1 ? item.resultUrl : item.aiImg]"
                                    fit="cover"
                                    preview-teleported
                                />
                                <div class="video-btn" v-if="item.attachmentType === 1 && item.resultUrl" @click="videoClick(item)">
                                <div class="video-btn" v-if="item.attachmentType === 3" @click="videoClick(item)">
                                    <el-icon :size="30" color="#fff">
                                        <VideoPlay />
                                    </el-icon>
@@ -116,8 +118,9 @@
                                    popper-class="gd-select-popper"
                                    v-model="formData.patrolTaskType"
                                    :options="workOrderTypeXT"
                                    :props="taskTypeCascaderProps"
                                    :props="{ ...taskTypeCascaderProps, multiple: true }"
                                    placeholder="请选择"
                                    collapse-tags
                                    clearable
                                />
                            </el-form-item>
@@ -274,21 +277,24 @@
        v-if="VideoShow"
        v-model="VideoShow"
        :playUrl="currentVideo.resultUrl"
    >
    </VideoPlayDialog>
    ></VideoPlayDialog>
</template>
<script setup>
import { computed, ref, onMounted, inject } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules, flyVisual, getDictLabel, geomAnalysis } from '@ztzf/utils'
import { fieldRules, flyVisual, geomAnalysis, getAiImg } from '@ztzf/utils'
import {
    gdPatrolTaskRepublish,
    gdFlyerPageApi,
    gdPatrolTaskAuditApi,
    gdPatrolTaskDetailApi,
} from './inspectionRequestApi'
import { gdWorkOrderFlowListApi, gdWorkOrderFlowPatrolListApi, gdWorkOrderDetailApi } from '../orderManage/orderManageApi'
import {
    gdWorkOrderFlowListApi,
    gdWorkOrderFlowPatrolListApi,
    gdWorkOrderDetailApi,
} from '../orderManage/orderManageApi'
import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi'
import { pxToRem } from '@/utils/rem'
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
@@ -298,7 +304,7 @@
import { queryAirById, airlineListApi, algorithmGroupedApi } from '@/api/zkxt'
import * as Cesium from 'cesium'
import { useStore } from 'vuex'
import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions'
import { getTaskTypeLabel, taskTypeCascaderProps } from '../taskTypeOptions'
// 初始化表单数据
const initForm = () => ({
@@ -355,7 +361,7 @@
            children: (group.algorithms || []).map(alg => ({
                id: alg.id,
                name: alg.name,
            }))
            })),
        }))
    } catch (e) {
        console.error('获取算法列表失败', e)
@@ -366,10 +372,12 @@
function getAlgorithmNames(algorithmIds) {
    if (!algorithmIds || !algorithmIds.length) return ''
    const allAlgorithms = algorithmTreeData.value.flatMap(group => group.children || [])
    return algorithmIds.map(id => {
        const item = allAlgorithms.find(alg => alg.id === id)
        return item ? item.name : id
    }).join(', ')
    return algorithmIds
        .map(id => {
            const item = allAlgorithms.find(alg => alg.id === id)
            return item ? item.name : id
        })
        .join(', ')
}
const gdStatusObj = {
@@ -489,11 +497,7 @@
    if (!isValid) return
    submitting.value = true
    try {
        const payload = {
            ...formData.value,
            patrolTaskType: toTaskTypeRequestValue(formData.value.patrolTaskType),
        }
        await gdPatrolTaskRepublish(payload)
        await gdPatrolTaskRepublish(formData.value)
        ElMessage.success('更新成功')
        visible.value = false
        emit('success')
@@ -508,8 +512,13 @@
    if (!formData.value?.id) return
    try {
        const res = await gdTaskResultListApi({ patrolTaskId: formData.value.id })
        taskResultList.value = res?.data?.data ?? []
        console.log(taskResultList.value, '8989')
        taskResultList.value = await Promise.all(
            (res?.data?.data ?? []).map(async item => {
                if (item.attachmentType !== 2) return item
                const aiImg = await getAiImg(item.resultUrl,item.geojson)
                return { ...item, aiImg }
            })
        )
    } finally {
    }
}
@@ -527,18 +536,18 @@
function getAirDetails() {
    const dockHeight = formData.value.height
    queryAirById(formData.value.patrolRouteUrl).then(res => {
        const { airlineWaypoints, airlineSetting } = res.data.data;
        const { airlineWaypoints, airlineSetting } = res.data.data
        // 使用空值合并运算符 ?? 或 逻辑或 || 兜底
        const { globalAirlineHeight = 0, airlineHeightMode } = airlineSetting || {};
        const { globalAirlineHeight = 0, airlineHeightMode } = airlineSetting || {}
        const relative = airlineHeightMode === 'relativeToStartPoint'
        const list = airlineWaypoints
        if (!list.length) return mapRef.value?.flyBoundary()
        const result = list.map(item => {
            let height = item?.globalHeight || globalAirlineHeight
            if (relative){
            if (relative) {
                height = height + Number(dockHeight)
            }
            return [Number(item.longitude), Number(item.latitude),height || 0]
            return [Number(item.longitude), Number(item.latitude), height || 0]
        })
        viewer.entities.add({
            polyline: {
@@ -584,7 +593,6 @@
    const res = await gdPatrolTaskDetailApi({ id: row.id })
    formData.value = { ...initForm(), ...res.data.data }
    formData.value.patrolTaskType = toTaskTypeCascaderValue(formData.value.patrolTaskType)
    // 确保 algorithmIds 是数组
    if (formData.value.algorithmIds && typeof formData.value.algorithmIds === 'string') {
        formData.value.algorithmIds = formData.value.algorithmIds.split(',').filter(Boolean)
@@ -596,7 +604,7 @@
    getAlgorithmList()
    // 获取工单详情并根据geom范围获取航线列表
    await getWorkOrderDetail(formData.value.workOrderId)
    ;['6', '7', '8'].includes(row.taskStatus) && await getTaskResultList()
    ;['6', '7', '8'].includes(row.taskStatus) && (await getTaskResultList())
    loadList()
    initMap()
    getAirDetails()
@@ -624,8 +632,8 @@
let VideoShow = ref(false)
let currentVideo = ref({})
function videoClick(row) {
    VideoShow.value = true
    currentVideo.value = row
    VideoShow.value = true
}
// 初始化地图实例
@@ -669,6 +677,16 @@
        width: calc((100% - 40px) / 5); /* 5列布局,减去4个10px间隙 */
        height: 110px;
        flex-shrink: 0;
        position: relative;
        overflow: hidden;
        border-radius: 4px;
        cursor: pointer;
        box-shadow: inset 0 0 0 1px rgba(17, 31, 68, 0.08);
        transition: box-shadow 0.16s ease;
        &:hover {
            box-shadow: inset 0 0 0 2px rgba(76, 52, 255, 0.48), 0 8px 20px rgba(76, 52, 255, 0.24);
        }
    }
    .el-image {
        width: 100%;
@@ -677,11 +695,41 @@
    .video-btn {
        width: 100%;
        height: 100%;
        background-color: #9E9E9E;
        position: relative;
        overflow: hidden;
        //border: 1px solid #D8D6FF;
        border-radius: 4px;
        background: linear-gradient(135deg, rgba(76, 52, 255, 0.14), rgba(76, 52, 255, 0) 48%),
            linear-gradient(180deg, #f4f5ff 0%, #e9ecff 100%);
        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);
        display: flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        &::before {
            content: '';
            position: absolute;
            inset: 0;
            background-image: linear-gradient(
                90deg,
                rgba(76, 52, 255, 0.05) 0,
                rgba(76, 52, 255, 0.05) 1px,
                transparent 1px,
                transparent 12px
            );
            opacity: 0.42;
        }
        .el-icon {
            position: relative;
            z-index: 1;
            width: 42px;
            height: 42px;
            border-radius: 50%;
            background: rgba(76, 52, 255, 0.72);
            box-shadow: 0 4px 12px rgba(76, 52, 255, 0.2);
        }
    }
}
:deep(.el-timeline-item__timestamp) {
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -6,28 +6,58 @@
        </el-tabs>
        <el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form">
            <el-form-item label="任务名称" prop="patrolTaskName">
                <el-input class="gd-input gray" v-model="searchParams.patrolTaskName" placeholder="请输入" clearable
                    @clear="handleSearch" />
                <el-input
                    class="gd-input gray"
                    v-model="searchParams.patrolTaskName"
                    placeholder="请输入"
                    clearable
                    @clear="handleSearch"
                />
            </el-form-item>
            <el-form-item label="任务类型" prop="patrolTaskType">
                <el-cascader class="gd-cascader gray" popper-class="gd-cascader-popper" v-model="searchParams.patrolTaskType"
                    :options="workOrderTypeXT" :props="taskTypeFilterCascaderProps" placeholder="请选择" clearable
                    @change="handleSearch" />
                <el-cascader
                    class="gd-cascader gray"
                    popper-class="gd-cascader-popper"
                    v-model="searchParams.patrolTaskType"
                    :options="workOrderTypeXT"
                    :props="taskTypeCascaderProps"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                />
            </el-form-item>
            <el-form-item label="任务状态" prop="taskStatus">
                <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.taskStatus"
                    placeholder="请选择" clearable @change="handleSearch">
                    <el-option v-for="item in dictObj.taskStatus" :key="item.dictKey" :label="item.dictValue"
                        :value="item.dictKey" />
                <el-select
                    class="gd-select gray"
                    popper-class="gd-select-popper"
                    v-model="searchParams.taskStatus"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                >
                    <el-option
                        v-for="item in dictObj.taskStatus"
                        :key="item.dictKey"
                        :label="item.dictValue"
                        :value="item.dictKey"
                    />
                </el-select>
            </el-form-item>
            <el-form-item label="执行时间" prop="executeTime">
                <el-date-picker class="gd-date-picker gray" popper-class="gd-date-picker-popper" v-model="dateRange"
                    type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
                    value-format="YYYY-MM-DD HH:mm:ss" @change="handleSearch" />
                <el-date-picker
                    class="gd-date-picker gray"
                    popper-class="gd-date-picker-popper"
                    v-model="dateRange"
                    type="daterange"
                    range-separator="-"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    value-format="YYYY-MM-DD HH:mm:ss"
                    @change="handleSearch"
                />
            </el-form-item>
            <el-form-item class="gd-search-actions">
@@ -38,8 +68,7 @@
        <div class="gd-table-container" v-loading="loading">
            <div class="gd-table-toolbar">
                <el-button v-if="permission.flyOrder_add" :icon="Plus" color="#4C34FF" type="primary"
                    @click="openForm('add')">
                <el-button v-if="permission.flyOrder_add" :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">
                    拆分工单
                </el-button>
            </div>
@@ -75,15 +104,25 @@
            </div>
            <div class="gd-pagination-parent">
                <el-pagination popper-class="gd-select-popper" v-model:current-page="searchParams.current"
                    v-model:page-size="searchParams.size" layout="total, prev, pager, next, sizes" :total="total"
                    @change="getList" />
                <el-pagination
                    popper-class="gd-select-popper"
                    v-model:current-page="searchParams.current"
                    v-model:page-size="searchParams.size"
                    layout="total, prev, pager, next, sizes"
                    :total="total"
                    @change="getList"
                />
            </div>
        </div>
        <FormDiaLog ref="dialogRef" @success="getList" v-if="dialogVisible" v-model="dialogVisible" />
        <ViewDiaLog ref="viewDiaLogRef" @success="getList" @refusalAccept="refusalAccept" v-if="viewDiaLogVisible"
            v-model="viewDiaLogVisible" />
        <ViewDiaLog
            ref="viewDiaLogRef"
            @success="getList"
            @refusalAccept="refusalAccept"
            v-if="viewDiaLogVisible"
            v-model="viewDiaLogVisible"
        />
    </basic-container>
</template>
<script setup>
@@ -97,7 +136,11 @@
import { gdPatrolTaskPageApi, gdPatrolTaskRemoveApi } from './inspectionRequestApi'
import ViewDiaLog from '@/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue'
import { useStore } from 'vuex'
import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
const store = useStore()
const permission = computed(() => store.state.user.permission)
@@ -136,28 +179,27 @@
provide('workOrderTypeXT', workOrderTypeXT)
const colors = {
    0: '#F6A000',//0待签收
    1: '#FF0202',//1拒绝签收
    2: '#FF0202',//2已撤回
    3: '#212BF4',//3待审核
    4: '#FF0000',//4审核驳回
    5: '#0068F0',//5审核通过
    6: '#FD6716',//6待验收
    7: '#FF0000',//7拒绝验收
    8: '#019612',//8验收通过
    0: '#F6A000', //0待签收
    1: '#FF0202', //1拒绝签收
    2: '#FF0202', //2已撤回
    3: '#212BF4', //3待审核
    4: '#FF0000', //4审核驳回
    5: '#0068F0', //5审核通过
    6: '#FD6716', //6待验收
    7: '#FF0000', //7拒绝验收
    8: '#019612', //8验收通过
}
// 获取列表
async function getList () {
async function getList() {
    const range = dateRangeFormat(dateRange.value)
    loading.value = true
    try {
        const res = await gdPatrolTaskPageApi({
            ...searchParams.value,
            startTime: range[0],
            endTime: range[1],
            createUser: activeName.value === 'my' ? store.state.user.userInfo.user_id : '',
            patrolTaskType: searchParams?.value?.patrolTaskType?.join?.(','),
        })
        list.value = res?.data?.data?.records ?? []
        total.value = res?.data?.data?.total ?? 0
@@ -166,20 +208,20 @@
    }
}
function tabsClick (tab, event) {
function tabsClick(tab, event) {
    activeName.value = tab.props.name
    resetForm()
    handleSearch()
}
// 查询
function handleSearch () {
function handleSearch() {
    searchParams.value.current = 1
    getList()
}
// 重置查询
function resetForm () {
function resetForm() {
    queryParamsRef.value?.resetFields()
    dateRange.value = []
    searchParams.value.current = 1
@@ -187,7 +229,7 @@
}
// 新增/编辑/查看 弹框
function openForm (mode, row) {
function openForm(mode, row) {
    dialogVisible.value = true
    nextTick(() => {
        dialogRef.value?.open({ mode, row })
@@ -196,7 +238,7 @@
// 状态:0待签收、1拒绝签收、2已撤回、3待审核、4审核驳回
// 5审核通过、6待验收、7拒绝验收、8验收通过
function viewDiaLogView (row) {
function viewDiaLogView(row) {
    viewDiaLogVisible.value = true
    nextTick(() => {
        let mode = ['1', '4'].includes(row.taskStatus) && permission.value.flyOrder_add ? 'edit' : 'view'
@@ -205,13 +247,12 @@
}
// 勾选值设置
function handleSelectionChange (rows) {
function handleSelectionChange(rows) {
    selectedIds.value = rows.map(item => item.id)
}
// 获取字典
function getDictList () {
function getDictList() {
    getDictionaryByCode('workOrderType,deviceLoadDemand,taskStatus').then(res => {
        dictObj.value = res.data.data
    })
@@ -220,7 +261,7 @@
    })
}
function refusalAccept (row) {
function refusalAccept(row) {
    dialogVisible.value = true
    nextTick(() => {
        dialogRef.value?.open({ mode: 'edit', row })
@@ -228,7 +269,7 @@
}
// 获取两个tab的总条数
async function getTabTotals () {
async function getTabTotals() {
    const allRes = await gdPatrolTaskPageApi({
        current: 1,
        size: 1,
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -8,12 +8,17 @@
        destroy-on-close
        :close-on-click-modal="false"
    >
    <el-tabs class="gd-tabs"  v-model="activeName" @tab-click="tabsClick" v-if="dialogReadonly && formData.workOrderStatus >= '30'">
        <el-tabs
            class="gd-tabs"
            v-model="activeName"
            @tab-click="tabsClick"
            v-if="dialogReadonly && formData.workOrderStatus >= '30'"
        >
            <el-tab-pane label="基础信息" name="basic"></el-tab-pane>
            <el-tab-pane label="成果数据" name="result">
                <OutcomeData :workOrderId="formData.id" />
            </el-tab-pane>
            </el-tabs>
        </el-tabs>
        <div class="content" style="display: flex" v-if="activeName === 'basic'">
            <div class="processBox" v-if="dialogMode !== 'add'">
                <div class="detail-title">工单记录</div>
@@ -94,17 +99,16 @@
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="工单类型" prop="workOrderType">
                                <!-- <el-cascader
                                <el-cascader
                                    class="gd-cascader"
                                    popper-class="gd-cascader-popper"
                                    v-model="formData.workOrderType"
                                    :options="workOrderTypeXT"
                                    :props="taskTypeCascaderProps"
                                    collapse-tags
                                    :props="{...taskTypeCascaderProps,multiple:true }"
                                    placeholder="请选择"
                                    clearable
                                /> -->
                                <el-cascader class="gd-cascader" popper-class="gd-cascader-popper" v-model="formData.workOrderType"
                    :options="workOrderTypeXT" :props="taskTypeCascaderProps" placeholder="请选择" clearable collapse-tags />
                                    collapse-tags
                                />
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
@@ -130,12 +134,7 @@
                                    clearable
                                    @change="loadDemandChange"
                                >
                                    <el-option
                                        v-for="item in payloadList"
                                        :key="item.name"
                                        :label="item.name"
                                        :value="item.name"
                                    />
                                    <el-option v-for="item in payloadList" :key="item.name" :label="item.name" :value="item.name" />
                                </el-select>
                            </el-form-item>
                        </el-col>
@@ -176,9 +175,7 @@
                </div>
                <el-table
                    class="separateTable"
                    :empty-text="
                        pointList.length ? '暂无数据' : '请先在地图上绘制工单范围'
                    "
                    :empty-text="pointList.length ? '暂无数据' : '请先在地图上绘制工单范围'"
                    ref="deviceTableRef"
                    :data="pointList.length ? deviceList : []"
                    row-key="id"
@@ -284,7 +281,10 @@
import OrderStepBar from '@/views/orderView/orderManage/orderManage/OrderStepBar.vue'
import OutcomeData from './outcomeData.vue'
import { getDictListApi } from '@/api/zkxt'
import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions'
import {
    getTaskTypeLabel,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
const store = useStore()
const permission = computed(() => store.state.user.permission)
const activeName = ref('basic')
@@ -412,7 +412,7 @@
async function getDeviceList() {
    try {
        const str = [...pointList.value, pointList.value[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
            let geom = `POLYGON((${str}))`
        let geom = `POLYGON((${str}))`
        const res = await gdManageDeviceListApi({
            deviceIds: dialogMode.value === 'add' ? '' : formData.value.recommendDeviceIds,
            devicePayload: formData.value?.deviceLoadDemand,
@@ -455,11 +455,7 @@
        if (!formData.value.id) {
            formData.value.workOrderStatus = '10'
        }
        const payload = {
            ...formData.value,
            workOrderType: toTaskTypeRequestValue(formData.value.workOrderType),
        }
        await gdWorkOrderSaveApi(payload)
        await gdWorkOrderSaveApi(formData.value)
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
@@ -481,7 +477,6 @@
    loadList()
    const res = await gdWorkOrderDetailApi({ id: formData.value.id })
    formData.value = res?.data?.data ?? {}
    formData.value.workOrderType = toTaskTypeCascaderValue(formData.value.workOrderType)
    dateRange.value = [formData.value.executeStartTime, formData.value.executeEndTime]
}
@@ -700,15 +695,15 @@
</script>
<style lang="scss">
.orderManageFormDlg{
        .el-dialog__body{
            display: flex;
            flex-direction: column;
            .content{
                height: 0;
                flex: 1;
            }
.orderManageFormDlg {
    .el-dialog__body {
        display: flex;
        flex-direction: column;
        .content {
            height: 0;
            flex: 1;
        }
    }
}
</style>
@@ -725,7 +720,6 @@
        }
    }
}
.content {
    display: flex;
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -6,28 +6,58 @@
        </el-tabs>
        <el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form">
            <el-form-item label="工单名称" prop="workOrderName">
                <el-input class="gd-input gray" v-model="searchParams.workOrderName" placeholder="请输入" clearable
                    @clear="handleSearch" />
                <el-input
                    class="gd-input gray"
                    v-model="searchParams.workOrderName"
                    placeholder="请输入"
                    clearable
                    @clear="handleSearch"
                />
            </el-form-item>
            <el-form-item label="工单类型" prop="workOrderType">
                <el-cascader class="gd-cascader gray" popper-class="gd-cascader-popper" v-model="searchParams.workOrderType"
                    :options="workOrderTypeXT" :props="taskTypeFilterCascaderProps" placeholder="请选择" clearable
                    @change="handleSearch" />
                <el-cascader
                    class="gd-cascader gray"
                    popper-class="gd-cascader-popper"
                    v-model="searchParams.workOrderType"
                    :options="workOrderTypeXT"
                    :props="taskTypeCascaderProps"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                />
            </el-form-item>
            <el-form-item label="工单状态" prop="workOrderStatus">
                <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.workOrderStatus"
                    placeholder="请选择" clearable @change="handleSearch">
                    <el-option v-for="item in dictObj.workOrderStatus" :key="item.dictKey"
                        :label="item.dictValue.split('_')[1]" :value="item.dictKey" />
                <el-select
                    class="gd-select gray"
                    popper-class="gd-select-popper"
                    v-model="searchParams.workOrderStatus"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                >
                    <el-option
                        v-for="item in dictObj.workOrderStatus"
                        :key="item.dictKey"
                        :label="item.dictValue.split('_')[1]"
                        :value="item.dictKey"
                    />
                </el-select>
            </el-form-item>
            <el-form-item label="执行时间" prop="executeTime">
                <el-date-picker class="gd-date-picker gray" popper-class="gd-date-picker-popper" v-model="dateRange"
                    type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
                    value-format="YYYY-MM-DD HH:mm:ss" @change="handleSearch" />
                <el-date-picker
                    class="gd-date-picker gray"
                    popper-class="gd-date-picker-popper"
                    v-model="dateRange"
                    type="daterange"
                    range-separator="-"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    value-format="YYYY-MM-DD HH:mm:ss"
                    @change="handleSearch"
                />
            </el-form-item>
            <el-form-item class="gd-search-actions">
@@ -38,8 +68,7 @@
        <div class="gd-table-container" v-loading="loading">
            <div class="gd-table-toolbar">
                <el-button v-if="permission.order_release" :icon="Plus" color="#4C34FF" type="primary"
                    @click="openForm('add')">
                <el-button v-if="permission.order_release" :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">
                    新增工单
                </el-button>
            </div>
@@ -85,9 +114,14 @@
            </div>
            <div class="gd-pagination-parent">
                <el-pagination popper-class="gd-select-popper" v-model:current-page="searchParams.current"
                    v-model:page-size="searchParams.size" layout="total, prev, pager, next, sizes" :total="total"
                    @change="getList" />
                <el-pagination
                    popper-class="gd-select-popper"
                    v-model:current-page="searchParams.current"
                    v-model:page-size="searchParams.size"
                    layout="total, prev, pager, next, sizes"
                    :total="total"
                    @change="getList"
                />
            </div>
        </div>
@@ -109,7 +143,11 @@
import testDock from '@/assets/docx/testDocx.docx'
import testPdf from '@/assets/pdf/testPdf.pdf'
import { useStore } from 'vuex'
import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
const store = useStore()
const activeName = ref('all')
@@ -148,7 +186,7 @@
provide('workOrderTypeXT', workOrderTypeXT)
// 获取列表
async function getList () {
async function getList() {
    const range = dateRangeFormat(dateRange.value)
    loading.value = true
    try {
@@ -157,6 +195,7 @@
            startTime: range[0],
            endTime: range[1],
            createUser: activeName.value === 'my' ? store.state.user.userInfo.user_id : '',
            workOrderType: searchParams?.value?.workOrderType?.join?.(','),
        })
        list.value = res?.data?.data?.records ?? []
        total.value = res?.data?.data?.total ?? 0
@@ -166,27 +205,27 @@
}
// 查询
function handleSearch () {
function handleSearch() {
    searchParams.value.current = 1
    getList()
}
// 重置查询
function resetForm () {
function resetForm() {
    queryParamsRef.value?.resetFields()
    dateRange.value = []
    searchParams.value.current = 1
    getList()
}
function tabsClick (tab, event) {
function tabsClick(tab, event) {
    activeName.value = tab.props.name
    resetForm()
    handleSearch()
}
// 新增/编辑/查看 弹框
function openForm (mode, row) {
function openForm(mode, row) {
    dialogVisible.value = true
    nextTick(() => {
        dialogRef.value?.open({ mode, row })
@@ -196,7 +235,7 @@
// 21响应中_申请取消、22响应中_申请修改、23响应中_已取消、
// 30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、
// 50验收通过_待结算、60结算完成_已结算
function openFormChange (row) {
function openFormChange(row) {
    dialogVisible.value = true
    nextTick(() => {
        const mode = ['11'].includes(row.workOrderStatus) && permission.value.order_release ? 'edit' : 'view'
@@ -223,7 +262,7 @@
}
// 删除
async function handleDelete (row) {
async function handleDelete(row) {
    const tips = row ? '该条' : '选中的项'
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
        type: 'warning',
@@ -239,12 +278,12 @@
}
// 勾选值设置
function handleSelectionChange (rows) {
function handleSelectionChange(rows) {
    selectedIds.value = rows.map(item => item.id)
}
// 获取字典
function getDictList () {
function getDictList() {
    getDictionaryByCode('deviceLoadDemand,workOrderType,workOrderStatus,taskStatus').then(res => {
        dictObj.value = res.data.data
    })
@@ -254,7 +293,7 @@
}
// 获取两个tab的总条数
async function getTabTotals () {
async function getTabTotals() {
    // 获取全部tab的总数
    const allRes = await gdWorkOrderPageApi({
        current: 1,
applications/task-work-order/src/views/orderView/orderManage/orderManage/outcomeData.vue
@@ -23,6 +23,24 @@
        </el-select>
      </el-form-item>
      <el-form-item label="附件类型" prop="attachmentType">
        <el-select
          class="gd-select"
              popper-class="gd-select-popper"
          v-model="searchParams.attachmentType"
          placeholder="请选择"
          clearable
          @change="handleSearch"
        >
          <el-option
            v-for="item in attachmentTypeOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>
      <el-form-item >
        <el-button :icon="RefreshRight" @click="resetForm"></el-button>
        <el-button :icon="Search" color="#383874" @click="handleSearch"></el-button>
@@ -38,15 +56,15 @@
          <el-table-column type="index" label="序号" width="80" />
          <el-table-column label="图片/视频" >
            <template v-slot="{ row }">
              <el-image
                v-if="row.attachmentType ===0 && row.resultUrl"
                :src="row.resultUrl"
                :preview-src-list="[row.resultUrl]"
                fit="cover"
                style="width: 80px; height: 80px; border-radius: 4px;"
                                preview-teleported
              />
                            <div class="video-btn" v-if="row.attachmentType === 1 && row.resultUrl" @click="videoClick(row)">
                            <el-image
                                v-if="row.attachmentType === 1 || row.attachmentType === 2"
                                :src="row.attachmentType === 1 ? row.resultUrl : row.aiImg"
                                :preview-src-list="[row.attachmentType === 1 ? row.resultUrl : row.aiImg]"
                                fit="cover"
                    style="width: 80px; height: 80px"
                    preview-teleported
                            />
                            <div class="video-btn" v-if="row.attachmentType === 3 && row.resultUrl" @click="videoClick(row)">
                                <el-icon :size="30" color="#fff">
                                    <VideoPlay />
                                </el-icon>
@@ -89,7 +107,7 @@
import {gdTaskResultPageApi, gdTaskResultDownloadApi, gdTaskResultRemoveApi,listByWorkOrderId}from './orderManageApi'
import { Search, RefreshRight, Download } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getDictLabel } from '@ztzf/utils'
import { getAiImg, getDictLabel } from '@ztzf/utils'
import dayjs from 'dayjs'
import VideoPlayDialog from '@/components/VideoPlayDialog.vue'
@@ -106,7 +124,8 @@
const initSearchParams = () => ({
  current: 1,
  size: 10,
  patrolTaskIds: []
  patrolTaskIds: [],
  attachmentType: ''
})
const searchParams = ref(initSearchParams())
@@ -117,6 +136,11 @@
const selectedRows = ref([])
const patrolTaskList = ref([])
const dictObj = inject('dictObj')
const attachmentTypeOptions = [
    { label: '媒体文件', value: 1 },
    { label: 'AI文件', value: 2 },
    { label: '主视频', value: 3 },
]
// 导出加载状态
const exportLoading = ref(false)
// 获取巡查任务列表
@@ -140,7 +164,13 @@
        ? searchParams.value.patrolTaskIds.join(',')
        : ''
    })
    list.value = res?.data?.data?.records || []
        list.value = await Promise.all(
            (res?.data?.data?.records ?? []).map(async item => {
                if (item.attachmentType !== 2) return item
                const aiImg = await getAiImg(item.resultUrl,item.geojson)
                return { ...item, aiImg }
            })
        )
    total.value = res?.data?.data?.total || 0
  } finally {
    loading.value = false
@@ -246,8 +276,8 @@
let VideoShow = ref(false)
let currentVideo = ref({})
function videoClick(row) {
    currentVideo.value = row
    VideoShow.value = true
  currentVideo.value = row
}
// 监听 workOrderId 变化
applications/task-work-order/src/views/orderView/orderManage/taskTypeOptions.js
@@ -35,38 +35,9 @@
    )
}
function parseTaskTypeValue(value) {
    if (typeof value !== 'string') return value
    try {
        const result = JSON.parse(value)
        return Array.isArray(result) ? result : value
    } catch (error) {
        return value
    }
}
export function toTaskTypeCascaderValue(value) {
    value = parseTaskTypeValue(value)
    if (!value) return []
    if (typeof value === 'string') return []
    if (!Array.isArray(value)) return []
    if (isValidPath(value)) return [value]
    if (value.length === 1 && Array.isArray(value[0]) && !isValidPath(value[0])) {
        value = value[0]
    }
    return value.filter(isValidPath)
}
export function toTaskTypeRequestValue(value) {
    return toTaskTypeCascaderValue(value).map(item => [item[0], item[1]])
}
export function getTaskTypeLeafValues(value) {
    return toTaskTypeRequestValue(value).map(item => item[1])
}
export function getTaskTypeLabel(value, options = []) {
    const paths = toTaskTypeCascaderValue(value)
    if (!Array.isArray(value) || !value.length) return ''
    const paths = value.filter(isValidPath)
    if (paths.length) {
        return paths
            .map(path => {
@@ -77,29 +48,12 @@
            .join('、')
    }
    if (!value) return ''
    for (const item of options) {
        if (item.dictValue === value) return item.dictLabel
        const child = (item.children || []).find(option => option.dictValue === value)
        if (child) return child.dictLabel
    }
    return value
    return ''
}
export const taskTypeCascaderProps = {
    label: 'dictLabel',
    value: 'dictValue',
    children: 'children',
    multiple: true,
    emitPath: true,
    checkStrictly: false,
}
export const taskTypeFilterCascaderProps = {
    label: 'dictLabel',
    value: 'dictValue',
    children: 'children',
    emitPath: false,
    checkStrictly: false,
}
packages/utils/common/index.js
@@ -73,3 +73,69 @@
            return { longitude, latitude }
        })
}
// 图片转带ai框的图片
export function getAiImg(url, aiFrameSource) {
    if (!url) return url
    if (!aiFrameSource) return url
    // let url = 'https://gimg3.baidu.com/search/src=https%3A%2F%2Fpic.rmb.bdstatic.com%2Fbjh%2Fportrait%2F165a01e1cd859d59133b7755623a6c29.png&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=r1,1&n=0&g=4&er=404&q=100&maxorilen2heic=2000000?sec=1780851600&t=d5ce5f611eafadd932b84ef14275fbda'
    // const aiFrame1 = '[{"score":0.89990234375,"bbox":{"x_cen":195.5,"y_cen":326.5,"width":117.0,"height":265.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.89306640625,"bbox":{"x_cen":1194.5,"y_cen":559.5,"width":115.0,"height":261.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.88720703125,"bbox":{"x_cen":179.0,"y_cen":955.5,"width":124.0,"height":249.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.88330078125,"bbox":{"x_cen":1198.5,"y_cen":260.5,"width":115.0,"height":285.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.84716796875,"bbox":{"x_cen":204.5,"y_cen":71.5,"width":115.0,"height":143.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.83203125,"bbox":{"x_cen":186.0,"y_cen":657.5,"width":114.0,"height":269.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"},{"score":0.78662109375,"bbox":{"x_cen":1205.5,"y_cen":49.5,"width":117.0,"height":99.0},"class_name":"car","algorithmId":"e71116098eeb1d60cfebd04d30653b151"}]'
    const aiFrame = JSON.parse(aiFrameSource)
    const img = new Image()
    img.crossOrigin = 'anonymous'
    return new Promise(resolve => {
        img.onload = () => {
            if (!img.naturalWidth || !img.naturalHeight) {
                resolve('')
                return
            }
            const canvas = document.createElement('canvas')
            const ctx = canvas.getContext('2d')
            if (!ctx) {
                resolve('')
                return
            }
            canvas.width = img.naturalWidth
            canvas.height = img.naturalHeight
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
            aiFrame.forEach(item => {
                let target = item
                const { x_cen, y_cen, width, height } = target.bbox || {}
                if ([x_cen, y_cen, width, height].some(value => typeof value !== 'number')) return
                const x = x_cen - width / 2
                const y = y_cen - height / 2
                const label = target.class_name || ''
                const fontSize = Math.max(18, Math.round(canvas.width / 80))
                const labelHeight = fontSize + 10
                const labelY = y - labelHeight >= 0 ? y - labelHeight : y
                ctx.strokeStyle = '#FF3B30'
                ctx.lineWidth = Math.max(3, Math.round(canvas.width / 640))
                ctx.strokeRect(x, y, width, height)
                if (label) {
                    ctx.font = `${fontSize}px Arial`
                    const labelWidth = ctx.measureText(label).width + 16
                    ctx.fillStyle = '#FF3B30'
                    ctx.fillRect(x, labelY, labelWidth, labelHeight)
                    ctx.fillStyle = '#FFFFFF'
                    ctx.textBaseline = 'middle'
                    ctx.fillText(label, x + 8, labelY + labelHeight / 2)
                }
            })
            try {
                resolve(canvas.toDataURL('image/jpeg', 0.92))
            } catch (error) {
                console.log(error)
                resolve('')
            }
        }
        img.onerror = () => resolve('')
        img.src = url
    })
}
pnpm-lock.yaml
@@ -4,201 +4,6 @@
  autoInstallPeers: true
  excludeLinksFromLockfile: false
catalogs:
  default:
    '@amap/amap-jsapi-loader':
      specifier: ^1.0.1
      version: 1.0.1
    '@dvgis/dc-sdk':
      specifier: 3.4.0
      version: 3.4.0
    '@dvgis/vite-plugin-dc':
      specifier: 2.2.0
      version: 2.2.0
    '@element-plus/icons-vue':
      specifier: ^2.3.1
      version: 2.3.2
    '@saber/nf-design-base-elp':
      specifier: ^1.3.0
      version: 1.3.0
    '@saber/nf-form-design-elp':
      specifier: ^1.4.1
      version: 1.6.1
    '@saber/nf-form-elp':
      specifier: ^1.4.4
      version: 1.6.3
    '@smallwei/avue':
      specifier: 3.6.2
      version: 3.6.2
    '@turf/turf':
      specifier: ^6.5.0
      version: 6.5.0
    '@vitejs/plugin-basic-ssl':
      specifier: ^1.1.0
      version: 1.2.0
    '@vitejs/plugin-vue':
      specifier: ^5.0.4
      version: 5.2.4
    '@vue/compiler-sfc':
      specifier: ^3.4.27
      version: 3.5.27
    animate.css:
      specifier: ^4.1.1
      version: 4.1.1
    avue-plugin-ueditor:
      specifier: 1.0.4
      version: 1.0.4
    axios:
      specifier: ^1.8.3
      version: 1.13.2
    cesium:
      specifier: 1.126.0
      version: 1.126.0
    codemirror:
      specifier: ^5.65.16
      version: 5.65.20
    crypto-js:
      specifier: ^4.1.1
      version: 4.2.0
    dayjs:
      specifier: ^1.10.6
      version: 1.11.19
    decimal.js:
      specifier: ^10.4.3
      version: 10.6.0
    disable-devtool:
      specifier: ^0.3.8
      version: 0.3.9
    echarts:
      specifier: ^5.6.0
      version: 5.6.0
    element-plus:
      specifier: 2.9.11
      version: 2.9.11
    eventemitter3:
      specifier: ^5.0.1
      version: 5.0.4
    highlight.js:
      specifier: ^11.9.0
      version: 11.11.1
    html5-qrcode:
      specifier: ^2.3.8
      version: 2.3.8
    hull.js:
      specifier: ^1.0.6
      version: 1.0.6
    js-audio-recorder:
      specifier: ^1.0.7
      version: 1.0.7
    js-base64:
      specifier: ^3.7.4
      version: 3.7.8
    js-cookie:
      specifier: ^3.0.0
      version: 3.0.5
    js-md5:
      specifier: ^0.7.3
      version: 0.7.3
    jszip:
      specifier: ^3.10.1
      version: 3.10.1
    leaflet:
      specifier: ^1.9.4
      version: 1.9.4
    leaflet-ant-path:
      specifier: ^1.3.0
      version: 1.3.0
    lodash:
      specifier: ^4.17.21
      version: 4.17.21
    mathjs:
      specifier: 10.0.0
      version: 10.0.0
    mitt:
      specifier: ^3.0.1
      version: 3.0.1
    mqtt:
      specifier: ^5.11.0
      version: 5.14.1
    nprogress:
      specifier: ^0.2.0
      version: 0.2.0
    postcss-pxtorem:
      specifier: ^6.1.0
      version: 6.1.0
    prettier:
      specifier: ^2.8.7
      version: 2.8.8
    qrcodejs2-fix:
      specifier: ^0.0.1
      version: 0.0.1
    reconnecting-websocket:
      specifier: ^4.4.0
      version: 4.4.0
    sass:
      specifier: ^1.85.1
      version: 1.97.2
    sm-crypto:
      specifier: ^0.3.13
      version: 0.3.14
    terser:
      specifier: ^5.31.1
      version: 5.46.0
    trtc-sdk-v5:
      specifier: ^5.14.0
      version: 5.15.0
    unplugin-auto-import:
      specifier: ^0.11.2
      version: 0.11.5
    uuid:
      specifier: ^11.1.0
      version: 11.1.0
    vant:
      specifier: ^4.9.21
      version: 4.9.22
    video.js:
      specifier: ^8.23.4
      version: 8.23.4
    videojs-markers:
      specifier: ^1.0.1
      version: 1.0.1
    vite:
      specifier: 5.2.12
      version: 5.2.12
    vite-plugin-compression:
      specifier: ^0.5.1
      version: 0.5.1
    vite-plugin-minipic:
      specifier: ^1.3.0
      version: 1.3.2
    vite-plugin-svg-icons:
      specifier: ^2.0.1
      version: 2.0.1
    vite-plugin-vue-setup-extend:
      specifier: ^0.4.0
      version: 0.4.0
    vue:
      specifier: ^3.5.13
      version: 3.5.27
    vue-i18n:
      specifier: ^9.1.9
      version: 9.1.9
    vue-router:
      specifier: ^4.3.2
      version: 4.6.4
    vue3-clipboard:
      specifier: ^1.0.0
      version: 1.0.0
    vuedraggable:
      specifier: ^4.1.0
      version: 4.1.0
    vuex:
      specifier: ^4.1.0
      version: 4.1.0
    xlsx:
      specifier: ^0.18.5
      version: 0.18.5
overrides:
  '@zip.js/zip.js': 2.7.34
@@ -395,7 +200,7 @@
        version: 3.5.27
      postcss-pxtorem:
        specifier: 'catalog:'
        version: 6.1.0(postcss@8.5.6)
        version: 6.1.0(postcss@5.2.18)
      sass:
        specifier: 'catalog:'
        version: 1.97.2
@@ -603,7 +408,7 @@
        version: 3.5.27
      postcss-pxtorem:
        specifier: 'catalog:'
        version: 6.1.0(postcss@8.5.6)
        version: 6.1.0(postcss@5.2.18)
      sass:
        specifier: 'catalog:'
        version: 1.97.2
@@ -820,7 +625,7 @@
        version: 3.5.27
      postcss-pxtorem:
        specifier: 'catalog:'
        version: 6.1.0(postcss@8.5.6)
        version: 6.1.0(postcss@5.2.18)
      sass:
        specifier: 'catalog:'
        version: 1.97.2
@@ -898,52 +703,52 @@
    dependencies:
      '@dcloudio/uni-app':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-harmony':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-plus':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-components':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-alipay':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-baidu':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-harmony':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-jd':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-kuaishou':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-lark':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-qq':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-weixin':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-xhs':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-quickapp-webview':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-ui':
        specifier: ^1.5.11
        version: 1.5.11
@@ -995,19 +800,16 @@
        version: 5.0.0(@unocss/eslint-plugin@66.6.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
      '@dcloudio/uni-automator':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-stacktracey':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001
      '@dcloudio/uni-uts-v1':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001
      '@dcloudio/vite-plugin-uni':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@esbuild/darwin-arm64':
        specifier: 0.25.1
        version: 0.25.1
@@ -1052,7 +854,7 @@
        version: 6.1.2
      rollup-plugin-visualizer:
        specifier: ^6.0.3
        version: 6.0.5
        version: 6.0.5(rollup@4.55.3)
      sass:
        specifier: 1.79.6
        version: 1.79.6
@@ -1076,7 +878,7 @@
        version: 65.5.0(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      unocss-preset-weapp:
        specifier: ^66.0.2
        version: 66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
        version: 66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
      unplugin-auto-import:
        specifier: 19.3.0
        version: 19.3.0(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))
@@ -1103,52 +905,52 @@
    dependencies:
      '@dcloudio/uni-app':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-harmony':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-plus':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-components':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-alipay':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-baidu':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-harmony':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-jd':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-kuaishou':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-lark':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-qq':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-weixin':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-xhs':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-quickapp-webview':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-ui':
        specifier: ^1.5.11
        version: 1.5.11
@@ -1200,16 +1002,16 @@
        version: 5.0.0(@unocss/eslint-plugin@66.6.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
      '@dcloudio/uni-automator':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-stacktracey':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001
      '@dcloudio/vite-plugin-uni':
        specifier: 3.0.0-4070520250711001
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
        version: 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@esbuild/darwin-arm64':
        specifier: 0.25.1
        version: 0.25.1
@@ -1254,7 +1056,7 @@
        version: 6.1.2
      rollup-plugin-visualizer:
        specifier: ^6.0.3
        version: 6.0.5
        version: 6.0.5(rollup@4.55.3)
      sass:
        specifier: 1.79.6
        version: 1.79.6
@@ -1278,7 +1080,7 @@
        version: 65.5.0(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      unocss-preset-weapp:
        specifier: ^66.0.2
        version: 66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
        version: 66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
      unplugin-auto-import:
        specifier: 19.3.0
        version: 19.3.0(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))
@@ -2035,9 +1837,6 @@
  '@dcloudio/uni-app-vue@3.0.0-4070520250711001':
    resolution: {integrity: sha512-/ISF+1xrcvUtcote+LfLyk/pyizTjEY6/3HZgBsOfXchkZBz0fkTWgnj5RHYeqwD7aHLsOJX93eaazNMnzD9Zw==}
  '@dcloudio/uni-app-x@0.7.100':
    resolution: {integrity: sha512-aiRJ/A5Gak24aYKbPrEB6dJycqLpL8/24hqiUOezxFcEYVjNn18UBHSwGGuFUNRw3j3RhEaFzPL5n+reQTXRjg==}
  '@dcloudio/uni-app@3.0.0-4070520250711001':
    resolution: {integrity: sha512-rR1SGJknJyDy80vb47yDICXcZrV11KJ5yhNG8aC+kH2ZL338faBrdOQgqqN/XJegVxJdTfv1KqUXuaShMWTZGA==}
    peerDependencies:
@@ -2133,50 +1932,6 @@
  '@dcloudio/uni-ui@1.5.11':
    resolution: {integrity: sha512-DBtk046ofmeFd82zRI7d89SoEwrAxYzUN3WVPm1DIBkpLPG5F5QDNkHMnZGu2wNrMEmGBjBpUh3vqEY1L3jaMw==}
  '@dcloudio/uni-uts-v1@3.0.0-4070520250711001':
    resolution: {integrity: sha512-wQYCO/UA4WcJ+0UDKF86WjiyXhsiOakTa/XBnkWpIEaXTPTwfnwQfbjDWZi6Hq81oNl0ZtS6jEHvPAIj0Nm5JA==}
  '@dcloudio/uts-darwin-arm64@3.0.0-4070520250711001':
    resolution: {integrity: sha512-dDRVyaxflQDG/7/X4AnWZRH0eiTlWZ3Zyr+ybDxa1AX+UTKXYCEU5J85gLP2DVuNLOopueI+ba2SbyxazMOTQg==}
    engines: {node: '>=10'}
    cpu: [arm64]
    os: [darwin]
  '@dcloudio/uts-darwin-x64@3.0.0-4070520250711001':
    resolution: {integrity: sha512-HK3gd0duu8kE5FZTnhDAE4lYBoOjTz6wKL/2MWH4g1LxMoO7eaIgvvazXJGuv0Ca1M1u1RsCYDg4g5I3WgCY6A==}
    engines: {node: '>=10'}
    cpu: [x64]
    os: [darwin]
  '@dcloudio/uts-linux-x64-gnu@3.0.0-4070520250711001':
    resolution: {integrity: sha512-GtJDbMXNyLLHtQlhyrkxRrqlwNBp+Di+Q5WUyr+MPeHyeLphRjWmbreNsgjt1yMJgc5BkJg+5wwTWHj2wf9BWw==}
    engines: {node: '>=10'}
    cpu: [x64]
    os: [linux]
    libc: [gnu]
  '@dcloudio/uts-linux-x64-musl@3.0.0-4070520250711001':
    resolution: {integrity: sha512-5VYrGIOzRd/hmfFlSPagPgqXZuys1raNixNCSDgSUySSap37oQtrjST7WolqxdUVz1YFpmZRwa7BE5CGvEMX/w==}
    engines: {node: '>=10'}
    cpu: [x64]
    os: [linux]
    libc: [musl]
  '@dcloudio/uts-win32-ia32-msvc@3.0.0-4070520250711001':
    resolution: {integrity: sha512-noFe/ii1F+ssDWd7ClsJu/Lw/1B1S3W7b5x2Vq6k6y0/+BOHHjAW8oJfATDxWwnlvlyWmjX+FUAe79K9qxvcFQ==}
    engines: {node: '>=10'}
    cpu: [ia32]
    os: [win32]
  '@dcloudio/uts-win32-x64-msvc@3.0.0-4070520250711001':
    resolution: {integrity: sha512-+dWatERo16CifUgcA8g7PXRbC48cfq8c0VMMMNIdtuySOb+2S4Ic/2MgrTLWlYQnRJOrgw4VzVOQeP9HzgjcCg==}
    engines: {node: '>=10'}
    cpu: [x64]
    os: [win32]
  '@dcloudio/uts@3.0.0-4070520250711001':
    resolution: {integrity: sha512-97bCYKK1Jl4riFmqnCcUxAoHmN8ew+N+bYY5H6qSsdklP221y2rG2nRMeuBYi5vfgcz4S/gpAtjOkc0gdRqgTw==}
  '@dcloudio/vite-plugin-uni@3.0.0-4070520250711001':
    resolution: {integrity: sha512-Pcd1YIPP+0hyC64oh0P3EBZGF8YHsScUS7R0wjlDGkRMsGowil0IbBE5DrmqjZ7QE+0Lau77yxfZdkSjY3gbvA==}
@@ -3088,9 +2843,11 @@
  '@saber/nf-form-design-elp@1.6.1':
    resolution: {integrity: sha512-XAKbZebglIxVxj6azOu5YKlbyJV/i8B2Kayl9MsRUVfEhnegQveio35u2afVI4dFj3Ul9KMbaoyvVokh1EvmQQ==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-design-elp/-/1.6.1/nf-form-design-elp-1.6.1.tgz}
    engines: {node: ^20.19.0 || >=22.12.0}
  '@saber/nf-form-elp@1.6.3':
    resolution: {integrity: sha512-NAhWvrsswZCGfSarlSFCdYadUZuYeUzns2TSr2FQotSsvs/4xitJhcVzkRQvTpzq1+FtP9MkxEnShGa4ILvMdw==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-elp/-/1.6.3/nf-form-elp-1.6.3.tgz}
    engines: {node: ^20.19.0 || >=22.12.0}
  '@sinonjs/commons@1.8.6':
    resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==}
@@ -4148,9 +3905,6 @@
  ajv@8.17.1:
    resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
  android-versions@1.9.0:
    resolution: {integrity: sha512-13O2B6PQMEM4ej9n13ePRQeckrCoKbZrvuzlLvK+9s2QmncpHDbYzZxhgapN32sJNoifN6VAHexLnd/6CYrs7Q==}
  animate.css@4.1.1:
    resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==}
@@ -4725,10 +4479,6 @@
  colorette@2.0.20:
    resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
  colors@1.4.0:
    resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==}
    engines: {node: '>=0.1.90'}
  combined-stream@1.0.8:
    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
    engines: {node: '>= 0.8'}
@@ -4754,9 +4504,6 @@
  commist@3.2.0:
    resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==}
  commondir@1.0.1:
    resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
  compare-versions@3.6.0:
    resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==}
@@ -5727,10 +5474,6 @@
    resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
    engines: {node: '>= 18.0.0'}
  find-cache-dir@3.3.2:
    resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
    engines: {node: '>=8'}
  find-up-simple@1.0.1:
    resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
    engines: {node: '>=18'}
@@ -5976,9 +5719,6 @@
  graphemer@1.4.0:
    resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
  graphlib@2.1.8:
    resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==}
  gzip-size@6.0.0:
    resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
@@ -6962,10 +6702,6 @@
  magic-string@0.30.21:
    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
  make-dir@3.1.0:
    resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
    engines: {node: '>=8'}
  make-dir@4.0.0:
    resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
    engines: {node: '>=10'}
@@ -6995,11 +6731,6 @@
  mathml-tag-names@2.1.3:
    resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
  md5-file@5.0.0:
    resolution: {integrity: sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==}
    engines: {node: '>=10.13.0'}
    hasBin: true
  mdast-util-find-and-replace@3.0.2:
    resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
@@ -7410,10 +7141,6 @@
  object-copy@0.1.0:
    resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
    engines: {node: '>=0.10.0'}
  object-hash@3.0.0:
    resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
    engines: {node: '>= 6'}
  object-inspect@1.13.4:
    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
@@ -9594,6 +9321,201 @@
  zwitch@2.0.4:
    resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
catalogs:
  default:
    '@amap/amap-jsapi-loader':
      specifier: ^1.0.1
      version: 1.0.1
    '@dvgis/dc-sdk':
      specifier: 3.4.0
      version: 3.4.0
    '@dvgis/vite-plugin-dc':
      specifier: 2.2.0
      version: 2.2.0
    '@element-plus/icons-vue':
      specifier: ^2.3.1
      version: 2.3.2
    '@saber/nf-design-base-elp':
      specifier: ^1.3.0
      version: 1.3.0
    '@saber/nf-form-design-elp':
      specifier: ^1.4.1
      version: 1.6.1
    '@saber/nf-form-elp':
      specifier: ^1.4.4
      version: 1.6.3
    '@smallwei/avue':
      specifier: 3.6.2
      version: 3.6.2
    '@turf/turf':
      specifier: ^6.5.0
      version: 6.5.0
    '@vitejs/plugin-basic-ssl':
      specifier: ^1.1.0
      version: 1.2.0
    '@vitejs/plugin-vue':
      specifier: ^5.0.4
      version: 5.2.4
    '@vue/compiler-sfc':
      specifier: ^3.4.27
      version: 3.5.27
    animate.css:
      specifier: ^4.1.1
      version: 4.1.1
    avue-plugin-ueditor:
      specifier: 1.0.4
      version: 1.0.4
    axios:
      specifier: ^1.8.3
      version: 1.13.2
    cesium:
      specifier: 1.126.0
      version: 1.126.0
    codemirror:
      specifier: ^5.65.16
      version: 5.65.20
    crypto-js:
      specifier: ^4.1.1
      version: 4.2.0
    dayjs:
      specifier: ^1.10.6
      version: 1.11.19
    decimal.js:
      specifier: ^10.4.3
      version: 10.6.0
    disable-devtool:
      specifier: ^0.3.8
      version: 0.3.9
    echarts:
      specifier: ^5.6.0
      version: 5.6.0
    element-plus:
      specifier: 2.9.11
      version: 2.9.11
    eventemitter3:
      specifier: ^5.0.1
      version: 5.0.4
    highlight.js:
      specifier: ^11.9.0
      version: 11.11.1
    html5-qrcode:
      specifier: ^2.3.8
      version: 2.3.8
    hull.js:
      specifier: ^1.0.6
      version: 1.0.6
    js-audio-recorder:
      specifier: ^1.0.7
      version: 1.0.7
    js-base64:
      specifier: ^3.7.4
      version: 3.7.8
    js-cookie:
      specifier: ^3.0.0
      version: 3.0.5
    js-md5:
      specifier: ^0.7.3
      version: 0.7.3
    jszip:
      specifier: ^3.10.1
      version: 3.10.1
    leaflet:
      specifier: ^1.9.4
      version: 1.9.4
    leaflet-ant-path:
      specifier: ^1.3.0
      version: 1.3.0
    lodash:
      specifier: ^4.17.21
      version: 4.17.21
    mathjs:
      specifier: 10.0.0
      version: 10.0.0
    mitt:
      specifier: ^3.0.1
      version: 3.0.1
    mqtt:
      specifier: ^5.11.0
      version: 5.14.1
    nprogress:
      specifier: ^0.2.0
      version: 0.2.0
    postcss-pxtorem:
      specifier: ^6.1.0
      version: 6.1.0
    prettier:
      specifier: ^2.8.7
      version: 2.8.8
    qrcodejs2-fix:
      specifier: ^0.0.1
      version: 0.0.1
    reconnecting-websocket:
      specifier: ^4.4.0
      version: 4.4.0
    sass:
      specifier: ^1.85.1
      version: 1.97.2
    sm-crypto:
      specifier: ^0.3.13
      version: 0.3.14
    terser:
      specifier: ^5.31.1
      version: 5.46.0
    trtc-sdk-v5:
      specifier: ^5.14.0
      version: 5.15.0
    unplugin-auto-import:
      specifier: ^0.11.2
      version: 0.11.5
    uuid:
      specifier: ^11.1.0
      version: 11.1.0
    vant:
      specifier: ^4.9.21
      version: 4.9.22
    video.js:
      specifier: ^8.23.4
      version: 8.23.4
    videojs-markers:
      specifier: ^1.0.1
      version: 1.0.1
    vite:
      specifier: 5.2.12
      version: 5.2.12
    vite-plugin-compression:
      specifier: ^0.5.1
      version: 0.5.1
    vite-plugin-minipic:
      specifier: ^1.3.0
      version: 1.3.2
    vite-plugin-svg-icons:
      specifier: ^2.0.1
      version: 2.0.1
    vite-plugin-vue-setup-extend:
      specifier: ^0.4.0
      version: 0.4.0
    vue:
      specifier: ^3.5.13
      version: 3.5.27
    vue-i18n:
      specifier: ^9.1.9
      version: 9.1.9
    vue-router:
      specifier: ^4.3.2
      version: 4.6.4
    vue3-clipboard:
      specifier: ^1.0.0
      version: 1.0.0
    vuedraggable:
      specifier: ^4.1.0
      version: 4.1.0
    vuex:
      specifier: ^4.1.0
      version: 4.1.0
    xlsx:
      specifier: ^0.18.5
      version: 0.18.5
snapshots:
  '@amap/amap-jsapi-loader@1.0.1': {}
@@ -10485,10 +10407,10 @@
  '@dcloudio/types@3.4.29': {}
  '@dcloudio/uni-app-harmony@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-app-harmony@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-app-uts': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-uts': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      debug: 4.4.3
      fs-extra: 10.1.0
      licia: 1.48.0
@@ -10503,10 +10425,10 @@
      - vite
      - vue
  '@dcloudio/uni-app-plus@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-app-plus@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-app-uts': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-uts': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app-vue': 3.0.0-4070520250711001
      debug: 4.4.3
      fs-extra: 10.1.0
@@ -10522,12 +10444,12 @@
      - vite
      - vue
  '@dcloudio/uni-app-uts@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-app-uts@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@babel/parser': 7.28.6
      '@babel/types': 7.28.6
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-console': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-console': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-nvue-styler': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
@@ -10557,9 +10479,9 @@
      - ts-node
      - vue
  '@dcloudio/uni-app-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-app-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-nvue-styler': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
@@ -10582,18 +10504,16 @@
  '@dcloudio/uni-app-vue@3.0.0-4070520250711001': {}
  '@dcloudio/uni-app-x@0.7.100': {}
  '@dcloudio/uni-app@3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-app@3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/types': 3.4.29
      '@dcloudio/uni-cloud': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-components': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-console': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cloud': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-components': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-console': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-push': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-push': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@dcloudio/uni-stat': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-stat': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@vue/shared': 3.4.21
    transitivePeerDependencies:
      - '@nuxt/kit'
@@ -10604,9 +10524,9 @@
      - ts-node
      - vue
  '@dcloudio/uni-automator@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-automator@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      address: 1.2.2
      cross-env: 7.0.3
      debug: 4.4.3
@@ -10631,7 +10551,7 @@
      - utf-8-validate
      - vue
  '@dcloudio/uni-cli-shared@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-cli-shared@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@ampproject/remapping': 2.3.0
      '@babel/code-frame': 7.28.6
@@ -10691,9 +10611,9 @@
      - ts-node
      - vue
  '@dcloudio/uni-cloud@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-cloud@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -10707,10 +10627,10 @@
      - ts-node
      - vue
  '@dcloudio/uni-components@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-components@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cloud': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cloud': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
    transitivePeerDependencies:
      - '@nuxt/kit'
@@ -10721,9 +10641,9 @@
      - ts-node
      - vue
  '@dcloudio/uni-console@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-console@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      fs-extra: 10.1.0
    transitivePeerDependencies:
      - '@nuxt/kit'
@@ -10734,9 +10654,9 @@
      - ts-node
      - vue
  '@dcloudio/uni-h5-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-h5-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
      '@vue/compiler-dom': 3.4.21
@@ -10763,9 +10683,9 @@
    transitivePeerDependencies:
      - vue
  '@dcloudio/uni-h5@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-h5@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-h5-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-h5-vue': 3.0.0-4070520250711001(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
@@ -10788,10 +10708,10 @@
  '@dcloudio/uni-i18n@3.0.0-4070520250711001': {}
  '@dcloudio/uni-mp-alipay@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-alipay@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
@@ -10805,14 +10725,14 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-baidu@3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-baidu@3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-app': 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-app': 3.0.0-4070520250711001(@dcloudio/types@3.4.29)(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-mp-weixin': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-weixin': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
      '@vue/shared': 3.4.21
@@ -10834,12 +10754,12 @@
      - utf-8-validate
      - vue
  '@dcloudio/uni-mp-compiler@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-compiler@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@babel/generator': 7.28.6
      '@babel/parser': 7.28.6
      '@babel/types': 7.28.6
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
      '@vue/compiler-dom': 3.4.21
@@ -10854,13 +10774,13 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-harmony@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-harmony@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-quickapp-webview': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-quickapp-webview': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
    transitivePeerDependencies:
@@ -10872,11 +10792,11 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-jd@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-jd@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -10889,13 +10809,13 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-kuaishou@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-kuaishou@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-mp-weixin': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-weixin': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
      '@vue/shared': 3.4.21
@@ -10911,12 +10831,12 @@
      - utf-8-validate
      - vue
  '@dcloudio/uni-mp-lark@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-lark@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-toutiao': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
@@ -10930,10 +10850,10 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-qq@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-qq@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -10947,11 +10867,11 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-toutiao@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-toutiao@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-core': 3.4.21
@@ -10965,11 +10885,11 @@
      - ts-node
      - vue
  '@dcloudio/uni-mp-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-vite@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-i18n': 3.0.0-4070520250711001
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/compiler-dom': 3.4.21
@@ -10990,10 +10910,10 @@
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
  '@dcloudio/uni-mp-weixin@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-weixin@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -11014,11 +10934,11 @@
      - utf-8-validate
      - vue
  '@dcloudio/uni-mp-xhs@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-mp-xhs@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-compiler': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -11036,9 +10956,9 @@
      parse-css-font: 4.0.0
      postcss: 8.5.6
  '@dcloudio/uni-push@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-push@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
    transitivePeerDependencies:
      - '@nuxt/kit'
      - '@vueuse/core'
@@ -11048,10 +10968,10 @@
      - ts-node
      - vue
  '@dcloudio/uni-quickapp-webview@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-quickapp-webview@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vite': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-mp-vue': 3.0.0-4070520250711001
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@vue/shared': 3.4.21
@@ -11070,9 +10990,9 @@
  '@dcloudio/uni-stacktracey@3.0.0-4070520250711001': {}
  '@dcloudio/uni-stat@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/uni-stat@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      debug: 4.4.3
    transitivePeerDependencies:
@@ -11086,65 +11006,12 @@
  '@dcloudio/uni-ui@1.5.11': {}
  '@dcloudio/uni-uts-v1@3.0.0-4070520250711001':
    dependencies:
      '@babel/code-frame': 7.28.6
      '@dcloudio/uni-app-x': 0.7.100
      '@dcloudio/uts': 3.0.0-4070520250711001
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
      '@vue/shared': 3.4.21
      adm-zip: 0.5.16
      android-versions: 1.9.0
      colors: 1.4.0
      debug: 4.4.3
      fast-glob: 3.3.3
      find-cache-dir: 3.3.2
      fs-extra: 10.1.0
      graphlib: 2.1.8
      jsonc-parser: 3.3.1
      lodash: 4.17.21
      md5-file: 5.0.0
      object-hash: 3.0.0
      semver: 7.7.3
      source-map: 0.7.6
      source-map-js: 1.2.1
    transitivePeerDependencies:
      - rollup
      - supports-color
  '@dcloudio/uts-darwin-arm64@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts-darwin-x64@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts-linux-x64-gnu@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts-linux-x64-musl@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts-win32-ia32-msvc@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts-win32-x64-msvc@3.0.0-4070520250711001':
    optional: true
  '@dcloudio/uts@3.0.0-4070520250711001':
    optionalDependencies:
      '@dcloudio/uts-darwin-arm64': 3.0.0-4070520250711001
      '@dcloudio/uts-darwin-x64': 3.0.0-4070520250711001
      '@dcloudio/uts-linux-x64-gnu': 3.0.0-4070520250711001
      '@dcloudio/uts-linux-x64-musl': 3.0.0-4070520250711001
      '@dcloudio/uts-win32-ia32-msvc': 3.0.0-4070520250711001
      '@dcloudio/uts-win32-x64-msvc': 3.0.0-4070520250711001
  '@dcloudio/vite-plugin-uni@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
  '@dcloudio/vite-plugin-uni@3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))(vue@3.4.21(typescript@5.9.3))':
    dependencies:
      '@babel/core': 7.28.6
      '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.6)
      '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6)
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-cli-shared': 3.0.0-4070520250711001(@nuxt/kit@3.20.2)(@vueuse/core@9.13.0(vue@3.4.21(typescript@5.9.3)))(postcss@8.5.6)(rollup@4.55.3)(vue@3.4.21(typescript@5.9.3))
      '@dcloudio/uni-shared': 3.0.0-4070520250711001
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
      '@vitejs/plugin-legacy': 5.3.2(terser@5.46.0)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
@@ -13734,7 +13601,7 @@
      - '@vue/composition-api'
      - vue
  '@wangeditor-next/basic-modules@1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
  '@wangeditor-next/basic-modules@1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
    dependencies:
      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      dom7: 3.0.0
@@ -13771,14 +13638,14 @@
      nanoid: 3.3.11
      scroll-into-view-if-needed: 3.1.0
      slate: 0.72.8
      slate-history: 0.109.0(slate@0.82.1)
      slate-history: 0.109.0(slate@0.72.8)
      snabbdom: 3.6.3
  '@wangeditor-next/editor@5.6.49':
    dependencies:
      '@uppy/core': 2.3.4
      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      '@wangeditor-next/code-highlight': 1.3.43(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)
      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      '@wangeditor-next/list-module': 1.1.52(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)
@@ -13818,7 +13685,7 @@
    dependencies:
      '@uppy/core': 2.3.4
      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
      dom7: 4.0.6
      lodash.foreach: 4.5.0
@@ -14019,10 +13886,6 @@
      fast-uri: 3.1.0
      json-schema-traverse: 1.0.0
      require-from-string: 2.0.2
  android-versions@1.9.0:
    dependencies:
      semver: 7.7.3
  animate.css@4.1.1: {}
@@ -14676,8 +14539,6 @@
  colorette@2.0.20: {}
  colors@1.4.0: {}
  combined-stream@1.0.8:
    dependencies:
      delayed-stream: 1.0.0
@@ -14693,8 +14554,6 @@
  comment-parser@1.4.4: {}
  commist@3.2.0: {}
  commondir@1.0.1: {}
  compare-versions@3.6.0: {}
@@ -15877,12 +15736,6 @@
    transitivePeerDependencies:
      - supports-color
  find-cache-dir@3.3.2:
    dependencies:
      commondir: 1.0.1
      make-dir: 3.1.0
      pkg-dir: 4.2.0
  find-up-simple@1.0.1: {}
  find-up@4.1.0:
@@ -16141,10 +15994,6 @@
  grapheme-splitter@1.0.4: {}
  graphemer@1.4.0: {}
  graphlib@2.1.8:
    dependencies:
      lodash: 4.17.21
  gzip-size@6.0.0:
    dependencies:
@@ -17294,10 +17143,6 @@
    dependencies:
      '@jridgewell/sourcemap-codec': 1.5.5
  make-dir@3.1.0:
    dependencies:
      semver: 6.3.1
  make-dir@4.0.0:
    dependencies:
      semver: 7.7.3
@@ -17329,8 +17174,6 @@
      typed-function: 2.1.0
  mathml-tag-names@2.1.3: {}
  md5-file@5.0.0: {}
  mdast-util-find-and-replace@3.0.2:
    dependencies:
@@ -17926,8 +17769,6 @@
      define-property: 0.2.5
      kind-of: 3.2.2
  object-hash@3.0.0: {}
  object-inspect@1.13.4: {}
  object-is@1.1.6:
@@ -18273,9 +18114,9 @@
    dependencies:
      postcss: 5.2.18
  postcss-pxtorem@6.1.0(postcss@8.5.6):
  postcss-pxtorem@6.1.0(postcss@5.2.18):
    dependencies:
      postcss: 8.5.6
      postcss: 5.2.18
  postcss-resolve-nested-selector@0.1.6: {}
@@ -18647,12 +18488,14 @@
  robust-predicates@3.0.2: {}
  rollup-plugin-visualizer@6.0.5:
  rollup-plugin-visualizer@6.0.5(rollup@4.55.3):
    dependencies:
      open: 8.4.2
      picomatch: 4.0.3
      source-map: 0.7.6
      yargs: 17.7.2
    optionalDependencies:
      rollup: 4.55.3
  rollup@4.55.3:
    dependencies:
@@ -18949,10 +18792,10 @@
  slash@3.0.0: {}
  slate-history@0.109.0(slate@0.82.1):
  slate-history@0.109.0(slate@0.72.8):
    dependencies:
      is-plain-object: 5.0.0
      slate: 0.82.1
      slate: 0.72.8
  slate-history@0.66.0(slate@0.72.8):
    dependencies:
@@ -19738,14 +19581,14 @@
  universalify@2.0.1: {}
  unocss-preset-weapp@66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0)):
  unocss-preset-weapp@66.0.2(@nuxt/kit@3.20.2)(esbuild@0.20.2)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0)):
    dependencies:
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
      '@unocss/core': 66.6.0
      '@unocss/extractor-arbitrary-variants': 66.6.0
      '@unocss/rule-utils': 66.6.0
      unplugin-attributify-to-class: 0.2.5
      unplugin-transform-class: 0.6.0(@nuxt/kit@3.20.2)(esbuild@0.20.2)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
      unplugin-attributify-to-class: 0.2.5(rollup@4.55.3)
      unplugin-transform-class: 0.6.0(@nuxt/kit@3.20.2)(esbuild@0.20.2)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0))
    transitivePeerDependencies:
      - '@farmfe/core'
      - '@nuxt/kit'
@@ -19783,11 +19626,11 @@
  unpipe@1.0.0: {}
  unplugin-attributify-to-class@0.2.5:
  unplugin-attributify-to-class@0.2.5(rollup@4.55.3):
    dependencies:
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
      unplugin: 1.16.1
      unplugin-transform-class: 0.5.3
      unplugin-transform-class: 0.5.3(rollup@4.55.3)
    transitivePeerDependencies:
      - rollup
@@ -19828,7 +19671,7 @@
      '@nuxt/kit': 3.20.2
      '@vueuse/core': 9.13.0(vue@3.4.21(typescript@5.9.3))
  unplugin-transform-class@0.5.3:
  unplugin-transform-class@0.5.3(rollup@4.55.3):
    dependencies:
      '@meoc/utils': 0.2.10
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
@@ -19836,7 +19679,7 @@
    transitivePeerDependencies:
      - rollup
  unplugin-transform-class@0.6.0(@nuxt/kit@3.20.2)(esbuild@0.20.2)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0)):
  unplugin-transform-class@0.6.0(@nuxt/kit@3.20.2)(esbuild@0.20.2)(rollup@4.55.3)(vite@5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0)):
    dependencies:
      '@meoc/utils': 0.2.10
      '@rollup/pluginutils': 5.3.0(rollup@4.55.3)
@@ -19844,6 +19687,7 @@
    optionalDependencies:
      '@nuxt/kit': 3.20.2
      esbuild: 0.20.2
      rollup: 4.55.3
      vite: 5.2.8(@types/node@25.0.9)(sass@1.79.6)(terser@5.46.0)
  unplugin-utils@0.2.5: