diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/dy_app.iml b/.idea/dy_app.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/dy_app.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cc896ea --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/api/collectPage.js b/src/api/collectPage.js new file mode 100644 index 0000000..192ac45 --- /dev/null +++ b/src/api/collectPage.js @@ -0,0 +1,35 @@ +import {service} from "@/utils/request"; +const api = "/mosty-yjzl" + +// 查询分页 +export function getSelectPage(params) { + return service({ + url: `${api}/tbZdxlFgdwBdd/selectPage`, + params + }) +} + +// 新增数据 +export function addSaveData(data) { + return service({ + url: `${api}/tbZdxlFgdwBdd/save`, + method: 'POST', + data + }) +} + +// 获取方格列表 +export function getSelectAllList(params) { + return service({ + url: `${api}/tbZdxlFgdw/selectAllList`, + params + }) +} + +// 获取方格列表 +export function getSelectList(params) { + return service({ + url: `${api}/tbZdxlFgdw/selectList`, + params + }) +} diff --git a/src/api/patrolList.js b/src/api/patrolList.js new file mode 100644 index 0000000..9ffdeb8 --- /dev/null +++ b/src/api/patrolList.js @@ -0,0 +1,18 @@ +import {service} from "@/utils/request"; +const api = `/mosty-yjzl` + +// 获取巡逻列表 +export function fetchPatrolList(params) { + return service({ + url: `${api}/tbZdxlFgxlrw/selectRwPage`, + params + }) +} + + +export function fetchSelectListByBddxlrwId(params) { + return service({ + url: `${api}/tbZdxlFgdwBddxlrwJl/selectListByBddxlrwId`, + params + }) +} diff --git a/src/assets/home/bddcj.png b/src/assets/home/bddcj.png new file mode 100644 index 0000000..5aea960 Binary files /dev/null and b/src/assets/home/bddcj.png differ diff --git a/src/components/GdMap/index.vue b/src/components/GdMap/index.vue index 4043fe5..567a8da 100644 --- a/src/components/GdMap/index.vue +++ b/src/components/GdMap/index.vue @@ -93,6 +93,7 @@ onMounted(() => { }) // zoomTarget.value = map.mapboxGLMap.getZoom(); }); + mapUtil.value = new MapUtil(map); // mapUtil.value.Drawplot(); //初始化加载绘制工具 @@ -106,7 +107,6 @@ onMounted(() => { // 撒点 emitter.on("addPointArea", (obj) => { console.log(obj,'obj'); - mapUtil.value.makerSki(obj); }); // 鼠标滑过提示文字的点位 @@ -162,6 +162,7 @@ onMounted(() => { }); // 聚合撒点 emitter.on("addPoint", (obj) => { + console.log(obj, 'obj'); mapUtil.value.aggregateScatteringPoint(obj); }); @@ -198,6 +199,12 @@ onMounted(() => { let coords = [centerPoint.lng, centerPoint.lat]; emitter.emit("getcentercoord", coords); }); + + // 获取点击经纬度 + emitter.on("getMapClickCoordinates", (res) => { + mapUtil.value.enableClickEvents() + console.log(res) + }) }); //切换地图底图 const onMapImageChange = (val) => { @@ -278,6 +285,7 @@ onUnmounted(() => { emitter.off("diffusionCircle"); emitter.off("SsCircle"); emitter.off("ClearssCircle"); + emitter.off("getMapClickCoordinates"); }); diff --git a/src/components/GdMap/mapUtil.js b/src/components/GdMap/mapUtil.js index 9494a93..dd04182 100644 --- a/src/components/GdMap/mapUtil.js +++ b/src/components/GdMap/mapUtil.js @@ -1,8 +1,8 @@ import emitter from "@/utils/eventBus.js"; -export function MapUtil(map) { +export function MapUtil(map) { let _that = this; - _that.mMap = map; //地图对象 + _that.mMap = map; //地图对象 _that.heatmapOverlay = {}; //热力图层对象 _that.markerClusterers = null; //聚合图层对象 _that.flagSircle = []; //自定义HTML @@ -24,7 +24,7 @@ export function MapUtil(map) { }; /** - * 撒点.鼠标滑动展示内容 + * 撒点.鼠标滑动展示内容 * @param {*} coords 坐标 geojson * @param {*} icon 图标 * @param {*} flag 标识 @@ -44,7 +44,7 @@ export function MapUtil(map) { } if(it.jd && it.wd) return obj; }); - + const point = map.createdPoint(pointList,{ image:icon,//对应上面的图片名称 scale:0.6, @@ -69,7 +69,7 @@ export function MapUtil(map) { /** * 撒点 * @param {*} coords 坐标 geojson - * @param {*} icon 图标 + * @param {*} icon 图标 * @param {*} flag 标识 * @param {*} isBounds 点击图标是否变大方法 * @param {*} showTitle 是否展示标题 @@ -77,8 +77,8 @@ export function MapUtil(map) { MapUtil.prototype.makerSki = (res) => { console.log(res,'resres'); - - let { coords,icon,flag, isBounds , showTitle} = res + + let { coords,icon,flag, isBounds , showTitle, coordinates} = res if (!coords) return; if(!_that._self[flag]) _that._self[flag] = []; //存储地图标识的容器 if(!_that.idsBox[flag]) _that.idsBox[flag] = []; //存储id的容器 @@ -158,8 +158,8 @@ export function MapUtil(map) { /** * 装备图标 - * @param {点位数据} data - * @param {点} point + * @param {点位数据} data + * @param {点} point */ MapUtil.prototype.shouIcon = (data, point) => { if(!_that._self.gpsZb) _that._self.gpsZb = [] @@ -215,8 +215,8 @@ export function MapUtil(map) { /** * 聚合撒点 - * @param {*} coords 点位数据 geojson lng lat - * @param {*} icon 点位图 + * @param {*} coords 点位数据 geojson lng lat + * @param {*} icon 点位图 */ MapUtil.prototype.aggregateScatteringPoint = (obj) => { let { coords, icon, flag,isclear,scale } = obj; @@ -245,11 +245,11 @@ export function MapUtil(map) { // 聚合的点击一个 maker.addEventListener("click", (val) => { - _that.openInfoDetail(flag,[val]) //点击打开详情 + _that.openInfoDetail(flag,[val]) //点击打开详情 }) // 聚合的多个 maker.addEventListener("clusterClick", (val) => { - _that.openInfoDetail(flag,val) //点击打开详情 + _that.openInfoDetail(flag,val) //点击打开详情 }) }; @@ -291,7 +291,7 @@ export function MapUtil(map) { }) _that.heatmapOverlay[flag] = [] }; - + /** * 删除图层要素 * @param {*} layer 唯一标识 @@ -306,7 +306,7 @@ export function MapUtil(map) { _that._self.gpsZb[key] = [] } } - } + } // 其他图层 if (!_that._self[layer]) return false; if(layer !== 'gpsZb'){ @@ -315,7 +315,7 @@ export function MapUtil(map) { el.destroy()//destory()销毁 , show(false) false:隐藏 true :展示 } _that._self[layer] = []; - + // d带标题的撒点 let flagT = layer+'Title'; if (!_that._self[flagT]) return false; @@ -360,7 +360,7 @@ export function MapUtil(map) { } catch (err) {} } } - + // 绘制数据的初始化 MapUtil.prototype.Drawplot = (color) => { const {point,line,polygon,circle,rectangle,geoJson,remove,enableEdit } = map.draw({ @@ -374,7 +374,7 @@ export function MapUtil(map) { } /** * 绘制工具 - * @param {*} type 绘制形状 + * @param {*} type 绘制形状 * (point 点, line 线, circle 圆, polygon 多边形, rectangle 矩形) , * geoJson:根据geojson回显图 */ @@ -452,8 +452,8 @@ export function MapUtil(map) { } /** * 创建线 - * @param {*} type 回显形状 - * (solid 实线, dash 虚线, FlowColor 彩虹线, RoadLine 流线 + * @param {*} type 回显形状 + * (solid 实线, dash 虚线, FlowColor 彩虹线, RoadLine 流线 */ MapUtil.prototype.createLine = (res) => { let { type , coords , isclear ,flag ,color,width} = res; @@ -498,9 +498,9 @@ export function MapUtil(map) { /** * 回显平面- 圆 - 多边形 - 矩形 - * @param {*} type 回显形状 - * type: 'polygon', 'rectangle - coords = [{ + * @param {*} type 回显形状 + * type: 'polygon', 'rectangle + coords = [{ position:[[[jd,wd],[jd,wd] ---]], //三维数组 text,//展示的文字 id, //唯一标识 @@ -508,10 +508,10 @@ export function MapUtil(map) { userData:{} //存储数据 }] - * type:circle + * type:circle coords:[jd,wd] radius:半径 - * @param {*} text 展示的文字 + * @param {*} text 展示的文字 */ MapUtil.prototype.echoPlane = (res) => { let { type , coords ,fontColor, text = '' ,radius = 0, isclear ,flag ,id = 1 , color , linecolor} = res; @@ -535,7 +535,7 @@ export function MapUtil(map) { let maker ; // 圆 if(type == 'circle'){ - let params = [{ center:coords,radius, text, id }] + let params = [{ center:coords,radius, text, id }] maker = map.createCircle(params,style); } @@ -544,7 +544,7 @@ export function MapUtil(map) { // 多边形 if(type == 'polygon') maker = map.createPolygon(coords,style); _that._self[flag].push(maker); - + maker.addEventListener("click", (val) => { if( flag == 'xfq'){ maker.highlight(val.id) //高亮展示 @@ -557,7 +557,7 @@ export function MapUtil(map) { }) } - + // 分割线展示文字 MapUtil.prototype.gapText = (obj) => { let { points, text ,flag} = obj @@ -668,7 +668,7 @@ export function MapUtil(map) { _that.polygonGeo.destroy() } - // 打开详情弹窗 + // 打开详情弹窗 MapUtil.prototype.openInfoDetail = (flag,data) => { switch (flag) { case "rx": @@ -699,6 +699,31 @@ export function MapUtil(map) { break; } } + + /** 获取经纬度*/ + MapUtil.prototype.enableClickEvents = function() { + const _that = this; + + if (_that.clickEventHandler) { + console.log('点击事件已经启用'); + return; + } + + // 添加点击事件处理函数 + _that.clickEventHandler = (e) => { + const lng = e.lngLat.lng; + const lat = e.lngLat.lat; + + emitter.emit("mapClickCoordinates", { + lng, + lat, + coordinates: [lng, lat], + timestamp: new Date().getTime() + }); + }; + + _that.mMap.mapboxGLMap.on('click', _that.clickEventHandler); + }; } // 获取uuid 作为边界图层ID function getUUid() { diff --git a/src/pages/clockInPage/components/Timeline.vue b/src/pages/clockInPage/components/Timeline.vue new file mode 100644 index 0000000..9b4b8e6 --- /dev/null +++ b/src/pages/clockInPage/components/Timeline.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/pages/clockInPage/index.vue b/src/pages/clockInPage/index.vue new file mode 100644 index 0000000..173a521 --- /dev/null +++ b/src/pages/clockInPage/index.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/src/pages/collectPage/collectAndAdd.vue b/src/pages/collectPage/collectAndAdd.vue new file mode 100644 index 0000000..dc2e3bc --- /dev/null +++ b/src/pages/collectPage/collectAndAdd.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/pages/collectPage/copmonents/customPopup.vue b/src/pages/collectPage/copmonents/customPopup.vue new file mode 100644 index 0000000..732c7ef --- /dev/null +++ b/src/pages/collectPage/copmonents/customPopup.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/pages/collectPage/copmonents/listItemWrapper.vue b/src/pages/collectPage/copmonents/listItemWrapper.vue new file mode 100644 index 0000000..fe9a208 --- /dev/null +++ b/src/pages/collectPage/copmonents/listItemWrapper.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/pages/collectPage/index.vue b/src/pages/collectPage/index.vue new file mode 100644 index 0000000..0926b49 --- /dev/null +++ b/src/pages/collectPage/index.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/pages/newHome/index.vue b/src/pages/newHome/index.vue index 82105eb..ad5dc6e 100644 --- a/src/pages/newHome/index.vue +++ b/src/pages/newHome/index.vue @@ -31,7 +31,7 @@ const listData = ref([ text: '巡逻打卡', imgUrl: require("@/assets/home/xldk.png"), type: 'xldk', - path: '/clock' + path: '/patrolList' }, { text: '信息交互', @@ -39,6 +39,12 @@ const listData = ref([ type: 'zllz', path: '/yyzx/zlzx/zlzxIndex' }, + { + text: '必到点采集', + imgUrl: require("@/assets/home/bddcj.png"), + type: 'bddcj', + path: '/collectPage' + }, { text: '处警报送', imgUrl: require("@/assets/home/dqwz.png"), @@ -59,6 +65,8 @@ const changeOpen = (val) => { case 'zllz': case 'grxx': case 'cjbs': + case 'bddcj': + case 'clockIn': router.push(val.path) break case 'rcpc': @@ -79,6 +87,7 @@ ul { box-sizing: border-box; overflow: hidden; height: 100vh; + overflow: auto; li { width: 48%; @@ -91,4 +100,4 @@ ul { margin-bottom: 10px; } } - \ No newline at end of file + diff --git a/src/pages/patrolList/copmonents/patrolWrapper.vue b/src/pages/patrolList/copmonents/patrolWrapper.vue new file mode 100644 index 0000000..c013df1 --- /dev/null +++ b/src/pages/patrolList/copmonents/patrolWrapper.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/pages/patrolList/index.vue b/src/pages/patrolList/index.vue new file mode 100644 index 0000000..2f45fd2 --- /dev/null +++ b/src/pages/patrolList/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/router/index.js b/src/router/index.js index 2949fdc..3a152c7 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -61,6 +61,26 @@ const routes = [{ name: "my", component: () => import("../pages/my/index"), }, + { + path: "/collectPage", + name: "collectPage", + component: () => import("../pages/collectPage/index"), + }, + { + path: "/collectAndAdd", + name: "collectAndAdd", + component: () => import("../pages/collectPage/collectAndAdd"), + }, + { + path: "/clockInPage", + name: "clockInPage", + component: () => import("../pages/clockInPage/index"), + }, + { + path: "/patrolList", + name: "patrolList", + component: () => import("../pages/patrolList/index"), + }, { path: "/dqLocation", name: "dqLocation", @@ -499,4 +519,4 @@ const router = createRouter({ } }) -export default router; \ No newline at end of file +export default router; diff --git a/vue.config.js b/vue.config.js index ae507f1..b4de3d6 100644 --- a/vue.config.js +++ b/vue.config.js @@ -12,8 +12,8 @@ module.exports = { port: 9528, proxy: { '/mosty-api': { - target: "http://118.122.165.45:35623", - // target: "http://172.20.19.54:8006", + // target: "http://118.122.165.45:35623", + target: "http://192.168.1.8:8006", changeOrigin: true, }, } @@ -29,4 +29,4 @@ module.exports = { } } }, -}; \ No newline at end of file +};