diff --git a/.env.development b/.env.development index 377e0d8..b9d0906 100644 --- a/.env.development +++ b/.env.development @@ -16,7 +16,7 @@ VITE_GLOB_INFO_IMAGE_URL=http://120.222.154.48:6050 # Interface prefix VITE_GLOB_API_URL_PREFIX= -VITE_GLOB_APP_TITLE = 林业防火平台 +VITE_GLOB_APP_TITLE = 费县智慧林业防灭火平台 VITE_GLOB_APP_LOGO = /logo.png diff --git a/.env.linyefanghuo b/.env.linyefanghuo index e5c57ed..b5c7f21 100644 --- a/.env.linyefanghuo +++ b/.env.linyefanghuo @@ -12,19 +12,19 @@ VITE_BUILD_COMPRESS = 'none' # Basic interface address SPA # 天空地项目 -VITE_GLOB_API_URL=http://120.222.154.7:6050 +VITE_GLOB_API_URL=http://192.168.10.163:9620 -VITE_GLOB_INFO_IMAGE_URL=http://120.222.154.48:6050 +VITE_GLOB_INFO_IMAGE_URL=http://192.168.10.163:9620 # File upload address, optional # It can be forwarded by nginx or write the actual address directly -VITE_GLOB_UPLOAD_URL=http://120.222.154.7:6050 +VITE_GLOB_UPLOAD_URL=http://192.168.10.163:9620 # Interface prefix VITE_GLOB_API_URL_PREFIX= -VITE_GLOB_APP_TITLE = 林业防火平台 +VITE_GLOB_APP_TITLE = 费县智慧林业防灭火平台 VITE_GLOB_APP_LOGO = /logo.png diff --git a/index.html b/index.html index 8c986a8..c07fa95 100644 --- a/index.html +++ b/index.html @@ -18,6 +18,10 @@ + + + + - - -
- - -
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/src/api/application/layer.ts b/src/api/application/layer.ts index 348dca1..28ba5e2 100644 --- a/src/api/application/layer.ts +++ b/src/api/application/layer.ts @@ -1,6 +1,10 @@ import { defHttp } from '@/utils/http/axios'; -import { TableDataByTableNameParams, TempeleteByTableNameParams } from './model/index'; +import { + TableDataByTableNameParams, + TempeleteByTableNameParams, + UploadSldStyleParams, +} from './model/index'; enum Api { // 获取列表数据 @@ -9,6 +13,8 @@ enum Api { TempeleteByTableName = '/api/Layer/TempeleteByTableName', // 更新单条数据 UpdateTableData = '/api/Layer/UpdateTableData', + // 上传样式 + UploadSldStyle = '/api/Layer/UploadSldStyle', } /** * @description: 获取打卡点列表 @@ -27,11 +33,20 @@ export function updateTableData(params: any) { }); } /** - * @description: 编辑打卡点 + * @description: 下载模板 */ export function tempeleteByTableName(params: TempeleteByTableNameParams) { - return defHttp.post({ + return defHttp.get({ url: Api.TempeleteByTableName, params, }); } +/** + * @description: 下载模板 + */ +export function uploadSldStyle(params: UploadSldStyleParams) { + return defHttp.get({ + url: Api.UploadSldStyle, + params, + }); +} diff --git a/src/api/application/model/index.ts b/src/api/application/model/index.ts index 8428af5..8c2d249 100644 --- a/src/api/application/model/index.ts +++ b/src/api/application/model/index.ts @@ -30,4 +30,11 @@ export interface TableDataByTableNameParams { } export interface TempeleteByTableNameParams { tablename: string; + type: number; +} + +export interface UploadSldStyleParams { + filepath: string; + tablename: string; + styleName: string; } diff --git a/src/hooks/eventHandler.hook.ts b/src/hooks/eventHandler.hook.ts index bdf67d1..2d4eb74 100644 --- a/src/hooks/eventHandler.hook.ts +++ b/src/hooks/eventHandler.hook.ts @@ -80,16 +80,25 @@ export const eventCommonHandler = ( for (let k = 0; k < elementList[j].elementId.length; k++) { //获取位置 const arr = queryFun(componentList, elementList[j].elementId[k]); - console.log(arr); + // console.log(arr); if (arr.length > 1) { obj = componentList[arr[0]].groupList[arr[1]]; obj.status.hide = false; - console.log(obj); + // console.log(obj); // chartEditStore.updateComponentList(arr[0], obj, arr[1]); } else if (arr.length == 1) { obj = componentList[arr[0]]; obj.status.hide = false; - console.log(obj); + // console.log(obj); + + // 海康视频组件单独处理 + if(obj.isGroup && obj.groupList.some((li) => li.key == 'ZhiGan_ModalVideo')) { + obj.groupList.forEach((g) => { + if(g.key == 'ZhiGan_ModalVideo'){ + g.status.hide = false; + } + }); + } // chartEditStore.updateComponentList(arr[0], obj); } // if (componentList[i].id == elementList[j].elementId[k]) { @@ -103,7 +112,7 @@ export const eventCommonHandler = ( // 隐藏 for (let k = 0; k < elementList[j].elementId.length; k++) { //获取位置 - const arr = queryFun(componentList, elementList[j].elementId[k]); + const arr = queryFun(componentList, elementList[j].elementId[k]); if (arr.length > 1) { obj = componentList[arr[0]].groupList[arr[1]]; obj.status.hide = true; @@ -111,6 +120,15 @@ export const eventCommonHandler = ( } else if (arr.length == 1) { obj = componentList[arr[0]]; obj.status.hide = true; + + // 海康视频组件单独处理 + if(obj.isGroup && obj.groupList.some((li) => li.key == 'ZhiGan_ModalVideo')) { + obj.groupList.forEach((g) => { + if(g.key == 'ZhiGan_ModalVideo'){ + g.status.hide = true; + } + }); + } // chartEditStore.updateComponentList(arr[0], obj); } // if (componentList[i].id == elementList[j].elementId[k]) { @@ -178,8 +196,17 @@ export const eventCommonHandler = ( } = elementList[j].callBackRequest; // 处理头部 - let headers: RequestParamsObjType = Object.fromEntries(requestParams.Header.map(item => [item.key, item.value])); - // headers['X-Token'] = localStorage.getItem('X-Token'); + let headers: RequestParamsObjType = Object.fromEntries(requestParams.Header.map(item => [item.key.toLowerCase(), item.value])); + if(!headers['x-token']){ + headers['x-token'] = localStorage.getItem('X-Token'); + } + // 清除掉空项 + for (const key in headers) { + if (key === "") { + delete headers[key]; + } + } + // params 参数 let params: RequestParamsObjType = Object.fromEntries(requestParams.Params.map(item => [item.key, item.value])); @@ -200,7 +227,6 @@ export const eventCommonHandler = ( console.log(error); window['$message'].error('URL地址格式有误!'); } - } } } diff --git a/src/packages/components/Decorates/Titles/Titles01/config.ts b/src/packages/components/Decorates/Titles/Titles01/config.ts index 38a6c16..a804f36 100644 --- a/src/packages/components/Decorates/Titles/Titles01/config.ts +++ b/src/packages/components/Decorates/Titles/Titles01/config.ts @@ -5,7 +5,7 @@ import { Titles01Config } from './index' import cloneDeep from 'lodash/cloneDeep' export const option = { - borderTitle: '费县林业防火平台', + borderTitle: '费县智慧林业防灭火平台', borderTitleWidth: 1920, borderTitleHeight: 98, borderTitleSize: 18, diff --git a/src/packages/components/Zhichu/Zhichu/ZhiChu_LuXianGuHua/ts/direction.ts b/src/packages/components/Zhichu/Zhichu/ZhiChu_LuXianGuHua/ts/direction.ts index 898740b..3ef43d3 100644 --- a/src/packages/components/Zhichu/Zhichu/ZhiChu_LuXianGuHua/ts/direction.ts +++ b/src/packages/components/Zhichu/Zhichu/ZhiChu_LuXianGuHua/ts/direction.ts @@ -9,7 +9,6 @@ const INPUT_TIP_URL = "https://restapi.amap.com/v3/assistant/inputtips"; const RE_GEO_URL = "https://restapi.amap.com/v3/geocode/regeo"; const GD_KEY = "6af6a87038f44c8c793aa70331f2b7ca"; -// const GD_KEY = "8599882c8059403539cd882a8a6e64d0"; // 起点、沿途、不包含的沿途、终点,光点的颜色 export const wayColorList = { diff --git a/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalFrameClose/config.vue b/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalFrameClose/config.vue index cf60b15..3f5eade 100644 --- a/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalFrameClose/config.vue +++ b/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalFrameClose/config.vue @@ -2,7 +2,7 @@ - 默认点击隐藏火情详情弹窗及其所在分组的内容 + 默认点击隐藏弹窗及其所在分组的内容 diff --git a/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalTable/index.vue b/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalTable/index.vue index b81e4ea..4e843db 100644 --- a/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalTable/index.vue +++ b/src/packages/components/Zhichu/Zhichu/ZhiChu_ModalTable/index.vue @@ -733,9 +733,10 @@ pitch: -51.9, }); } + + let endCoor = [118.031528, 35.431473]; // 漫游 async function roamLocation(startCoor) { - let endCoor = [118.031528, 35.431473]; let params: any = { startlng: parseFloat(startCoor[0]), startlat: parseFloat(startCoor[1]), @@ -758,6 +759,8 @@ // 组件通信 const sql = props.chartConfig.request?.requestSQLContent?.sql; EventBus.on(props.chartConfig.id + 'dataupdate', (data) => { + // 火情终点 + endCoor = [data.lng, data.lat]; props.chartConfig.request.requestSQLContent.sql = replaceSqlParams(sql, { Id: data.id }); // 数据callback处理(预览时触发) useChartDataFetch(props.chartConfig, useChartEditStore, (resData: any[]) => { diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/config.ts b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/config.ts index ff88303..a8cb5e9 100644 --- a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/config.ts +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/config.ts @@ -20,6 +20,68 @@ export default class Config extends PublicConfigClass implements CreateComponent public attr = { ...chartInitConfig, w: 121, h: 44, zIndex: 5 } public chartConfig = cloneDeep(ZhiGan_ModalButtonConfig) public option = cloneDeep(option) - public request = { ...requestSqlConfig, requestSQLContent: { sql: 'UPDATE fm_fireclueinfo SET "Status" = #{Status} WHERE "Id" = #{Id}' }} - public filter = "return res.result;" + public events = getDeafultEvents(); + // public request = { ...requestSqlConfig, requestSQLContent: { sql: 'UPDATE fm_fireclueinfo SET "Status" = #{Status} WHERE "Id" = #{Id}' }} + // public filter = "return res.result;" +} + +function getDeafultEvents() { + return { + "baseEvent": { + "click": null, + "dblclick": null, + "mouseenter": null, + "mouseleave": null + }, + "advancedEvents": { + "vnodeMounted": null, + "vnodeBeforeMount": null + }, + "interactEvents": [], + "interactConfigEvents": [ + { + "type": "click", + "movementList": [ + { + "movement": "callBackRequest", + "elementId": "", + "callBackRequest": { + "requestUrl": "http://192.168.10.163:9620", + "requestApi": "/api/FireManagement/UpdatFireStateById", + "requestContentType": "", + "requestDataType": 0, + "requestHttpType": "post", + "requestParams": { + "Body": { + "form-data": {}, + "x-www-form-urlencoded": {}, + "json": "", + "xml": "" + }, + "Header": [ + { + "key": "", + "value": "", + "error": false + } + ], + "Params": [ + { + "key": "id", + "value": "{id}", + "error": false + }, + { + "key": "state", + "value": "1", + "error": false + } + ] + } + } + } + ] + } + ] + }; } diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/index.vue b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/index.vue index 95d3a34..c9a98c6 100644 --- a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/index.vue +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalButton/index.vue @@ -7,7 +7,7 @@ diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/index.ts b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/index.ts new file mode 100644 index 0000000..d8443a9 --- /dev/null +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/index.ts @@ -0,0 +1,7 @@ +import MulHKmonitor from './mulHKmonitor.vue'; +import PlayVideo from './playVideo.vue'; + +export { + MulHKmonitor, + PlayVideo, +}; \ No newline at end of file diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/mulHKmonitor.vue b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/mulHKmonitor.vue new file mode 100644 index 0000000..9795370 --- /dev/null +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/mulHKmonitor.vue @@ -0,0 +1,338 @@ + + + + diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/playVideo.vue b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/playVideo.vue new file mode 100644 index 0000000..529576b --- /dev/null +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalTimeLine/video/playVideo.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.ts b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.ts index 38988c0..dc6571d 100644 --- a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.ts +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.ts @@ -23,8 +23,11 @@ export const option = { padding: 4, serialNumberValue: '', - titleFontSize: 12, + selectPlacement: 'left', + titleFontSize: 15, titleFontColor: '#ffffff', + titleBackgroud: '#3d3d3d', + modalTitleHeight: 30, } } @@ -33,6 +36,6 @@ export default class Config extends PublicConfigClass implements CreateComponent public attr = { ...chartInitConfig, w: 320, h: 220, zIndex: -1 } public chartConfig = cloneDeep(ZhiGan_ModalVideoConfig) public option = cloneDeep(option) - public request = { ...requestSqlConfig, requestSQLContent: { sql: 'SELECT "Id", "Name", "SerialNumber"\r\nFROM fm_camera\r\nWHERE ST_DWithin(\r\n ST_GeographyFromText(\'POINT(\' || \r\n (SELECT \"Lng\" FROM fm_fireclueinfo WHERE "Id" = #{Id}) || \' \' || \r\n (SELECT \"Lat\" FROM fm_fireclueinfo WHERE "Id" = #{Id}) || \r\n \')\'),\r\n ST_GeographyFromText(\'POINT(\' || \"Lng\" || \' \' || \"Lat\" || \')\'),\r\n 1000\r\n) = true' }, } + public request = { ...requestSqlConfig, requestSQLContent: { sql: 'SELECT "Id", "Name", "SerialNumber", "Manufacturer"\r\nFROM fm_camera\r\nWHERE ST_DWithin(\r\n ST_GeographyFromText(\'POINT(\' || \r\n (SELECT \"Lng\" FROM fm_fireclueinfo WHERE "Id" = #{Id}) || \' \' || \r\n (SELECT \"Lat\" FROM fm_fireclueinfo WHERE "Id" = #{Id}) || \r\n \')\'),\r\n ST_GeographyFromText(\'POINT(\' || \"Lng\" || \' \' || \"Lat\" || \')\'),\r\n 1000\r\n) = true' }, } public filter = "return res.result;" } diff --git a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.vue b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.vue index fe4dab5..4723bc3 100644 --- a/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.vue +++ b/src/packages/components/Zhigan/Zhigan/ZhiGan_ModalVideo/config.vue @@ -1,7 +1,7 @@