| applications/drone-command/src/api/dataCockpit/index.js | ●●●●● patch | view | raw | blame | history | |
| applications/drone-command/src/components/map-container/device-map-container.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/appConfiguration/inventory/index.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/appConfiguration/inventory/接口文档.txt | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/appConfiguration/materials/index.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/appConfiguration/materials/接口文档.txt | patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue | ●●●●● patch | view | raw | blame | history |
applications/drone-command/src/api/dataCockpit/index.js
@@ -2,7 +2,7 @@ * @Author : yuan * @Date : 2026-01-09 11:14:04 * @LastEditors : yuan * @LastEditTime : 2026-01-26 19:02:07 * @LastEditTime : 2026-02-02 09:45:21 * @FilePath : \applications\drone-command\src\api\dataCockpit\index.js * @Description : * Copyright 2026 OBKoro1, All Rights Reserved. @@ -83,6 +83,15 @@ }) } // 最新 --- 数据驾驶舱地图聚合 export const newCockpitAggregationApi = (params) => { return request({ url: '/drone-fw/cockpit/dataCockpit/statisticalDeviceOut', method: 'get', params }) } // 区域列表 export const areaDivideListApi = (params) => { return request({ applications/drone-command/src/components/map-container/device-map-container.vue
@@ -53,7 +53,7 @@ import { fwDefenseSceneManageListApi } from '@/views/areaManage/sceneManage/sceneManageApi' import { cockpitAggregationApi } from '@/api/dataCockpit' import { newCockpitAggregationApi } from '@/api/dataCockpit' import layerControlIcon from '@/assets/images/dataCockpit/layerControl.png' import equipmentIcon from '@/assets/images/dataCockpit/map/equipment.png' import offlineEquipmentIcon from '@/assets/images/dataCockpit/map/offline-equipment.png' @@ -132,9 +132,9 @@ let favoritePulseElapsed = 0 const favoritePulseEntities = [] const pulseBaseColor = Cesium.Color.fromCssColorString('#FF3B30') const PULSE_MIN_RADIUS_M = 60 const PULSE_MAX_RADIUS_M = 180 const PULSE_DURATION_S = 1.6 const PULSE_MIN_RADIUS_M = 2 const PULSE_MAX_RADIUS_M = 30 const PULSE_DURATION_S = 1.4 const detailVisible = ref(true) const clusterVisible = ref(false) const countyCenterMap = new Map() @@ -217,31 +217,93 @@ return canvas } class PulseSphereMaterialProperty { constructor(color, speed = 1.2, bands = 3.0, softness = 0.18) { this._definitionChanged = new Cesium.Event() this.color = color this.speed = speed this.bands = bands this.softness = softness } get isConstant() { return true } get definitionChanged() { return this._definitionChanged } getType() { return 'PulseSphereMaterial' } getValue(_time, result = {}) { result.color = this.color result.time = (performance.now() / 1000) * this.speed result.bands = this.bands result.softness = this.softness return result } equals(other) { return ( other instanceof PulseSphereMaterialProperty && Cesium.Color.equals(this.color, other.color) && this.speed === other.speed && this.bands === other.bands && this.softness === other.softness ) } } let pulseSphereMaterial = null const getPulseSphereMaterial = () => { if (pulseSphereMaterial) return pulseSphereMaterial Cesium.Material._materialCache.addMaterial('PulseSphereMaterial', { fabric: { type: 'PulseSphereMaterial', uniforms: { color: pulseBaseColor.withAlpha(0.45), time: 0, bands: 3.0, softness: 0.18, }, source: ` czm_material czm_getMaterial(czm_materialInput materialInput) { czm_material material = czm_getDefaultMaterial(materialInput); vec3 normalEC = normalize(materialInput.normalEC); vec3 viewEC = normalize(-materialInput.positionToEyeEC); float ndv = max(dot(normalEC, viewEC), 0.0); float fresnel = pow(1.0 - ndv, 1.6); float wave = sin((ndv * bands + time) * 6.2831853); float ring = smoothstep(-softness, softness, wave); float alpha = (ring * 0.6 + fresnel * 0.4) * color.a; material.diffuse = color.rgb; material.alpha = alpha; return material; } `, }, translucent: () => true, }) pulseSphereMaterial = new PulseSphereMaterialProperty(pulseBaseColor.withAlpha(0.45), 1.1, 3.2, 0.22) return pulseSphereMaterial } const createFavoritePulseEntity = (billboard) => { if (!viewer || !billboard) return const material = new Cesium.ImageMaterialProperty({ image: getPulseCanvas(), transparent: true, }) const material = getPulseSphereMaterial() const pulse = { material, offset: Math.random() * PULSE_DURATION_S, entity: null, } const getPulseHeight = () => { const pos = getBillboardPosition(billboard) if (!pos) return 0 const carto = Cesium.Cartographic.fromCartesian(pos) return carto?.height ?? 0 const getPulseRadius3D = () => { const radius = getPulseRadius(pulse) return new Cesium.Cartesian3(radius, radius, radius) } pulse.entity = viewer.entities.add({ position: new Cesium.CallbackProperty(() => getBillboardPosition(billboard), false), ellipse: { semiMajorAxis: new Cesium.CallbackProperty(() => getPulseRadius(pulse), false), semiMinorAxis: new Cesium.CallbackProperty(() => getPulseRadius(pulse), false), ellipsoid: { radii: new Cesium.CallbackProperty(() => getPulseRadius3D(), false), material, height: new Cesium.CallbackProperty(() => getPulseHeight(), false), heightReference: Cesium.HeightReference.NONE, }, }) favoritePulseEntities.push(pulse) @@ -1233,7 +1295,7 @@ const loadAggregation = async () => { try { const res = await cockpitAggregationApi({ const res = await newCockpitAggregationApi({ effectiveRangeKmIsNotNull: 1 }) renderAggregation(res?.data?.data ?? []) applications/task-work-order/src/views/orderView/appConfiguration/inventory/index.vue
New file @@ -0,0 +1,20 @@ <template> <div> 实施清单 </div> </template> <script setup > /** * @description index * @date 2026-02-02 (周一) 09:25:52 */ defineOptions({ name: 'index' }) </script> <style scoped > </style> applications/task-work-order/src/views/orderView/appConfiguration/inventory/接口文档.txt
New file @@ -0,0 +1,105 @@ ## 分页 **接口地址**:`/implement/gdImplementList/page` **请求方式**:`GET` **请求数据类型**:`application/x-www-form-urlencoded` **响应数据类型**:`*/*` **接口描述**:<p>传入gdImplementList</p> **请求参数**: **请求参数**: | 参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | |areaCode|所属区划编码|query|false|string|| |current|当前页|query|false|integer(int32)|| |matterCode|事项编码|query|false|string|| |matterName|事项名称|query|false|string|| |size|每页的数量|query|false|integer(int32)|| **响应状态**: | 状态码 | 说明 | schema | | -------- | -------- | ----- | |200|OK|R«IPage«GdImplementListVO»»| |401|Unauthorized|| |403|Forbidden|| |404|Not Found|| **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | -------- | -------- | ----- |----- | |code|状态码|integer(int32)|integer(int32)| |data|承载数据|IPage«GdImplementListVO»|IPage«GdImplementListVO»| |  current||integer(int64)|| |  pages||integer(int64)|| |  records||array|GdImplementListVO| |    areaCode|所属区划编码|string|| |    areaName|所属区划名称|string|| |    catalogCode|目录编码|string|| |    id|主键id|integer|| |    implementCode|实施编码|string|| |    implementName|实施清单名称|string|| |    matterCode|事项编码|string|| |    matterName|事项名称|string|| |    orgCode|所属机构编码|string|| |    orgName|所属机构名称|string|| |    processDefinitionId|流程定义主键|string|| |    processInstanceId|流程实例主键|string|| |  size||integer(int64)|| |  total||integer(int64)|| |msg|返回消息|string|| |success|是否成功|boolean|| **响应示例**: ```javascript { "code": 0, "data": { "current": 0, "pages": 0, "records": [ { "areaCode": "", "areaName": "", "catalogCode": "", "id": 0, "implementCode": "", "implementName": "", "matterCode": "", "matterName": "", "orgCode": "", "orgName": "", "processDefinitionId": "", "processInstanceId": "" } ], "size": 0, "total": 0 }, "msg": "", "success": true } ``` applications/task-work-order/src/views/orderView/appConfiguration/materials/index.vue
New file @@ -0,0 +1,20 @@ <template> <div> 材料配置 </div> </template> <script setup > /** * @description index * @date 2026-02-02 (周一) 09:26:21 */ defineOptions({ name: 'index' }) </script> <style scoped > </style> applications/task-work-order/src/views/orderView/appConfiguration/materials/接口文档.txt
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue
@@ -8,6 +8,7 @@ :close-on-click-modal="false" > <div class="detail-container detail-container1" v-if="dialogReadonly"> <div class="detail-title">异议详情</div> <el-row class="detail-row-view"> <el-col :span="12"> <div class="label">标题</div>