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 0000000..108dbd4
Binary files /dev/null and b/weapp/images/circle.png differ
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 @@
-
-
-
-
-
+
\ 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