吉安感知网项目-前端
张含笑
2026-01-23 bcfa7fec8c6d2d222989e34f01b5fd6300befaf8
Merge remote-tracking branch 'origin/master'
55 files modified
13 files deleted
1042 ■■■■ changed files
applications/drone-command/LICENSE 35 ●●●●● patch | view | raw | blame | history
applications/drone-command/index.html 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/buildConfig/buildConfig/config.default.js 5 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/buildConfig/buildConfig/config.jiangwu.js 15 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/buildConfig/config.js 5 ●●●● patch | view | raw | blame | history
applications/drone-command/src/buildConfig/layerConfig/jiangwuLayer.js 122 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/lang/en.js 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/lang/zh.js 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/permission.js 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/defenseZone/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue 9 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/partition/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/precinctInfo/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/sceneConfig/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/DeviceScrapDiaLog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/FormDiaLog.vue 9 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/maintainRecord/FormDiaLog.vue 9 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/maintainRecord/MaintenanceDiaLog.vue 9 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/maintainRecord/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue 11 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue 10 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue 12 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionRole/FormDiaLog.vue 13 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionRole/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue 13 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionUser/index.vue 18 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/recordManage/alarmRecords/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/recordManage/historyTracks/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/system/user/FormDiaLog.vue 13 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/system/user/index.vue 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/tickets/ticket-copy.vue 10 ●●●● patch | view | raw | blame | history
applications/mobile-web-view/LICENSE 35 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/env/.env.blackBox 38 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/env/.env.jiangwu 48 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/package.json 2 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/appPages/work/workDetail/mapWork/index.vue 34 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/baseConfig/config.default.js 21 ●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/baseConfig/config.jiangwu.js 59 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/config.js 17 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/dataCenterConfig/jiangwuDataCenter.js 51 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/gatewayConfig/jiangwuGateway.js 23 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/mapControlConfig/jiangwuMapControl.js 6 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/menuConfig/jiangwuMenu.js 25 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/buildConfig/userInfoConfig/jiangwuUserInfo.js 15 ●●●●● patch | view | raw | blame | history
applications/mobile-web-view/src/page/GatewayPage/GatewayPage.vue 2 ●●● patch | view | raw | blame | history
applications/mobile-web-view/src/permission.js 2 ●●● patch | view | raw | blame | history
applications/mobile-web-view/src/utils/http/config.js 6 ●●●●● patch | view | raw | blame | history
applications/task-work-order/LICENSE 35 ●●●●● patch | view | raw | blame | history
applications/task-work-order/index.html 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/assets/images/layoutBg.png patch | view | raw | blame | history
applications/task-work-order/src/config/website.js 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/lang/en.js 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/lang/zh.js 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/permission.js 18 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/router/views/index.js 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/store/modules/tags.js 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/styles/common.scss 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/styles/tags.scss 8 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 23 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 2 ●●● patch | view | raw | blame | history
uniapps/work-app/README.md 54 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/README.md 54 ●●●●● patch | view | raw | blame | history
applications/drone-command/LICENSE
File was deleted
applications/drone-command/index.html
@@ -29,7 +29,7 @@
  <script type="text/javascript"
    src='https://webapi.amap.com/maps?v=2.0&key=eb0654440644f710110547d2132b2fbe&plugin=AMap.PlaceSearch,AMap.Geocoder'></script>
  <script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script>
  <title>中图智绘低空无人机监测网平台</title>
  <title>反制平台</title>
