From 0ce5681f8d42fe51a3885433d849b4881bdb5109 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Wed, 8 Mar 2023 08:26:50 +0800 Subject: [PATCH] =?UTF-8?q?v0.5=E5=B0=8F=E7=A8=8B=E5=BA=8F=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/patrolManage/patrolRecord.js | 5 +- api/app/lib/models/patrol_record.js | 5 + .../1.0.5/schema/2.update_patrol_record.sql | 4 + weapp/app.json | 3 +- weapp/images/circle.png | Bin 0 -> 293 bytes weapp/images/refresh.svg | 1 + .../inspectionInput/inspectionInput.js | 3 +- weapp/package/pointsStatus/pointsStatus.js | 66 ++++++++ weapp/package/pointsStatus/pointsStatus.json | 3 + weapp/package/pointsStatus/pointsStatus.wxml | 2 + weapp/package/pointsStatus/pointsStatus.wxss | 1 + weapp/pages/index/index.js | 159 +++++++----------- weapp/pages/index/index.wxml | 40 ++--- weapp/pages/index/index.wxss | 82 +++------ 14 files changed, 189 insertions(+), 185 deletions(-) create mode 100644 script/1.0.5/schema/2.update_patrol_record.sql create mode 100644 weapp/images/circle.png create mode 100644 weapp/images/refresh.svg create mode 100644 weapp/package/pointsStatus/pointsStatus.js create mode 100644 weapp/package/pointsStatus/pointsStatus.json create mode 100644 weapp/package/pointsStatus/pointsStatus.wxml create mode 100644 weapp/package/pointsStatus/pointsStatus.wxss diff --git a/api/app/lib/controllers/patrolManage/patrolRecord.js b/api/app/lib/controllers/patrolManage/patrolRecord.js index b192a93..185adbd 100644 --- a/api/app/lib/controllers/patrolManage/patrolRecord.js +++ b/api/app/lib/controllers/patrolManage/patrolRecord.js @@ -169,7 +169,7 @@ async function addPatrolRecord (ctx, next) { try { const models = ctx.fs.dc.models; const data = ctx.request.body; - let { patrolPlanId, inspectionTime, points, alarm, pointId } = data + let { patrolPlanId, inspectionTime, points, alarm, pointId, projectId } = data const pointRecord = await models.PatrolRecord.findAll({ where: { pointId: pointId }, order: [['inspectionTime', 'desc']], @@ -185,7 +185,8 @@ async function addPatrolRecord (ctx, next) { inspectionTime, points, alarm, - pointId: pointId + pointId: pointId, + projectId } , { transaction diff --git a/api/app/lib/models/patrol_record.js b/api/app/lib/models/patrol_record.js index a71d7ca..c13af6e 100644 --- a/api/app/lib/models/patrol_record.js +++ b/api/app/lib/models/patrol_record.js @@ -45,6 +45,11 @@ module.exports = dc => { type: DataTypes.INTEGER, allowNull: false, }, + projectId: { + field: "project_id", + type: DataTypes.INTEGER, + allowNull: true, + }, }, { tableName: "patrol_record", comment: "", diff --git a/script/1.0.5/schema/2.update_patrol_record.sql b/script/1.0.5/schema/2.update_patrol_record.sql new file mode 100644 index 0000000..dfe4b62 --- /dev/null +++ b/script/1.0.5/schema/2.update_patrol_record.sql @@ -0,0 +1,4 @@ +ALTER TABLE "public"."patrol_record" + ADD COLUMN "project_id" int4; + +COMMENT ON COLUMN "public"."patrol_record"."project_id" IS '结构物id'; \ No newline at end of file diff --git a/weapp/app.json b/weapp/app.json index c143865..8f0f3f8 100644 --- a/weapp/app.json +++ b/weapp/app.json @@ -16,7 +16,8 @@ "inspectionInput/inspectionInput", "troubleshooting/index", "troubleshooting/shootingForm/index", - "inspectionReport/inspectionReport" + "inspectionReport/inspectionReport", + "pointsStatus/pointsStatus" ] } ], diff --git a/weapp/images/circle.png b/weapp/images/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..108dbd44f0cc8b55dd8132ad82605275dc9d4861 GIT binary patch literal 293 zcmV+=0owkFP)Px#-$_J4R5(wqlRXXrQ51#G$(zh5%m##MB_tX;TcBhK_FyTLN?J=06^)7(u>ce^ z^2Qazh@Y64Jg<1oz2|%9-5(<1c!89(AlzlR`j*D`famMRndp+NKqPyOlQ;;lAUIgt zs{gEc0ptTcB+yE71#rG`R4vYV0181k1EiWPzC{HXZ5^u}xw~H8DeQS+K1Ot+3zzdO)-5x8jpAdeecxy<=eR1BA?#P?)EmCXUSA{u<*Pen9r rW8}hQkm3#)jdBbzTBeW9{9&Ch+oW=lMp{c)00000NkvXXu0mjfoBDRX literal 0 HcmV?d00001 diff --git a/weapp/images/refresh.svg b/weapp/images/refresh.svg new file mode 100644 index 0000000..55c4c77 --- /dev/null +++ b/weapp/images/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/weapp/package/inspectionInput/inspectionInput.js b/weapp/package/inspectionInput/inspectionInput.js index cdde9f2..fc22884 100644 --- a/weapp/package/inspectionInput/inspectionInput.js +++ b/weapp/package/inspectionInput/inspectionInput.js @@ -356,7 +356,8 @@ Page({ inspectContent, address: address }, - alarm + alarm, + projectId: dataList.project.id } wx.showLoading({ title: '提交中...' }); that.setData({ isCommitting: true }); diff --git a/weapp/package/pointsStatus/pointsStatus.js b/weapp/package/pointsStatus/pointsStatus.js new file mode 100644 index 0000000..358ec28 --- /dev/null +++ b/weapp/package/pointsStatus/pointsStatus.js @@ -0,0 +1,66 @@ +// package/pointsStatus/pointsStatus.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + console.log(options, 'options') + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/weapp/package/pointsStatus/pointsStatus.json b/weapp/package/pointsStatus/pointsStatus.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/weapp/package/pointsStatus/pointsStatus.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/weapp/package/pointsStatus/pointsStatus.wxml b/weapp/package/pointsStatus/pointsStatus.wxml new file mode 100644 index 0000000..c9f4651 --- /dev/null +++ b/weapp/package/pointsStatus/pointsStatus.wxml @@ -0,0 +1,2 @@ + +package/pointsStatus/pointsStatus.wxml diff --git a/weapp/package/pointsStatus/pointsStatus.wxss b/weapp/package/pointsStatus/pointsStatus.wxss new file mode 100644 index 0000000..6d831ae --- /dev/null +++ b/weapp/package/pointsStatus/pointsStatus.wxss @@ -0,0 +1 @@ +/* package/pointsStatus/pointsStatus.wxss */ \ No newline at end of file diff --git a/weapp/pages/index/index.js b/weapp/pages/index/index.js index 5d84a7a..0775da1 100644 --- a/weapp/pages/index/index.js +++ b/weapp/pages/index/index.js @@ -1,78 +1,81 @@ // pages/index/index.js -import { getProjectList } from "../../utils/getApiUrl"; +import { getProjectList, getPatrolRecord } from "../../utils/getApiUrl"; import { Request } from "../../common"; +const moment = require("../../utils/moment"); Page({ + /** * 页面的初始数据 */ data: { - dataList: [], - limit: 10, //条数 - page: 0, //当前页 - count: '', //总条数 - keyName: '', //结构物名称 - hidden: true, - imgUrl: getApp().globalData.imgUrl + project: [], + todayRecord: [], // 今日巡检记录 + markers: [], + isShowCallout: false, }, - // 输入框 - formInp(e) { - let that = this; - that.setData({ - keyName: e.detail.value + setMarkers(project, todayRecord) { + const markers = project.map(p => { + let todayCount = 0; + todayRecord.forEach(r => { + if (r.projectId === p.id) { todayCount += 1 } + }) + return { + id: p.id, + latitude: p.latitude, + longitude: p.longitude, + name: p.name, + iconPath: '/images/circle.png', + width: 15, + height: 15, + callout: { + content: `${p.name}\n今日巡检:${todayCount}次`, + padding: 10, + display: this.data.isShowCallout ? 'ALWAYS' : 'BYCLICK', + }, + } }) + this.setData({ markers }) }, - // 手机键盘点击完成按钮(回车事件) - bindconfirm() { - let that = this; - that.setData({ - page: 0, //当前页 - count: '', //总条数 - dataList: [] + // 获取结构物和今日巡检次数 + getData() { + const that = this; + wx.showLoading({ title: '加载中' }) + const promiseArr = []; + promiseArr.push(Request.get(getProjectList(), {})); + promiseArr.push(Request.get(getPatrolRecord('all', moment().format('YYYY-MM-DD') + ' 00:00:00', moment().format('YYYY-MM-DD') + ' 23:59:59', 'null', 'null'))); + Promise.all(promiseArr).then(res => { + wx.hideLoading() + that.setData({ + project: res[0].rows, + todayRecord: res[1] + }) + that.setMarkers(res[0].rows, res[1]); + // 缩放视野展示所有 markers + const mapCtx = wx.createMapContext('mapDom') + mapCtx.includePoints({ + points: res[0].rows, + padding: [40, 40, 40, 40] + }) }) - that.getProjectList(); }, - // 搜索表单 - goSearch() { - let that = this; - that.setData({ - page: 0, //当前页 - count: '', //总条数 - dataList: [] - }) - that.getProjectList(); + showCallout() { + this.setData( + { isShowCallout: !this.data.isShowCallout }, + () => { this.setMarkers(this.data.markers, this.data.todayRecord); } + ); }, - // 获取巡检总览列表 - getProjectList: function () { - let that = this; - let { page, limit, keyName } = that.data; - let data = keyName ? { limit, page, name: keyName } : { limit, page } - wx.showLoading({ - title: '加载中', - }) - Request.get(getProjectList(), data).then(res => { - if (res.rows.length == 0) { - that.setData({ - dataList: res.rows, - hidden: false - }) - wx.hideLoading() - return; - } - var arr1 = that.data.dataList; //从data获取当前dataList数组 - var arr2 = res.rows; //从此次请求返回的数据中获取新数组 - arr1 = arr1.concat(arr2); //合并数组 - that.setData({ - dataList: arr1, - count: res.count, //总条数 - hidden: true - }) - wx.hideLoading() - }) + onRefresh() { + this.getData(); + }, + + onMarkerTap(e) { + console.log(e.detail.markerId, 'e.detail.markerId') + wx.navigateTo({url: `/package/pointsStatus/pointsStatus?projectId=${e.detail.markerId}`}) }, /** @@ -104,7 +107,7 @@ Page({ url: '/pages/login/login' }); } else { - this.getProjectList(); + this.getData(); } }, @@ -112,60 +115,28 @@ Page({ * 生命周期函数--监听页面隐藏 */ onHide() { - this.setData({ - dataList: [], - keyName: '', - page: 0, //当前页 - count: '', //总条数 - }) + }, /** * 生命周期函数--监听页面卸载 */ onUnload() { - this.setData({ - dataList: [], - keyName: '', - page: 0, //当前页 - count: '', //总条数 - }) + }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { - let that = this; - that.setData({ - dataList: [], - keyName: '', - page: 0, //当前页 - count: '', //总条数 - }) - that.getProjectList() - // 手动控制回弹 - wx.stopPullDownRefresh(); + }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { - let _that = this; - let page = _that.data.page + 1; //获取当前页数并+1 - let { dataList, count } = _that.data; - if (dataList.length == count) { - wx.showToast({ - title: '没有更多数据了...', - icon: 'none', - }) - return; - } - _that.setData({ - page: page, //更新当前页数 - }) - _that.getProjectList() + }, /** diff --git a/weapp/pages/index/index.wxml b/weapp/pages/index/index.wxml index 5200184..347b757 100644 --- a/weapp/pages/index/index.wxml +++ b/weapp/pages/index/index.wxml @@ -1,32 +1,14 @@ - - - - - + + + 数据 + + - - - - - - 暂无图片 - - {{item.name}} - - 今日问题:12 - 未处理问题:12 - 已处理问题:12 - - - - - - - - - \ No newline at end of file + diff --git a/weapp/pages/index/index.wxss b/weapp/pages/index/index.wxss index df854bd..a84fb4a 100644 --- a/weapp/pages/index/index.wxss +++ b/weapp/pages/index/index.wxss @@ -1,70 +1,36 @@ /* pages/index/index.wxss */ -page { - background: #F7F7FA; +.flex-center { + display: flex; + justify-content: center; + align-items: center; } -.searchBoxs { - position: relative; - margin: 20rpx 0rpx; - height: 76rpx; +.map { + width: 100vw; + height: 100vh; } -.searchInps { - background-color: #fff; - width: 542rpx; - height: 76rpx; - border-radius: 8rpx; - padding-left: 32rpx; - padding-right: 144rpx; - border: 1px solid rgba(225, 225, 225, 0.44); - position: absolute; - top: -2rpx; - left: 16rpx; - font-size: 28rpx; +.action-box { + position: absolute; + bottom: 30px; + right: 10px; + width: 46px; + height: 80px; + display: flex; + flex-direction: column; + justify-content: space-evenly; } -.btnSearch { - width: 128rpx; - height: 68rpx; - line-height: 68rpx; - border-radius: 8rpx; - color: #fff; - font-size: 28rpx; - background: linear-gradient(180deg, #1979ff 0%, #1979ff 100%); - position: absolute; - top: 6rpx; - right: 28rpx; - z-index: 10; +.action-box .text { + background-color: white; + height: 30px; } -.searchFixed { - position: fixed; - top: 0; - width: 100%; - background-color: #fff; - box-shadow: 0rpx -4rpx 20rpx #c2c2c2; - z-index: 10; +.action-box .img { + background-color: white; } -.box { - padding: 20rpx; - box-shadow: 0rpx 10rpx 10rpx #ccc; - overflow: hidden; - line-height: 50rpx; - background: #fff; -} - -/* 暂无数据 */ -.noData { - width: 254rpx; - height: 298rpx; - display: block; - margin: 450rpx auto 16rpx; -} - -.noTxt { - font-size: 30rpx; - color: #999; - font-weight: bold; - text-align: center; +.action-box .img image { + width: 30px; + height: 30px; } \ No newline at end of file