</head>
<body class="theme-white">
applications/drone-command/src/buildConfig/buildConfig/config.default.js
@@ -2,8 +2,7 @@
export default function getBaseConfig () {
    return {
        loginTitle: '中图智飞低空智能感知网平台',  //登陆页面标题
        // envName: 'jiangwu',
        loginTitle: '反制平台',  //登陆页面标题
        ...defaultLayer
    }
}
}
applications/drone-command/src/buildConfig/buildConfig/config.jiangwu.js
File was deleted
applications/drone-command/src/buildConfig/config.js
@@ -1,14 +1,11 @@
// 直接导入所有配置文件
import jiangwuConfig from '@/buildConfig/buildConfig/config.jiangwu.js'
import defaultConfig from '@/buildConfig/buildConfig/config.default.js'
// 根据环境变量选择配置
const env = import.meta.env.VITE_APP_ENV || 'default'
const configMap = {
    jiangwu: jiangwuConfig,
    default: defaultConfig
}
// 导出配置函数
export default configMap[env] || configMap.default
export default configMap[env] || configMap.default
applications/drone-command/src/buildConfig/layerConfig/jiangwuLayer.js
File was deleted
applications/drone-command/src/lang/en.js
@@ -1,5 +1,5 @@
export default {
  title: '中图智绘低空无人机监测网平台',
  title: '反制平台',
  logoutTip: 'Exit the system, do you want to continue?',
  submitText: 'submit',
  cancelText: 'cancel',
applications/drone-command/src/lang/zh.js
@@ -1,5 +1,5 @@
export default {
  title: '中图智绘低空无人机监测网平台',
  title: '反制平台',
  logoutTip: '退出系统, 是否继续?',
  submitText: '确定',
  cancelText: '取消',
applications/drone-command/src/permission.js
@@ -136,7 +136,7 @@
    NProgress.done()
    const isLoginPage = to.path === '/login'
    // 根据是否登录页设置标题
    const pageTitle = isLoginPage ? '中图智飞低空感知网平台' : '综合管理平台'
    const pageTitle = isLoginPage ? '反制平台' : '反制平台'
    document.title = pageTitle
    store.commit('SET_IS_SEARCH', false)
})
applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue
@@ -109,6 +109,8 @@
import { cartesian3Convert } from '@/utils/cesium/mapUtil'
import * as turf from '@turf/turf'
import * as Cesium from 'cesium'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
// 初始化表单
const initForm = () => ({
@@ -132,6 +134,7 @@
const selectedSceneRows = ref([]) // 选中场景
const dictObj = inject('dictObj')
const mapRef = ref(null)
const route = useRoute()
let viewer
let drawPolygonExample
let pointList = []
@@ -162,6 +165,11 @@
        const str = [...pointList, pointList[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
        formData.value.geom = `POLYGON((${str}))`
        await fwDefenseZoneSubmitApi(formData.value)
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '防区管理'}-${dialogMode.value === 'add' ? '新增' : '编辑'}`,
            type: 1,
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/areaManage/defenseZone/index.vue
@@ -55,6 +55,8 @@
import { fwDefenseZonePageApi, fwDefenseZoneRemoveApi } from './defenseZoneApi'
import FormDiaLog from './FormDiaLog.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
// 初始化查询参数
const initSearchParams = () => ({
@@ -72,6 +74,7 @@
const queryParamsRef = ref(null) // 查询表单实例
const dialogRef = ref(null) // 弹框实例
const dialogVisible = ref(false)
const route = useRoute()
// 获取列表
async function getList () {
@@ -109,6 +112,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwDefenseZoneRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '防区管理'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
@@ -171,6 +171,8 @@
import { computed, inject, nextTick, onMounted, ref, watch } from 'vue'
import { ElMessage } from 'element-plus'
import { fwAreaDivideDetailApi, fwAreaDivideSubmitApi } from './partitionApi'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
import { fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils'
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import { DrawPolygon } from '@/utils/cesium/DrawPolygon'
@@ -202,6 +204,7 @@
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false) // 提交中
const readonly = computed(() => dialogMode.value === 'view')
const route = useRoute()
const titleEnum = ref({ edit: '编辑区域', view: '查看区域', add: '新增区域' })
const flyDateRange = ref([]) // 飞行时间
const deviceTableRef = ref(null)
@@ -277,6 +280,12 @@
        let str = [...pointList, pointList[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
        formData.value.geom = `POLYGON((${str}))`
        await fwAreaDivideSubmitApi(formData.value)
        const actionText = dialogMode.value === 'add' ? '新增' : '编辑'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '区域划分'}-${actionText}`,
            type: 1,
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/areaManage/partition/index.vue
@@ -83,6 +83,8 @@
import { fwAreaDividePageApi, fwAreaDivideRemoveApi } from './partitionApi'
import FormDiaLog from './FormDiaLog.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
import { getDictLabel } from '@ztzf/utils'
const initSearchParams = () => ({
@@ -100,6 +102,7 @@
const queryParamsRef = ref(null) // 查询表单实例
const dialogRef = ref(null) // 弹框实例
const dialogVisible = ref(false)
const route = useRoute()
// 获取列表
async function getList () {
@@ -137,6 +140,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwAreaDivideRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '区域划分'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue
@@ -91,6 +91,8 @@
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import * as Cesium from 'cesium'
import axios from 'axios'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    address: '', // 位置
@@ -112,6 +114,7 @@
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const tempLocation = ref({ longitude: null, latitude: null })
const mapRef = ref(null)
const route = useRoute()
const rules = {
    address: fieldRules(true, 50),
@@ -132,6 +135,11 @@
    submitting.value = true
    try {
        await fwPoliceStationSubmitApi(formData.value)
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '派出所管理'}-${dialogMode.value === 'add' ? '新增' : '编辑'}`,
            type: 1,
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/areaManage/precinctInfo/index.vue
@@ -54,6 +54,8 @@
import { ElMessage, ElMessageBox } from 'element-plus'
import { fwPoliceStationPageApi, fwPoliceStationRemoveApi } from './precinctInfoApi'
import FormDiaLog from './FormDiaLog.vue'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    stationName: '', // 名称
@@ -68,6 +70,7 @@
const queryParamsRef = ref(null) // 查询表单实例
const dialogRef = ref(null) // 弹框实例
const dialogVisible = ref(false)
const route = useRoute()
// 获取列表
async function getList () {
@@ -105,6 +108,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwPoliceStationRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '派出所管理'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
@@ -152,6 +152,8 @@
import { fwAreaDivideDetailApi, fwAreaDivideListApi } from '../partition/partitionApi'
import { DrawPolygon } from '@/utils/cesium/DrawPolygon'
import commandPost from '@/assets/images/dataCockpit/legend/command-post.png'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    sceneName: '', // 场景名称
@@ -180,6 +182,7 @@
const selectedAreaRows = ref([]) //选中列表
const dictObj = inject('dictObj')
const mapRef = ref(null)
const route = useRoute()
let viewer
let redPointEntity
let leftClickBound = false
@@ -210,6 +213,11 @@
        formData.value.areaCount = ids.length
        formData.value.defenseArea = calcDefenseArea(selectedAreaRows.value)
        await fwDefenseSceneSubmitApi(formData.value)
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '场景配置管理'}-${dialogMode.value === 'add' ? '新增' : '编辑'}`,
            type: 1,
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/areaManage/sceneConfig/index.vue
@@ -96,6 +96,8 @@
import FormDiaLog from './FormDiaLog.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { getDictLabel } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    sceneName: '', // 场景名称
@@ -112,6 +114,7 @@
const queryParamsRef = ref(null) // 查询表单实例
const dialogRef = ref(null) // 弹框实例
const dialogVisible = ref(false)
const route = useRoute()
// 获取列表
async function getList() {
@@ -149,6 +152,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwDefenseSceneRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '场景配置管理'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/basicManage/deviceStock/DeviceScrapDiaLog.vue
@@ -37,6 +37,8 @@
import { fieldRules } from '@ztzf/utils'
import { fwDeviceScrapSaveApi } from '@/views/basicManage/deviceStock/fwDeviceScrapApi'
import dayjs from 'dayjs'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    deviceId: '', // 设备ID
@@ -50,6 +52,7 @@
const visible = ref(false) // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false)
const route = useRoute()
const dialogReadonly = computed(() => dialogMode.value === 'view')
const dialogTitle = computed(() => {
    if (dialogMode.value === 'edit') {
@@ -79,6 +82,11 @@
    try {
        formData.value.scrapTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
        await fwDeviceScrapSaveApi(formData.value)
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '设备出入库'}-报废`,
            type: 1
        })
        ElMessage.success('报废成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue
@@ -69,6 +69,8 @@
import { getLazyTree } from '@/api/base/region'
import { fieldRules } from '@ztzf/utils'
import { fwDeviceTrackSubmitApi } from '@/views/basicManage/deviceStock/fwDeviceTrackApi'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    charger: '', // 负责人
@@ -83,6 +85,7 @@
const visible = ref(false) // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false)
const route = useRoute()
const dialogReadonly = computed(() => dialogMode.value === 'view')
const dialogTitle = computed(() => {
    if (dialogMode.value === 'edit') {
@@ -139,6 +142,11 @@
            outTarget: selected?.label ?? formData.value.outTarget,
        }
        await fwDeviceTrackSubmitApi(payload)
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '设备出入库'}-出库`,
            type: 1
        })
        ElMessage.success('出库成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/basicManage/deviceStock/FormDiaLog.vue
@@ -178,6 +178,8 @@
import { getUserListApi } from '@/api/system/user'
import { fieldRules, getDictLabel } from '@ztzf/utils'
import { fwDeviceTrackPageApi } from '@/views/basicManage/deviceStock/fwDeviceTrackApi'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    belongDept: '', // 所属部门
@@ -207,6 +209,7 @@
const dictObj = inject('dictObj')
const deptTree = inject('deptTree')
const emit = defineEmits(['success'])
const route = useRoute()
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
const visible = ref(false) // 弹框显隐
@@ -264,6 +267,12 @@
    submitting.value = true
    try {
        await fwDeviceSubmitApi(formData.value)
        const actionText = dialogMode.value === 'add' ? '建档' : '编辑'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '设备出入库'}-${actionText}`,
            type: 1
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/basicManage/maintainRecord/FormDiaLog.vue
@@ -128,6 +128,8 @@
import { ElMessage } from 'element-plus'
import { fieldRules, getDictLabel } from '@ztzf/utils'
import { fwDeviceMaintainRecordPageApi } from '@/views/basicManage/maintainRecord/fwDeviceMaintainRecord'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
import {
    fwDeviceMaintainPlanDetailApi,
    fwDeviceMaintainPlanSubmitApi,
@@ -153,6 +155,7 @@
const deviceList = ref([]) // 设备列表
const getPlanCycleLabel = inject('getPlanCycleLabel')
const dictObj = inject('dictObj')
const route = useRoute()
const dialogReadonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '编辑', view: '查看', add: '维护计划' })
@@ -197,6 +200,12 @@
            )],
        }
        await fwDeviceMaintainPlanSubmitApi(payload)
        const actionText = dialogMode.value === 'add' ? '维护计划-新增' : '维护计划-编辑'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '维护记录管理'}-${actionText}`,
            type: 1
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/basicManage/maintainRecord/MaintenanceDiaLog.vue
@@ -78,6 +78,8 @@
import { fieldRules } from '@ztzf/utils'
import { fwDeviceMaintainRecordSubmitApi } from '@/views/basicManage/maintainRecord/fwDeviceMaintainRecord'
import { fwDeviceMaintainPlanDetailApi } from '@/views/basicManage/maintainRecord/maintainRecordApi'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    deviceId: '',
@@ -100,6 +102,7 @@
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false) // 提交中
const deviceList = ref([]) // 设备列表
const route = useRoute()
const dialogReadonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '维护', view: '查看', add: '维护计划' })
@@ -131,6 +134,12 @@
    try {
        formData.value.maintainTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
        await fwDeviceMaintainRecordSubmitApi(formData.value)
        const actionText = dialogMode.value === 'add' ? '维护-新增' : '维护-编辑'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '维护记录管理'}-${actionText}`,
            type: 1
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/basicManage/maintainRecord/index.vue
@@ -85,6 +85,8 @@
import { getDictLabel } from '@ztzf/utils'
import FormDiaLog from './FormDiaLog.vue'
import MaintenanceDiaLog from '@/views/basicManage/maintainRecord/MaintenanceDiaLog.vue'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
import {
    fwDeviceMaintainPlanPageApi,
    fwDeviceMaintainPlanRemoveApi,
@@ -110,6 +112,7 @@
    deviceAtt: [], // 设备属性
})
provide('dictObj', dictObj)
const route = useRoute()
const deptTree = ref([]) // 部门树
const treeProps = {
    label: 'name',
@@ -168,6 +171,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwDeviceMaintainPlanRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '维护记录管理'}-删除`,
        type: 1
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -168,6 +168,8 @@
import { fieldRules } from '@ztzf/utils'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import * as Cesium from 'cesium'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
// 初始化表单
const initForm = () => ({
@@ -211,6 +213,7 @@
const areaList = ref([]) // 区域列表
const sceneList = ref([]) // 场景列表
const deviceStatus = ref('')
const route = useRoute()
const rules = {
    deviceId: fieldRules(true),
@@ -286,6 +289,14 @@
            formData.value.dispatchEndTime = formData.value.dispatchDateRange[1]
        }
        await fwTaskScheduleSubmitApi(formData.value)
        const actionText = dialogMode.value === 'add' ? '新增' : '修改'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '任务调度'}-${actionText}`,
            type: 1
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue
@@ -70,7 +70,7 @@
                    </el-table-column>
                    <el-table-column prop="areaName" show-overflow-tooltip width="120" label="区域" />
                    <el-table-column prop="defenseZoneName" show-overflow-tooltip width="120" label="场景" />
                    <el-table-column prop="defenseSceneName" show-overflow-tooltip width="120" label="场景" />
                    <el-table-column show-overflow-tooltip label="调度位置">
                        <template v-slot="{ row }">{{ row.longitude }}, {{ row.latitude }}</template>
                    </el-table-column>
@@ -124,6 +124,8 @@
import { getDictionaryByCode } from '@/api/system/dictbiz'
import FormDiaLog from './FormDiaLog.vue'
import { getDictLabel } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
// 初始化查询参数
const initSearchParams = () => ({
@@ -146,6 +148,7 @@
    deviceStatus: [], // 设备状态
})
const deviceList = ref([]) // 设备列表
const route = useRoute()
// 注入字典到子组件
provide('dictObj', dictObj)
@@ -197,6 +200,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwTaskScheduleRemoveApi({ ids })
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '任务调度'}-删除`,
        type: 1
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
@@ -129,6 +129,8 @@
import { add, getDept, getDeptTree, update } from '@/api/system/dept'
import { getLazyTree } from '@/api/base/region'
import { fieldRules, getDictLabel } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    deptName: '',
@@ -189,7 +191,9 @@
const visible = ref(false)
const dialogMode = ref('add')
const submitting = ref(false)
const isAddChild = ref(false)
const dialogReadonly = computed(() => dialogMode.value === 'view')
const route = useRoute()
const dialogTitle = computed(() => {
    if (dialogMode.value === 'edit') return '编辑'
    if (dialogMode.value === 'view') return '查看'
@@ -259,6 +263,12 @@
        } else {
            await add(payload)
        }
        const actionText = dialogMode.value === 'add' ? (isAddChild.value ? '新增子项' : '新增') : '编辑'
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '部门管理'}-${actionText}`,
            type: 1
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
@@ -279,11 +289,13 @@
function handleClosed() {
    formData.value = initForm()
    isAddChild.value = false
}
async function open({ mode, row, parent } = {}) {
    dialogMode.value = mode || 'add'
    visible.value = true
    isAddChild.value = mode === 'add' && !!parent?.id
    await getDeptTree().then(res => {
        if (deptTree) {
            deptTree.value = res?.data?.data ?? []
applications/drone-command/src/views/permissionManage/permissionDept/index.vue
@@ -102,6 +102,8 @@
import { getChildLazyTree, getDeptTree, getLazyList, remove } from '@/api/system/dept'
import { getDictLabel } from '@ztzf/utils'
import FormDiaLog from './FormDiaLog.vue'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    deptName: '',
@@ -122,6 +124,7 @@
    org_nature: [],
})
const deptTree = ref([])
const route = useRoute()
provide('dictObj', dictObj)
provide('deptTree', deptTree)
@@ -180,6 +183,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await remove(ids)
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '部门管理'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/permissionManage/permissionRole/FormDiaLog.vue
@@ -70,6 +70,8 @@
import { ElMessage } from 'element-plus'
import { add, getRoleTreeById, update } from '@/api/system/role'
import { fieldRules } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    roleName: '',
@@ -92,6 +94,7 @@
const dialogMode = ref('add')
const submitting = ref(false)
const dialogReadonly = computed(() => dialogMode.value === 'view')
const route = useRoute()
const dialogTitle = computed(() => {
    if (dialogMode.value === 'edit') return '编辑'
    if (dialogMode.value === 'view') return '查看'
@@ -117,8 +120,18 @@
    try {
        if (dialogMode.value === 'edit') {
            await update(formData.value)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '角色管理'}-编辑`,
                type: 1,
            })
        } else {
            await add(formData.value)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '角色管理'}-新增`,
                type: 1,
            })
        }
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue
@@ -79,6 +79,8 @@
<script setup>
import { ref } from 'vue'
import { grant, grantTree, getRole } from '@/api/system/role'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const visible = ref(false)
const roleId = ref('')
@@ -107,6 +109,7 @@
const droneControl = ref(null)
const emit = defineEmits(['success'])
const route = useRoute()
function resetState() {
    menuGrantList.value = []
@@ -157,6 +160,11 @@
        [],
        []
    ).then(() => {
        saveOperationLog({
            requestUri: route.path,
            title: `${route.name || '角色管理'}-权限设置`,
            type: 1,
        })
        visible.value = false
        emit('success')
    })
applications/drone-command/src/views/permissionManage/permissionRole/index.vue
@@ -93,6 +93,8 @@
import { useStore } from 'vuex'
import FormDiaLog from './FormDiaLog.vue'
import RolePermissionDialog from './RolePermissionDialog.vue'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    roleName: '',
@@ -112,6 +114,7 @@
const roleDialogRef = ref(null)
const store = useStore()
const userInfo = computed(() => store.getters.userInfo || {})
const route = useRoute()
async function loadList() {
    loading.value = true
@@ -171,6 +174,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await remove(ids)
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '角色管理'}-删除`,
        type: 1,
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    loadList()
applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue
@@ -246,6 +246,8 @@
import { getDeptTree } from '@/api/system/dept'
import { getRoleTree } from '@/api/system/role'
import func from '@/utils/func'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initForm = () => ({
    account: '',
@@ -289,6 +291,7 @@
})
const roleTree = ref([])
const deptTree = ref([])
const route = useRoute()
const validatePass = (rule, value, callback) => {
    if (value === '') {
@@ -363,8 +366,18 @@
        submitData.name = submitData.realName
        if (dialogMode.value === 'add') {
            await add(submitData)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '用户管理'}-新增`,
                type: 1
            })
        } else {
            await update(submitData)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '用户管理'}-编辑`,
                type: 1
            })
        }
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
applications/drone-command/src/views/permissionManage/permissionUser/index.vue
@@ -42,11 +42,11 @@
        </el-form>
        <div class="command-table-toolbar">
            <el-button v-if="permission.user_add" :icon="Plus" color="#284FE3" type="primary" @click="handleAdd">
            <el-button v-if="permission.permissionUser_add" :icon="Plus" color="#284FE3" type="primary" @click="handleAdd">
                新增
            </el-button>
            <el-button
                v-if="permission.user_delete"
                v-if="permission.permissionUser_remove"
                :icon="Delete"
                color="#1A2652"
                type="primary"
@@ -69,9 +69,9 @@
                    <el-table-column prop="phone" show-overflow-tooltip width="120" label="手机号" />
                    <el-table-column label="操作" class-name="operation-btns" width="180">
                        <template v-slot="{ row }">
                            <el-link v-if="permission.user_view" @click="handleView(row)">查看</el-link>
                            <el-link v-if="permission.user_edit" @click="handleEdit(row)">编辑</el-link>
                            <el-link v-if="permission.user_delete" type="danger" @click="handleDelete(row)">删除</el-link>
                            <el-link  @click="handleView(row)">查看</el-link>
                            <el-link v-if="permission.permissionUser_edit" @click="handleEdit(row)">编辑</el-link>
                            <el-link v-if="permission.permissionUser_remove" type="danger" @click="handleDelete(row)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
@@ -101,6 +101,8 @@
import { getList as getUserList, remove } from '@/api/system/user'
import { useStore } from 'vuex'
import FormDiaLog from './FormDiaLog.vue'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    account: '',
@@ -124,6 +126,7 @@
}
const store = useStore()
const permission = computed(() => store.getters.permission || {})
const route = useRoute()
async function getList() {
    loading.value = true
@@ -178,6 +181,11 @@
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await remove(ids)
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '用户管理'}-删除`,
        type: 1
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/recordManage/alarmRecords/index.vue
@@ -109,6 +109,8 @@
import { exportFwDroneAlarmRecordApi, fwDroneAlarmRecordPageApi } from './fwDroneAlarmRecord'
import FormDiaLog from './FormDiaLog.vue'
import { blobDownload, dateRangeFormat, getDictLabel } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const initSearchParams = () => ({
    droneName: '', // 无人机名称
@@ -129,6 +131,7 @@
})
const dateRange = ref([])
const exportLoading = ref(false)
const route = useRoute()
const deviceTypeMap = computed(() => {
    const map = new Map()
    dictObj.value.deviceType.forEach(item => {
@@ -175,6 +178,11 @@
    exportLoading.value = true
    exportFwDroneAlarmRecordApi({ ids: selectedIds.value.join(',') })
        .then(res => {
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '报警记录'}-导出`,
                type: 1,
            })
            blobDownload(res)
        })
        .finally(() => {
applications/drone-command/src/views/recordManage/historyTracks/index.vue
@@ -95,6 +95,8 @@
import { onMounted, ref, nextTick } from 'vue'
import { exportFwDroneFlightRecordApi, fwDroneFlightRecordPageApi } from './fwDroneFlightRecord'
import { blobDownload, dateRangeFormat } from '@ztzf/utils'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
import TrajectoryDiaLog from '@/views/recordManage/historyTracks/TrajectoryDiaLog.vue'
const initSearchParams = () => ({
@@ -113,6 +115,7 @@
const dateRange = ref([])
const exportLoading = ref(false)
const dialogRef = ref(null) // 弹框实例
const route = useRoute()
// 获取列表
async function getList() {
@@ -165,6 +168,11 @@
        ids: ids.join(','),
    })
        .then(res => {
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '历史轨迹'}-导出`,
                type: 1,
            })
            blobDownload(res)
        })
        .finally(() => {
applications/drone-command/src/views/system/user/FormDiaLog.vue
@@ -260,6 +260,8 @@
import { getDeptTree } from '@/api/system/dept'
import { getRoleTree } from '@/api/system/role'
import func from '@/utils/func'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
// 初始化表单
const initForm = () => ({
@@ -300,6 +302,7 @@
const titleEnum = ref({ edit: '编辑用户', view: '查看用户', add: '新增用户' })
const roleTree = ref([])
const deptTree = ref([])
const route = useRoute()
// 密码验证
const validatePass = (rule, value, callback) => {
@@ -383,9 +386,19 @@
        if (dialogMode.value === 'add') {
            await add(submitData)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '用户管理01'}-新增`,
                type: 1
            })
            ElMessage.success('新增成功')
        } else {
            await update(submitData)
            saveOperationLog({
                requestUri: route.path,
                title: `${route.name || '用户管理01'}-编辑`,
                type: 1
            })
            ElMessage.success('更新成功')
        }
        visible.value = false
applications/drone-command/src/views/system/user/index.vue
@@ -225,6 +225,8 @@
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import func from '@/utils/func'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
const store = useStore()
const userInfo = computed(() => store.getters.userInfo)
@@ -249,6 +251,7 @@
const dialogVisible = ref(false)
const auditMode = ref(false)
const treeDeptId = ref('')
const route = useRoute()
// 部门树
const deptTree = ref([])
@@ -341,6 +344,11 @@
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning' })
    const ids = row ? row.id : selectedIds.value.join(',')
    await remove(ids)
    saveOperationLog({
        requestUri: route.path,
        title: `${route.name || '用户管理01'}-删除`,
        type: 1
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
applications/drone-command/src/views/tickets/ticket-copy.vue
@@ -207,7 +207,7 @@
                @click="openReviewDialog"
                >批量审核
              </el-button>
              <el-button
                v-if="permissionList.exportBtn"
                type="success"
@@ -234,7 +234,7 @@
                  >详情
                </el-button>
              </template>
              <template  v-if="row.status === 4 && activeTab === 'completed'">
                <el-button type="text" icon="el-icon-download"  @click="exportTheTick(row)"
                  >导出
@@ -1003,7 +1003,7 @@
<script>
import {ALL_WORK_ORDER_TYPE_OPTIONS} from '@ztzf/constants'
import { pxToRem, pxToRemNum } from '@/utils/rem';
import { getSmallImg, getShowImg } from '@/utils/util';
import { ElMessageBox, ElLoading } from 'element-plus';
@@ -1139,7 +1139,7 @@
          { label: '处理人', prop: 'handler', width: 120, overHidden: true },
          {
            slot: true,
            hide: envName === 'jiangwu' ? true : false,
            hide: false,
            label: '复核状态',
            prop: 'isReview',
            width: 90,
@@ -3203,7 +3203,7 @@
    exportTheTick(row){
      const params = {
        num:row.orderNumber
      }
      }
      exportTheTicket(params).then(res=>{
      const elink = document.createElement('a')
      elink.download = row.orderName + '.docx'
applications/mobile-web-view/LICENSE
File was deleted
applications/mobile-web-view/env/.env.blackBox
File was deleted
applications/mobile-web-view/env/.env.jiangwu
File was deleted
applications/mobile-web-view/package.json
@@ -9,8 +9,6 @@
        "build:dev": "vite build --mode development",
        "build:test": "vite build --mode test",
        "build:prod": "vite build --mode production",
        "build:jiangwu": "vite build --mode jiangwu",
        "build:blackBox": "vite build --mode blackBox",
        "serve": "vite preview --host",
        "format": "prettier --write \"src/**/*.+(js|ts|jsx|tsx)\""
    },
applications/mobile-web-view/src/appPages/work/workDetail/mapWork/index.vue
@@ -25,39 +25,7 @@
const store = useStore()
const userInfo = computed(() => store?.state?.user?.userInfo)
const route = useRoute()
const mapCurrentDetail = ref({
    "id": 8474,
    "wayline_job_id": "51835088-cd94-42f8-b2ec-a9069ced4e7b",
    "event_name": "测试",
    "device_sn": "7CTDM5E00B3H61",
    "status": 3,
    "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "file_path": "upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "longitude": "115.85649472222222",
    "latitude": "28.624301527777778",
    "create_time": "2026-01-13 16:51:57",
    "media_type": "PHOTO_TYPE",
    "event_num": "BHJC20260113002",
    "ai_types": "道路裂缝",
    "ai_type_key_list": [
        "DLLFSB"
    ],
    "work_order_type_dict_key": "ZHZLL",
    "work_order_type": "交通运输与交管​",
    "create_user": "曾超杰",
    "update_user": "管理员",
    "dept_name": "中图智飞(江西省)",
    "create_user_id": "2009140684346388482",
    "user_id": "1991745495648227330",
    "handle_user_id": "1123598821738675201",
    "address": "江西省南昌市西湖区朝农街道抚生南路1806号南昌台湾健康产业城",
    "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
    "content": "测试",
    "work_type": "3",
    "job_name": "定向拍照2",
    "is_review": 0,
    "job_create_time": "2026-01-13 16:51:57"
})
const mapCurrentDetail = ref({})
const eventNum = ref('')
// 机巢数据
let machineData = ref([]);
applications/mobile-web-view/src/buildConfig/baseConfig/config.default.js
@@ -1,13 +1,3 @@
/*
 * @Author       : yuan
 * @Date         : 2025-06-21 10:08:29
 * @LastEditors  : yuan
 * @LastEditTime : 2025-07-21 14:58:00
 * @FilePath     : \src\buildConfig\baseConfig\config.default.js
 * @Description  :
 * Copyright 2025 OBKoro1, All Rights Reserved.
 * 2025-06-21 10:08:29
 */
// src/buildConfig/config.private.js
import { useStore } from 'vuex'
import menuConfig from '@/buildConfig/menuConfig/defaultMenu'
@@ -18,7 +8,7 @@
import defaultHomeConfig from '@/buildConfig/homeConfig/defaultHomeConfig'
import { getDateRange } from '@/utils/date'
const systemNameEnum = {
    0: '银轨科技',
    0: 'appWebView',
}
export default function getBaseConfig() {
@@ -27,13 +17,12 @@
    return {
        userLoginTitle(key) {
            return (systemNameEnum[key] || '中图智飞') + '低空感知网平台'
            return (systemNameEnum[key] || 'appWebview') + '平台'
        },
        // envName: 'jiangwu',
        userLoginPageClass: '',
        loginTitle: '中图智飞低空智能感知网平台', //登陆页面标题
        headerTitle: `${loginUserInfo.value?.areaName || ''}低空感知网指挥调度平台`, //首页标题
        gateTitle: '中图智飞低空感知网平台',
        loginTitle: 'appWebview', //登陆页面标题
        headerTitle: `${loginUserInfo.value?.areaName || ''}appWebView`, //首页标题
        gateTitle: 'appWebview',
        gateTitleEn: 'AISKY Low-altitude Perception Network Platform',
        isShowFooterBtns: true,
        isShowAiSkyLogo: true,
applications/mobile-web-view/src/buildConfig/baseConfig/config.jiangwu.js
File was deleted
applications/mobile-web-view/src/buildConfig/config.js
@@ -1,25 +1,10 @@
/*
 * @Author       : yuan
 * @Date         : 2025-06-13 09:42:10
 * @LastEditors  : yuan
 * @LastEditTime : 2025-06-13 15:21:09
 * @FilePath     : \src\buildConfig\config.js
 * @Description  :
 * Copyright 2025 OBKoro1, All Rights Reserved.
 * 2025-06-13 09:42:10
 */
// src/config.js
// 直接导入所有配置文件
import jiangwuConfig from '@/buildConfig/baseConfig/config.jiangwu.js'
import defaultConfig from '@/buildConfig/baseConfig/config.default.js'
// 根据环境变量选择配置
const env = import.meta.env.VITE_APP_ENV || 'default'
const configMap = {
    jiangwu: jiangwuConfig,
    default: defaultConfig
}
// 导出配置函数
export default configMap[env] || configMap.default
export default configMap[env] || configMap.default
applications/mobile-web-view/src/buildConfig/dataCenterConfig/jiangwuDataCenter.js
File was deleted
applications/mobile-web-view/src/buildConfig/gatewayConfig/jiangwuGateway.js
File was deleted
applications/mobile-web-view/src/buildConfig/mapControlConfig/jiangwuMapControl.js
File was deleted
applications/mobile-web-view/src/buildConfig/menuConfig/jiangwuMenu.js
File was deleted
applications/mobile-web-view/src/buildConfig/userInfoConfig/jiangwuUserInfo.js
File was deleted
applications/mobile-web-view/src/page/GatewayPage/GatewayPage.vue
@@ -69,7 +69,7 @@
onMounted(() => {
    narrowScreenFun()
    window.addEventListener('resize', narrowScreenFun)
    document.title = '中图智飞低空感知网平台'
    document.title = 'appWebview'
})
</script>
applications/mobile-web-view/src/permission.js
@@ -77,7 +77,7 @@
    NProgress.done()
    const isLoginPage = to.path === '/login'
    // 根据是否登录页设置标题
    // const pageTitle = isLoginPage ? '中图智飞低空感知网平台' : '指挥调度平台'
    // const pageTitle = isLoginPage ? 'appWebview' : 'appWebview'
    document.title = to.meta.title || '掌控智飞'
    store.commit('SET_IS_SEARCH', false)
})
applications/mobile-web-view/src/utils/http/config.js
@@ -4,16 +4,14 @@
 * @LastEditors  : yuan
 * @LastEditTime : 2025-06-25 10:54:47
 * @FilePath     : \src\utils\http\config.js
 * @Description  :
 * Copyright 2025 OBKoro1, All Rights Reserved.
 * @Description  :
 * Copyright 2025 OBKoro1, All Rights Reserved.
 * 2025-06-13 09:42:10
 */
let rtmpURL = ''
if (import.meta.env.VITE_APP_ENV === 'production') {
    rtmpURL = 'rtmp://101.132.85.201/live/'
} else if (import.meta.env.VITE_APP_ENV === 'jiangwu') {
    rtmpURL = 'rtmp://192.168.253.121/live/'
} else {
    rtmpURL = 'rtmp://139.196.74.78/live/'
}
applications/task-work-order/LICENSE
File was deleted
applications/task-work-order/index.html
@@ -29,7 +29,7 @@
  <script type="text/javascript"
    src='https://webapi.amap.com/maps?v=2.0&key=eb0654440644f710110547d2132b2fbe&plugin=AMap.PlaceSearch,AMap.Geocoder'></script>
  <script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script>
  <title>中图智绘低空无人机监测网平台</title>
  <title>任务工单平台</title>
</head>
<body class="theme-white">
applications/task-work-order/src/assets/images/layoutBg.png

applications/task-work-order/src/config/website.js
@@ -42,7 +42,6 @@
        menu: true,
    },
    fistPage: {
        name: '工单管理首页',
        path: '/',
    },
    //配置菜单的属性
applications/task-work-order/src/lang/en.js
@@ -1,5 +1,5 @@
export default {
  title: '中图智绘低空无人机监测网平台',
  title: '任务工单平台',
  logoutTip: 'Exit the system, do you want to continue?',
  submitText: 'submit',
  cancelText: 'cancel',
applications/task-work-order/src/lang/zh.js
@@ -1,5 +1,5 @@
export default {
  title: '中图智绘低空无人机监测网平台',
  title: '任务工单平台',
  logoutTip: '退出系统, 是否继续?',
  submitText: '确定',
  cancelText: '取消',
applications/task-work-order/src/permission.js
@@ -59,14 +59,14 @@
          let toMenu = findRouteByPath(newMenu, to.path)
          store.commit('ADD_TAG', {
            name: firstMenu.name,
            path: firstMenu.path,
            fullPath: firstMenu.path,
            params: firstMenu.params || {},
            query: firstMenu.query || {},
            meta: firstMenu.meta || {},
          })
          // store.commit('ADD_TAG', {
          //   name: firstMenu.name,
          //   path: firstMenu.path,
          //   fullPath: firstMenu.path,
          //   params: firstMenu.params || {},
          //   query: firstMenu.query || {},
          //   meta: firstMenu.meta || {},
          // })
          store.commit('ADD_TAG', {
            name: toMenu.name,
            path: toMenu.path,
@@ -135,7 +135,7 @@
    NProgress.done()
    const isLoginPage = to.path === '/login'
    // 根据是否登录页设置标题
    const pageTitle = isLoginPage ? '中图智飞低空感知网平台' : '综合管理平台'
    const pageTitle = isLoginPage ? '任务工单平台' : '综合管理平台'
    document.title = pageTitle
    store.commit('SET_IS_SEARCH', false)
})
applications/task-work-order/src/router/views/index.js
@@ -4,7 +4,6 @@
export default [
    {
        path: '/',
        name:'工单管理首页',
        redirect: '/orderView/orderManage/orderManage/index',
    },
  {
applications/task-work-order/src/store/modules/tags.js
@@ -15,6 +15,7 @@
      setStore({ name: 'tag', content: state.tag })
      if (state.bsTagList.some(ele => ele.fullPath == action.fullPath)) return
      state.bsTagList.push(action)
            console.log(state.bsTagList,'99')
      setStore({ name: 'bsTagList', content: state.bsTagList })
    },
    DEL_TAG: (state, action) => {
applications/task-work-order/src/styles/common.scss
@@ -106,6 +106,7 @@
    flex: 1;
    height: 100%;
    box-sizing: border-box;
    background: url('@/assets/images/layoutBg.png') repeat;
    .layer-content-bottom {
      width: 100%;
applications/task-work-order/src/styles/tags.scss
@@ -38,13 +38,13 @@
    border-radius: 3px 3px 3px 3px;
    &.is-active {
      padding: 0 !important;
      padding-left: 20px !important;
      //padding: 0 !important;
      //padding-left: 20px !important;
      color: #FFFFFF;
      background: #5B6BFF;
      .is-icon-close {
        margin: 0 10px;
        //margin: 0 10px;
      }
    }
@@ -114,4 +114,4 @@
    padding: 1px 0 0 15px;
    box-sizing: border-box;
  }
}
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -76,13 +76,8 @@
                                </template>
                            </el-table-column>
                            <el-table-column prop="executeTime" show-overflow-tooltip label="任务执行时间" />
                            <el-table-column prop="feishou" show-overflow-tooltip label="选择飞手" />
                            <el-table-column prop="deviceId" show-overflow-tooltip label="选择设备" />
                            <el-table-column label="操作" class-name="operation-btns">
                                <template v-slot="{ row }">
                                    <el-link type="primary" @click="">查看</el-link>
                                </template>
                            </el-table-column>
                            <el-table-column prop="recommendFlyerName" show-overflow-tooltip label="选择飞手" />
                            <el-table-column prop="deviceName" show-overflow-tooltip label="选择设备" />
                        </el-table>
                    </template>
                </div>
@@ -187,7 +182,7 @@
                        <el-table-column prop="devicePayload" label="设备负载" />
                    </el-table>
                </template>
                <div v-else>请先选择设备需求并绘制范围</div>
                <div v-else>请先选择设备需求并在地图上绘制工单范围</div>
            </div>
        </div>
@@ -215,10 +210,10 @@
                </el-button>
                <el-button v-if="gdStatus === '10'" @click="addDescription">拒绝接单</el-button>
                <el-button v-if="gdStatus === '10'" @click="statusChange(1)">接单</el-button>
                <el-button v-if="gdStatus === '22'" @click="statusChange(7)">同意修改</el-button>
                <el-button v-if="gdStatus === '22'" @click="statusChange(8)">不同意修改</el-button>
                <el-button v-if="gdStatus === '21'" @click="statusChange(5)">同意取消</el-button>
                <el-button v-if="gdStatus === '22'" @click="statusChange(7)">同意修改</el-button>
                <el-button v-if="gdStatus === '21'" @click="addDescription">不同意取消</el-button>
                <el-button v-if="gdStatus === '21'" @click="statusChange(5)">同意取消</el-button>
                <el-button v-if="gdStatus === '30'" @click="addDescription">协商修改</el-button>
                <el-button v-if="gdStatus === '31'" @click="statusChange(10)">同意</el-button>
            </template>
@@ -561,7 +556,6 @@
        hasPatrolTaskList.value && gdPatrolTaskPage()
        dialogMode.value === 'edit' ? editPolygon() : viewPolygon()
    }
    await getDeviceList()
    // setMapDevice()
    await nextTick()
    syncSelection()
@@ -609,18 +603,17 @@
    .processBox {
        width: 312px;
        .el-timeline{
        .el-timeline {
            padding-left: 100px;
        }
        .item-content{
        .item-content {
            position: relative;
            .flowName{
            .flowName {
                position: absolute;
                left: -100px;
                top: 0;
            }
        }
    }
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -45,7 +45,7 @@
                    <el-option
                        v-for="item in dictObj.workOrderStatus"
                        :key="item.dictKey"
                        :label="item.dictValue"
                        :label="item.dictValue.split('_')[1]"
                        :value="item.dictKey"
                    />
                </el-select>
uniapps/work-app/README.md
@@ -24,60 +24,6 @@
修改 /src/config 里面的development的参数,改为对应环境的对应变量
# uniapp 团队协作开发实践模板(Vue3)
[![GitHub Repo stars](https://img.shields.io/github/stars/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub forks](https://img.shields.io/github/forks/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template)
[![node version](https://img.shields.io/badge/node-%3E%3D18-green)](https://github.com/oyjt/uniapp-vue3-template)
[![pnpm version](https://img.shields.io/badge/pnpm-%3E%3D8-green)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub package.json version (subfolder of monorepo)](https://img.shields.io/github/package-json/v/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub License](https://img.shields.io/github/license/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template)
使用uniapp+vite+vue3+typescript+uview-plus+unocss 搭建的适合团队协作的快速开发模版
[uview-plus官方文档](https://uiadmin.net/uview-plus/)
本项目集众多项目的优点,打造最适合团队协作开发的项目模板。
国内仓库地址:[https://gitee.com/ouyang/uniapp-vue3-template](https://gitee.com/ouyang/uniapp-vue3-template)
在线预览地址:[https://oyjt.github.io/uniapp-vue3-template/](https://oyjt.github.io/uniapp-vue3-template/)
### 特性
- [x] 集成`uview-plus3.0 ui`库
- [x] 支持多环境打包构建
- [x] 使用`pinia`状态管理
- [x] 封装网络请求,并支持`Typescript`
- [x] 支持路径别名
- [x] 支持自动加载组件和`API`
- [x] 自动校验`git`提交代码格式
- [x] 集成`ESLint`、`StyleLint`、`EditorConfig`代码格式规范
- [x] `Typescript`支持
- [x] 集成`UnoCSS`
- [x] 集成`iconify`图标库
- [x] 集成`z-paging`下拉刷新功能
- [x] 添加页面跳转拦截,登录权限校验
- [x] 支持`token`无感刷新
- [x] 项目分包
- [x] 集成小程序隐私协议授权组件
- [x] 项目构建自动删除本地图片并替换本地图片路径为线上图片
- [x] 集成包体积视图分析插件
- [x] 支持国际化
- [x] 集成`alova`网络请求(具体使用请切换到 [feature/alova](https://github.com/oyjt/uniapp-vue3-template/tree/feature/alova) 分支)
- [x] 集成`axios`网络请求(具体使用请切换到 [feature/axios](https://github.com/oyjt/uniapp-vue3-template/tree/feature/axios) 分支)
- [x] 支持新的`wot-design-uni`库(具体使用请切换到[feature/wot-design-uni](https://github.com/oyjt/uniapp-vue3-template/tree/feature/wot-design-uni)分支),[wot-design-uni官方文档](https://wot-design-uni.cn/)
- [x] 支持新的`shadcn-ui`库(具体使用请切换到[feature/shadcn-ui](https://github.com/oyjt/uniapp-vue3-template/tree/feature/shadcn-ui)分支),[shadcn-ui官方文档](https://ui.shadcn.com/)
- [x] 更好的 `AI` 支持,适配`cursor`和`trae`规则,集成`MCP`插件
### uniapp插件推荐
- [uniapp 插件精选(https://github.com/oyjt/awesome-uniapp)](https://github.com/oyjt/awesome-uniapp)
### 目录结构
项目中采用目前最新的技术方案来实现,目录结构清晰。
```
uniapps/work-wx/README.md
@@ -24,60 +24,6 @@
修改 /src/config 里面的development的参数,改为对应环境的对应变量
# uniapp 团队协作开发实践模板(Vue3)
[![GitHub Repo stars](https://img.shields.io/github/stars/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub forks](https://img.shields.io/github/forks/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template)
[![node version](https://img.shields.io/badge/node-%3E%3D18-green)](https://github.com/oyjt/uniapp-vue3-template)
[![pnpm version](https://img.shields.io/badge/pnpm-%3E%3D8-green)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub package.json version (subfolder of monorepo)](https://img.shields.io/github/package-json/v/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template)
[![GitHub License](https://img.shields.io/github/license/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template)
使用uniapp+vite+vue3+typescript+uview-plus+unocss 搭建的适合团队协作的快速开发模版
[uview-plus官方文档](https://uiadmin.net/uview-plus/)
本项目集众多项目的优点,打造最适合团队协作开发的项目模板。
国内仓库地址:[https://gitee.com/ouyang/uniapp-vue3-template](https://gitee.com/ouyang/uniapp-vue3-template)
在线预览地址:[https://oyjt.github.io/uniapp-vue3-template/](https://oyjt.github.io/uniapp-vue3-template/)
### 特性
- [x] 集成`uview-plus3.0 ui`库
- [x] 支持多环境打包构建
- [x] 使用`pinia`状态管理
- [x] 封装网络请求,并支持`Typescript`
- [x] 支持路径别名
- [x] 支持自动加载组件和`API`
- [x] 自动校验`git`提交代码格式
- [x] 集成`ESLint`、`StyleLint`、`EditorConfig`代码格式规范
- [x] `Typescript`支持
- [x] 集成`UnoCSS`
- [x] 集成`iconify`图标库
- [x] 集成`z-paging`下拉刷新功能
- [x] 添加页面跳转拦截,登录权限校验
- [x] 支持`token`无感刷新
- [x] 项目分包
- [x] 集成小程序隐私协议授权组件
- [x] 项目构建自动删除本地图片并替换本地图片路径为线上图片
- [x] 集成包体积视图分析插件
- [x] 支持国际化
- [x] 集成`alova`网络请求(具体使用请切换到 [feature/alova](https://github.com/oyjt/uniapp-vue3-template/tree/feature/alova) 分支)
- [x] 集成`axios`网络请求(具体使用请切换到 [feature/axios](https://github.com/oyjt/uniapp-vue3-template/tree/feature/axios) 分支)
- [x] 支持新的`wot-design-uni`库(具体使用请切换到[feature/wot-design-uni](https://github.com/oyjt/uniapp-vue3-template/tree/feature/wot-design-uni)分支),[wot-design-uni官方文档](https://wot-design-uni.cn/)
- [x] 支持新的`shadcn-ui`库(具体使用请切换到[feature/shadcn-ui](https://github.com/oyjt/uniapp-vue3-template/tree/feature/shadcn-ui)分支),[shadcn-ui官方文档](https://ui.shadcn.com/)
- [x] 更好的 `AI` 支持,适配`cursor`和`trae`规则,集成`MCP`插件
### uniapp插件推荐
- [uniapp 插件精选(https://github.com/oyjt/awesome-uniapp)](https://github.com/oyjt/awesome-uniapp)
### 目录结构
项目中采用目前最新的技术方案来实现,目录结构清晰。
```