dylan 3 年之前
当前提交
1a6ab04ce5
共有 100 个文件被更改,包括 27712 次插入0 次删除
  1. 3 0
      .eslintignore
  2. 1 0
      .gitignore
  3. 50 0
      App.vue
  4. 0 0
      README.md
  5. 14 0
      api/demo.js
  6. 142 0
      api/mock/home.js
  7. 152 0
      api/mock/service.js
  8. 33 0
      api/user.js
  9. 28 0
      common/setting.js
  10. 77 0
      components/page-nav/page-nav.vue
  11. 153 0
      components/pick-regions/pick-regions.vue
  12. 0 0
      components/pick-regions/regions.json
  13. 72 0
      http/api.js
  14. 45 0
      http/config.js
  15. 18 0
      http/install.js
  16. 196 0
      js_sdk/mmmm-image-tools/index.js
  17. 11 0
      js_sdk/mmmm-image-tools/package.json
  18. 31 0
      main.js
  19. 118 0
      manifest.json
  20. 426 0
      pages.json
  21. 二进制
      pages/.DS_Store
  22. 467 0
      pages/check-order/admincheckorderlist.vue
  23. 448 0
      pages/check-order/checkorderlist.vue
  24. 369 0
      pages/check-order/mycheckorderlist.vue
  25. 297 0
      pages/check-order/orderprocesslist.vue
  26. 234 0
      pages/check-order/orderprocessrecord.vue
  27. 1756 0
      pages/check-order/orderprocessreport.vue
  28. 655 0
      pages/check-order/orderprocessreportdetail.vue
  29. 354 0
      pages/check-order/rtu/rtucheckorderlist.vue
  30. 375 0
      pages/check-order/todaycheckorderlist.vue
  31. 1076 0
      pages/checkReport/addCheckReport.vue
  32. 141 0
      pages/checkReport/checkAreaSelect.vue
  33. 138 0
      pages/checkReport/checkItemLabelSelect.vue
  34. 133 0
      pages/checkReport/checkItemSelect.vue
  35. 163 0
      pages/checkReport/checkProjectSelect.vue
  36. 129 0
      pages/checkReport/checkProjectSelectTab.vue
  37. 281 0
      pages/checkReport/checkReportList.vue
  38. 180 0
      pages/checkReport/checkReportListCache.vue
  39. 217 0
      pages/checkReport/checkReportListManage.vue
  40. 202 0
      pages/checkReport/checkStandardSelect.vue
  41. 95 0
      pages/checkReport/copyCheckFormConfirm.vue
  42. 1190 0
      pages/checkReport/editCacheCheckReport.vue
  43. 1137 0
      pages/checkReport/editCheckReport.vue
  44. 24 0
      pages/demo/crud.vue
  45. 36 0
      pages/demo/demo.config.js
  46. 74 0
      pages/demo/demo.vue
  47. 49 0
      pages/demo/mock.vue
  48. 48 0
      pages/demo/request.vue
  49. 42 0
      pages/demo/storage.vue
  50. 41 0
      pages/demo/vuex.vue
  51. 399 0
      pages/equipment-inspection/equipmentinspectionlist.vue
  52. 217 0
      pages/equipment-inspection/equipmentinspectionplanlist.vue
  53. 1808 0
      pages/equipment-inspection/equipmentinspectionreport.vue
  54. 651 0
      pages/equipment-inspection/equipmentinspectionreportdetail.vue
  55. 347 0
      pages/equipment-inspection/equipmentinspectionreportlist.vue
  56. 391 0
      pages/equipment-inspection/equipmentinspectionreportrtulist.vue
  57. 385 0
      pages/equipment-inspection/myequipmentinspectionlist.vue
  58. 267 0
      pages/equipment-inspection/myequipmentinspectionreportlist.vue
  59. 385 0
      pages/equipment-inspection/myequipmentinspectionreportrtulist.vue
  60. 235 0
      pages/equipment-inspection/todayequipmentinspectionreportlist.vue
  61. 688 0
      pages/home/adminhome.vue
  62. 22 0
      pages/home/building.vue
  63. 1206 0
      pages/home/home.vue
  64. 661 0
      pages/home/orgadminhome.vue
  65. 661 0
      pages/home/orgservicepersonhome.vue
  66. 319 0
      pages/login/login-account.vue
  67. 290 0
      pages/login/login-phone.vue
  68. 22 0
      pages/manage/building.vue
  69. 139 0
      pages/manage/manage.vue
  70. 330 0
      pages/news/detail.vue
  71. 260 0
      pages/news/list.vue
  72. 284 0
      pages/news/noticelist.vue
  73. 403 0
      pages/report-forms/adminreport.vue
  74. 228 0
      pages/report-forms/contact.vue
  75. 415 0
      pages/report-forms/report.vue
  76. 17 0
      pages/rtu-manage/data.js
  77. 494 0
      pages/rtu-manage/rtudata.vue
  78. 414 0
      pages/rtu-manage/rtugrounddata.vue
  79. 333 0
      pages/rtu-manage/rtugrounddatadetail.vue
  80. 489 0
      pages/rtu-manage/rtumanage.vue
  81. 404 0
      pages/rtu-manage/rturaindata.vue
  82. 404 0
      pages/rtu-manage/rturiverdata.vue
  83. 402 0
      pages/rtu-manage/rtursvrdata.vue
  84. 188 0
      pages/service/service.vue
  85. 22 0
      pages/system/setting.vue
  86. 146 0
      pages/user/about.vue
  87. 316 0
      pages/user/center.vue
  88. 22 0
      pages/user/font-setting.vue
  89. 208 0
      pages/user/modify-password.vue
  90. 270 0
      pages/user/profile.vue
  91. 273 0
      pages/warning/rtuwarninglist.vue
  92. 376 0
      pages/warning/warninginfodetail.vue
  93. 二进制
      static/.DS_Store
  94. 二进制
      static/images/.DS_Store
  95. 二进制
      static/images/home/.DS_Store
  96. 二进制
      static/images/home/banner.png
  97. 二进制
      static/images/home/date.png
  98. 二进制
      static/images/home/focus.png
  99. 二进制
      static/images/home/inspection.png
  100. 二进制
      static/images/home/message.png

+ 3 - 0
.eslintignore

@@ -0,0 +1,3 @@
+unpackage
+node_modules
+uview-ui

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+/

+ 50 - 0
App.vue

@@ -0,0 +1,50 @@
+<script>
+	export default {
+		onLaunch: function() {
+			try {
+				var loginTime = uni.getStorageSync("loginTime");
+				if (null != loginTime) {
+					var dt = new Date();
+					var time = dt.getTime();
+					var expires = this.userInfo.expires_in;
+					if ((time - loginTime) / 1000 > (expires - 60)) {					
+						uni.reLaunch({
+							url: "pages/login/login-account",
+							success: () => {
+								plus.navigator.closeSplashscreen();
+							}
+						})
+					} else {
+						plus.navigator.closeSplashscreen();
+					}
+				} else {
+					uni.reLaunch({
+						url: "pages/login/login-account",
+						success: () => {
+							plus.navigator.closeSplashscreen();
+						}
+					})
+				}
+			} catch (e) {
+				uni.reLaunch({
+					url: "pages/login/login-account",
+					success: () => {
+						plus.navigator.closeSplashscreen();
+					}
+				})
+			}
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+<style lang="scss">
+	/*uview全局样式*/
+	@import "uview-ui/index.scss";
+	/*app全局样式*/
+	@import 'static/style/app.scss';
+</style>

+ 0 - 0
README.md


+ 14 - 0
api/demo.js

@@ -0,0 +1,14 @@
+import http from '@/http/api.js'
+
+// 获取验证码
+const captcha = (data) => {
+	return http.request({
+		url: '/blade-auth/oauth/captcha',
+		method: 'GET',
+		data
+	})
+}
+
+export default {
+	captcha,
+}

+ 142 - 0
api/mock/home.js

@@ -0,0 +1,142 @@
+// 获取部门数据
+export function fakePosition() {
+	return new Promise((resolute, reject) => {
+		try {
+			const detail = {
+				position: "研发部",
+				positionArr: ['研发部', '产品部']
+			}
+			resolute(detail);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}
+
+// 获取公告数据
+export function fakeBannerList() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+				id: '1',
+				img: '/static/images/home/banner.png',
+				url: ''
+			}, {
+				id: '2',
+				img: '/static/images/home/banner.png',
+				url: ''
+			}, {
+				id: '3',
+				img: '/static/images/home/banner.png',
+				url: ''
+			}];
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}
+
+// 获取公告数据
+export function fakeNoticeList() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+				id: '1',
+				img: '/static/images/home/focus.png',
+				title: '神舟十二号载人发射任务取得圆满成功'
+			}, {
+				id: '2',
+				img: '/static/images/home/service.png',
+				title: '全国累计报告接种新冠疫苗超9亿剂次'
+			}];
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}
+
+// 获取顶部按钮数据
+export function fakeNavButton() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+					name: '实时数据',
+					img: '/static/images/home/n1.png',
+					url: '/pages/checkReport/checkProjectSelect?model=0'
+				},
+				{
+					name: '维修工单',
+					img: '/static/images/home/n2.png',
+					url: '/pages/checkOrder/checkOrderList'
+				},
+				{
+					name: '巡检管理',
+					img: '/static/images/home/n3.png',
+					url: '/pages/home/building'
+				},
+				{
+					name: '帮助文档',
+					img: '/static/images/home/n3.png',
+					url: '/pages/home/building'
+				}
+			];
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}
+
+// 获取服务按钮数据
+export function fakeServiceButton() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+					name: '人口登记',
+					img: '/static/images/home/s1.png',
+					url: ''
+				},
+				{
+					name: '工商年报',
+					img: '/static/images/home/s2.png',
+					url: ''
+				},
+				{
+					name: '税务登记',
+					img: '/static/images/home/s3.png',
+					url: ''
+				},
+				{
+					name: '健康码',
+					img: '/static/images/home/s4.png',
+					url: ''
+				},
+				{
+					name: '便民服务',
+					img: '/static/images/home/s5.png',
+					url: ''
+				},
+				{
+					name: '通办大厅',
+					img: '/static/images/home/s6.png',
+					url: ''
+				},
+				{
+					name: '智能问答',
+					img: '/static/images/home/s7.png',
+					url: ''
+				}
+			];
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}

+ 152 - 0
api/mock/service.js

@@ -0,0 +1,152 @@
+// 获取服务数据
+export function fakeSubscribeList() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+					img: '/static/images/service/s1.png',
+					name: '违章查询',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s2.png',
+					name: '限行信息',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s3.png',
+					name: '油价查询',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s4.png',
+					name: '消费记录',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s5.png',
+					name: '保养记录',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s6.png',
+					name: '油耗记录',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s7.png',
+					name: '周边查询',
+					url: ''
+				},
+				{
+					img: '/static/images/service/s8.png',
+					name: '教育咨询',
+					url: ''
+				}
+			];
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}
+
+export function fakeServiceList() {
+	return new Promise((resolute, reject) => {
+		try {
+			const list = [{
+					name: '交通出行',
+					list: [{
+							img: '/static/images/service/t1.png',
+							name: '地铁',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t2.png',
+							name: '公交',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t3.png',
+							name: '自驾',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t4.png',
+							name: '飞机',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t5.png',
+							name: '动车',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t6.png',
+							name: '火车',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t7.png',
+							name: '摩托车',
+							url: ''
+						},
+						{
+							img: '/static/images/service/t8.png',
+							name: '自行车',
+							url: ''
+						}
+					]
+				},
+				{
+					name: '社会保险',
+					list: [{
+							img: '/static/images/service/b1.png',
+							name: '人身保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b2.png',
+							name: '财产保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b3.png',
+							name: '火灾保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b4.png',
+							name: '运输保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b5.png',
+							name: '工程保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b6.png',
+							name: '盗窃保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b7.png',
+							name: '农业保险',
+							url: ''
+						},
+						{
+							img: '/static/images/service/b8.png',
+							name: '信用保险',
+							url: ''
+						}
+					]
+				},
+			]
+			resolute(list);
+		} catch (e) {
+			//模拟接口请求失败
+			reject(e);
+		}
+	})
+}

+ 33 - 0
api/user.js

@@ -0,0 +1,33 @@
+import http from '@/http/api.js'
+
+// 获取token
+const token = (tenantId, username, password, type) => {
+	return http.request({
+		url: '/galaxy-auth/oauth/token',
+		method: 'POST',
+		header: {
+			'Tenant-Id': tenantId
+		},
+		params: {
+			tenantId,
+			username,
+			password,
+			grant_type: "password",
+			scope: "all",
+			type
+		}
+	})
+}
+
+// 获取用户信息
+const userInfo = () => {
+	return http.request({
+		url: '/galaxy-user/info',
+		method: 'GET',
+	})
+}
+
+export default {
+	token,
+	userInfo
+}

+ 28 - 0
common/setting.js

@@ -0,0 +1,28 @@
+/**
+ * 全局变量配置
+ */
+module.exports = {
+	// 应用名
+	name: 'shzhjcyjptywxt',
+	// 应用logo,支持本地路径和网络路径
+	logo: '/static/images/logo.png',
+	// 版本号
+	version: '1.0.2',
+	// 开发环境接口Url
+	devUrl: 'http://localhost:40004',
+	// 线上环境接口Url
+	prodUrl: 'http://111.204.228.227:40004',
+	// 后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
+	contentType: 'application/json;charset=UTF-8',
+	// 后端返回状态码
+	codeName: 'code',
+	// 操作正常code
+	successCode: 200,
+	// 登录失效code
+	invalidCode: 401,
+	// 客户端ID
+	clientId: 'rider',
+	// 客户端密钥
+	clientSecret: 'rider_secret',
+	oss: 'http://111.204.228.227:19000/galaxy/',
+}

+ 77 - 0
components/page-nav/page-nav.vue

@@ -0,0 +1,77 @@
+<template>
+	<view class="nav-wrap">
+		<view class="nav-title">
+			<image class="logo" src="/static/images/logo.png" mode="widthFix"></image>
+			<view class="nav-info">
+				<view class="nav-title__text">
+					{{title}}
+				</view>
+			</view>
+		</view>
+		<view class="nav-desc">
+			{{desc}}
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			desc: String,
+			title: String,
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.nav-wrap {
+		margin-top: 15px;
+		padding: 15px;
+		position: relative;
+	}
+	
+	.lang {
+		position: absolute;
+		top: 15px;
+		right: 15px;
+	}
+	
+	.nav-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+	
+	.nav-info {
+		margin-left: 15px;
+	}
+	
+	.nav-title__text {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		color: $u-main-color;
+		font-size: 20px;
+		font-weight: bold;
+	}
+	
+	.logo {
+		width: 100px;
+		/* #ifndef APP-NVUE */
+		height: auto;
+		/* #endif */
+	}
+	
+	.nav-slogan {
+		color: $u-tips-color;
+		font-size: 14px;
+	}
+	
+	.nav-desc {
+		margin-top: 10px;
+		font-size: 14px;
+		color: $u-content-color;
+	}
+</style>

+ 153 - 0
components/pick-regions/pick-regions.vue

@@ -0,0 +1,153 @@
+<template>
+	<picker
+		mode="multiSelector"
+		:value="multiIndex"
+		:range="multiArray"
+		@change="handleValueChange"
+		@columnchange="handleColumnChange"
+	>
+		<slot></slot>
+	</picker>
+</template>
+
+<script>
+const CHINA_REGIONS = require('./regions.json');
+export default {
+	props: {
+		defaultRegions: {
+			type: Array,
+			default() {
+				return [];
+			}
+		},
+		defaultRegionCode: {
+			type: String
+		},
+		defaultRegion: [String, Array],
+		value: [String, Array]
+	},
+	data() {
+		return {
+			cityArr: CHINA_REGIONS[0].childs,
+			districtArr: CHINA_REGIONS[0].childs[0].childs,
+			multiIndex: [0, 0, 0],
+			isInitMultiArray: true
+		};
+	},
+	watch: {
+		defaultRegion: {
+			handler(region, oldRegion) {
+				if (Array.isArray(region)) {
+					// 避免传的是字面量的时候重复触发
+					oldRegion = oldRegion || [];
+					if (region.join('') !== oldRegion.join('')) {
+						this.handleDefaultRegion(region);
+					}
+				} else if (region && region.length == 6) {
+					this.handleDefaultRegion(region);
+				} else {
+					console.warn('defaultRegion非有效格式');
+				}
+			},
+			immediate: true
+		}
+	},
+	computed: {
+		multiArray() {
+			return this.pickedArr.map(arr => arr.map(item => item.name));
+		},
+		pickedArr() {
+			// 进行初始化
+			if (this.isInitMultiArray) {
+				return [
+					CHINA_REGIONS,
+					CHINA_REGIONS[0].childs,
+					CHINA_REGIONS[0].childs[0].childs
+				];
+			}
+			return [CHINA_REGIONS, this.cityArr, this.districtArr];
+		}
+	},
+	methods: {
+		handleColumnChange(e) {
+			// console.log(e);
+			this.isInitMultiArray = false;
+			const that = this;
+			let col = e.detail.column;
+			let row = e.detail.value;
+			that.multiIndex[col] = row;
+			try {
+				switch (col) {
+					case 0:
+						if (CHINA_REGIONS[that.multiIndex[0]].childs.length == 0) {
+							that.cityArr = that.districtArr = [
+								CHINA_REGIONS[that.multiIndex[0]]
+							];
+							break;
+						}
+						that.cityArr = CHINA_REGIONS[that.multiIndex[0]].childs;
+						that.districtArr =
+							CHINA_REGIONS[that.multiIndex[0]].childs[
+								that.multiIndex[1]
+							].childs;
+						break;
+					case 1:
+						that.districtArr =
+							CHINA_REGIONS[that.multiIndex[0]].childs[
+								that.multiIndex[1]
+							].childs;
+						break;
+					case 2:
+						break;
+				}
+			} catch (e) {
+				// console.log(e);
+				that.districtArr = CHINA_REGIONS[that.multiIndex[0]].childs[0].childs;
+			}
+		},
+		handleValueChange(e) {
+			// 结构赋值
+			let [index0, index1, index2] = e.detail.value;
+			let [arr0, arr1, arr2] = this.pickedArr;
+			let address = [arr0[index0], arr1[index1], arr2[index2]];
+			// console.log(address);
+			this.$emit('getRegion', address);
+			this.$emit(
+				'input',
+				`${address[0].name}${address[1].name}${address[2].name}`
+			);
+		},
+		handleDefaultRegion(region) {
+			const isCode = !Array.isArray(region);
+			this.isInitMultiArray = false;
+			let children = CHINA_REGIONS;
+			for (let i = 0; i < 3; i++) {
+				for (let j = 0; j < children.length; j++) {
+					let condition = isCode
+						? children[j].code == region.slice(0, (i + 1) * 2)
+						: children[j].name.includes(region[i]);
+					if (condition) {
+						// 匹配成功进行赋值
+						// console.log(i,j,children.length-1);
+						children = children[j].childs;
+						if (i == 0) {
+							this.cityArr = children;
+						} else if (i == 1) {
+							this.districtArr = children;
+						}
+						this.$set(this.multiIndex, i, j);
+						// console.log(this.multiIndex);
+						break;
+					} else {
+						// 首次匹配失败就用默认的初始化
+						// console.log(i,j,children.length-1);
+						if (i == 0 && j == children.length - 1) {
+							this.isInitMultiArray = true;
+						}
+					}
+				}
+			}
+		}
+	}
+};
+</script>

文件差异内容过多而无法显示
+ 0 - 0
components/pick-regions/regions.json


+ 72 - 0
http/api.js

@@ -0,0 +1,72 @@
+import {
+	clientId,
+	clientSecret
+} from '@/common/setting'
+import {
+	options
+} from '@/http/config.js';
+import {
+	Base64
+} from '@/utils/base64.js';
+import Request from '@/utils/luch-request/index.js';
+const http = new Request(options);
+http.interceptors.request.use((config) => { // 可使用async await 做异步操作
+	// 假设有token值需要在头部需要携带
+	let accessToken = uni.getStorageSync('accessToken');
+	if (accessToken) {
+		config.header['Blade-Auth'] = 'bearer ' + accessToken;
+	}
+	// 客户端认证参数
+	config.header['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
+
+	// 额外参数
+	// config.data = config.data || {};
+	// config.data.pf = uni.getSystemInfoSync().platform;
+	// config.data.sys = uni.getSystemInfoSync().system;
+
+	// 演示custom 用处
+	// if (config.custom.auth) {
+	//   config.header.token = 'token'
+	// }
+	// if (config.custom.loading) {
+	//  uni.showLoading()
+	// }
+	/**
+	 /* 演示
+	 if (!token) { // 如果token不存在,return Promise.reject(config) 会取消本次请求
+	    return Promise.reject(config)
+	  }
+	 **/
+	return config
+}, config => { // 可使用async await 做异步操作
+	return Promise.reject(config)
+})
+http.interceptors.response.use((response) => {
+	// 若有数据返回则通过
+	if (response.data.access_token || response.data.key) {
+		return response.data
+	}
+	// 服务端返回的状态码不等于200,则reject()
+	if (response.data.code !== 200) {
+
+		return Promise.reject(response);
+	}
+	return response.data;
+}, (response) => {
+
+	/*  对响应错误做点什么 (statusCode !== 200)*/
+	if (response.data.code == 401) {
+		uni.reLaunch({
+			url: '/pages/login/login-account'
+		})
+	} else {
+		uni.showToast({
+			title: response.data.msg,
+			icon: 'none'
+		});
+
+	}
+
+	return Promise.reject(response)
+})
+export default http;

+ 45 - 0
http/config.js

@@ -0,0 +1,45 @@
+import {
+	devUrl,
+	prodUrl,
+	contentType
+} from '@/common/setting'
+
+var options = {
+	baseURL: process.env.NODE_ENV === 'development' ? devUrl : prodUrl,
+	header: {
+		'Content-Type': contentType,
+		'Access-Control-Allow-Origin':'*',
+	},
+	method: 'POST',
+	dataType: 'json',
+	// #ifndef MP-ALIPAY || APP-PLUS
+	responseType: 'text',
+	// #endif
+	// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
+	custom: {}, // 全局自定义参数默认值
+	// #ifdef MP-ALIPAY || MP-WEIXIN
+	timeout: 30000,
+	// #endif
+	// #ifdef APP-PLUS
+	sslVerify: true,
+	// #endif
+	// #ifdef H5
+	// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
+	//withCredentials: false,
+	// #endif
+	// #ifdef APP-PLUS
+	firstIpv4: false, // DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
+	// #endif
+	// 局部优先级高于全局,返回当前请求的task,options。请勿在此处修改options。非必填
+	// getTask: (task, options) => {
+	// 相当于设置了请求超时时间500ms
+	//   setTimeout(() => {
+	//     task.abort()
+	//   }, 500)
+	// },
+	// 全局自定义验证器。参数为statusCode 且必存在,不用判断空情况。
+	// validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
+	// 	return statusCode >= 200 && statusCode < 300
+	// }
+};
+export { options };

+ 18 - 0
http/install.js

@@ -0,0 +1,18 @@
+// 获取api目录所有js文件
+const files = require.context('@/api', false, /\.js$/)
+// 此处第二个参数vm,就是我们在页面使用的this,可以通过vm获取vuex等操作
+const install = (Vue, vm) => {
+	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api下(因为vm就是this,也即this.$u.api)
+	// 自动将所有api挂载到vm.$u.api中
+	vm.$u.api = {}
+	files.keys().forEach(key => {
+		const api = files(key).default
+		for (let item in api) {
+			vm.$u.api[item] = api[item]
+		}
+	})
+}
+
+export default {
+	install
+}

+ 196 - 0
js_sdk/mmmm-image-tools/index.js

@@ -0,0 +1,196 @@
+function getLocalFilePath(path) {
+    if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {
+        return path
+    }
+    if (path.indexOf('file://') === 0) {
+        return path
+    }
+    if (path.indexOf('/storage/emulated/0/') === 0) {
+        return path
+    }
+    if (path.indexOf('/') === 0) {
+        var localFilePath = plus.io.convertAbsoluteFileSystem(path)
+        if (localFilePath !== path) {
+            return localFilePath
+        } else {
+            path = path.substr(1)
+        }
+    }
+    return '_www/' + path
+}
+
+function dataUrlToBase64(str) {
+    var array = str.split(',')
+    return array[array.length - 1]
+}
+
+var index = 0
+function getNewFileId() {
+    return Date.now() + String(index++)
+}
+
+function biggerThan(v1, v2) {
+    var v1Array = v1.split('.')
+    var v2Array = v2.split('.')
+    var update = false
+    for (var index = 0; index < v2Array.length; index++) {
+        var diff = v1Array[index] - v2Array[index]
+        if (diff !== 0) {
+            update = diff > 0
+            break
+        }
+    }
+    return update
+}
+
+export function pathToBase64(path) {
+    return new Promise(function(resolve, reject) {
+        if (typeof window === 'object' && 'document' in window) {
+            if (typeof FileReader === 'function') {
+                var xhr = new XMLHttpRequest()
+                xhr.open('GET', path, true)
+                xhr.responseType = 'blob'
+                xhr.onload = function() {
+                    if (this.status === 200) {
+                        let fileReader = new FileReader()
+                        fileReader.onload = function(e) {
+                            resolve(e.target.result)
+                        }
+                        fileReader.onerror = reject
+                        fileReader.readAsDataURL(this.response)
+                    }
+                }
+                xhr.onerror = reject
+                xhr.send()
+                return
+            }
+            var canvas = document.createElement('canvas')
+            var c2x = canvas.getContext('2d')
+            var img = new Image
+            img.onload = function() {
+                canvas.width = img.width
+                canvas.height = img.height
+                c2x.drawImage(img, 0, 0)
+                resolve(canvas.toDataURL())
+                canvas.height = canvas.width = 0
+            }
+            img.onerror = reject
+            img.src = path
+            return
+        }
+        if (typeof plus === 'object') {
+            plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
+                entry.file(function(file) {
+                    var fileReader = new plus.io.FileReader()
+                    fileReader.onload = function(data) {
+                        resolve(data.target.result)
+                    }
+                    fileReader.onerror = function(error) {
+                        reject(error)
+                    }
+                    fileReader.readAsDataURL(file)
+                }, function(error) {
+                    reject(error)
+                })
+            }, function(error) {
+                reject(error)
+            })
+            return
+        }
+        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+            wx.getFileSystemManager().readFile({
+                filePath: path,
+                encoding: 'base64',
+                success: function(res) {
+                    resolve('data:image/png;base64,' + res.data)
+                },
+                fail: function(error) {
+                    reject(error)
+                }
+            })
+            return
+        }
+        reject(new Error('not support'))
+    })
+}
+
+export function base64ToPath(base64) {
+    return new Promise(function(resolve, reject) {
+        if (typeof window === 'object' && 'document' in window) {
+            base64 = base64.split(',')
+            var type = base64[0].match(/:(.*?);/)[1]
+            var str = atob(base64[1])
+            var n = str.length
+            var array = new Uint8Array(n)
+            while (n--) {
+                array[n] = str.charCodeAt(n)
+            }
+            return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))
+        }
+        var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
+        if (extName) {
+            extName = extName[1]
+        } else {
+            reject(new Error('base64 error'))
+        }
+        var fileName = getNewFileId() + '.' + extName
+        if (typeof plus === 'object') {
+            var basePath = '_doc'
+            var dirPath = 'uniapp_temp'
+            var filePath = basePath + '/' + dirPath + '/' + fileName
+            if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
+                plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
+                    entry.getDirectory(dirPath, {
+                        create: true,
+                        exclusive: false,
+                    }, function(entry) {
+                        entry.getFile(fileName, {
+                            create: true,
+                            exclusive: false,
+                        }, function(entry) {
+                            entry.createWriter(function(writer) {
+                                writer.onwrite = function() {
+                                    resolve(filePath)
+                                }
+                                writer.onerror = reject
+                                writer.seek(0)
+                                writer.writeAsBinary(dataUrlToBase64(base64))
+                            }, reject)
+                        }, reject)
+                    }, reject)
+                }, reject)
+                return
+            }
+            var bitmap = new plus.nativeObj.Bitmap(fileName)
+            bitmap.loadBase64Data(base64, function() {
+                bitmap.save(filePath, {}, function() {
+                    bitmap.clear()
+                    resolve(filePath)
+                }, function(error) {
+                    bitmap.clear()
+                    reject(error)
+                })
+            }, function(error) {
+                bitmap.clear()
+                reject(error)
+            })
+            return
+        }
+        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+            var filePath = wx.env.USER_DATA_PATH + '/' + fileName
+            wx.getFileSystemManager().writeFile({
+                filePath: filePath,
+                data: dataUrlToBase64(base64),
+                encoding: 'base64',
+                success: function() {
+                    resolve(filePath)
+                },
+                fail: function(error) {
+                    reject(error)
+                }
+            })
+            return
+        }
+        reject(new Error('not support'))
+    })
+}

+ 11 - 0
js_sdk/mmmm-image-tools/package.json

@@ -0,0 +1,11 @@
+{
+    "id": "mmmm-image-tools",
+    "name": "image-tools",
+    "version": "1.4.0",
+    "description": "图像转换工具,可用于图像和base64的转换",
+    "keywords": [
+        "base64",
+        "保存",
+        "图像"
+    ]
+}

+ 31 - 0
main.js

@@ -0,0 +1,31 @@
+import Vue from 'vue'
+import App from './App'
+import store from '@/store';
+
+Vue.config.productionTip = false;
+
+App.mpType = 'app';
+
+// 引入全局uView
+import uView from 'uview-ui'
+Vue.use(uView);
+
+// 引入vuex
+const vuexStore = require("@/store/$u.mixin.js");
+Vue.mixin(vuexStore);
+
+// 创建对象
+const app = new Vue({
+	store,
+    ...App
+});
+
+// 接口集中管理
+import httpInstall from '@/http/install.js'
+Vue.use(httpInstall, app)
+
+// 公共函数
+import globalFunc from '@/utils/func.js'
+Vue.use(globalFunc, app);
+
+app.$mount()

+ 118 - 0
manifest.json

@@ -0,0 +1,118 @@
+{
+    "name" : "SHZHJCYJPTYWXTAPP",
+    "appid" : "__UNI__1ED82EA",
+    "description" : "",
+    "versionName" : "1.0.1",
+    "versionCode" : 101,
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "compatible" : {
+            "ignoreVersion" : true
+        },
+        "safearea" : {
+            "bottom" : {
+                "offset" : "none"
+            }
+        },
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : false,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {
+            "VideoPlayer" : {},
+            "Maps" : {}
+        },
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.USE_SIP\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "ad" : {},
+                "maps" : {
+                    "amap" : {
+                        "appkey_ios" : "2656439f05da583bdc52c71c0166ff86",
+                        "appkey_android" : "49a203cf65da9c928783ff36cdfeb878"
+                    }
+                }
+            },
+            "splashscreen" : {
+                "androidStyle" : "default"
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wxc256e348c4032ebd",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "h5" : {
+        "template" : "template.h5.html",
+        "router" : {
+            "mode" : "hash",
+            "base" : "/rider/"
+        },
+        "optimization" : {
+            "treeShaking" : {
+                "enable" : true
+            }
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "qqmap" : {
+                    "key" : "U7CBZ-D6LWX-OSJ4B-TJ5DU-WH746-7WBR4"
+                }
+            }
+        }
+    }
+}

+ 426 - 0
pages.json

@@ -0,0 +1,426 @@
+{
+
+	"easycom": {
+		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/home/home",
+			"style": {
+				"navigationBarTitleText": "首页",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/check-order/checkorderlist",
+			"style": {
+				"navigationBarTitleText": "维修工单管理",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/check-order/admincheckorderlist",
+			"style": {
+				"navigationBarTitleText": "维修工单管理",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		
+		},
+		{
+			"path": "pages/check-order/mycheckorderlist",
+			"style": {
+				"navigationBarTitleText": "我的工单",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/check-order/todaycheckorderlist",
+			"style": {
+				"navigationBarTitleText": "今日工单",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/check-order/rtu/rtucheckorderlist",
+			"style": {
+				"navigationBarTitleText": "测站工单",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/check-order/orderprocesslist",
+			"style": {
+				"navigationBarTitleText": "工单处理管理",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/check-order/orderprocessreport",
+			"style": {
+				"navigationBarTitleText": "工单填报",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/check-order/orderprocessrecord",
+			"style": {
+				"navigationBarTitleText": "工单填报记录",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/check-order/orderprocessreportdetail",
+			"style": {
+				"navigationBarTitleText": "工单填报详情",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/equipment-inspection/equipmentinspectionplanlist",
+			"style": {
+				"navigationBarTitleText": "巡检计划",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/equipmentinspectionlist",
+			"style": {
+				"navigationBarTitleText": "设备巡检任务",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/myequipmentinspectionlist",
+			"style": {
+				"navigationBarTitleText": "我的巡检任务",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+
+		{
+			"path": "pages/equipment-inspection/equipmentinspectionreport",
+			"style": {
+				"navigationBarTitleText": "设备巡检填报",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/equipmentinspectionreportdetail",
+			"style": {
+				"navigationBarTitleText": "设备巡检填报详情",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/equipmentinspectionreportlist",
+			"style": {
+				"navigationBarTitleText": "巡检填报历史信息",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/todayequipmentinspectionreportlist",
+			"style": {
+				"navigationBarTitleText": "今日巡检填报信息",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/equipment-inspection/myequipmentinspectionreportlist",
+			"style": {
+				"navigationBarTitleText": "我的巡检填报信息",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/rtu-manage/rtumanage",
+			"style": {
+				"navigationBarTitleText": "管理工作台",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/warning/rtuwarninglist",
+			"style": {
+				"navigationBarTitleText": "测站预警",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/warning/warninginfodetail",
+			"style": {
+				"navigationBarTitleText": "预警信息",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/rtu-manage/rtudata",
+			"style": {
+				"navigationBarTitleText": "测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/rtu-manage/rturaindata",
+			"style": {
+				"navigationBarTitleText": "降水测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/rtu-manage/rturiverdata",
+			"style": {
+				"navigationBarTitleText": "河道测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/rtu-manage/rtursvrdata",
+			"style": {
+				"navigationBarTitleText": "水库测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/rtu-manage/rtugrounddata",
+			"style": {
+				"navigationBarTitleText": "墒情测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		}, {
+			"path": "pages/rtu-manage/rtugrounddatadetail",
+			"style": {
+				"navigationBarTitleText": "墒情测站数据",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/report-forms/report",
+			"style": {
+				"navigationBarTitleText": "统计报表",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/report-forms/adminreport",
+			"style": {
+				"navigationBarTitleText": "统计报表",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/report-forms/contact",
+			"style": {
+				"navigationBarTitleText": "通讯录",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		
+		},
+		{
+			"path": "pages/home/building",
+			"style": {
+				"navigationBarTitleText": "开发中",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		// {
+		// 	"path": "pages/checkReport/editCacheCheckReport",
+		// 	"style": {
+		// 		"navigationBarTitleText": "本地缓存问题编辑",
+		// 		"enablePullDownRefresh": false,
+		// 		"navigationStyle": "custom"
+		// 	}
+
+		// },
+		// {
+		// 	"path": "pages/checkReport/checkReportListManage",
+		// 	"style": {
+		// 		"navigationBarTitleText": "问题检查管理",
+		// 		"enablePullDownRefresh": false,
+		// 		"navigationStyle": "custom"
+		// 	}
+
+		// },
+		{
+			"path": "pages/news/noticelist",
+			"style": {
+				"navigationBarTitleText": "公告列表",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/news/detail",
+			"style": {
+				"navigationBarTitleText": "公告详情",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+			"path": "pages/service/service",
+			"style": {
+				"navigationBarTitleText": "服务",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/manage/manage",
+			"style": {
+				"navigationBarTitleText": "管理",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/user/center",
+			"style": {
+				"navigationBarTitleText": "我的",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/user/profile",
+			"style": {
+				"navigationBarTitleText": "个人资料",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/user/about",
+			"style": {
+				"navigationBarTitleText": "关于",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/user/font-setting",
+			"style": {
+				"navigationBarTitleText": "字体设置",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/user/modify-password",
+			"style": {
+				"navigationBarTitleText": "修改密码",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/login/login-account",
+			"style": {
+				"navigationBarTitleText": "账号登录",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/system/setting",
+			"style": {
+				"navigationBarTitleText": "设置",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "",
+		"navigationBarBackgroundColor": "#fff",
+		"backgroundColor": "#F7F7F7"
+	},
+	"tabBar": {
+		"color": "#A6ABB5",
+		"selectedColor": "#0BB9C8",
+		"borderStyle": "white",
+		"backgroundColor": "#FFFFFF",
+		"list": [{
+				"pagePath": "pages/home/home",
+				"iconPath": "static/images/tabbar/home.png",
+				"selectedIconPath": "static/images/tabbar/home_selected.png",
+				"text": "首页"
+			},
+			// {
+			// 	"pagePath": "pages/checkReport/checkReportListManage",
+			// 	"iconPath": "static/images/tabbar/demo.png",
+			// 	"selectedIconPath": "static/images/tabbar/demo_selected.png",
+			// 	"text": "维修工单"
+			// }, 
+
+			{
+				"pagePath": "pages/rtu-manage/rtumanage",
+				"iconPath": "static/images/tabbar/workbench.png",
+				"selectedIconPath": "static/images/tabbar/workbench_selected.png",
+				"text": "管理工作台"
+			},
+			// {
+			// 	"pagePath": "pages/manage/building",
+			// 	"iconPath": "static/images/tabbar/manage.png",
+			// 	"selectedIconPath": "static/images/tabbar/manage_selected.png",
+			// 	"text": "巡检管理"
+			// }, 
+			{
+				"pagePath": "pages/user/center",
+				"iconPath": "static/images/tabbar/user.png",
+				"selectedIconPath": "static/images/tabbar/user_selected.png",
+				"text": "我的"
+			}
+		]
+	}
+}

二进制
pages/.DS_Store


+ 467 - 0
pages/check-order/admincheckorderlist.vue

@@ -0,0 +1,467 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uSection title="查询" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<view>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</view>
+			<uSection title="">
+				<uni-list>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<template v-slot:body>
+							<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+								<view style="display: flex;flex-direction: row;align-items: center;">
+									<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+										src="/static/images/logo_app.png" mode="widthFix">
+									</image>
+									<text style="margin-left: 5px;font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+									<text style="margin-left: 5px;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+								</view>
+								
+								<view v-if="item.orderClose == 1" style="display: flex;flex-direction: row;align-items: center; ">
+									<uIcons class="input-uni-icon" type="loop" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">工单状态:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color: coral;">已关闭</view>
+								</view>
+								<view v-else-if="item.orderConfirm == 1" style="display: flex;flex-direction: row;align-items: center; ">
+									<uIcons class="input-uni-icon" type="loop" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">工单状态:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color: coral;">处理中</view>
+								</view>
+								<view v-else style="display: flex;flex-direction: row;align-items: center; ">
+									<uIcons class="input-uni-icon" type="loop" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">工单状态:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color: coral;">等待接单</view>
+								</view>
+								
+								<view style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">报单时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.createTime}}
+									</view>
+								</view>
+								
+								<view v-if="item.orderConfirm == 1"
+									style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<view style="width: 35%;display: flex;flex-direction: row;align-items: center;">
+										<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+										<view style="margin-left: 5px;font-size: 0.8rem;color: gray;">
+											{{item.processorName}}
+										</view>
+									</view>
+									<view style="font-size: 0.8rem;">接单时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">
+										{{item.orderConfirmTime}}
+									</view>
+								</view>
+								
+								<view v-if="item.orderClose == 1"
+									style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<uIcons class="input-uni-icon" type="checkbox" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">关闭时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.updateTime}}
+									</view>
+								</view>
+
+							
+
+							<!-- 	<view v-if="item.orderClose == 0"
+									style="display:flex;flex-direction:row;align-items: center;">
+									<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+									</image>
+									<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.orderDesc}}</text>
+								</view> -->
+
+								<view
+									style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+									<view v-if="item.orderClose == 1 || item.orderConfirm == 1"
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightgreen"
+										@click="toDetailPage(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="info" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">查看详情</text>
+										</view>
+									</view>
+							<!-- 		<view v-else-if="item.orderConfirm == 1"
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toOrderReport(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="compose" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">工单填报</text>
+										</view>
+									</view> -->
+					<!-- 				<view v-else
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightpink"
+										@click="toOrderConfirm(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="location" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">接单确认</text>
+										</view>
+									</view> -->
+							</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uni-list>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb,
+			uSection,
+			uDataPicker
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				list: [],
+				title: '工单查询',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				orgId: '',
+				projectId: '',
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+
+			},
+			onnodeclick(node) {
+
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchVal = '';
+					this.pageCurrent = 1;
+					this.getOrderList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+
+			},
+			search(res) {
+				this.getOrderList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			blur(res) {},
+			focus(e) {},
+			cancel(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getOrderList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getOrderList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+				postData['rtuCode'] = this.searchVal;
+				postData['rtuName'] = this.searchVal;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toDetailPage(id) {
+				var url = '/pages/check-order/orderprocessrecord?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 448 - 0
pages/check-order/checkorderlist.vue

@@ -0,0 +1,448 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uSection title="查询" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<view>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</view>
+			<uSection title="">
+				<uni-list>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<template v-slot:body>
+							<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+								<view style="display: flex;flex-direction: row;align-items: center;">
+									<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+										src="/static/images/logo_app.png" mode="widthFix">
+									</image>
+									<text
+										style="margin-left: 5px;font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+									<text style="margin-left: 5px;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+								</view>
+								<view v-if="item.orderClose == 1"
+									style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<uIcons class="input-uni-icon" type="checkbox" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">关闭时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.updateTime}}
+									</view>
+								</view>
+								<view v-else-if="item.orderConfirm == 1"
+									style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<view style="width: 35%;display: flex;flex-direction: row;align-items: center;">
+										<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+										<view style="margin-left: 5px;font-size: 0.8rem;color: gray;">
+											{{item.processorName}}
+										</view>
+									</view>
+									<view style="font-size: 0.8rem;">接单时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">
+										{{item.orderConfirmTime}}
+									</view>
+								</view>
+								<view v-else
+									style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+									<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">报单时间:</view>
+									<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.createTime}}
+									</view>
+								</view>
+
+								<view v-if="item.orderClose == 0"
+									style="display:flex;flex-direction:row;align-items: center;">
+									<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+									</image>
+									<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.orderDesc}}</text>
+								</view>
+
+								<view
+									style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+									<view v-if="item.orderClose == 1"
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightgreen"
+										@click="toDetailPage(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="info" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">查看详情</text>
+										</view>
+									</view>
+									<view v-else-if="item.orderConfirm == 1"
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toOrderReport(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="compose" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">工单填报</text>
+										</view>
+									</view>
+									<view v-else
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightpink"
+										@click="toOrderConfirm(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="location" size="18" color="gray" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">接单确认</text>
+										</view>
+									</view>
+								</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uni-list>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb,
+			uSection,
+			uDataPicker
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				list: [],
+				title: '工单查询',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				orgId: '',
+				projectId: '',
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+
+			},
+			onnodeclick(node) {
+
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchVal = '';
+					this.pageCurrent = 1;
+					this.getOrderList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+
+			},
+			search(res) {
+				this.getOrderList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			blur(res) {},
+			focus(e) {},
+			cancel(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getOrderList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getOrderList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+				postData['rtuCode'] = this.searchVal;
+				postData['rtuName'] = this.searchVal;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toDetailPage(id) {
+				var url = '/pages/check-order/orderprocessrecord?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 369 - 0
pages/check-order/mycheckorderlist.vue

@@ -0,0 +1,369 @@
+<template>
+	<view class="wrap">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<!-- 	<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+									src="/static/images/logo_app.png" mode="widthFix">
+								</image>
+								<text style="margin-left: 5px;font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+								<text style="margin-left: 5px;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+							</view>
+							<view style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+								<view style="width: 40%;display: flex;flex-direction: row;align-items: center;">
+									<view style="font-size: 0.8rem;">状态:</view>
+									<view style="margin-left: 5px;font-size: 0.8rem;color: gray;">
+										{{item.orderStatusName}}</view>
+
+								</view>
+
+								<!-- 								<view style="margin-left:10px;width:100px;font-size: 0.7rem;color:gray;">
+									{{item.processorName}}
+								</view> -->
+								<view style="font-size: 0.8rem;">更新时间:</view>
+								<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.createTime}}</view>
+							</view>
+
+							<view style="display:flex;flex-direction:row;align-items: center;">
+								<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+								</image>
+								<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.orderDesc}}</text>
+							</view>
+
+							<view style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toWarningPage(item.warnId)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="info" size="18" color="coral" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">预警信息</text>
+									</view>
+								</view>
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toOrderReport(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="compose" size="18" color="coral" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">工单填报</text>
+									</view>
+								</view>
+
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toLocation(item)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="location" size="18" color="coral" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">导航</text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+		},
+		onLoad(option) {
+			this.getOrderList();
+		},
+		data() {
+			return {
+				list: [],
+				title: '我的工单',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+			},
+			getOrderList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/my/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+				}).then(res => {
+					if (res.data.records != null) {
+
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			toWarningPage(id) {
+				var url = '/pages/warning/warninginfodetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: add,
+					success() {
+
+					}
+				})
+			},
+			getTitle(checkNo) {
+				return "问题编号:" + checkNo;
+			},
+			swipeChange(e, index) {
+				console.log('返回:', e);
+				console.log('当前索引:', index);
+			},
+			swipeClick(e, index) {
+
+			},
+			locationToHandle(id) {
+				const that = this;
+				// uni.showModal({
+				// 	content: '确定删除记录?',
+				// 	showCancel: true,
+				// 	success(res) {
+				// 		if (res.confirm) {
+				// 			var ids = id;
+
+				// 			http.request({
+				// 				url: '/blade-business/report/failure/remove',
+				// 				method: 'POST',
+				// 				params: {
+				// 					ids
+				// 				}
+				// 			}).then(res => {
+				// 				console.log(JSON.stringify(res.data))
+				// 				if (res.success) {
+				// 					uni.showModal({
+				// 						content: '删除已成功',
+				// 						showCancel: false,
+				// 						success(res) {
+				// 							if (res.confirm) {
+				// 								that.loadList();
+				// 							}
+				// 						}
+				// 					});
+				// 				}
+				// 			}).catch(err => {
+				// 				console.log(err)
+				// 			})
+				// 		}
+				// 	}
+				// });
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 297 - 0
pages/check-order/orderprocesslist.vue

@@ -0,0 +1,297 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<!-- 	<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uSection title="工单信息" titleFontSize="0.8rem" type="line">
+				<view style="width: 100%;padding-left: 10px;padding-right: 10px;">
+					<view style="display: flex;flex-direction: row;align-items: center;">
+						<view style="font-size: 0.7rem;">报单时间:</view>
+						<view style="margin-left: 5px;font-size: 0.7rem;">{{orderInfo.createTime}}</view>
+					</view>
+					<view style="margin-top: 5px;display: flex;flex-direction: row;align-items: center;">
+						<view style="font-size: 0.7rem;">工单说明:</view>
+						<view style="margin-left: 5px;font-size: 0.7rem;">{{orderInfo.orderDesc}}</view>
+					</view>
+					<view style="margin-top: 10px;padding-left: 0px;padding-right: 0px;">
+						<button style="background-color: lightblue;"  type="default"
+							@click="toOrderProcessReport()">开始填报</button>
+					</view>
+				</view>
+			</uSection>
+			<uSection title="工单填报记录" titleFontSize="0.8rem" type="line">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id" showArrow="right" clickable
+						@click="toOrderProcessDetail(item.id)">
+						<!-- 自定义 body -->
+						<template v-slot:body>
+							<view style="width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="width: 100%;display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="info" size="18" color="coral" />
+									<text style="margin-left: 5px;font-size: 0.8rem;">{{item.processDesc}}
+									</text>
+								</view>
+								<view style="margin-top: 4px;display: flex;flex-direction: row;align-items: center;">
+									<view style="font-size: 0.7rem;color: olivedrab;">{{item.orderStatusName}}</view>
+									<view style="margin-left:10px;font-size: 0.7rem;color:black;">{{item.createTime}}
+									</view>
+								</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uList>
+				<uGroup>
+					<view class="uni-pagination-box">
+						<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+							@change="change" />
+					</view>
+				</uGroup>
+			</uSection>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+		},
+		onLoad(option) {
+			console.log(option.id);
+			this.orderId = option.id;
+
+			//this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+
+		},
+		data() {
+			return {
+				orderId: 0,
+				orderInfo: {
+					'id': 0,
+					'updateTime': '',
+					'orderDesc': ''
+				},
+				list: [],
+				title: '工单填报管理',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: "工单处理管理"
+			// });
+			this.getOrderInfo();
+			this.getOrderProcessList();
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+			},
+			getOrderInfo() {
+				var that = this;
+				var postData = {};
+				postData['id'] = this.orderId;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/detail',
+					method: 'GET',
+					data: postData
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.orderInfo = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			getOrderProcessList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var that = this;
+				var postData = {};
+				postData['id'] = this.orderId;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/process/page',
+					method: 'GET',
+					data: postData,
+					params: {
+						current,
+						size,
+						isSubmit
+					}
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toOrderProcessReport() {
+				var url = '/pages/check-order/orderprocessreport?orderId=' + this.orderId;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderProcessDetail(id) {
+				console.log("opne record ", id)
+				var url = '/pages/check-order/orderprocessreportdetail?processId=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 234 - 0
pages/check-order/orderprocessrecord.vue

@@ -0,0 +1,234 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uList>
+				<uni-list-item v-for="item in list" :key="item.id" showArrow="right" clickable
+					@click="toOrderProcessDetail(item.id)">
+					<template v-slot:body>
+						<view style="width: 100%;display: flex;flex-direction: column;">
+							<view style="width: 100%;display: flex;flex-direction: row;align-items: center;">
+								<uIcons class="input-uni-icon" type="info" size="18" color="coral" />
+								<text style="margin-left: 5px;font-size: 0.8rem;">{{item.processDesc}}
+								</text>
+							</view>
+							<view style="margin-top: 4px;display: flex;flex-direction: row;align-items: center;">
+								<view style="font-size: 0.7rem;color: olivedrab;">{{item.orderStatusName}}</view>
+								<view style="margin-left:10px;font-size: 0.7rem;color:black;">{{item.createTime}}
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uList>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+		},
+		onLoad(option) {
+			console.log(option.id);
+			this.orderId = option.id;
+		},
+		data() {
+			return {
+				orderId: 0,
+				list: [],
+				title: '工单填报记录',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			this.getOrderProcessList();
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderProcessList()
+			},
+			getOrderProcessList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var that = this;
+				var postData = {};
+				postData['id'] = this.orderId;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/process/page',
+					method: 'GET',
+					data: postData,
+					params: {
+						current,
+						size,
+						isSubmit
+					}
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toOrderProcessDetail(id) {
+				console.log("opne record ", id)
+				var url = '/pages/check-order/orderprocessreportdetail?processId=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 1756 - 0
pages/check-order/orderprocessreport.vue

@@ -0,0 +1,1756 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<uni-forms ref="baseForm">
+			<uSection title="维修总结情况" titleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item>
+						<uni-easyinput type="textarea" v-model="baseInfo.processDesc" placeholder="请输入总结说明" />
+					</uni-forms-item>
+				</uGroup>
+				<uGroup title="总体设施设备图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="baseInfo.photo1Take" class="note-image-item">
+										<view class="close-icon" @click="onBasePhoto1DeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(baseInfo.photo1Url)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getBasePhoto1()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+
+							</view>
+						</view>
+
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="baseInfo.photo2Take" class="note-image-item">
+										<view class="close-icon" @click="onBasePhoto2DeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(baseInfo.photo2Url)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getBasePhoto2()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+
+			<uSection title="RTU设备" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="是否更换RTU" label-width="130px" required>
+						<radio-group @change="onRtuReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in rtuInfo.replaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === rtuInfo.replaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onRtuStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in rtuInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === rtuInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="rtuInfo.remark" placeholder="请输入备注说明" />
+					</uni-forms-item>
+				</uGroup>
+				<uGroup title="RTU图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="rtuInfo.photoTake" class="note-image-item">
+										<view class="close-icon" @click="onRtuPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(rtuInfo.photoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getRtuPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+
+
+			<uSection title="雨量传感器" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="是否更换雨量计" label-width="130px" required>
+						<radio-group @change="onRainReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in rainSensorInfo.replaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === rainSensorInfo.replaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onRainSensorStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in rainSensorInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === rainSensorInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="rainSensorInfo.remark"
+							placeholder="请输入备注说明" />
+					</uni-forms-item>
+
+				</uGroup>
+				<uGroup title="雨量传感器图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="rainSensorInfo.photoTake" class="note-image-item">
+										<view class="close-icon" @click="onRainPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(rainSensorInfo.photoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getRainSensorPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+			<uSection title="水位传感器" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="是否更换水位计" label-width="130px" required>
+						<radio-group @change="onWaterReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in waterSensorInfo.replaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === waterSensorInfo.replaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onWaterSensorStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in waterSensorInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === waterSensorInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="waterSensorInfo.remark"
+							placeholder="请输入备注说明" />
+					</uni-forms-item>
+
+
+				</uGroup>
+
+				<uGroup title="水位传感器图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="waterSensorInfo.photoTake" class="note-image-item">
+										<view class="close-icon" @click="onWaterPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(waterSensorInfo.photoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getWaterSensorPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+
+			<uSection title="墒情传感器" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="是否更换墒情传感器" label-width="130px" required>
+						<radio-group @change="onGroundReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in groundSensorInfo.replaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id"
+										:checked="index === groundSensorInfo.replaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onGroundSensorStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in groundSensorInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === groundSensorInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="groundSensorInfo.remark"
+							placeholder="请输入备注说明" />
+					</uni-forms-item>
+				</uGroup>
+				<uGroup title="墒情传感器图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="groundSensorInfo.photoTake" class="note-image-item">
+										<view class="close-icon" @click="onGroundPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(groundSensorInfo.photoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getGroundSensorPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+
+			<uSection title="供电系统" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="是否更换蓄电池" label-width="130px" required>
+						<radio-group @change="onBatteryReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in powerInfo.batteryReplaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id"
+										:checked="index === powerInfo.batteryReplaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+
+					<uni-forms-item label="是否更换太阳能板" label-width="130px" required>
+						<radio-group @change="onSunPowerReplaceRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in powerInfo.sunPowerReplaceItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id"
+										:checked="index === powerInfo.sunPowerReplaceItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onPowerStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in powerInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === powerInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="powerInfo.remark" placeholder="请输入备注说明" />
+					</uni-forms-item>
+
+				</uGroup>
+				<uGroup title="供电系统图片" margin-top="20">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="powerInfo.batteryPhotoTake" class="note-image-item">
+										<view class="close-icon" @click="onBatteryPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(powerInfo.batteryPhotoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getBatteryPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+
+							</view>
+						</view>
+
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="powerInfo.sunPhotoTake" class="note-image-item">
+										<view class="close-icon" @click="onSunPowerPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(powerInfo.sunPhotoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getSunPowerPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+
+
+
+			<uSection title="4G移动网络" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+
+					<uni-forms-item label="是否欠费" label-width="130px" required>
+						<radio-group @change="onNetworkOverdueRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in networkInfo.overdueItems.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === networkInfo.overdueItems.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onNetworkStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in networkInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === networkInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="networkInfo.remark"
+							placeholder="请输入备注说明" />
+					</uni-forms-item>
+				</uGroup>
+			</uSection>
+
+
+
+			<uSection title="北斗通讯" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onSatelliteStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:60px" class="view-flex-rs"
+								v-for="(item, index) in satelliteInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === satelliteInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="satelliteInfo.remark"
+							placeholder="请输入备注说明" />
+					</uni-forms-item>
+				</uGroup>
+			</uSection>
+
+		</uni-forms>
+
+		<view class="footer">
+			<view class="control">
+				<view style="display: flex;flex-direction: row;justify-content: flex-start;">
+					<view
+						style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+						@click="toSave()">
+						<view style="display:flex;flex-direction: column;justify-content: center;">
+							<uIcons class="input-uni-icon" type="folder-add" size="18" color="#999" />
+						</view>
+						<view style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+							<text style="color:black;font-size:0.7rem">暂存</text>
+						</view>
+					</view>
+					<view
+						style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightpink"
+						@click="toSubmit()">
+						<view style="display:flex;flex-direction: column;justify-content: center;">
+							<uIcons class="input-uni-icon" type="upload" size="18" color="#999" />
+						</view>
+						<view style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+							<text style="color:black;font-size:0.7rem">立即提交</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		oss,
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uFormsItem from '@/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue'
+	import uFab from '@/uni_modules/uni-fab/components/uni-fab/uni-fab.vue'
+	export default {
+		components: {
+			uIcons,
+			uGroup,
+			uSection,
+			uFormsItem,
+			uFab
+		},
+		onLoad(options) {
+			this.orderId = options.orderId;
+
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			//初始化字典
+			//this.getReportDict();
+			//查询计划信息
+			//this.getPlanInfo();
+		},
+		data() {
+			return {
+				pattern: {
+					color: '#7A7E83',
+					backgroundColor: '#fff',
+					selectedColor: '#007AFF',
+					buttonColor: '#007AFF',
+					iconColor: '#fff'
+				},
+				content: [{
+						iconPath: '/static/images/user/c6.png',
+						selectedIconPath: '/static/images/user/c6.png',
+						text: '提交',
+						active: false
+					},
+					{
+						iconPath: '/static/images/user/c5.png',
+						selectedIconPath: '/static/images/user/c5.png',
+						text: '保存',
+						active: false
+					}
+				],
+				baseURL: '',
+				orderId: 0,
+				rtuCode: '',
+				planInfo: {},
+				waterLevelSensorType: {
+					items: [],
+					current: 0,
+				},
+				groundSensorType: {
+					items: [],
+					current: 0,
+				},
+				satelliteModel: {
+					items: [],
+					current: 0,
+				},
+				datagramIp: {
+					items: [{
+						'id': '0',
+						'checked': false,
+						'dictValue': '发往县'
+					}, {
+						'id': '1',
+						'checked': false,
+						'dictValue': '发往市'
+					}, {
+						'id': '2',
+						'checked': false,
+						'dictValue': '发往省'
+					}],
+					current: 0,
+				},
+				baseInfo: {
+					processDesc: '',
+					photo1Url: '',
+					photo1Take: false,
+					photo2Url: '',
+					photo2Take: false
+				},
+				rtuInfo: {
+					remark: '',
+					rtuReplace: 0,
+					photoUrl: '',
+					photoTake: false,
+					replaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				rainSensorInfo: {
+					rainSensorReplace: 0,
+					replaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				waterSensorInfo: {
+					waterSensorReplace: 0,
+					replaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				groundSensorInfo: {
+					groundSensorReplace: 0,
+					replaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				powerInfo: {
+					batteryReplace: 0,
+					batteryReplaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					sunPowerReplace: 0,
+					sunPowerReplaceItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '无'
+						}, {
+							'id': '1',
+							'dictValue': '更换'
+						}],
+						current: 0,
+					},
+					batteryPhotoUrl: '',
+					batteryPhotoTake: false,
+					sunPhotoUrl: '',
+					sunPhotoTake: false,
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+
+				},
+				networkInfo: {
+					overdueItems: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '欠费'
+						}],
+						current: 0,
+					},
+					networkOverdue: 0,
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				satelliteInfo: {
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				localImageList: [],
+				uploadImageList: [],
+				title: '工单填报',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toOss(path) {
+				return oss + path;
+			},
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			toSubmit() {
+				var formdata = {};
+				formdata['orderId'] = this.orderId;
+				formdata['processDesc'] = this.baseInfo.processDesc;
+
+				if (this.baseInfo.photo1Take) {
+					formdata['basePhoto1Take'] = 1;
+					formdata['basePhoto1Url'] = this.baseInfo.photo1Url;
+				} else {
+					formdata['basePhoto1Take'] = 0;
+				}
+
+				if (this.baseInfo.photo2Take) {
+					formdata['basePhoto2Take'] = 1;
+					formdata['basePhoto2Url'] = this.baseInfo.photo2Url;
+				} else {
+					formdata['basePhoto2Take'] = 0;
+				}
+				formdata['rtuStatus'] = this.rtuInfo.runStatus.current;
+				formdata['rtuReplace'] = this.rtuInfo.replaceItems.current;
+				formdata['rtuDesc'] = this.rtuInfo.remark;
+
+				if (this.rtuInfo.photoTake) {
+					formdata['rtuPhotoTake'] = 1;
+					formdata['rtuPhotoUrl'] = this.rtuInfo.photoUrl;
+				} else {
+					formdata['rtuPhotoTake'] = 0;
+				}
+				formdata['rainSensorReplace'] = this.rainSensorInfo.replaceItems.current;
+				formdata['rainSensorDesc'] = this.rainSensorInfo.remark;
+				formdata['rainSensorStatus'] = this.rainSensorInfo.runStatus.current;
+
+				if (this.rainSensorInfo.photoTake) {
+					formdata['rainSensorPhotoTake'] = 1;
+					formdata['rainSensorPhotoUrl'] = this.rainSensorInfo.photoUrl;
+				} else {
+					formdata['rainSensorPhotoTake'] = 0;
+				}
+				formdata['waterSensorReplace'] = this.waterSensorInfo.replaceItems.current;
+				formdata['waterSensorDesc'] = this.waterSensorInfo.remark;
+				formdata['waterLevelSensorStatus'] = this.waterSensorInfo.runStatus.current;
+
+				if (this.waterSensorInfo.photoTake) {
+					formdata['waterSensorPhotoTake'] = 1;
+					formdata['waterSensorPhotoUrl'] = this.waterSensorInfo.photoUrl;
+				} else {
+					formdata['waterSensorPhotoTake'] = 0;
+				}
+
+				formdata['groundWaterSensorStatus'] = this.groundSensorInfo.runStatus.current;
+
+				formdata['groundSensorReplace'] = this.groundSensorInfo.replaceItems.current;
+				formdata['groundSensorDesc'] = this.groundSensorInfo.remark;
+
+
+				if (this.groundSensorInfo.photoTake) {
+					formdata['groundSensorPhotoTake'] = 1;
+					formdata['groundSensorPhotoUrl'] = this.groundSensorInfo.photoUrl;
+				} else {
+					formdata['groundSensorPhotoTake'] = 0;
+				}
+
+
+
+				formdata['batteryReplace'] = this.powerInfo.batteryReplaceItems.current;
+
+				formdata['sunPowerReplace'] = this.powerInfo.sunPowerReplaceItems.current;
+				formdata['powerStatus'] = this.powerInfo.runStatus.current;
+				formdata['powerDesc'] = this.powerInfo.remark;
+
+				if (this.powerInfo.batteryPhotoTake) {
+					formdata['batteryPhotoTake'] = 1;
+					formdata['batteryPhotoUrl'] = this.powerInfo.batteryPhotoUrl;
+				} else {
+					formdata['batteryPhotoTake'] = 0;
+				}
+
+				if (this.powerInfo.sunPhotoTake) {
+					formdata['sunPhotoTake'] = 1;
+					formdata['sunPhotoUrl'] = this.powerInfo.sunPhotoUrl;
+				} else {
+					formdata['sunPhotoTake'] = 0;
+				}
+
+
+				formdata['networkOverdue'] = this.networkInfo.overdueItems.current;
+				formdata['networkStatus'] = this.networkInfo.runStatus.current;
+				formdata['networkDesc'] = this.networkInfo.remark;
+
+				formdata['satelliteStatus'] = this.satelliteInfo.runStatus.current;
+				formdata['satelliteDesc'] = this.satelliteInfo.remark;
+
+
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/process/save',
+					method: 'POST',
+					data: formdata
+				}).then(res => {
+					if (res.success) {
+
+						uni.showModal({
+							content: '工单填报信息已成功提交',
+							showCancel: false,
+							success(res) {
+								if (res.confirm) {
+									that.toBack();
+								}
+							}
+						});
+					} else {
+						uni.showModal({
+							content: '' + res.msg,
+							showCancel: false
+						});
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toSave() {
+
+			},
+			rtuReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			rainSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			waterSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			groundSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			batteryReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			sunPowerReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			simPayEndDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getReportDict() {
+
+				var that = this;
+				var waterLevelSensorTypeDictList = [];
+				//查询水位计
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=water_level_sensor_type',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							waterLevelSensorTypeDictList.push(dict);
+						}
+						that.waterLevelSensorType.items = waterLevelSensorTypeDictList;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+				var groundSensorTypeDictList = [];
+				//查询墒情传感器类型
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=ground_water_sensor_type',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							groundSensorTypeDictList.push(dict);
+						}
+						that.groundSensorType.items = groundSensorTypeDictList;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+				//查询北斗模式
+				var satelliteModelDictList = [];
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=satellite_model',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							satelliteModelDictList.push(dict);
+						}
+						that.satelliteModel.items = satelliteModelDictList;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getPlanInfo() {
+				var that = this;
+				var postData = {};
+				postData['id'] = this.planId;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/detail',
+					method: 'GET',
+					data: postData
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+
+						that.planInfo = res.data;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onBasePhoto1DeleteClick() {
+				this.baseInfo.photo1Take = false;
+			},
+			onBasePhoto2DeleteClick() {
+				this.baseInfo.photo2Take = false;
+			},
+			onRtuPhotoDeleteClick() {
+				this.rtuInfo.photoTake = false;
+			},
+			onRainPhotoDeleteClick() {
+				this.rainSensorInfo.photoTake = false;
+			},
+			onWaterPhotoDeleteClick() {
+				this.waterSensorInfo.photoTake = false;
+			},
+			onGroundPhotoDeleteClick() {
+				this.groundSensorInfo.photoTake = false;
+			},
+			onBatteryPhotoDeleteClick() {
+				this.powerInfo.batteryPhotoTake = false;
+			},
+			onSunPowerPhotoDeleteClick() {
+				this.powerInfo.sunPhotoTake = false;
+			},
+			onRtuReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.rtuInfo.replaceItems.items.length; i++) {
+					if (this.rtuInfo.replaceItems.items[i].id === evt.detail.value) {
+						this.rtuInfo.replaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onRainReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.rainSensorInfo.replaceItems.items.length; i++) {
+					if (this.rainSensorInfo.replaceItems.items[i].id === evt.detail.value) {
+						this.rainSensorInfo.replaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onWaterReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.waterSensorInfo.replaceItems.items.length; i++) {
+					if (this.waterSensorInfo.replaceItems.items[i].id === evt.detail.value) {
+						this.waterSensorInfo.replaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onGroundReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.groundSensorInfo.replaceItems.items.length; i++) {
+					if (this.groundSensorInfo.replaceItems.items[i].id === evt.detail.value) {
+						this.groundSensorInfo.replaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onBatteryReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.powerInfo.batteryReplaceItems.items.length; i++) {
+					if (this.powerInfo.batteryReplaceItems.items[i].id === evt.detail.value) {
+						this.powerInfo.batteryReplaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onSunPowerReplaceRadioChange: function(evt) {
+				for (let i = 0; i < this.powerInfo.sunPowerReplaceItems.items.length; i++) {
+					if (this.powerInfo.sunPowerReplaceItems.items[i].id === evt.detail.value) {
+						this.powerInfo.sunPowerReplaceItems.current = i;
+						break;
+					}
+				}
+			},
+			onNetworkOverdueRadioChange: function(evt) {
+				for (let i = 0; i < this.networkInfo.overdueItems.items.length; i++) {
+					if (this.networkInfo.overdueItems.items[i].id === evt.detail.value) {
+						this.networkInfo.overdueItems.current = i;
+						break;
+					}
+				}
+			},
+			onRtuStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.rtuInfo.runStatus.items.length; i++) {
+					if (this.rtuInfo.runStatus.items[i].id === evt.detail.value) {
+						this.rtuInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onRainSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.rainSensorInfo.runStatus.items.length; i++) {
+					if (this.rainSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.rainSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onWaterSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.waterSensorInfo.runStatus.items.length; i++) {
+					if (this.waterSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.waterSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onGroundSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.groundSensorInfo.runStatus.items.length; i++) {
+					if (this.groundSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.groundSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onPowerStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.powerInfo.runStatus.items.length; i++) {
+					if (this.powerInfo.runStatus.items[i].id === evt.detail.value) {
+						this.powerInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onNetworkStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.networkInfo.runStatus.items.length; i++) {
+					if (this.networkInfo.runStatus.items[i].id === evt.detail.value) {
+						this.networkInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onSatelliteStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.satelliteInfo.runStatus.items.length; i++) {
+					if (this.satelliteInfo.runStatus.items[i].id === evt.detail.value) {
+						this.satelliteInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			uploadPhotoCallback(path, photoIndex) {
+				if (photoIndex === 'basePhoto1') {
+					this.baseInfo.photo1Url = path;
+					this.baseInfo.photo1Take = true;
+				} else if (photoIndex === 'basePhoto2') {
+					this.baseInfo.photo2Url = path;
+					this.baseInfo.photo2Take = true;
+				} else if (photoIndex === 'rtu') {
+					this.rtuInfo.photoUrl = path;
+					this.rtuInfo.photoTake = true;
+				} else if (photoIndex === 'rain') {
+					this.rainSensorInfo.photoUrl = path;
+					this.rainSensorInfo.photoTake = true;
+				} else if (photoIndex === 'water') {
+					this.waterSensorInfo.photoUrl = path;
+					this.waterSensorInfo.photoTake = true;
+				} else if (photoIndex === 'ground') {
+					this.groundSensorInfo.photoUrl = path;
+					this.groundSensorInfo.photoTake = true;
+				} else if (photoIndex === 'battery') {
+					this.powerInfo.batteryPhotoUrl = path;
+					this.powerInfo.batteryPhotoTake = true;
+				} else if (photoIndex === 'sun') {
+					this.powerInfo.sunPhotoUrl = path;
+					this.powerInfo.sunPhotoTake = true;
+				}
+			},
+			uploadPhoto(imagePath, photoIndex) {
+				var that = this;
+				console.log("accessToken:" + uni.getStorageSync('accessToken'));
+				console.log("path " + imagePath);
+				uni.showLoading({
+					title: '上传中'
+				});
+				uni.uploadFile({
+					url: this.baseURL +
+						'/galaxy-resource/oss/endpoint/put-file-attach?Blade-Auth=' +
+						uni.getStorageSync('accessToken'),
+					fileType: 'image',
+					filePath: imagePath,
+					name: 'file',
+					success: (uploadFileRes) => {
+						uni.hideLoading()
+						if (uploadFileRes.statusCode == 200) {
+							let data = JSON.parse(uploadFileRes.data);
+							if (data.success) {
+								let path = data.data['name'];
+								console.log("paht " + path);
+								that.uploadPhotoCallback(path, photoIndex);
+							}
+						}
+
+					},
+					fail: (err) => {
+						uni.hideLoading()
+						console.log(err);
+						reject('err')
+					},
+					complete() {
+						uni.hideLoading()
+					}
+				});
+			},
+			getBasePhoto1() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'basePhoto1');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getBasePhoto2() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'basePhoto2');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getRtuPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'rtu');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getRainSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'rain');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getWaterSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'water');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getGroundSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'ground');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getBatteryPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'battery');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getSunPowerPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'sun');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			onSaveClick(e) {
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+					try {
+						var data = {};
+						data['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+						data['failureCheckPointDesc'] = this.failureCheckPointDesc;
+						data['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+						data['failureCheckNo'] = this.checkNo;
+						data['failureProjectId'] = this.projectInfo.projectId;
+						data['failureCheckArea'] = this.checkAreaDict.id;
+						data['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+						data['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+						data['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+						data['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+						data['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this.hiddenDangerRadio.current]
+							.id;
+						data['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio.current]
+							.id;
+						data['createTime'] = this.dateFormat(new Date());
+						data['createUserName'] = this.userInfo1.nick_name;
+
+						this.saveLocalFiles();
+
+						console.log("save " + data);
+						var list = uni.getStorageSync('check_report_storage_index');
+						if (list != null && list.length > 0) {
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						} else {
+							list = [];
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						}
+
+						var that = this;
+						uni.showModal({
+							title: '流程确认',
+							content: '请选择复制或继续检查',
+							cancelText: '复制检查单',
+							confirmText: '继续检查',
+							success: function(res) {
+								if (res.confirm) {
+									that.onContinunClick();
+								} else if (res.cancel) {
+									that.onCopyClick();
+								}
+							}
+						});
+
+						//uni.navigateBack();
+					} catch (e) {
+						console.log(e)
+						uni.showModal({
+							content: '保存失败!',
+							showCancel: false
+						});
+					}
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 70px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 1;
+		height: 100rpx;
+		padding: 20rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+		background-color: #ffffff;
+
+		.ipt {
+			width: 380rpx;
+			height: 77rpx;
+			background: #f7f7f7;
+			border-radius: 38px;
+			padding: 0 37rpx;
+			box-sizing: border-box;
+			margin-right: 20rpx;
+		}
+
+		.control {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.block {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				flex: 1;
+			}
+
+			.icon {
+				height: auto;
+			}
+
+			.c {
+				width: 41rpx;
+				margin-right: 10rpx;
+			}
+
+			.s {
+				width: 36rpx;
+			}
+
+			.t {
+				width: 31rpx;
+			}
+		}
+	}
+
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 0px;
+		width: 100px;
+		height: 100px;
+
+		.note-image-box {
+			margin-top: 0px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 100%;
+				height: 0;
+				padding-top: 100%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 98%;
+					height: 98%;
+
+				}
+
+
+			}
+		}
+	}
+
+	.input-body {
+		background-color: #fff;
+		padding: 10px;
+	}
+</style>

+ 655 - 0
pages/check-order/orderprocessreportdetail.vue

@@ -0,0 +1,655 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view v-if="reportInfo.orderStatusKey==orderStatusCreateKey">
+			<uSection title="工单说明" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.processDesc}}</text>
+				</uCard>
+			</uSection>
+			<uSection title="工单来源" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.orderFromText}}</text>
+				</uCard>
+			</uSection>
+		</view>
+		<view v-else-if="reportInfo.orderStatusKey==orderStatusConfirmKey">
+			<uSection title="工单说明" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.processDesc}}</text>
+				</uCard>
+			</uSection>
+			<uSection title="接单运维人员姓名" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.orderConfirmUserName}}</text>
+				</uCard>
+			</uSection>
+		</view>
+		<view v-else-if="reportInfo.orderStatusKey==orderStatusProcessKey">
+			<uSection title="工单说明" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.processDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.basePhoto1Take ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.basePhoto1Url)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">图片一</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+				<uCard v-if="reportInfo.basePhoto2Take" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.basePhoto2Url)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">图片二</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection title="RTU设备信息" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.rtuStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+
+				<uCard title="是否更换RTU" :is-shadow="false">
+					<text v-if="reportInfo.rtuReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rtuDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.rtuPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.rtuPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">RTU图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+
+			<!-- 			<uSection v-if="reportInfo.rainSensorActive ==1" title="雨量传感器" titleFontSize="0.8rem" type="line"> -->
+			<uSection title="雨量传感器" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.rainSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="是否更换雨量传感器" :is-shadow="false">
+					<text v-if="reportInfo.rainSensorReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rainSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.rainSensorPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.rainSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">雨量传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<!-- 			<uSection v-if="reportInfo.waterLevelSensorActive ==1" title="水位传感器" titleFontSize="0.8rem" type="line"> -->
+			<uSection title="水位传感器" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.waterLevelSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="是否更换水位传感器" :is-shadow="false">
+					<text v-if="reportInfo.waterSensorReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.waterSensorPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.waterSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">水位传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection title="墒情传感器" titleFontSize="0.8rem" type="line">
+				<!-- 	<uSection v-if="reportInfo.groundWaterSensorActive ==1" title="墒情传感器" titleFontSize="0.8rem" type="line"> -->
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.groundWaterSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="是否更换墒情传感器" :is-shadow="false">
+					<text v-if="reportInfo.groundSensorReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.groundSensorPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.groundSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">墒情传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection title="供电系统" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.powerStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="是否更换蓄电池" :is-shadow="false">
+					<text v-if="reportInfo.batteryReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+				<uCard title="是否更换太阳能板" :is-shadow="false">
+					<text v-if="reportInfo.sunPowerReplace==0" class="uni-body">否</text>
+					<text v-else class="uni-body">更换</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.powerDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.batteryPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.batteryPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">蓄电池图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+				<uCard v-if="reportInfo.sunPhotoTake" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.sunPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">太阳能板图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<!-- 			<uSection v-if="reportInfo.networkActive ==1" title="4G移动网络" titleFontSize="0.8rem" type="line"> -->
+			<uSection title="4G移动网络" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;">运行状态:</text>
+						<text v-if="reportInfo.networkStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="是否欠费" :is-shadow="false">
+					<text v-if="reportInfo.networkOverdue==0" class="uni-body">否</text>
+					<text v-else class="uni-body">欠费</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.networkDesc}}</text>
+				</uCard>
+			</uSection>
+			<!-- 			<uSection v-if="reportInfo.satelliteActive ==1" title="北斗通讯" titleFontSize="0.8rem" type="line"> -->
+			<uSection title="北斗通讯" titleFontSize="0.8rem" type="line">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.satelliteStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.satelliteDesc}}</text>
+				</uCard>
+			</uSection>
+		</view>
+		<view v-else>
+			<uSection title="工单说明" titleFontSize="0.8rem" type="line">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.processDesc}}</text>
+				</uCard>
+			</uSection>
+		</view>
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		oss,
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uCard from '@/uni_modules/uni-card/components/uni-card/uni-card.vue'
+	export default {
+		components: {
+			uNavBar,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uCard,
+		},
+		onLoad(options) {
+			this.processId = options.processId;
+			//this.rtuCode = options.rtuCode;
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			//初始化巡检填报字典
+			this.getReportDict();
+			//查询计划信息
+			//this.getPlanInfo();
+			//this.getReportInfo();
+		},
+		data() {
+			return {
+				baseURL: '',
+				reportId: 0,
+				orderStatusCreateKey: 0,
+				orderStatusConfirmKey: 0,
+				orderStatusProcessKey: 0,
+				orderStatusCloseKey: 0,
+				reportInfo: {
+					orderStatusKey: -1,
+					orderConfirmUserName: '',
+					orderFromText: '',
+					processDesc: '测试测试',
+					basePhoto1Url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					basePhoto1Take: true,
+					basePhoto2Url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					basePhoto2Take: true,
+
+					rtuStatus: 0,
+					rtuDesc: '测试测试',
+					rtuReplace: 1,
+					rtuPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					rtuPhotoTake: true,
+
+					rainSensorActive: 1,
+					rainSensorStatus: 0,
+					rainSensorDesc: '测试测试',
+					rainSensorReplace: 0,
+					rainSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					rainSensorPhotoTake: true,
+
+
+					waterSensorReplace: 0,
+					waterSensorDesc: '测试测试',
+					waterSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					waterSensorPhotoTake: true,
+					waterLevelSensorActive: 1,
+					waterLevelSensorStatus: 1,
+
+
+					groundSensorReplace: 0,
+					groundSensorDesc: '测试测试',
+					groundSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					groundSensorPhotoTake: true,
+					groundWaterSensorActive: 1,
+					groundWaterSensorStatus: 0,
+
+					batteryReplace: 0,
+					sunPowerReplace: 0,
+					batteryPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					batteryPhotoTake: true,
+					sunPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					sunPhotoTake: true,
+					powerDesc: '测试测试',
+					powerStatus: 0,
+
+					networkOverdue: 1,
+					networkDesc: '111',
+					networkStatus: 0,
+					networkActive: 1,
+
+					satelliteStatus: 0,
+					satelliteDesc: '测试测试',
+					satelliteActive: 0,
+				},
+				title: '工单填报详情',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toOss(path) {
+				return oss + path;
+			},
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getReportDict() {
+
+				var that = this;
+				//查询北斗模式
+
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=rtu_check_order_status',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data[i];
+							if (dict.dictKey === '1') {
+								that.orderStatusCreateKey = dict.id;
+							} else if (dict.dictKey === '2') {
+								that.orderStatusConfirmKey = dict.id;
+							} else if (dict.dictKey === '3') {
+								that.orderStatusProcessKey = dict.id;
+							} else if (dict.dictKey === '4') {
+								that.orderStatusCloseKey = dict.id;
+							}
+
+						}
+
+						that.getReportInfo();
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getReportInfo() {
+				var that = this;
+				var postData = {};
+				postData['id'] = this.processId;
+				console.log("processId ", this.processId);
+				http.request({
+					url: '/galaxy-test/rtu/check/order/process/detail',
+					method: 'GET',
+					data: postData
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.reportInfo = res.data;
+						//that.reportInfo.orderStatusKey=res.data.orderStatusKey;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 70px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 50rpx;
+	}
+
+	.uni-body {
+		font-size: 0.8rem;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 0px;
+		width: 100px;
+		height: 100px;
+
+		.note-image-box {
+			margin-top: 0px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 100%;
+				height: 0;
+				padding-top: 100%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 98%;
+					height: 98%;
+
+				}
+
+
+			}
+		}
+	}
+
+	.input-body {
+		background-color: #fff;
+		padding: 10px;
+	}
+</style>

+ 354 - 0
pages/check-order/rtu/rtucheckorderlist.vue

@@ -0,0 +1,354 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<template v-slot:body>
+						<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+									src="/static/images/logo_app.png" mode="widthFix">
+								</image>
+								<text style="margin-left: 5px;font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+								<text style="margin-left: 5px;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+							</view>
+							<view v-if="item.orderClose == 1"
+								style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+								<uIcons class="input-uni-icon" type="checkbox" size="18" color="skyblue" />
+								<view style="margin-left:5px;font-size: 0.8rem;">关闭时间:</view>
+								<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.updateTime}}
+								</view>
+							</view>
+							<view v-else-if="item.orderConfirm == 1"
+								style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+								<view style="width: 35%;display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+									<view style="margin-left: 5px;font-size: 0.8rem;color: gray;">
+										{{item.processorName}}
+									</view>
+								</view>
+								<view style="font-size: 0.8rem;">接单时间:</view>
+								<view style="margin-left:5px;font-size: 0.8rem;color:gray;">
+									{{item.orderConfirmTime}}
+								</view>
+							</view>
+							<view v-else
+								style="display: flex;flex-direction: row;align-items: center; min-height: 30px;">
+								<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+								<view style="margin-left:5px;font-size: 0.8rem;">报单时间:</view>
+								<view style="margin-left:5px;font-size: 0.8rem;color:gray;">{{item.createTime}}
+								</view>
+							</view>
+
+							<view v-if="item.orderClose == 0"
+								style="display:flex;flex-direction:row;align-items: center;">
+								<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+								</image>
+								<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.orderDesc}}</text>
+							</view>
+
+							<view style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+								<view v-if="item.orderClose == 1"
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightgreen"
+									@click="toDetailPage(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="info" size="18" color="gray" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">查看详情</text>
+									</view>
+								</view>
+								<view v-else-if="item.orderConfirm == 1"
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toOrderReport(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="compose" size="18" color="gray" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">工单填报</text>
+									</view>
+								</view>
+								<view v-else
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightpink"
+									@click="toOrderConfirm(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="location" size="18" color="gray" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">接单确认</text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb
+		},
+		onLoad(option) {
+			this.rtuCode = option.rtuCode;
+			this.getOrderList();
+		},
+		data() {
+			return {
+				rtuCode: '',
+				list: [],
+				title: '测站工单',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				this.pageCurrent = e.current;
+				this.getOrderList()
+			},
+			getOrderList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				let postData = {};
+				postData['rtuCode'] = this.rtuCode;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toDetailPage(id) {
+				var url = '/pages/check-order/orderprocessrecord?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 375 - 0
pages/check-order/todaycheckorderlist.vue

@@ -0,0 +1,375 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack">
+		</uni-nav-bar>
+		<!-- 	<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+							<view>
+								<text style="font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+								<text style="font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+							</view>
+							<view style="display: flex;flex-direction: row;min-height: 30px;">
+								<view style="font-size: 0.7rem;color: #18B566;">{{item.orderStatusName}}</view>
+								<view style="margin-left:10px;width:100px;font-size: 0.7rem;color:gray;">
+									{{item.processorName}}
+								</view>
+								<view style="margin-left:0px;font-size: 0.7rem;color:gray;">{{item.createTime}}</view>
+							</view>
+
+							<view style="margin-top: 0px;">
+								<text style="font-size: 0.7rem;">{{item.orderDesc}}</text>
+							</view>
+
+							<view style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toWarningPage(item.warnId)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="notification" size="18" color="#999" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.6rem">预警信息</text>
+									</view>
+								</view>
+								<view v-if="item.isConfirm ==1"
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toOrderReport(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="gear" size="18" color="#999" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.6rem">工单填报</text>
+									</view>
+								</view>
+								<view v-else
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toOrderConfirm(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="gear" size="18" color="#999" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.6rem">接单确认</text>
+									</view>
+								</view>
+
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toLocation(item)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="location" size="18" color="#999" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.6rem">导航</text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+		},
+		onLoad(option) {
+			this.getOrderList();
+		},
+		data() {
+			return {
+				list: [],
+				title: '今日工单',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+			},
+			getOrderList() {
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/today/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+				}).then(res => {
+					if (res.data.records != null) {
+
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			toWarningPage(id) {
+				var url = '/pages/warning/warninginfodetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				var postData = {};
+				postData['id'] = id;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/confirm',
+					method: 'POST',
+					data: postData
+				}).then(res => {
+					console.log(res)
+					if (res.success) {
+						this.getOrderList()
+						uni.showToast({
+							title: '工单确认操作已成功!',
+							icon: 'none'
+						})
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: add,
+					success() {
+
+					}
+				})
+			},
+			getTitle(checkNo) {
+				return "问题编号:" + checkNo;
+			},
+			swipeChange(e, index) {
+				console.log('返回:', e);
+				console.log('当前索引:', index);
+			},
+			swipeClick(e, index) {
+
+			},
+			locationToHandle(id) {
+				const that = this;
+				// uni.showModal({
+				// 	content: '确定删除记录?',
+				// 	showCancel: true,
+				// 	success(res) {
+				// 		if (res.confirm) {
+				// 			var ids = id;
+
+				// 			http.request({
+				// 				url: '/blade-business/report/failure/remove',
+				// 				method: 'POST',
+				// 				params: {
+				// 					ids
+				// 				}
+				// 			}).then(res => {
+				// 				console.log(JSON.stringify(res.data))
+				// 				if (res.success) {
+				// 					uni.showModal({
+				// 						content: '删除已成功',
+				// 						showCancel: false,
+				// 						success(res) {
+				// 							if (res.confirm) {
+				// 								that.loadList();
+				// 							}
+				// 						}
+				// 					});
+				// 				}
+				// 			}).catch(err => {
+				// 				console.log(err)
+				// 			})
+				// 		}
+				// 	}
+				// });
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 1076 - 0
pages/checkReport/addCheckReport.vue

@@ -0,0 +1,1076 @@
+<template>
+	<view >
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view>
+			<form @submit="formSubmit" @reset="formReset">
+				<!-- 项目信息项 -->
+				<view class="uni-form-item">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc">
+							<text class="required-star">*</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc item-title">
+							<text>当前项目:</text>
+						</view>
+						<view style="flex-grow: 0.9;" class="view-flex-cc">
+							<text>{{projectInfo.title}}</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc">
+							<button style="height: 80rpx;font-size: medium;" type="primary"
+								@click="goto('/pages/checkReport/checkProjectSelect?model=1')">重新选择</button>
+						</view>
+					</view>
+				</view>
+				<!-- 检查区域信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查区域</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckArea()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkAreaDict.dictValue" />
+					</view>
+					<!-- 				<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkAreaDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckArea()"></u-cell-item> -->
+				</view>
+				<!-- 检查点位文本信息项 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10rpx;">
+					<view class="line-body item-title">
+						具体位置
+					</view>
+					<view class="line-body">
+						<uni-easyinput errorMessage v-model="failureCheckPointDesc" placeholder="请输入内容"></uni-easyinput>
+					</view>
+				</view>
+				<!-- 安全隐患问题类型信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">安全问题隐患类型</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemType()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemTypeDict.dictValue" />
+					</view>
+
+					<!-- 	<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkItemTypeDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemType()"></u-cell-item> -->
+				</view>
+				<!-- 安全隐患问题标签信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查部位</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemLabel()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemLabelDict.dictValue" />
+					</view>
+					<!-- <u-cell-item class="line-body" icon="setting-fill"  v-bind:title="checkItemLabelDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemLabel()"></u-cell-item> -->
+				</view>
+
+
+				<!-- 安全隐患问题排查标准信息项,字典 -->
+				<view class="uni-form-item  uni-column" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">问题隐患标签</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckStandard()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkStandardDict.dictValue" />
+					</view>
+
+
+					<!-- <u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkStandardDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckStandard()"></u-cell-item> -->
+				</view>
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						法律法规
+					</view>
+					<view class="line-body">
+						<textarea disabled v-model="checkItemStandardBasisDict.dictValue" class="mline-text" />
+
+						<!-- <uni-easyinput disabled v-model="checkItemStandardBasisDict.dictValue"></uni-easyinput> -->
+					</view>
+				</view>
+
+				<!-- 	安全隐患问题描述信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						安全问题隐患描述
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureHiddenDangerDesc" name="failureCorrectiveSuggest"
+							class="mline-text" />
+
+					</view>
+				</view>
+
+				<!-- 隐患等级信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">隐患等级</text></view>
+						<view class="line-body">
+							<radio-group @change="hiddenDangerRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px;margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in hiddenDangerRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === hiddenDangerRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 整改建议信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						整改建议
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureCorrectiveSuggest" name="failureCorrectiveSuggest"
+							class="mline-text" />
+					</view>
+				</view>
+				<!-- 整改期限信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">整改期限</text></view>
+						<view class="line-body">
+							<radio-group @change="planTimeRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px;margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in planTimeRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === planTimeRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 图片信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc" style="height: 40px;">
+							<text class="item-title">安全隐患问题图片</text>
+						</view>
+					</view>
+				</view>
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="img-container">
+						<view class="note-image-box">
+							<view class="note-image-item" v-for="(item , index) in localImageList" :key="index">
+								<view class="close-icon" @click="onDeleteClick(index)">
+									<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+								</view>
+								<view class="image-box">
+									<image :src="item" mode="widthFix"></image>
+								</view>
+							</view>
+							<view v-if="localImageList.length < 9" class="note-image-item" @click="getPhoto()">
+								<view class="image-box">
+									<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+				<view class="uni-form-item uni-column">
+					<view class="line-body">
+						<button type="primary" form-type="submit">提交</button>
+					</view>
+					<view class="line-body" style="margin-top: 10px;">
+						<button type="default" @click="onSaveClick">保存</button>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+			</form>
+		</view>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			this.userInfo1 = uni.getStorageSync("userInfo");
+			this.checkNo = this.getCheckNo();
+			this.initProjectInfo(option.id);
+
+			//查询隐患等级
+			var dangerLevelList = [];
+			http.request({
+				url: '/galaxy-system/dict-biz/dictionary?code=danger_level',
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						dangerLevelList.push(dict);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+			this.hiddenDangerRadio.items = dangerLevelList;
+			//查询整改期限
+			var planTimeList = [];
+			http.request({
+				url: '/galaxy-system/dict-biz/dictionary?code=plan_time',
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						planTimeList.push(dict);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+			this.planTimeRadio.items = planTimeList;
+		},
+		data() {
+			return {
+				baseURL: '',
+				userInfo1: {},
+				checkNo: '',
+				planTimeRadio: {
+					items: [],
+					current: 0,
+				},
+				hiddenDangerRadio: {
+					items: [],
+					current: 0,
+				},
+				localImageList: [],
+				uploadImageList: [],
+				checkAreaDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemTypeDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemLabelDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkStandardDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemStandardBasisDict: {
+					id: '',
+					dictKey: '',
+					dictValue: ''
+				},
+				title: '开始检查',
+				desc: '',
+				projectInfo: {
+					'projectId': '',
+					'title': ''
+				},
+				failureHiddenDangerDesc: '',
+				failureCheckPointDesc: '',
+				failureCorrectiveSuggest: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+
+			//项目选择结果监听  
+			uni.$on("handClickProjectSelect", res => {
+				console.log(res);
+				this.projectInfo = {
+					projectId: res.projectId,
+					title: res.title
+				}
+				// 清除监听
+				uni.$off('handClickProjectSelect');
+			})
+
+			//检查区域选择结果监听  
+			uni.$on("handClickAreaSelect", res => {
+				console.log(res);
+
+				this.checkAreaDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickAreaSelect');
+			})
+
+			//安全隐患问题分类选择结果监听  
+			uni.$on("handClickItemSelect", res => {
+				console.log("callback " + res);
+
+
+				if (this.checkItemTypeDict.id == null || this.checkItemTypeDict.id.length == 0 || this
+					.checkItemTypeDict.id !== res.id) {
+					this.checkItemLabelDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+
+
+				this.checkItemTypeDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickItemSelect');
+			})
+
+			//安全隐患标签选择结果监听  
+			uni.$on("handClickItemLabelSelect", res => {
+				console.log("handClickItemLabelSelect" + res);
+
+				if (this.checkItemLabelDict.id == null || this.checkItemLabelDict.id.length == 0 || this
+					.checkItemLabelDict.id !== res.id) {
+
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+
+				this.checkItemLabelDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				// 清除监听
+				uni.$off('handClickItemLabelSelect');
+			})
+
+			//安全隐患排查标准选择结果监听
+			uni.$on("handClickStandardSelect", res => {
+				console.log(res);
+
+				if (this.checkStandardDict.id == null || this.checkStandardDict.id.length == 0 || this
+					.checkStandardDict.id !== res.id) {
+
+					this.failureHiddenDangerDesc = "";
+
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+
+				this.checkStandardDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				this.failureHiddenDangerDesc = res.dictValue;
+
+				this.checkItemStandardBasisDict = {
+					dictValue: res.subDict.dictValue,
+					dictKey: res.subDict.dictKey,
+					id: res.subDict.id
+				}
+				// 清除监听
+				uni.$off('handClickStandardSelect');
+			})
+		},
+		created() {
+
+		},
+		methods: {
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getCheckNo() {
+				var dt = new Date();
+				var recordNo = "" + dt.getFullYear();
+				recordNo = recordNo.substr(2, 2);
+				recordNo += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				recordNo += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				recordNo += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				recordNo += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				recordNo += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return recordNo;
+			},
+			initProjectInfo(failureProjectId) {
+				const that = this;
+				const id = failureProjectId;
+				http.request({
+					url: '/blade-business/report/projectInfo/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					that.projectInfo = {
+						projectId: res.data.id,
+						title: res.data.projectName
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onDeleteClick(index) {
+				this.localImageList.splice(index, 1);
+			},
+			planTimeRadioChange: function(evt) {
+				for (let i = 0; i < this.planTimeRadio.items.length; i++) {
+					if (this.planTimeRadio.items[i].id === evt.detail.value) {
+						this.planTimeRadio.current = i;
+						break;
+					}
+				}
+			},
+			hiddenDangerRadioChange: function(evt) {
+				for (let i = 0; i < this.hiddenDangerRadio.items.length; i++) {
+					if (this.hiddenDangerRadio.items[i].id === evt.detail.value) {
+						this.hiddenDangerRadio.current = i;
+						break;
+					}
+				}
+			},
+			getPhoto() {
+				const that = this;
+				if (this.localImageList.length > 9) {
+					uni.showModal({
+						content: '一次最多上传9张图片,请检查!',
+						showCancel: false
+					});
+				} else {
+					uni.chooseImage({
+						sourceType: ['album', 'camera'],
+						success: (res) => {
+							const len = res.tempFilePaths.length;
+							if (len > 0) {
+								if (len + that.localImageList.length > 9) {
+									uni.showModal({
+										content: '一次最多上传9张图片,请检查!',
+										showCancel: false
+									});
+								} else {
+									let pathList = [];
+									res.tempFilePaths.forEach(path => {
+										pathList.push(path);
+									})
+									that.localImageList = that.localImageList.concat(pathList);
+								}
+							}
+						}
+					})
+				}
+			},
+			onSaveClick(e) {
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+					try {
+						var data = {};
+						data['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+						data['failureCheckPointDesc'] = this.failureCheckPointDesc;
+						data['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+						data['failureCheckNo'] = this.checkNo;
+						data['failureProjectId'] = this.projectInfo.projectId;
+						data['failureCheckArea'] = this.checkAreaDict.id;
+						data['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+						data['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+						data['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+						data['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+						data['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this.hiddenDangerRadio.current]
+							.id;
+						data['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio.current]
+							.id;
+						data['createTime'] = this.dateFormat(new Date());
+						data['createUserName'] = this.userInfo1.nick_name;
+
+						this.saveLocalFiles();
+
+						console.log("save " + data);
+						var list = uni.getStorageSync('check_report_storage_index');
+						if (list != null && list.length > 0) {
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						} else {
+							list = [];
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						}
+
+						var that = this;
+						uni.showModal({
+							title: '流程确认',
+							content: '请选择复制或继续检查',
+							cancelText: '复制检查单',
+							confirmText: '继续检查',
+							success: function(res) {
+								if (res.confirm) {
+									that.onContinunClick();
+								} else if (res.cancel) {
+									that.onCopyClick();
+								}
+							}
+						});
+
+						//uni.navigateBack();
+					} catch (e) {
+						console.log(e)
+						uni.showModal({
+							content: '保存失败!',
+							showCancel: false
+						});
+					}
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+			},
+			saveLocalFile(paths) {
+				var returnFileList = [];
+				var count = 0;
+				return new Promise((resolve, reject) => {
+					paths.forEach(imagePath => {
+						console.log("path " + imagePath);
+						uni.saveFile({
+							tempFilePath: imagePath,
+							success: (res) => {
+								var savedFilePath = res.savedFilePath;
+								returnFileList.push(savedFilePath);
+								count += 1;
+								if (count == paths.length) {
+									resolve(returnFileList);
+								}
+							},
+							fail: (e) => {
+								reject('err')
+							}
+						})
+					});
+
+				})
+
+			},
+			onCopyClick() {
+				this.localImageList = [];
+				this.checkNo = this.getCheckNo();
+			
+			},
+			onContinunClick() {
+				uni.navigateBack();
+			},
+			async saveLocalFiles() {
+				if (this.localImageList.length > 0) {
+					await this.saveLocalFile(this.localImageList).then(files => {
+						uni.setStorageSync('check_report_storage_image_' + this
+							.checkNo, files);
+					});
+				}
+			},
+			async upload(formdata) {
+				if (this.localImageList.length > 0) {
+					await this.uploadFile(this.localImageList).then(names => {
+						names.forEach(name => {
+							console.log("image path " + name);
+							this.uploadImageList.push(name);
+						})
+
+						var photoPaths = [];
+						this.uploadImageList.forEach(name => {
+							let p = {
+								failureCheckNo: this.checkNo,
+								photoPath: name
+							}
+							photoPaths.push(p);
+						})
+
+						formdata['photoPaths'] = photoPaths;
+
+						var that = this;
+						http.request({
+							url: '/blade-business/report/failure/save',
+							method: 'POST',
+							data: formdata
+						}).then(res => {
+							if (res.success) {
+								uni.showModal({
+									content: '上传成功',
+									showCancel: false,
+									success(res) {
+										if (res.confirm) {
+
+											uni.showModal({
+												title: '流程确认',
+												content: '请选择复制或继续检查',
+												cancelText: '复制检查单',
+												confirmText: '继续检查',
+												confirmColor: '#000000',
+												success: function(res) {
+													if (res.confirm) {
+														that.onContinunClick();
+													} else if (res.cancel) {
+														that.onCopyClick();
+													}
+												}
+											});
+
+											// uni.redirectTo({
+											// 	url: 'pages/checkReport/copyCheckFormConfirm'
+											// });
+											//uni.navigateBack();
+										}
+									}
+								});
+							} else {
+								uni.showModal({
+									content: '' + res.msg,
+									showCancel: false
+								});
+							}
+						}).catch(err => {
+							console.log(err)
+						})
+
+					})
+				} else {
+					var that = this;
+					http.request({
+						url: '/blade-business/report/failure/save',
+						method: 'POST',
+						data: formdata
+					}).then(res => {
+						if (res.success) {
+
+							uni.showModal({
+								content: '上传成功',
+								showCancel: false,
+								success(res) {
+									if (res.confirm) {
+										uni.showModal({
+											title: '流程确认',
+											content: '请选择复制或继续检查',
+											cancelText: '复制检查单',
+											confirmText: '继续检查',
+											confirmColor: '#000000',
+											success: function(res) {
+												if (res.confirm) {
+													that.onContinunClick();
+												} else if (res.cancel) {
+													that.onCopyClick();
+												}
+											}
+										});
+
+										//uni.navigateBack();
+									}
+								}
+							});
+						} else {
+							uni.showModal({
+								content: '' + res.msg,
+								showCancel: false
+							});
+						}
+					}).catch(err => {
+						console.log(err)
+					})
+				}
+			},
+			uploadFile(imagePaths) {
+				var count = 0;
+				var returnImagePathList = [];
+				console.log("accessToken:" + uni.getStorageSync('accessToken'));
+				return new Promise((resolve, reject) => {
+					imagePaths.forEach(imagePath => {
+						console.log("path " + imagePath);
+						uni.showLoading({
+							title: '上传中'
+						});
+						uni.uploadFile({
+							url: this.baseURL +
+								'/galaxy-resource/oss/endpoint/put-file-attach?Blade-Auth=' +
+								uni.getStorageSync('accessToken'),
+							fileType: 'image',
+							filePath: imagePath,
+							name: 'file',
+							success: (uploadFileRes) => {
+								console.log(uploadFileRes);
+								if (uploadFileRes.statusCode == 200) {
+									let data = JSON.parse(uploadFileRes.data);
+									if (data.success) {
+										let name = data.data['name'];
+										returnImagePathList.push(name);
+									}
+								}
+								count += 1;
+								if (count == imagePaths.length) {
+									resolve(returnImagePathList);
+								}
+							},
+							fail: (err) => {
+								console.log(err);
+								reject('err')
+							},
+							complete() {
+								uni.hideLoading()
+							}
+						});
+					});
+				})
+			},
+			formSubmit: function(e) {
+				console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))
+				//var formdata = e.detail.value
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+
+					var formdata = {};
+					formdata['failureCheckNo'] = this.checkNo;
+					formdata['failureProjectId'] = this.projectInfo.projectId;
+					formdata['failureCheckArea'] = this.checkAreaDict.id;
+
+					formdata['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+					formdata['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+					formdata['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+					formdata['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+
+					formdata['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+					formdata['failureCheckPointDesc'] = this.failureCheckPointDesc;
+					formdata['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+
+					formdata['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this.hiddenDangerRadio.current]
+						.id;
+					formdata['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio.current]
+						.id;
+
+					this.upload(formdata);
+
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+			selectCheckArea() {
+				uni.navigateTo({
+					url: '/pages/checkReport/checkAreaSelect'
+				})
+			},
+			selectCheckItemType() {
+				uni.navigateTo({
+					url: '/pages/checkReport/checkItemSelect'
+				})
+			},
+			selectCheckItemLabel() {
+				if (this.checkItemTypeDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkItemLabelSelect?id=' + this.checkItemTypeDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题类型',
+						showCancel: false
+					});
+				}
+			},
+			selectCheckStandard() {
+				if (this.checkItemLabelDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkStandardSelect?id=' + this.checkItemLabelDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题标签',
+						showCancel: false
+					});
+				}
+			},
+			openPage(path) {
+				this.$u.route({
+					url: path
+				})
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			},
+			goto(url) {
+				console.log(url);
+
+				uni.navigateTo({
+					url: url
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 100px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 20px;
+
+		.note-image-box {
+			margin-top: 5px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 33.3%;
+				height: 0;
+				padding-top: 33.3%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 95%;
+					height: 95%;
+
+				}
+
+
+			}
+		}
+	}
+</style>

+ 141 - 0
pages/checkReport/checkAreaSelect.vue

@@ -0,0 +1,141 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in dictList" :key="index">
+					<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view  @click="selectItem(item)">
+							<text>{{item.dictValue}}</text>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+
+		<!-- 	<view class="list-wrap"> -->
+		<!-- 	<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="item.groupName" v-for="(item, index) in dictList"
+				:key="index"> -->
+		<!-- 			<u-cell-item :titleStyle="{fontWeight: 500}" @click="selectItem(item1)" :title="item1.dictValue"
+				v-for="(item1, index1) in dictList" :key="index1">
+				<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+			</u-cell-item> -->
+		<!-- </u-cell-group> -->
+		<!-- 	</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+
+			//let dictList = [];
+			// dictList['groupName'] = '列表信息';
+			var list = [];
+
+			http.request({
+				url: '/galaxy-system/dict-biz/list?parentId=1513484347324018689',
+				//url: '/galaxy-system/dict-biz/child-list?parentId=1511974496622145537',
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						console.log("d " + dict.toString());
+						list.push(dict);
+						// "dictKey": "rqaq",
+						// "dictValue": "燃气安全",
+						// "hasChildren": false,
+						// "id": "1511918319641100290",
+						// "parentId": "1511974496622145537",
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+			//dictList['list'] = list;
+			this.dictList = list;
+
+		},
+		data() {
+			return {
+				dictList: [],
+				title: '选择检查区域',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			selectItem(dict) {
+				uni.$emit("handClickAreaSelect", {
+					id: dict['id'],
+					dictKey: dict['dictKey'],
+					dictValue: dict['dictValue']
+				});
+				uni.navigateBack();
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+		.slot-box {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+		}
+	
+		.slot-image {
+			/* #ifndef APP-NVUE */
+			display: block;
+			/* #endif */
+			margin-right: 10px;
+			width: 30px;
+			height: 30px;
+		}
+	
+		.slot-text {
+			flex: 1;
+			font-size: 14px;
+			color: #4cd964;
+			margin-right: 10px;
+		}
+</style>

+ 138 - 0
pages/checkReport/checkItemLabelSelect.vue

@@ -0,0 +1,138 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in dictList" :key="index">
+					<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view @click="selectItem(item)">
+							<text>{{item.dictValue}}</text>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+
+		<!-- 		<view class="list-wrap">
+			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="item.groupName"
+				v-for="(item, index) in dictList" :key="index">
+				<u-cell-item :titleStyle="{fontWeight: 500}" @click="selectItem(item1)"
+					:title="item1.dictValue" v-for="(item1, index1) in item.list" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+
+			let dictId = option.id;
+
+			// let dictList = {};
+			// dictList['groupName'] = '列表信息';
+			var list = [];
+
+			http.request({
+				url: '/galaxy-system/dict-biz/list?parentId=' + dictId,
+				//url: '/galaxy-system/dict-biz/child-list?parentId=' + dictId,
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						list.push(dict);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+			// dictList['list'] = list;
+			this.dictList = list;
+
+
+		},
+		data() {
+			return {
+				dictList: [],
+				title: '选择检查部位',
+				desc: ''
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			selectItem(dict) {
+				uni.$emit("handClickItemLabelSelect", {
+					id: dict['id'],
+					dictKey: dict['dictKey'],
+					dictValue: dict['dictValue']
+				});
+				uni.navigateBack();
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+		.slot-box {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+		}
+	
+		.slot-image {
+			/* #ifndef APP-NVUE */
+			display: block;
+			/* #endif */
+			margin-right: 10px;
+			width: 30px;
+			height: 30px;
+		}
+	
+		.slot-text {
+			flex: 1;
+			font-size: 14px;
+			color: #4cd964;
+			margin-right: 10px;
+		}
+</style>

+ 133 - 0
pages/checkReport/checkItemSelect.vue

@@ -0,0 +1,133 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in dictList" :key="index">
+					<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view @click="selectItem(item)">
+							<text>{{item.dictValue}}</text>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+<!-- 		<view class="list-wrap">
+			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="item.groupName" v-for="(item, index) in dictList"
+				:key="index">
+				<u-cell-item :titleStyle="{fontWeight: 500}" @click="selectItem(item1)" :title="item1.dictValue"
+					v-for="(item1, index1) in item.list" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+	
+			//let dictList = {};
+			// dictList['groupName'] = '列表信息';
+			 var list = [];
+
+			http.request({
+				//url: '/galaxy-system/dict-biz/child-list?parentId='+dictId,
+				url: '/galaxy-system/dict-biz/list?parentId=1511974496622145537',
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						list.push(dict);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+			// dictList['list'] = list;
+			this.dictList = list;
+		},
+		data() {
+			return {
+				dictList: [],
+				title: '选择安全问题隐患类型',
+				desc: ''
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			selectItem(dict) {
+				uni.$emit("handClickItemSelect", {
+					id: dict['id'],
+					dictKey: dict['dictKey'],
+					dictValue: dict['dictValue']
+				});
+				uni.navigateBack();
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+		.slot-box {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+		}
+	
+		.slot-image {
+			/* #ifndef APP-NVUE */
+			display: block;
+			/* #endif */
+			margin-right: 10px;
+			width: 30px;
+			height: 30px;
+		}
+	
+		.slot-text {
+			flex: 1;
+			font-size: 14px;
+			color: #4cd964;
+			margin-right: 10px;
+		}
+</style>

+ 163 - 0
pages/checkReport/checkProjectSelect.vue

@@ -0,0 +1,163 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item @click="openPage(item)" :clickable="true" :showArrow="isNext" :title="getFieldTitle(item)"
+					v-for="(item, index) in projectList" :key="index" :thumb="getIcon('cell')" thumb-size="sm">
+					<!-- 				<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view @click="openPage(item)">
+							<text>{{getFieldTitle(item)}}</text>
+						</view>
+					</template>
+					<template v-slot:footer>
+						<uni-icons type="right" size="20" style="color: #969799;"></uni-icons>
+					</template> -->
+				</uni-list-item>
+			</uni-list>
+		</view>
+
+		<!-- 		<view class="list-wrap">
+			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="getGroupTitle(item)"
+				v-for="(item, index) in projectList" :key="index">
+				<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item1)" :title="getFieldTitle(item1)"
+					v-for="(item1, index1) in item.list" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			const current = 1;
+			const size = 1000;
+			// let projectList = {};
+			// projectList['groupName'] = '项目列表';
+			var list = [];
+			http.request({
+				url: '/blade-business/report/projectInfo/listByUserId',
+				method: 'GET',
+				params: {
+					current,
+					size
+				}
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null && res.data.length > 0) {
+					for (let i in res.data) {
+						var projectInfo = {
+							id: res.data[i].id,
+							title: '' + res.data[i].projectName
+						};
+						list.push(projectInfo);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+			//projectList['list'] = list;
+			this.projectList = list;
+			this.model = option.model;
+			if (this.model == '0') {
+				this.isNext = true;
+			} else {
+				this.isNext = false;
+			}
+			console.log(option.model)
+		},
+		data() {
+			return {
+				projectList: [],
+				title: '选择项目',
+				desc: '',
+				model: '0',
+				isNext: true,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: "选择项目"
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			openPage(item) {
+				if (this.model == '0') {
+					uni.navigateTo({
+						url: '/pages/checkReport/addCheckReport' + '?id=' + item.id
+					})
+				} else {
+					uni.$emit("handClickProjectSelect", {
+						projectId: item.id,
+						title: item.title
+					});
+					uni.navigateBack();
+				}
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+</style>

+ 129 - 0
pages/checkReport/checkProjectSelectTab.vue

@@ -0,0 +1,129 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<!-- <view class="list-wrap"> -->
+			<!-- <u-cell-group title-bg-color="rgb(243, 244, 246)" :title="getGroupTitle(item)" -->
+		<!-- 		v-for="(item, index) in projectList" :key="index"> -->
+	<!-- 			<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item1)" :title="getFieldTitle(item1)"
+					v-for="(item1, index1) in projectList" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+				</u-cell-item> -->
+			<!-- </u-cell-group> -->
+	<!-- 	</view> -->
+		
+		<view class="container">
+			<uni-list>
+				<uni-list-item @click="openPage(item)" :clickable="true" showArrow :title="getFieldTitle(item)"
+					v-for="(item, index) in projectList" :key="index" :thumb="getIcon('cell')" thumb-size="sm">
+					<!-- 				<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view @click="openPage(item)">
+							<text>{{getFieldTitle(item)}}</text>
+						</view>
+					</template>
+					<template v-slot:footer>
+						<uni-icons type="right" size="20" style="color: #969799;"></uni-icons>
+					</template> -->
+				</uni-list-item>
+			</uni-list>
+		</view>
+		
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			const current = 1;
+			const size = 1000;
+			// let projectList = {};
+			// projectList['groupName'] = '项目列表';
+			var list = [];
+
+			http.request({
+				url: '/blade-business/report/projectInfo/listByUserId',
+				method: 'GET',
+				params: {
+					current,
+					size
+				}
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null && res.data.length > 0) {
+					for (let i in res.data) {
+						var projectInfo = {
+							id: res.data[i].id,
+							title: '' + res.data[i].projectName
+						};
+						list.push(projectInfo);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+		//	projectList['list'] = list;
+			this.projectList = list;
+
+		},
+		data() {
+			return {
+				projectList: [],
+				title: '开始检查',
+				desc: '',
+				model: '0'
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: "开始检查"
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			openPage(item) {
+				const basePath = '/pages/checkReport/addCheckReport';
+				const path = basePath + '?id=' + item.id;
+				this.$u.route({
+					url: path
+				})
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+</style>

+ 281 - 0
pages/checkReport/checkReportList.vue

@@ -0,0 +1,281 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in list" :key="index">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<!-- 		<uni-swipe-action ref="swipeAction">
+							<uni-swipe-action-item :right-options="options" 
+								@change="swipeChange($event, index)" @click="swipeClick($event, index)">
+								<view class="content-box"> -->
+						<view style="height: 200px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+								<view style="font-size: 18px;font-weight: bold;width: 88%;">问题编号:{{item.failureCheckNo}}
+								</view>
+								<view style="width: 10%;" @click="delRecord(item.id)">
+									<uni-icons type="trash" size="30"></uni-icons>
+								</view>
+							</view>
+							<view>
+								<text
+									style="margin-right: 10px;font-weight: bolder;">检查点位:</text><text>{{item.failureCheckPointDesc}}</text>
+							</view>
+							<view>
+								<text style="margin-right: 10px;font-weight: bolder;">问题描述:</text>
+								<view style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+									{{item.failureHiddenDangerDesc}}
+								</view>
+							</view>
+							<view style="display: flex;flex-direction: row;min-height: 30px;">
+								<view style="width: 200px;">{{item.createTime}}</view>
+								<view style="color: #18B566;">{{item.checkUserName}}</view>
+							</view>
+							<view style="margin-top: 5px;padding-left: 0px;padding-right: 0px;">
+								<button type="default" @click="openPage(item.id)">编辑</button>
+							</view>
+						</view>
+						<!-- 							</view>
+							</uni-swipe-action-item>
+						</uni-swipe-action> -->
+
+
+					</template>
+				</uni-list-item>
+
+			</uni-list>
+		</view>
+		<!-- 		<view class="list-wrap">
+			<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item.id)" :title="getTitle(item.failureCheckNo)"
+				v-for="(item, index) in list" :key="index" >
+				<view>fff</view>
+			</u-cell-item>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			this.loadList();
+		},
+		data() {
+			return {
+				list: [],
+				title: '问题列表管理',
+				desc: '',
+				options: [{
+						text: '置顶'
+					},
+					{
+						text: '删除',
+						style: {
+							backgroundColor: 'rgb(255,58,49)'
+						}
+					}
+				],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			loadList() {
+				const current = 1;
+				const size = 1000;
+				const isSubmit = '0';
+
+				var reportList = [];
+				http.request({
+					url: '/blade-business/report/failure/queryPage',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					}
+				}).then(res => {
+					if (res.data.records != null) {
+						const listSize = res.data.records['length'];
+						for (var i = 0; i < listSize; i++) {
+							let report = res.data.records['' + i];
+							reportList.push(report);
+						}
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+				this.list = reportList;
+			},
+			openPage(id) {
+				this.$u.route({
+					url: '/pages/checkReport/editCheckReport?id=' + id
+				})
+			},
+			getTitle(checkNo) {
+				return "问题编号:" + checkNo;
+			},
+			swipeChange(e, index) {
+				console.log('返回:', e);
+				console.log('当前索引:', index);
+			},
+			swipeClick(e, index) {
+
+			},
+			delRecord(id) {
+				const that = this;
+				uni.showModal({
+					content: '确定删除记录?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var ids = id;
+
+							http.request({
+								url: '/blade-business/report/failure/remove',
+								method: 'POST',
+								params: {
+									ids
+								}
+							}).then(res => {
+								console.log(JSON.stringify(res.data))
+								if (res.success) {
+									uni.showModal({
+										content: '删除已成功',
+										showCancel: false,
+										success(res) {
+											if (res.confirm) {
+												that.loadList();
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 180 - 0
pages/checkReport/checkReportListCache.vue

@@ -0,0 +1,180 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in list" :key="index">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<view style="height: 200px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+								<view style="font-size: 18px;font-weight: bold;width: 88%;">问题编号:{{item.failureCheckNo}}
+								</view>
+								<view style="width: 10%;" @click="delRecord(item.failureCheckNo)">
+									<uni-icons type="trash" size="30"></uni-icons>
+								</view>
+							</view>
+							<view>
+								<text
+									style="margin-right: 10px;font-weight: bolder;">检查点位:</text><text>{{item.failureCheckPointDesc}}</text>
+							</view>
+							<view>
+								<text style="margin-right: 10px;font-weight: bolder;">问题描述:</text>
+								<view style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+									{{item.failureHiddenDangerDesc}}
+								</view>
+							</view>
+							<view style="display: flex;flex-direction: row;min-height: 30px;">
+								<view style="width: 200px;">{{item.createTime}}</view>
+								<view style="color: #18B566;">{{item.createUserName}}</view>
+							</view>
+							<view style="margin-top: 5px;padding-left: 0px;padding-right: 0px;">
+								<button type="default" @click="openPage(item.failureCheckNo)">编辑</button>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+
+			</uni-list>
+		</view>
+
+		<!-- 		<view class="list-wrap">
+			<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item.failureCheckNo)"
+				:title="item.failureCheckNo" v-for="(item, index) in list" :key="index">
+				
+			</u-cell-item>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			var reportList = [];
+			var list = uni.getStorageSync('check_report_storage_index');
+			if (list != null && list.length > 0) {
+				list.forEach(itemKey => {
+					var data = uni.getStorageSync('check_report_storage_' + itemKey);
+					if (data != null) {
+						reportList.push(data);
+					}
+				});
+			}
+			this.list = reportList;
+		},
+		data() {
+			return {
+				list: [],
+				title: '缓存问题列表管理',
+				desc: ''
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+			var reportList = [];
+			var list = uni.getStorageSync('check_report_storage_index');
+			if (list != null && list.length > 0) {
+				list.forEach(itemKey => {
+					var data = uni.getStorageSync('check_report_storage_' + itemKey);
+					if (data != null) {
+						reportList.push(data);
+					}
+				});
+			}
+			this.list = reportList;
+		},
+		created() {
+
+		},
+		methods: {
+			openPage(checkNo) {
+				uni.navigateTo({
+					url: '/pages/checkReport/editCacheCheckReport?checkNo=' + checkNo
+				})
+			},
+			delRecord(checkNo) {
+				const that = this;
+				uni.showModal({
+					content: '确定删除记录?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var reportList = [];
+							var reportIndexList = [];
+							var list = uni.getStorageSync('check_report_storage_index');
+							if (list != null && list.length > 0) {
+								list.forEach(itemKey => {
+									if (checkNo !== itemKey) {
+										var data = uni.getStorageSync('check_report_storage_' + itemKey);
+										if (data != null) {
+											reportList.push(data);
+										}
+										reportIndexList.push(itemKey);
+									} else {
+										uni.removeStorageSync('check_report_storage_' + itemKey);
+										uni.removeStorageSync('check_report_storage_image_' + itemKey);
+									}
+								});
+							}
+							uni.setStorageSync('check_report_storage_index', reportIndexList);
+							that.list = reportList;
+						}
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+</style>

+ 217 - 0
pages/checkReport/checkReportListManage.vue

@@ -0,0 +1,217 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in list" :key="index">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<view style="height: 200px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+								<view style="font-size: 18px;font-weight: bold;width: 88%;">问题编号:{{item.failureCheckNo}}
+								</view>
+								<view style="width: 10%;" @click="delRecord(item.id)">
+									<uni-icons type="trash" size="30"></uni-icons>
+								</view>
+							</view>
+							<view>
+								<text
+									style="margin-right: 10px;font-weight: bolder;">检查点位:</text><text>{{item.failureCheckPointDesc}}</text>
+							</view>
+							<view>
+								<text style="margin-right: 10px;font-weight: bolder;">问题描述:</text>
+								<view style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+									{{item.failureHiddenDangerDesc}}
+								</view>
+							</view>
+							<view style="display: flex;flex-direction: row;min-height: 30px;">
+								<view style="width: 200px;">{{item.createTime}}</view>
+								<view style="color: #18B566;">{{item.checkUserName}}</view>
+							</view>
+							<view style="margin-top: 5px;padding-left: 0px;padding-right: 0px;">
+								<button type="default" @click="openPage(item.id)">编辑</button>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+
+			</uni-list>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			this.loadList();
+			const current = 1;
+			const size = 1000;
+			const isSubmit = '0';
+
+			var reportList = [];
+			http.request({
+				url: '/blade-business/report/failure/queryPage',
+				method: 'GET',
+				params: {
+					current,
+					size,
+					isSubmit
+				}
+			}).then(res => {
+				console.log(res.data)
+				if (res.data.records != null) {
+					const listSize = res.data.records['length'];
+					for (var i = 0; i < listSize; i++) {
+						let report = res.data.records['' + i];
+						reportList.push(report);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+			this.list = reportList;
+		},
+		data() {
+			return {
+				list: [],
+				title: '问题管理',
+				desc: ''
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: "问题管理"
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			openPage(id) {
+				const basePath = '/pages/checkReport/editCheckReport';
+				const path = basePath + '?id=' + id;
+				this.$u.route({
+					url: path
+				})
+
+			},
+			loadList() {
+				const current = 1;
+				const size = 1000;
+				const isSubmit = '0';
+
+				var reportList = [];
+				http.request({
+					url: '/blade-business/report/failure/queryPage',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					}
+				}).then(res => {
+					if (res.data.records != null) {
+						const listSize = res.data.records['length'];
+						for (var i = 0; i < listSize; i++) {
+							let report = res.data.records['' + i];
+							reportList.push(report);
+						}
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+				this.list = reportList;
+			},
+			delRecord(id) {
+				const that = this;
+				uni.showModal({
+					content: '确定删除记录?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var ids = id;
+
+							http.request({
+								url: '/blade-business/report/failure/remove',
+								method: 'POST',
+								params: {
+									ids
+								}
+							}).then(res => {
+								console.log(JSON.stringify(res.data))
+								if (res.success) {
+									uni.showModal({
+										content: '删除已成功',
+										showCancel: false,
+										success(res) {
+											if (res.confirm) {
+												that.loadList();
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+</style>

+ 202 - 0
pages/checkReport/checkStandardSelect.vue

@@ -0,0 +1,202 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="(item, index) in dictList" :key="index">
+					<template v-slot:body>
+						<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+						<view @click="selectItem(item)">
+							<text>{{item.dictValue}}</text>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+
+		<!-- 		<view class="list-wrap">
+			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="item.groupName" v-for="(item, index) in dictList"
+				:key="index">
+				<u-cell-item :titleStyle="{fontWeight: 500}" @click="selectItem(item1)" :title="item1.dictValue"
+					v-for="(item1, index1) in item.list" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon('cell')" mode="widthFix"></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			let dictId = option.id;
+			// let dictList = {};
+			// dictList['groupName'] = '列表信息';
+			var list = [];
+			http.request({
+				url: '/galaxy-system/dict-biz/list?parentId=' + dictId,
+				method: 'GET'
+			}).then(res => {
+				console.log(res.data)
+				if (res.data != null) {
+					const dictLength = res.data['length'];
+					for (var i = 0; i < dictLength; i++) {
+						let dict = res.data['' + i];
+						list.push(dict);
+					}
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+			// dictList['list'] = list;
+			this.dictList = list;
+		},
+		data() {
+			return {
+				dictList: [],
+				title: '选择问题隐患标签',
+				desc: ''
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			selectItem(dict) {
+				const that = this;
+				const parentId = dict['id'];
+				uni.showLoading({
+					title: '处理中'
+				});
+				http.request({
+					url: '/galaxy-system/dict-biz/list',
+					method: 'GET',
+					params: {
+						parentId
+					}
+				}).then(res => {
+					uni.hideLoading()
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						if (dictLength > 0) {
+							let basisDict = res.data[0];
+
+							var subDict = {
+								id: basisDict['id'],
+								dictKey: basisDict['dictKey'],
+								dictValue: basisDict['dictValue'],
+							};
+
+							uni.$emit("handClickStandardSelect", {
+								id: dict['id'],
+								dictKey: dict['dictKey'],
+								dictValue: dict['dictValue'],
+								subDict: subDict
+							});
+							uni.navigateBack();
+
+						} else {
+							var subDict = {
+								id: '',
+								dictKey: '',
+								dictValue: '',
+							};
+							uni.$emit("handClickStandardSelect", {
+								id: dict['id'],
+								dictKey: dict['dictKey'],
+								dictValue: dict['dictValue'],
+								subDict: subDict
+							});
+							uni.navigateBack();
+
+							// uni.showModal({
+							// 	content: '此标准下没有依据!',
+							// 	showCancel: false
+							// });
+						}
+
+					} else {
+						// uni.showModal({
+						// 	content: '此标准下没有依据!',
+						// 	showCancel: false
+						// });
+						var subDict = {
+							id: '',
+							dictKey: '',
+							dictValue: '',
+						};
+						uni.$emit("handClickStandardSelect", {
+							id: dict['id'],
+							dictKey: dict['dictKey'],
+							dictValue: dict['dictValue'],
+							subDict: subDict
+						});
+						uni.navigateBack();
+					}
+
+
+				}).catch(err => {
+					uni.hideLoading()
+					console.log(err)
+				})
+
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+		.slot-box {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+		}
+	
+		.slot-image {
+			/* #ifndef APP-NVUE */
+			display: block;
+			/* #endif */
+			margin-right: 10px;
+			width: 30px;
+			height: 30px;
+		}
+	
+		.slot-text {
+			flex: 1;
+			font-size: 14px;
+			color: #4cd964;
+			margin-right: 10px;
+		}
+</style>

+ 95 - 0
pages/checkReport/copyCheckFormConfirm.vue

@@ -0,0 +1,95 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="uni-form-item uni-column">
+			<view class="line-body">
+				<button type="default" @click="onCopyClick">复制该检查单</button>
+			</view>
+			<view class="line-body" style="margin-top: 10px;">
+				<button type="default" @click="onContinunClick">继续检查</button>
+			</view>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+
+
+		},
+		data() {
+			return {
+				title: '下一步流程',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			onCopyClick(e) {
+
+			},
+			onContinunClick(e) {
+
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+</style>

+ 1190 - 0
pages/checkReport/editCacheCheckReport.vue

@@ -0,0 +1,1190 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view>
+			<form @submit="formSubmit" @reset="formReset">
+				<!-- 项目信息项 -->
+				<view class="uni-form-item">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc">
+							<text class="required-star">*</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc item-title">
+							<text>当前项目:</text>
+						</view>
+						<view style="flex-grow: 0.9;" class="view-flex-cc">
+							<text>{{projectInfo.title}}</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc">
+							<button style="height: 80rpx;font-size: medium;" type="primary"
+								@click="goto('/pages/checkReport/checkProjectSelect?model=1')">重新选择</button>
+						</view>
+					</view>
+				</view>
+				<!-- 检查区域信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查区域</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckArea()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkAreaDict.dictValue" />
+					</view>
+					<!-- 				<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkAreaDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckArea()"></u-cell-item> -->
+				</view>
+				<!-- 检查点位文本信息项 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10rpx;">
+					<view class="line-body item-title">
+						具体位置
+					</view>
+					<view class="line-body">
+						<uni-easyinput errorMessage v-model="failureCheckPointDesc" placeholder="请输入内容"></uni-easyinput>
+					</view>
+				</view>
+				<!-- 安全隐患问题类型信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">安全问题隐患类型</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemType()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemTypeDict.dictValue" />
+					</view>
+
+					<!-- 	<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkItemTypeDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemType()"></u-cell-item> -->
+				</view>
+				<!-- 安全隐患问题标签信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查部位</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemLabel()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemLabelDict.dictValue" />
+					</view>
+					<!-- <u-cell-item class="line-body" icon="setting-fill"  v-bind:title="checkItemLabelDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemLabel()"></u-cell-item> -->
+				</view>
+
+
+				<!-- 安全隐患问题排查标准信息项,字典 -->
+				<view class="uni-form-item  uni-column" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">问题隐患标签</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckStandard()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkStandardDict.dictValue" />
+					</view>
+
+
+					<!-- <u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkStandardDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckStandard()"></u-cell-item> -->
+				</view>
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						法律法规
+					</view>
+					<view class="line-body">
+						<textarea disabled v-model="checkItemStandardBasisDict.dictValue" class="mline-text" />
+
+						<!-- <uni-easyinput disabled v-model="checkItemStandardBasisDict.dictValue"></uni-easyinput> -->
+					</view>
+				</view>
+
+				<!-- 	安全隐患问题描述信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						安全问题隐患描述
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureHiddenDangerDesc" name="failureCorrectiveSuggest"
+							class="mline-text" />
+
+					</view>
+				</view>
+
+				<!-- 隐患等级信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">隐患等级</text></view>
+						<view class="line-body">
+							<radio-group @change="hiddenDangerRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px;margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in hiddenDangerRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === hiddenDangerRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 整改建议信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						整改建议
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureCorrectiveSuggest" name="failureCorrectiveSuggest"
+							class="mline-text" />
+					</view>
+				</view>
+				<!-- 整改期限信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">整改期限</text></view>
+						<view class="line-body">
+							<radio-group @change="planTimeRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px; margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in planTimeRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === planTimeRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 图片信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc" style="height: 40px;">
+							<text class="item-title">安全隐患问题图片</text>
+						</view>
+					</view>
+				</view>
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="img-container">
+						<view class="note-image-box">
+							<view class="note-image-item" v-for="(item , index) in localImageList" :key="index">
+								<view class="close-icon" @click="onDeleteClick(index)">
+									<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+								</view>
+								<view class="image-box">
+									<image :src="item" mode="widthFix"></image>
+								</view>
+							</view>
+							<view v-if="localImageList.length < 9" class="note-image-item" @click="getPhoto()">
+								<view class="image-box">
+									<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+				<view class="uni-form-item uni-column">
+					<view class="line-body">
+						<button type="primary" form-type="submit">提交</button>
+					</view>
+					<view class="line-body" style="margin-top: 10px;">
+						<button type="default" @click="onSaveClick">保存</button>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+			</form>
+		</view>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	import {
+		devUrl,
+		prodUrl,
+		oss
+	} from '@/common/setting';
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			console.log(option.checkNo);
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			this.checkNo = option.checkNo;
+			//问题详情信息
+			var data = uni.getStorageSync('check_report_storage_' + this.checkNo);
+			if (data != null) {
+				console.log("detail " + data)
+				this.recordInfo = data;
+				this.failureCheckPointDesc = data['failureCheckPointDesc']
+				this.failureHiddenDangerDesc = data['failureHiddenDangerDesc']
+				this.failureCorrectiveSuggest = data['failureCorrectiveSuggest']
+				this.initProjectInfo(data['failureProjectId']);
+				this.initCheckArea(data['failureCheckArea']);
+				this.initCheckItemType(data['failureCheckHiddenDangerType']);
+				this.initCheckItemLabel(data['failureCheckHiddenDanger']);
+				this.initCheckStandard(data['failureCheckHiddenDangerItemPoint']);
+				this.initCheckStandardBasis(data['failureCheckHiddenDangerStandard']);
+				this.initHiddenDangerLevelRadio(data['failureHiddenDangerLevel']);
+				this.initPlanTimeRadio(data['failureCorrectivePlanTime']);
+				this.initPhoto()
+			}
+
+		},
+		data() {
+			return {
+				baseURL: '',
+				checkNo: '',
+				recordInfo: {},
+				savedImageList: [],
+				planTimeRadio: {
+					items: [],
+					current: 0,
+				},
+				hiddenDangerRadio: {
+					items: [],
+					current: 0,
+				},
+				localImageList: [],
+				uploadImageList: [],
+				checkAreaDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemTypeDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemLabelDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkStandardDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemStandardBasisDict: {
+					id: '',
+					dictKey: '',
+					dictValue: ''
+				},
+				title: '问题编辑',
+				desc: '',
+				projectInfo: {
+					'projectId': '',
+					'title': ''
+				},
+				failureHiddenDangerDesc: '',
+				failureCheckPointDesc: '',
+				failureCorrectiveSuggest: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: "问题编辑"
+			});
+
+			//项目选择结果监听  
+			uni.$on("handClickProjectSelect", res => {
+				console.log(res);
+				this.projectInfo = {
+					projectId: res.projectId,
+					title: '重新选择的项目名'
+				}
+				// 清除监听
+				uni.$off('handClickProjectSelect');
+			})
+
+			//检查区域选择结果监听  
+			uni.$on("handClickAreaSelect", res => {
+				console.log(res);
+
+				this.checkAreaDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickAreaSelect');
+			})
+
+			//安全隐患问题分类选择结果监听
+			uni.$on("handClickItemSelect", res => {
+				console.log("callback " + res);
+				if (this.checkItemTypeDict.id == null || this.checkItemTypeDict.id.length == 0 || this
+					.checkItemTypeDict.id !== res.id) {
+					this.checkItemLabelDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkItemTypeDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickItemSelect');
+			})
+
+			//安全隐患标签选择结果监听  
+			uni.$on("handClickItemLabelSelect", res => {
+				console.log("handClickItemLabelSelect" + res);
+				if (this.checkItemLabelDict.id == null || this.checkItemLabelDict.id.length == 0 || this
+					.checkItemLabelDict.id !== res.id) {
+
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkItemLabelDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				// 清除监听
+				uni.$off('handClickItemLabelSelect');
+			})
+
+			//安全隐患排查标准选择结果监听
+			uni.$on("handClickStandardSelect", res => {
+				console.log(res);
+				if (this.checkStandardDict.id == null || this.checkStandardDict.id.length == 0 || this
+					.checkStandardDict.id !== res.id) {
+
+					this.failureHiddenDangerDesc = "";
+
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkStandardDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				this.failureHiddenDangerDesc = res.dictValue;
+
+				this.checkItemStandardBasisDict = {
+					dictValue: res.subDict.dictValue,
+					dictKey: res.subDict.dictKey,
+					id: res.subDict.id
+				}
+				// 清除监听
+				uni.$off('handClickStandardSelect');
+			})
+		},
+		created() {
+
+		},
+		methods: {
+			initProjectInfo(failureProjectId) {
+				const that = this;
+				const id = failureProjectId;
+				http.request({
+					url: '/blade-business/report/projectInfo/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					that.projectInfo = {
+						projectId: res.data.id,
+						title: res.data.projectName
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			initCheckArea(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkAreaDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			initCheckItemType(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkItemTypeDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckItemLabel(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkItemLabelDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckStandard(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkStandardDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckStandardBasis(dictId) {
+				if (null != dictId && undefined != dictId && dictId.length > 0) {
+					const that = this;
+					const id = dictId;
+					http.request({
+						url: '/galaxy-system/dict-biz/detail',
+						method: 'GET',
+						params: {
+							id
+						}
+					}).then(res => {
+						console.log(res.data)
+						if (res.data != null) {
+							that.checkItemStandardBasisDict = {
+								id: res.data['id'],
+								dictKey: res.data['dictKey'],
+								dictValue: res.data['dictValue'],
+							};
+						}
+
+					}).catch(err => {
+						console.log(err)
+					})
+				}
+			},
+			initHiddenDangerLevelRadio(dictId) {
+				const that = this;
+				//查询隐患等级
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=danger_level',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						var dangerLevelList = [];
+						var index = 0;
+
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							if (dict['id'] == dictId) {
+								index = i;
+							}
+							dangerLevelList.push(dict);
+						}
+
+						that.hiddenDangerRadio = {
+							current: index,
+							items: dangerLevelList
+						}
+
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initHiddenDangerLevelRadio(dictId) {
+				const that = this;
+				//查询隐患等级
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=danger_level',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						var dangerLevelList = [];
+						var index = 0;
+
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							if (dict['id'] == dictId) {
+								index = i;
+							}
+							dangerLevelList.push(dict);
+						}
+
+						that.hiddenDangerRadio = {
+							current: index,
+							items: dangerLevelList
+						}
+
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initPlanTimeRadio(dictId) {
+				const that = this;
+				//查询整改期限
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=plan_time',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						var planTimeList = [];
+						var index = 0;
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							if (dict['id'] == dictId) {
+								index = i;
+							}
+							planTimeList.push(dict);
+						}
+						that.planTimeRadio = {
+							current: index,
+							items: planTimeList,
+						}
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			getOssPath(imagePath) {
+				if (null != imagePath && imagePath.indexOf("blob") == 0) {
+					return imagePath;
+				} else {
+					return oss + imagePath;
+				}
+			},
+			initPhoto() {
+				var saveFilePaths = uni.getStorageSync('check_report_storage_image_' + this.checkNo);
+				this.localImageList = this.localImageList.concat(saveFilePaths);
+			},
+			onDeleteClick(index) {
+				this.localImageList.splice(index, 1);
+			},
+			removeRecord() {
+				var tempIndexList = [];
+				var list = uni.getStorageSync('check_report_storage_index');
+				if (list != null && list.length > 0) {
+					list.forEach(itemKey => {
+						if (itemKey !== this.checkNo) {
+							tempIndexList.push(itemKey);
+						}
+					});
+				}
+				uni.setStorageSync('check_report_storage_index', tempIndexList);
+				uni.removeStorageSync('check_report_storage_' + this.checkNo);
+			},
+			planTimeRadioChange: function(evt) {
+				for (let i = 0; i < this.planTimeRadio.items.length; i++) {
+					if (this.planTimeRadio.items[i].id === evt.detail.value) {
+						this.planTimeRadio.current = i;
+						break;
+					}
+				}
+			},
+			hiddenDangerRadioChange: function(evt) {
+				for (let i = 0; i < this.hiddenDangerRadio.items.length; i++) {
+					if (this.hiddenDangerRadio.items[i].id === evt.detail.value) {
+						this.hiddenDangerRadio.current = i;
+						break;
+					}
+				}
+			},
+			getPhoto() {
+				const that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len > 0) {
+							if (len + that.localImageList.length > 9) {
+								uni.showModal({
+									content: '一次最多上传9张图片,请检查!',
+									showCancel: false
+								});
+							} else {
+								let pathList = [];
+								res.tempFilePaths.forEach(path => {
+									that.localImageList.push(path);
+								})
+							}
+						}
+					}
+				})
+			},
+			saveLocalFile(paths) {
+				var returnFileList = [];
+				var count = 0;
+				return new Promise((resolve, reject) => {
+					paths.forEach(imagePath => {
+						console.log("path " + imagePath);
+						uni.saveFile({
+							tempFilePath: imagePath,
+							success: (res) => {
+								var savedFilePath = res.savedFilePath;
+								returnFileList.push(savedFilePath);
+								count += 1;
+								if (count == paths.length) {
+									resolve(returnFileList);
+								}
+							},
+							fail: (e) => {
+								reject('err')
+							}
+						})
+					});
+				})
+			},
+			async saveLocalFiles(tempImageList) {
+				if (tempImageList.length > 0) {
+					await this.saveLocalFile(tempImageList).then(files => {
+						files.forEach(f => {
+							this.savedImageList.push(f);
+						})
+					});
+				}
+			},
+			onSaveClick(e) {
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+					try {
+						var data = {};
+						data['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+						data['failureCheckPointDesc'] = this.failureCheckPointDesc;
+						data['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+						data['failureCheckNo'] = this.checkNo;
+						data['failureProjectId'] = this.projectInfo.projectId;
+						data['failureCheckArea'] = this.checkAreaDict.id;
+
+						data['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+						data['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+						data['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+						data['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+
+
+						data['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this.hiddenDangerRadio.current]
+							.id;
+						data['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio.current]
+							.id;
+
+						var tempImageList = [];
+						this.savedImageList = [];
+						this.localImageList.forEach(path => {
+							var text = String(path);
+							if (text.indexOf("blob") == 0) {
+								tempImageList.push(text);
+							} else {
+								this.savedImageList.push(text);
+							}
+						})
+
+						this.saveLocalFiles(tempImageList);
+
+						uni.setStorageSync('check_report_storage_image_' + this
+							.checkNo, this.savedImageList);
+
+						console.log("save " + data);
+
+
+						uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						uni.navigateBack();
+					} catch (e) {
+						console.log(e);
+						uni.showModal({
+							content: '保存失败!' + e.message,
+							showCancel: false
+						});
+					}
+
+
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+
+			},
+			uploadFile(imagePaths) {
+				var returnImagePathList = [];
+				var count = 0;
+				console.log("accessToken:" + uni.getStorageSync('accessToken'));
+				return new Promise((resolve, reject) => {
+					imagePaths.forEach(imagePath => {
+						console.log("path " + imagePath);
+						uni.showLoading({
+							title: '上传中'
+						});
+						uni.uploadFile({
+							url: this.baseURL +
+								'/galaxy-resource/oss/endpoint/put-file-attach?Blade-Auth=' +
+								uni.getStorageSync('accessToken'),
+							fileType: 'image',
+							filePath: imagePath,
+							name: 'file',
+							success: (uploadFileRes) => {
+								console.log(uploadFileRes);
+								if (uploadFileRes.statusCode == 200) {
+									let data = JSON.parse(uploadFileRes.data);
+									if (data.success) {
+										let name = data.data['name'];
+										returnImagePathList.push(name);
+									}
+								}
+								count += 1;
+								if (count == imagePaths.length) {
+									resolve(returnImagePathList);
+								}
+
+							},
+							fail: (err) => {
+								console.log(err);
+								reject('err')
+							},
+							complete() {
+								uni.hideLoading()
+							}
+						});
+					});
+				})
+			},
+			async upload(formdata) {
+				const that = this;
+				if (this.localImageList.length > 0) {
+
+					await this.uploadFile(this.localImageList).then(names => {
+						names.forEach(name => {
+							console.log("image path " + name);
+							this.uploadImageList.push(name);
+						})
+						var photoPaths = [];
+						this.uploadImageList.forEach(name => {
+							let p = {
+								failureCheckNo: this.checkNo,
+								photoPath: name
+							}
+							photoPaths.push(p);
+						})
+						formdata['photoPaths'] = photoPaths;
+
+						http.request({
+							url: '/blade-business/report/failure/save',
+							method: 'POST',
+							data: formdata
+						}).then(res => {
+							if (res.success) {
+								that.removeRecord();
+								uni.showModal({
+									content: '上传成功',
+									showCancel: false,
+									success(res) {
+										if (res.confirm) {
+											uni.navigateBack();
+										}
+									}
+								});
+							} else {
+								uni.showModal({
+									content: '' + res.msg,
+									showCancel: false
+								});
+							}
+						}).catch(err => {
+							console.log(err)
+						})
+
+					})
+				} else {
+
+					http.request({
+						url: '/blade-business/report/failure/save',
+						method: 'POST',
+						data: formdata
+					}).then(res => {
+						if (res.success) {
+							that.removeRecord();
+							uni.showModal({
+								content: '上传成功',
+								showCancel: false,
+								success(res) {
+									if (res.confirm) {
+										uni.navigateBack();
+									}
+								}
+							});
+						} else {
+							uni.showModal({
+								content: '' + res.msg,
+								showCancel: false
+							});
+						}
+					}).catch(err => {
+						console.log(err)
+					})
+				}
+			},
+			formSubmit: function(e) {
+				console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))
+
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+					this.recordInfo['failureCheckPointDesc'] = this.failureCheckPointDesc;
+					this.recordInfo['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+					this.recordInfo['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+					this.recordInfo['failureProjectId'] = this.projectInfo.projectId;
+					this.recordInfo['failureCheckArea'] = this.checkAreaDict.id;
+					this.recordInfo['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+					this.recordInfo['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+					this.recordInfo['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+					this.recordInfo['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+					this.recordInfo['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this
+							.hiddenDangerRadio.current]
+						.id;
+					this.recordInfo['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio
+							.current]
+						.id;
+					this.upload(this.recordInfo);
+
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+			selectCheckArea() {
+				this.$u.route({
+					url: '/pages/checkReport/checkAreaSelect'
+				})
+			},
+			selectCheckItemType() {
+				uni.navigateTo({
+					url: '/pages/checkReport/checkItemSelect'
+				})
+			},
+			selectCheckItemLabel() {
+				if (this.checkItemTypeDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkItemLabelSelect?id=' + this.checkItemTypeDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题类型',
+						showCancel: false
+					});
+				}
+			},
+			selectCheckStandard() {
+				if (this.checkItemLabelDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkStandardSelect?id=' + this.checkItemLabelDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题标签',
+						showCancel: false
+					});
+				}
+			},
+			openPage(path) {
+				this.$u.route({
+					url: path
+				})
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			},
+			goto(url) {
+				console.log(url);
+
+				uni.navigateTo({
+					url: url
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 100px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 20px;
+
+		.note-image-box {
+			margin-top: 5px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 33.3%;
+				height: 0;
+				padding-top: 33.3%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 95%;
+					height: 95%;
+
+				}
+			}
+		}
+	}
+</style>

+ 1137 - 0
pages/checkReport/editCheckReport.vue

@@ -0,0 +1,1137 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view>
+			<form @submit="formSubmit" @reset="formReset">
+				<!-- 项目信息项 -->
+				<view class="uni-form-item">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc">
+							<text class="required-star">*</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc item-title">
+							<text>当前项目:</text>
+						</view>
+						<view style="flex-grow: 0.9;" class="view-flex-cc">
+							<text>{{projectInfo.title}}</text>
+						</view>
+						<view style="width: 200rpx;" class="view-flex-cc">
+							<button style="height: 80rpx;font-size: medium;" type="primary"
+								@click="goto('/pages/checkReport/checkProjectSelect?model=1')">重新选择</button>
+						</view>
+					</view>
+				</view>
+				<!-- 检查区域信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查区域</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckArea()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkAreaDict.dictValue" />
+					</view>
+					<!-- 				<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkAreaDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckArea()"></u-cell-item> -->
+				</view>
+				<!-- 检查点位文本信息项 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10rpx;">
+					<view class="line-body item-title">
+						具体位置
+					</view>
+					<view class="line-body">
+						<uni-easyinput errorMessage v-model="failureCheckPointDesc" placeholder="请输入内容"></uni-easyinput>
+					</view>
+				</view>
+				<!-- 安全隐患问题类型信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">安全问题隐患类型</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemType()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemTypeDict.dictValue" />
+					</view>
+
+					<!-- 	<u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkItemTypeDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemType()"></u-cell-item> -->
+				</view>
+				<!-- 安全隐患问题标签信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">检查部位</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckItemLabel()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkItemLabelDict.dictValue" />
+					</view>
+					<!-- <u-cell-item class="line-body" icon="setting-fill"  v-bind:title="checkItemLabelDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckItemLabel()"></u-cell-item> -->
+				</view>
+
+
+				<!-- 安全隐患问题排查标准信息项,字典 -->
+				<view class="uni-form-item  uni-column" style="margin-top: 10px;">
+					<view class="line-body view-flex-rs">
+						<text class="required-star">*</text>
+						<text class="item-title">问题隐患标签</text>
+					</view>
+					<view>
+						<uni-list-item @click="selectCheckStandard()" :clickable="true" :ellipsis="1"
+							:show-extra-icon="true" showArrow
+							:extra-icon="{color: '#4cd964',size: '22',type: 'settings'}"
+							v-bind:title="checkStandardDict.dictValue" />
+					</view>
+
+
+					<!-- <u-cell-item class="line-body" icon="setting-fill" v-bind:title="checkStandardDict.dictValue"
+						hover-class="cell-hover-class" @click="selectCheckStandard()"></u-cell-item> -->
+				</view>
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						法律法规
+					</view>
+					<view class="line-body">
+						<textarea disabled v-model="checkItemStandardBasisDict.dictValue" class="mline-text" />
+
+						<!-- <uni-easyinput disabled v-model="checkItemStandardBasisDict.dictValue"></uni-easyinput> -->
+					</view>
+				</view>
+
+				<!-- 	安全隐患问题描述信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						安全问题隐患描述
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureHiddenDangerDesc" name="failureCorrectiveSuggest"
+							class="mline-text" />
+
+					</view>
+				</view>
+
+				<!-- 隐患等级信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">隐患等级</text></view>
+						<view class="line-body">
+							<radio-group @change="hiddenDangerRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px;margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in hiddenDangerRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === hiddenDangerRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 整改建议信息项,文本 -->
+				<view class="uni-form-item uni-column" style="margin-top: 10px;">
+					<view class="line-body item-title">
+						整改建议
+					</view>
+					<view class="line-body">
+						<textarea v-model="failureCorrectiveSuggest" name="failureCorrectiveSuggest"
+							class="mline-text" />
+					</view>
+				</view>
+				<!-- 整改期限信息项,字典 -->
+				<view class="uni-form-item" style="margin-top: 15px;">
+					<view class="view-flex-rs">
+						<view class="uni-title line-body"><text class="required-star">*</text><text
+								class="item-title">整改期限</text></view>
+						<view class="line-body">
+							<radio-group @change="planTimeRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-top: 2px;margin-right: 5px;" class="view-flex-rs"
+									v-for="(item, index) in planTimeRadio.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === planTimeRadio.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</view>
+					</view>
+				</view>
+				<!-- 图片信息项 -->
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="view-flex-rs line-body">
+						<view class="view-flex-cc" style="height: 40px;">
+							<text class="item-title">安全隐患问题图片</text>
+						</view>
+					</view>
+				</view>
+				<view class="uni-form-item" style="margin-top: 10px;">
+					<view class="img-container">
+						<view class="note-image-box">
+							<view class="note-image-item" v-for="(item , index) in localImageList" :key="index">
+								<view class="close-icon" @click="onDeleteClick(index)">
+									<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+								</view>
+								<view class="image-box">
+									<image :src="getOssPath(item)" mode="widthFix"></image>
+								</view>
+							</view>
+							<view v-if="localImageList.length < 9" class="note-image-item" @click="getPhoto()">
+								<view class="image-box">
+									<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+				<view class="uni-form-item uni-column">
+					<view class="line-body">
+						<button type="primary" form-type="submit">提交修改</button>
+					</view>
+				</view>
+				<u-gap height="50"></u-gap>
+			</form>
+		</view>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js'
+	import {
+		oss,
+		devUrl,
+		prodUrl,
+	} from '@/common/setting'
+	export default {
+		components: {
+			pageNav
+		},
+		onLoad(option) {
+			console.log(option.id);
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			//记录ID
+			this.recordId = option.id;
+			const id = option.id;
+			const that = this;
+
+			//查询问题详情信息
+			http.request({
+				url: '/blade-business/report/failure/detail',
+				method: 'GET',
+				params: {
+					id
+				}
+			}).then(res => {
+				console.log("detail " + res)
+				if (res.code == 200) {
+					that.checkNo = res.data['failureCheckNo'];
+					that.recordInfo = res.data;
+					that.failureCheckPointDesc = res.data['failureCheckPointDesc'];
+					that.failureHiddenDangerDesc = res.data['failureHiddenDangerDesc'];
+					that.failureCorrectiveSuggest = res.data['failureCorrectiveSuggest'];
+					that.initProjectInfo(res.data['failureProjectId']);
+					that.initCheckArea(res.data['failureCheckArea']);
+					that.initCheckItemType(res.data['failureCheckHiddenDangerType']);
+					that.initCheckItemLabel(res.data['failureCheckHiddenDanger']);
+					this.initCheckStandard(res.data['failureCheckHiddenDangerItemPoint']);
+					this.initCheckStandardBasis(res.data['failureCheckHiddenDangerStandard']);
+					that.initHiddenDangerLevelRadio(res.data['failureHiddenDangerLevel']);
+					that.initPlanTimeRadio(res.data['failureCorrectivePlanTime']);
+					that.initPhoto(res.data['failureCheckNo']);
+				}
+
+			}).catch(err => {
+				console.log(err)
+			})
+
+
+
+		},
+		data() {
+			return {
+				baseURL: '',
+				checkNo: '',
+				recordInfo: {},
+				planTimeRadio: {
+					items: [],
+					current: 0,
+				},
+				hiddenDangerRadio: {
+					items: [],
+					current: 0,
+				},
+				localImageList: [],
+				uploadImageList: [],
+				checkAreaDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemTypeDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemLabelDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkStandardDict: {
+					id: '',
+					dictKey: '',
+					dictValue: '请点击选择'
+				},
+				checkItemStandardBasisDict: {
+					id: '',
+					dictKey: '',
+					dictValue: ''
+				},
+				title: '问题编辑',
+				desc: '',
+				projectInfo: {
+					'projectId': '',
+					'title': ''
+				},
+				failureHiddenDangerDesc: '',
+				failureCheckPointDesc: '',
+				failureCorrectiveSuggest: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: ""
+			});
+
+			//项目选择结果监听  
+			uni.$on("handClickProjectSelect", res => {
+				console.log(res);
+				this.projectInfo = {
+					projectId: res.projectId,
+					title: '重新选择的项目名'
+				}
+				// 清除监听
+				uni.$off('handClickProjectSelect');
+			})
+
+			//检查区域选择结果监听  
+			uni.$on("handClickAreaSelect", res => {
+				console.log(res);
+
+				this.checkAreaDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickAreaSelect');
+			})
+
+			//安全隐患问题分类选择结果监听
+			uni.$on("handClickItemSelect", res => {
+				console.log("callback " + res);
+				if (this.checkItemTypeDict.id == null || this.checkItemTypeDict.id.length == 0 || this
+					.checkItemTypeDict.id !== res.id) {
+					this.checkItemLabelDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkItemTypeDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+
+				// 清除监听
+				uni.$off('handClickItemSelect');
+			})
+
+			//安全隐患标签选择结果监听  
+			uni.$on("handClickItemLabelSelect", res => {
+				console.log("handClickItemLabelSelect" + res);
+				if (this.checkItemLabelDict.id == null || this.checkItemLabelDict.id.length == 0 || this
+					.checkItemLabelDict.id !== res.id) {
+
+					this.checkStandardDict = {
+						id: '',
+						dictKey: '',
+						dictValue: '请点击选择'
+					}
+					this.failureHiddenDangerDesc = "";
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkItemLabelDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				// 清除监听
+				uni.$off('handClickItemLabelSelect');
+			})
+
+			//安全隐患排查标准选择结果监听
+			uni.$on("handClickStandardSelect", res => {
+				console.log(res);
+				if (this.checkStandardDict.id == null || this.checkStandardDict.id.length == 0 || this
+					.checkStandardDict.id !== res.id) {
+
+					this.failureHiddenDangerDesc = "";
+
+					this.checkItemStandardBasisDict = {
+						id: '',
+						dictKey: '',
+						dictValue: ''
+					}
+				}
+				this.checkStandardDict = {
+					dictValue: res.dictValue,
+					dictKey: res.dictKey,
+					id: res.id
+				}
+				this.failureHiddenDangerDesc = res.dictValue;
+
+				this.checkItemStandardBasisDict = {
+					dictValue: res.subDict.dictValue,
+					dictKey: res.subDict.dictKey,
+					id: res.subDict.id
+				}
+				// 清除监听
+				uni.$off('handClickStandardSelect');
+			})
+		},
+		created() {
+
+		},
+		methods: {
+			getOssPath(imageInfo) {
+				if (null != imageInfo && undefined != imageInfo && imageInfo.local) {
+					return imageInfo.photoPath;
+				} else {
+					return oss + imageInfo.photoPath;
+				}
+			},
+			initProjectInfo(failureProjectId) {
+				const that = this;
+				const id = failureProjectId;
+				http.request({
+					url: '/blade-business/report/projectInfo/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					that.projectInfo = {
+						projectId: res.data.id,
+						title: res.data.projectName
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			initCheckArea(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkAreaDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			initCheckItemType(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkItemTypeDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckItemLabel(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkItemLabelDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckStandard(dictId) {
+				const that = this;
+				const id = dictId;
+				http.request({
+					url: '/galaxy-system/dict-biz/detail',
+					method: 'GET',
+					params: {
+						id
+					}
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						that.checkStandardDict = {
+							id: res.data['id'],
+							dictKey: res.data['dictKey'],
+							dictValue: res.data['dictValue'],
+						};
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initCheckStandardBasis(dictId) {
+				if (null != dictId && undefined != dictId && dictId.length > 0) {
+					const that = this;
+					const id = dictId;
+					http.request({
+						url: '/galaxy-system/dict-biz/detail',
+						method: 'GET',
+						params: {
+							id
+						}
+					}).then(res => {
+						console.log(res.data)
+						if (res.data != null) {
+							that.checkItemStandardBasisDict = {
+								id: res.data['id'],
+								dictKey: res.data['dictKey'],
+								dictValue: res.data['dictValue'],
+							};
+						}
+
+					}).catch(err => {
+						console.log(err)
+					})
+				}
+			},
+			initHiddenDangerLevelRadio(dictId) {
+				const that = this;
+				//查询隐患等级
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=danger_level',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						var dangerLevelList = [];
+						var index = 0;
+
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							if (dict['id'] == dictId) {
+								index = i;
+							}
+							dangerLevelList.push(dict);
+						}
+
+						that.hiddenDangerRadio = {
+							current: index,
+							items: dangerLevelList
+						}
+
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initPlanTimeRadio(dictId) {
+				const that = this;
+				//查询整改期限
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=plan_time',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						var planTimeList = [];
+						var index = 0;
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							if (dict['id'] == dictId) {
+								index = i;
+							}
+							planTimeList.push(dict);
+						}
+						that.planTimeRadio = {
+							current: index,
+							items: planTimeList,
+						}
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			initPhoto(failureCheckNo) {
+				const that = this;
+				http.request({
+					url: '/blade-business/report/failure/photo/list',
+					method: 'GET',
+					params: {
+						failureCheckNo
+					}
+				}).then(res => {
+					console.log("detail " + res)
+					if (res.success) {
+						if (res.data != null && res.data.length > 0) {
+							res.data.forEach(d => {
+								let imageInfo = {
+									id: d.id,
+									photoPath: d.photoPath,
+									failureCheckNo: d.failureCheckNo,
+									local: false,
+								}
+								that.localImageList.push(imageInfo);
+							})
+						}
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+			},
+			onDeleteClick(index) {
+				this.localImageList.splice(index, 1);
+			},
+			planTimeRadioChange: function(evt) {
+				for (let i = 0; i < this.planTimeRadio.items.length; i++) {
+					if (this.planTimeRadio.items[i].id === evt.detail.value) {
+						this.planTimeRadio.current = i;
+						break;
+					}
+				}
+			},
+			hiddenDangerRadioChange: function(evt) {
+				for (let i = 0; i < this.hiddenDangerRadio.items.length; i++) {
+					if (this.hiddenDangerRadio.items[i].id === evt.detail.value) {
+						this.hiddenDangerRadio.current = i;
+						break;
+					}
+				}
+			},
+			getPhoto() {
+				const that = this;
+				if (this.localImageList.length > 9) {
+					uni.showModal({
+						content: '一次最多上传9张图片,请检查!',
+						showCancel: false
+					});
+				} else {
+					uni.chooseImage({
+						sourceType: ['album', 'camera'],
+						success: async (res) => {
+							const len = res.tempFilePaths.length;
+							if (len > 0) {
+								if (len + that.localImageList.length > 9) {
+									uni.showModal({
+										content: '一次最多上传9张图片,请检查!',
+										showCancel: false
+									});
+								} else {
+									let text = "";
+									let pathList = [];
+									res.tempFilePaths.forEach(async path => {
+										let imageInfo = {
+											id: '',
+											photoPath: path,
+											failureCheckNo: that.checkNo,
+											local: true,
+										}
+										pathList.push(imageInfo);
+										text += path + " ";
+									})
+									that.localImageList = that.localImageList.concat(pathList);
+								}
+							}
+						}
+					})
+				}
+			},
+			async upload(formdata) {
+				if (this.localImageList.length > 0) {
+					var tempImageList = [];
+					this.localImageList.forEach(image => {
+						if (image.local) {
+							tempImageList.push(image.photoPath);
+						} else {
+							this.uploadImageList.push(image);
+						}
+					})
+					if (tempImageList.length > 0) {
+						await this.uploadFile(tempImageList).then(names => {
+							names.forEach(name => {
+								console.log("image path " + name);
+								let p = {
+									failureCheckNo: this.checkNo,
+									photoPath: name,
+									id: ''
+								}
+								this.uploadImageList.push(p);
+							})
+							formdata['photoPaths'] = this.uploadImageList;
+							http.request({
+								url: '/blade-business/report/failure/update',
+								method: 'POST',
+								data: formdata
+							}).then(res => {
+								if (res.success) {
+									uni.showModal({
+										content: '上传成功',
+										showCancel: false,
+										success(res) {
+											if (res.confirm) {
+												uni.navigateBack();
+											}
+										}
+									});
+								} else {
+									uni.showModal({
+										content: '' + res.msg,
+										showCancel: false
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+
+						})
+					} else {
+						formdata['photoPaths'] = this.uploadImageList;
+						http.request({
+							url: '/blade-business/report/failure/update',
+							method: 'POST',
+							data: formdata
+						}).then(res => {
+							if (res.success) {
+								uni.showModal({
+									content: '上传成功',
+									showCancel: false,
+									success(res) {
+										if (res.confirm) {
+											uni.navigateBack();
+										}
+									}
+								});
+							} else {
+								uni.showModal({
+									content: '' + res.msg,
+									showCancel: false
+								});
+							}
+						}).catch(err => {
+							console.log(err)
+						})
+					}
+				} else {
+					http.request({
+						url: '/blade-business/report/failure/update',
+						method: 'POST',
+						data: formdata
+					}).then(res => {
+						if (res.success) {
+							uni.showModal({
+								content: '上传成功',
+								showCancel: false,
+								success(res) {
+									if (res.confirm) {
+										uni.navigateBack();
+									}
+								}
+							});
+						} else {
+							uni.showModal({
+								content: '' + res.msg,
+								showCancel: false
+							});
+						}
+					}).catch(err => {
+						console.log(err)
+					})
+				}
+			},
+			uploadFile(imagePaths) {
+				var returnImagePathList = [];
+				var count = 0;
+				console.log("accessToken:" + uni.getStorageSync('accessToken'));
+				return new Promise((resolve, reject) => {
+					imagePaths.forEach(imagePath => {
+						console.log("path " + imagePath);
+						uni.showLoading({
+							title: '上传中'
+						});
+						uni.uploadFile({
+							url: this.baseURL +
+								'/galaxy-resource/oss/endpoint/put-file-attach?Blade-Auth=' +
+								uni.getStorageSync('accessToken'),
+							fileType: 'image',
+							filePath: imagePath,
+							name: 'file',
+							success: (uploadFileRes) => {
+								console.log(uploadFileRes);
+								if (uploadFileRes.statusCode == 200) {
+									let data = JSON.parse(uploadFileRes.data);
+									if (data.success) {
+										let name = data.data['name'];
+										returnImagePathList.push(name);
+									}
+								}
+								count += 1;
+								if (count == imagePaths.length) {
+									resolve(returnImagePathList);
+								}
+							},
+							fail: (err) => {
+
+								console.log(err);
+								reject('err')
+							},
+							complete() {
+								uni.hideLoading()
+							}
+						});
+					});
+				})
+
+			},
+			formSubmit: function(e) {
+				console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))
+				var formdata = e.detail.value
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+
+					this.recordInfo['failureCheckPointDesc'] = formdata['failureCheckPointDesc'];
+					this.recordInfo['failureHiddenDangerDesc'] = formdata['failureHiddenDangerDesc'];
+					this.recordInfo['failureCorrectiveSuggest'] = formdata['failureCorrectiveSuggest'];
+
+					this.recordInfo['failureProjectId'] = this.projectInfo.projectId;
+					this.recordInfo['failureCheckArea'] = this.checkAreaDict.id;
+
+					this.recordInfo['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+					this.recordInfo['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+					this.recordInfo['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+					this.recordInfo['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+
+					this.recordInfo['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this
+							.hiddenDangerRadio.current]
+						.id;
+					this.recordInfo['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio
+							.current]
+						.id;
+
+
+					this.upload(this.recordInfo);
+
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+			selectCheckArea() {
+				this.$u.route({
+					url: '/pages/checkReport/checkAreaSelect'
+				})
+			},
+			selectCheckItemType() {
+				uni.navigateTo({
+					url: '/pages/checkReport/checkItemSelect'
+				})
+			},
+			selectCheckItemLabel() {
+				if (this.checkItemTypeDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkItemLabelSelect?id=' + this.checkItemTypeDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题类型',
+						showCancel: false
+					});
+				}
+			},
+			selectCheckStandard() {
+				if (this.checkItemLabelDict.id.length > 0) {
+					uni.navigateTo({
+						url: '/pages/checkReport/checkStandardSelect?id=' + this.checkItemLabelDict.id
+					})
+				} else {
+					uni.showModal({
+						content: '请先选择安全隐患问题标签',
+						showCancel: false
+					});
+				}
+			},
+			openPage(path) {
+				this.$u.route({
+					url: path
+				})
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			},
+			goto(url) {
+				console.log(url);
+
+				uni.navigateTo({
+					url: url
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 100px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 20px;
+
+		.note-image-box {
+			margin-top: 5px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 33.3%;
+				height: 0;
+				padding-top: 33.3%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 95%;
+					height: 95%;
+
+				}
+			}
+		}
+	}
+</style>

+ 24 - 0
pages/demo/crud.vue

@@ -0,0 +1,24 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="CRUD 操作"
+			title-color="#fff">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">很快到来</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+
+	export default {
+		data() {
+			return {
+				data: {}
+			};
+		},
+	}
+</script>

+ 36 - 0
pages/demo/demo.config.js

@@ -0,0 +1,36 @@
+export default [{
+		groupName: '基础功能',
+		list: [{
+			path: '/pages/demo/storage',
+			icon: 'cell',
+			title: 'Storage 操作',
+		}, {
+			path: '/pages/demo/vuex',
+			icon: 'sticky',
+			title: 'Vuex 操作',
+		}]
+	},
+	{
+		groupName: '网络功能',
+		list: [{
+			path: '/pages/demo/mock',
+			icon: 'layout',
+			title: 'Mock 调用',
+		}, {
+			path: '/pages/demo/request',
+			icon: 'tabbar',
+			title: 'API 调用',
+		}]
+	}, {
+		groupName: '业务功能',
+		list: [{
+			path: '/pages/demo/crud',
+			icon: 'tag',
+			title: 'CRUD 操作',
+		},{
+			path: '/pages/componentsA/parse/index',
+			icon: 'loading',
+			title: '未完待续',
+		}]
+	},
+]

+ 74 - 0
pages/demo/demo.vue

@@ -0,0 +1,74 @@
+<template>
+	<view class="wrap">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="list-wrap">
+			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="getGroupTitle(item)" v-for="(item, index) in list"
+				:key="index">
+				<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item1.path)" :title="getFieldTitle(item1)"
+					v-for="(item1, index1) in item.list" :key="index1">
+					<image slot="icon" class="u-cell-icon" :src="getIcon(item1.icon)" mode="widthFix"></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import list from "./demo.config.js";
+	export default {
+		components: {
+			pageNav
+		},
+		data() {
+			return {
+				list: list,
+				title: '基础功能示例合集',
+				desc: '众多示例覆盖开发过程的各个需求,正在不断完善中。可让您快速集成,开箱即用。'
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			uni.setNavigationBarTitle({
+				title: "基础功能示例合集"
+			});
+		},
+		created() {
+
+		},
+		methods: {
+			openPage(path) {
+				this.$u.route({
+					url: path
+				})
+			},
+			getGroupTitle(item) {
+				return item.groupName
+			},
+			getFieldTitle(item) {
+				return item.title
+			}
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+</style>

+ 49 - 0
pages/demo/mock.vue

@@ -0,0 +1,49 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Mock 调用"
+			title-color="#fff">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">演示效果</view>
+				<view class="u-demo-area u-flex u-row-center">
+					数据为:{{data}}
+				</view>
+			</view>
+			<view class="u-config-wrap">
+				<view class="u-config-title u-border-bottom">参数操作</view>
+				<view class="u-config-item">
+					<view class="u-item-title">按钮点击</view>
+					<u-button @click="doRequest">获取数据</u-button>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		fakeBannerList
+	} from "@/api/mock/home.js";
+	export default {
+		data() {
+			return {
+				data: {}
+			};
+		},
+		methods: {
+			doRequest() {
+				let keyword = "";
+				fakeBannerList().then(data => {
+					this.data = data;
+					this.$u.func.showToast({
+						title: '数据获取成功',
+					})
+				}).catch(() => {
+
+				})
+			}
+		},
+	}
+</script>

+ 48 - 0
pages/demo/request.vue

@@ -0,0 +1,48 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="API 请求"
+			title-color="#fff">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">演示效果</view>
+				<view class="u-demo-area u-flex u-row-center">
+					<u-image width="300rpx" height="100rpx" :src="url"></u-image>
+				</view>
+			</view>
+			<view class="u-config-wßrap">
+				<view class="u-config-title u-border-bottom">参数操作</view>
+				<view class="u-config-item">
+					<view class="u-item-title">按钮点击</view>
+					<u-button @click="doRequest">刷新验证码</u-button>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				url: ''
+			};
+		},
+		methods: {
+			doRequest() {
+				let keyword = "";
+				// 自动挂载至this.$u.api,无需引入
+				// captcha 在 /api/demo.js 内定义
+				this.$u.api.captcha().then(data => {
+					this.url = data.image;
+					this.$u.func.showToast({
+						title: '数据获取成功',
+					})
+				}).catch(() => {
+
+				})
+			}
+		},
+	}
+</script>

+ 42 - 0
pages/demo/storage.vue

@@ -0,0 +1,42 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Storage 操作"
+			title-color="#fff">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">演示效果</view>
+				<view class="u-demo-area u-flex u-row-center">
+					[ BladeX ] 的官网为:{{domain}}
+				</view>
+			</view>
+			<view class="u-config-wrap">
+				<view class="u-config-title u-border-bottom">参数操作</view>
+				<view class="u-config-item">
+					<view class="u-item-title">按钮点击</view>
+					<u-button @click="modifyStorage">修改变量</u-button>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				domain: ''
+			}
+		},
+		onLoad() {
+			this.domain = uni.getStorageSync('domain');
+		},
+		methods: {
+			modifyStorage() {
+				uni.setStorageSync('domain', 'https://bladex.vip');
+				this.domain = uni.getStorageSync('domain');
+			}
+		},
+	}
+</script>

+ 41 - 0
pages/demo/vuex.vue

@@ -0,0 +1,41 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Vuex 操作"
+			title-color="#fff">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">演示效果</view>
+				<view class="u-demo-area u-flex u-row-center">
+					<!-- vuex已做过封装,可以直接使用state内的变量 -->
+					版本号为:{{version}}
+				</view>
+				<view class="u-demo-area u-flex u-row-center">
+					[ BladeX ] 的作者为:{{userInfo.nickName}}
+				</view>
+			</view>
+			<view class="u-config-wrap">
+				<view class="u-config-title u-border-bottom">参数操作</view>
+				<view class="u-config-item">
+					<view class="u-item-title">按钮点击</view>
+					<u-button @click="modifyVuex">修改变量</u-button>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		methods: {
+			// vuex已做过封装,可以直接this.$u.vuex(key, value)修改,无需引入
+			modifyVuex() {
+				// version不在lifeData,每次刷新会丢失
+				this.$u.vuex('version', '1.0.1');
+				// userInfo在lifeData,刷新重启会保留
+				this.$u.vuex('userInfo.nickName', '翼');
+			}
+		},
+	}
+</script>

+ 399 - 0
pages/equipment-inspection/equipmentinspectionlist.vue

@@ -0,0 +1,399 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<!-- 	<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uSection title="查询" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<view>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</view>
+			<uSection title="">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<!-- 自定义 body -->
+						<template v-slot:body>
+							<view style="width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="width:100%;display:flex;flex-direction: row;justify-content: flex-start;align-items: center;">
+									<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+										src="/static/images/home/n3.png" mode="widthFix">
+									</image>
+									<text
+										style="margin-left: 10rpx; font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+									<text style="margin-left:8rpx;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+								</view>
+								<view style="display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="location" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.7rem;">
+										{{item.locationDesc}}
+									</view>
+								</view>
+								<view style="margin-top: 5px;display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="gear-filled" size="18" color="skyblue" />
+									<!-- <text style="font-size: 0.7rem;">当前运行状态:</text> -->
+									<text v-if="item.runStatus==0"
+										style="margin-left:5px;font-size: 0.7rem;color:green">运行正常</text>
+									<text v-else style="margin-left:5px;font-size: 0.7rem;color:orangered">设备故障</text>
+								</view>
+								<view
+									style="height:22%;padding-top:4px;display:  flex;flex-direction: row;justify-content: flex-end;">
+
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="openPage(item.rtuCode)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="compose" size="18" color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">开始填报</text>
+										</view>
+									</view>
+
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toLocation(item)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="location" size="18" color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">导航</text>
+										</view>
+									</view>
+
+								</view>
+								<!-- 								<view
+									style="margin-top: 10rpx;padding-left: 0rpx;padding-right: 0rpx;display: flex;flex-direction: row;justify-content: center;">
+									<view  style="width: 100%;">
+										<button style="background-color: lightblue;" type="default"
+											@click="openPage(item.rtuCode)">开始填报</button>
+									</view>
+									<view v-if="item.reportStatus == 1" style="width: 100%;">
+										<button type="default" @click="toPlanClose(item.id)">已提交</button>
+									</view>
+								</view> -->
+							</view>
+						</template>
+					</uni-list-item>
+				</uList>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+		<!-- 	<u-gap height="70"></u-gap> -->
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				list: [],
+				title: '设备巡检任务',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+				orgId: '',
+				projectId: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			this.getEquipmentList();
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getEquipmentList()
+			},
+			onnodeclick(node) {
+				console.log("onnodeclick++++++++++" + node.projectId)
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchVal = '';
+					this.pageCurrent = 1;
+					this.getEquipmentList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(node) {
+
+			},
+			search(res) {
+				this.getEquipmentList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.getEquipmentList();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.searchVal = '';
+				this.getEquipmentList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						//console.log("ffffffff " + that.projectTree[0].orgId)
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+
+						that.getEquipmentList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getEquipmentList() {
+				var that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+				postData['rtuCode'] = this.searchVal;
+				postData['rtuName'] = this.searchVal;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/my/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			openPage(rtuCode) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreport?rtuCode=' +
+					rtuCode;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {
+
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 217 - 0
pages/equipment-inspection/equipmentinspectionplanlist.vue

@@ -0,0 +1,217 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack" >
+		</uni-nav-bar>
+<!-- 		<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<!-- 自定义 body -->
+					<template v-slot:body>
+						<view style="height: 130px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+								<view style="font-size: 0.9rem;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{item.planTitle}}
+								</view>
+							</view>
+							<view style="margin-top: 10rpx;">
+								<text style="margin-right: 10px;font-size: 0.7rem;">计划开始时间:</text>
+								<text style="font-size: 0.7rem;color: orangered;">{{item.inspectionStartTime}}</text>
+							</view>
+							<view style="margin-top: 10rpx;">
+								<text style="margin-right: 10px;font-size: 0.7rem;">计划结束时间:</text>
+								<text style="font-size: 0.7rem;color: orangered;">{{item.inspectionEndTime}}</text>
+							</view>
+							<view  v-if="item.planClose == 2" style="margin-top: 10rpx;padding-left: 0px;padding-right: 0px;">
+								<button style="background-color: lightblue;" type="default" @click="openPage(item.id)">开始填报</button>
+							</view>
+							<view  v-if="item.planClose == 1" style="margin-top: 10rpx;padding-left: 0px;padding-right: 0px;">
+								<button  type="default" @click="toPlanClose(item.id)">填报已结束</button>
+							</view>
+						</view>
+
+					</template>
+				</uni-list-item>
+			</uni-list>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+		uNavBar,
+		uList,
+		uListItem,
+		uIcons,
+		uGroup,
+		},
+		onLoad(option) {
+			this.getPlanList();
+		},
+		data() {
+			return {
+				list: [],
+				title: '巡检计划',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: ""
+			// });
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getPlanList() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/all/list',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.list = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			openPage(id) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreportrtulist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toPlanClose(id){
+				
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 1808 - 0
pages/equipment-inspection/equipmentinspectionreport.vue

@@ -0,0 +1,1808 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<uni-forms ref="baseForm">
+			<view class="uni-form-item view-flex-rs" style="margin-top: 0px;">
+				<uSection title="巡检总结情况" titleFontSize="0.8rem" type="line" style="width: 100%;">
+					<uni-forms-item style="padding-left: 10px;padding-right:10px">
+						<uni-easyinput label="总结说明" type="textarea" v-model="baseInfo.reportDesc"
+							placeholder="请输入总结说明" />
+					</uni-forms-item>
+					<uGroup title="总体设施设备图片" margin-top="0px">
+						<view class="view-flex-rs" style="margin-top: 0px;">
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="baseInfo.photo1Take" class="note-image-item">
+											<view class="close-icon" @click="onBasePhoto1DeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(baseInfo.photo1Url)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getBasePhoto1()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="baseInfo.photo2Take" class="note-image-item">
+											<view class="close-icon" @click="onBasePhoto2DeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(baseInfo.photo2Url)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getBasePhoto2()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</uGroup>
+				</uSection>
+			</view>
+			<uSection title="RTU设备" type="line" titleFontSize="0.8rem" style="width: 100%;">
+				<uGroup margin-top="0">
+					<uni-forms-item label="品牌" label-width="130px" required>
+						<uni-easyinput v-model="rtuInfo.rtuBrandText" placeholder="请录入品牌" />
+					</uni-forms-item>
+					<uni-forms-item label="型号" label-width="130px" required>
+						<uni-easyinput v-model="rtuInfo.rtuModelText" placeholder="请录入型号" />
+					</uni-forms-item>
+					<uni-forms-item label="更换时间" label-width="130px" required>
+						<uni-datetime-picker type="date" :clear-icon="false" v-model="rtuInfo.rtuReplaceDate" />
+					</uni-forms-item>
+					<uni-forms-item label="上报省市县" label-width="130px" required>
+						<checkbox-group @change="datagramToCheckboxChange">
+							<label style="margin-right: 10px;font-size: 0.7rem;"
+								v-for="(item, index) in datagramIp.items" :key="item.id">
+								<checkbox v-if="item.checked" :value="item.id" checked="true" />
+								<checkbox v-else :value="item.id" />
+								{{item.dictValue}}
+							</label>
+						</checkbox-group>
+					</uni-forms-item>
+					<uni-forms-item label="运行状态" label-width="130px" required>
+						<radio-group @change="onRtuStatusRadioChange"
+							style="display: flex;flex-direction: row;justify-content: flex-start;">
+							<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+								v-for="(item, index) in rtuInfo.runStatus.items" :key="item.id">
+								<view>
+									<radio :value="item.id" :checked="index === rtuInfo.runStatus.current" />
+								</view>
+								<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+							</label>
+						</radio-group>
+					</uni-forms-item>
+					<uni-forms-item>
+						<uni-easyinput label="备注说明" type="textarea" v-model="rtuInfo.remark" placeholder="请输入备注说明" />
+					</uni-forms-item>
+				</uGroup>
+				<uGroup title="RTU图片" margin-top="0px">
+					<view class="view-flex-rs" style="margin-top: 0px;">
+						<view class="view-flex-cc" style="width: 120px;">
+							<view class="img-container">
+								<view class="note-image-box">
+									<view v-if="rtuInfo.photoTake" class="note-image-item">
+										<view class="close-icon" @click="onRtuPhotoDeleteClick()">
+											<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+										</view>
+										<view class="image-box">
+											<image :src="toOss(rtuInfo.photoUrl)" mode="widthFix"></image>
+										</view>
+									</view>
+									<view v-else class="note-image-item" @click="getRtuPhoto()">
+										<view class="image-box">
+											<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</uGroup>
+			</uSection>
+			<view class="uni-form-item">
+				<uSection title="雨量传感器" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="是否有雨量计" label-width="130px" required>
+							<radio-group @change="onRainActiveRadioChange"
+								style="display: flex;flex-direction: row;justify-content: flex-start;">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in rainSensorInfo.active.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === rainSensorInfo.active.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="品牌" label-width="130px" required>
+							<uni-easyinput v-model="rainSensorInfo.rainSensorBrandText" placeholder="请录入品牌" />
+						</uni-forms-item>
+						<uni-forms-item label="型号" label-width="130px" required>
+							<uni-easyinput v-model="rainSensorInfo.rainSensorModelText" placeholder="请录入型号" />
+						</uni-forms-item>
+						<uni-forms-item label="更换时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false"
+								v-model="rainSensorInfo.rainSensorReplaceDate" />
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onRainSensorStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in rainSensorInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === rainSensorInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 12px;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="rainSensorInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+					<uGroup title="雨量传感器图片" margin-top="0px">
+						<view class="view-flex-rs" style="margin-top: 0px;">
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="rainSensorInfo.photoTake" class="note-image-item">
+											<view class="close-icon" @click="onRainPhotoDeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(rainSensorInfo.photoUrl)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getRainSensorPhoto()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</uGroup>
+				</uSection>
+			</view>
+			<view class="uni-form-item">
+				<uSection title="水位传感器" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="是否有水位计" label-width="130px" required>
+							<radio-group @change="onWaterActiveRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in waterSensorInfo.active.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === waterSensorInfo.active.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="品牌" label-width="130px" required>
+							<uni-easyinput v-model="waterSensorInfo.waterSensorBrandText" placeholder="请录入品牌" />
+						</uni-forms-item>
+						<uni-forms-item label="型号" label-width="130px" required>
+							<uni-easyinput v-model="waterSensorInfo.waterSensorModelText" placeholder="请录入型号" />
+						</uni-forms-item>
+						<uni-forms-item label="更换时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false"
+								v-model="waterSensorInfo.waterSensorReplaceDate" />
+						</uni-forms-item>
+						<uni-forms-item label="类型" label-width="130px" required>
+							<radio-group @change="onWaterSensorTypeRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in waterLevelSensorType.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === waterLevelSensorType.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onWaterSensorStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in waterSensorInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id"
+											:checked="index === waterSensorInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="waterSensorInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+					<uGroup title="水位传感器图片" margin-top="0px">
+						<view class="view-flex-rs" style="margin-top: 0px;">
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="waterSensorInfo.photoTake" class="note-image-item">
+											<view class="close-icon" @click="onWaterPhotoDeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(waterSensorInfo.photoUrl)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getWaterSensorPhoto()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</uGroup>
+				</uSection>
+			</view>
+			<view class="uni-form-item">
+				<uSection title="墒情传感器" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="是否有墒情传感器" label-width="130px" required>
+							<radio-group @change="onGroundActiveRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in groundSensorInfo.active.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === groundSensorInfo.active.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="品牌" label-width="130px" required>
+							<uni-easyinput v-model="groundSensorInfo.groundSensorBrandText" placeholder="请录入品牌" />
+						</uni-forms-item>
+
+						<uni-forms-item label="型号" label-width="130px" required>
+							<uni-easyinput v-model="groundSensorInfo.groundSensorModelText" placeholder="请录入型号" />
+						</uni-forms-item>
+						<uni-forms-item label="更换时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false"
+								v-model="groundSensorInfo.groundSensorReplaceDate" />
+						</uni-forms-item>
+						<uni-forms-item label="类型" label-width="130px" required>
+							<radio-group @change="onGroundSensorTypeRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in groundSensorType.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === groundSensorType.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onGroundSensorStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in groundSensorInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id"
+											:checked="index === groundSensorInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="groundSensorInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+					<uGroup title="墒情传感器图片" margin-top="0px">
+						<view class="view-flex-rs" style="margin-top: 0px;">
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="groundSensorInfo.photoTake" class="note-image-item">
+											<view class="close-icon" @click="onGroundPhotoDeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(groundSensorInfo.photoUrl)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getGroundSensorPhoto()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</uGroup>
+				</uSection>
+			</view>
+			<view class="uni-form-item">
+				<uSection title="供电系统" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="蓄电池容量(AH)" label-width="130px" required>
+							<uni-easyinput v-model="powerInfo.batteryModel" placeholder="请录入容量" />
+						</uni-forms-item>
+						<uni-forms-item label="蓄电池更换时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false"
+								v-model="powerInfo.batteryReplaceDate" />
+						</uni-forms-item>
+						<uni-forms-item label="太阳能板功率(W)" label-width="130px" required>
+							<uni-easyinput v-model="powerInfo.sunPowerModel" placeholder="请录入功率" />
+						</uni-forms-item>
+						<uni-forms-item label="太阳能板更换时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false"
+								v-model="powerInfo.sunPowerReplaceDate" />
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onPowerStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in powerInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === powerInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="powerInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+					<uGroup title="供电系统图片" margin-top="0px">
+						<view class="view-flex-rs" style="margin-top: 0px;">
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="powerInfo.batteryPhotoTake" class="note-image-item">
+											<view class="close-icon" @click="onBatteryPhotoDeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(powerInfo.batteryPhotoUrl)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getBatteryPhoto()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="view-flex-cc" style="width: 120px;">
+								<view class="img-container">
+									<view class="note-image-box">
+										<view v-if="powerInfo.sunPhotoTake" class="note-image-item">
+											<view class="close-icon" @click="onSunPowerPhotoDeleteClick()">
+												<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+											</view>
+											<view class="image-box">
+												<image :src="toOss(powerInfo.sunPhotoUrl)" mode="widthFix"></image>
+											</view>
+										</view>
+										<view v-else class="note-image-item" @click="getSunPowerPhoto()">
+											<view class="image-box">
+												<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</uGroup>
+				</uSection>
+			</view>
+			<view class="uni-form-item">
+				<uSection title="4G移动网络" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="是否使用4G移动网络" label-width="130px" required>
+							<radio-group @change="onNetworkActiveRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in networkInfo.active.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === networkInfo.active.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="SIM卡号" label-width="130px" required>
+							<uni-easyinput v-model="networkInfo.simCcid" placeholder="请录入请录入SIM卡号" />
+						</uni-forms-item>
+						<uni-forms-item label="开卡单位" label-width="130px" required>
+							<uni-easyinput v-model="networkInfo.simPay" placeholder="请录入SIM卡开卡单位" />
+						</uni-forms-item>
+						<uni-forms-item label="缴费截止时间" label-width="130px" required>
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="networkInfo.simPayEndDate" />
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onNetworkStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in networkInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === networkInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="networkInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+				</uSection>
+			</view>
+			<view class="uni-form-item">
+				<uSection title="北斗通讯" type="line" titleFontSize="0.8rem" style="width: 100%;">
+					<uGroup margin-top="0">
+						<uni-forms-item label="是否使用北斗网络" label-width="130px" required>
+							<radio-group @change="onSatelliteActiveRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in satelliteInfo.active.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === satelliteInfo.active.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="通讯模式" label-width="130px" required>
+							<radio-group @change="onSatelliteModelRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in satelliteModel.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === satelliteModel.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item label="运行状态" label-width="130px" required>
+							<radio-group @change="onSatelliteStatusRadioChange" class="view-flex-rs">
+								<label style="margin-right: 20px;width:80px;" class="view-flex-rs"
+									v-for="(item, index) in satelliteInfo.runStatus.items" :key="item.id">
+									<view>
+										<radio :value="item.id" :checked="index === satelliteInfo.runStatus.current" />
+									</view>
+									<view style="font-size: 0.7rem;">{{item.dictValue}}</view>
+								</label>
+							</radio-group>
+						</uni-forms-item>
+						<uni-forms-item>
+							<uni-easyinput label="备注说明" type="textarea" v-model="satelliteInfo.remark"
+								placeholder="请输入备注说明" />
+						</uni-forms-item>
+					</uGroup>
+				</uSection>
+			</view>
+		</uni-forms>
+		<view class="footer">
+			<view class="control">
+				<view style="display: flex;flex-direction: row;justify-content: flex-start;">
+					<view
+						style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+						@click="toSave()">
+						<view style="display:flex;flex-direction: column;justify-content: center;">
+							<uIcons class="input-uni-icon" type="gear" size="18" color="#999" />
+						</view>
+						<view style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+							<text style="color:black;font-size:0.6rem">暂存</text>
+						</view>
+					</view>
+					<view
+						style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightpink"
+						@click="toSubmit()">
+						<view style="display:flex;flex-direction: column;justify-content: center;">
+							<uIcons class="input-uni-icon" type="location" size="18" color="#999" />
+						</view>
+						<view style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+							<text style="color:black;font-size:0.6rem">立即提交</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- <u-gap height="70"></u-gap> -->
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		oss,
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uCard from '@/uni_modules/uni-card/components/uni-card/uni-card.vue'
+	export default {
+		components: {
+			uNavBar,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uCard,
+		},
+		onLoad(options) {			
+			this.rtuCode = options.rtuCode;
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			//初始化巡检填报字典
+			this.getReportDict();
+			//查询计划信息
+			//this.getPlanInfo();
+		},
+		data() {
+			return {
+				pattern: {
+					color: '#7A7E83',
+					backgroundColor: '#fff',
+					selectedColor: '#007AFF',
+					buttonColor: '#007AFF',
+					iconColor: '#fff'
+				},
+				content: [{
+						iconPath: '/static/images/user/c6.png',
+						selectedIconPath: '/static/images/user/c6.png',
+						text: '提交',
+						active: false
+					},
+					{
+						iconPath: '/static/images/user/c5.png',
+						selectedIconPath: '/static/images/user/c5.png',
+						text: '保存',
+						active: false
+					}
+				],
+				baseURL: '',
+				rtuCode: '',
+				//planInfo: {},
+				waterLevelSensorType: {
+					items: [],
+					current: 0,
+				},
+				groundSensorType: {
+					items: [],
+					current: 0,
+				},
+				satelliteModel: {
+					items: [],
+					current: 0,
+				},
+				datagramIp: {
+					items: [{
+						'id': '0',
+						'checked': false,
+						'dictValue': '发往县'
+					}, {
+						'id': '1',
+						'checked': false,
+						'dictValue': '发往市'
+					}, {
+						'id': '2',
+						'checked': false,
+						'dictValue': '发往省'
+					}],
+					current: 0,
+				},
+				baseInfo: {
+					reportDesc: '',
+					photo1Url: '',
+					photo1Take: false,
+					photo2Url: '',
+					photo2Take: false
+				},
+				rtuInfo: {
+					remark: '',
+					rtuBrand: '',
+					rtuBrandText: '',
+					rtuModel: '',
+					rtuModelText: '',
+					rtuReplaceDate: null,
+					datagramTo: [{
+						text: '发往县',
+						value: 0
+					}, {
+						text: '发往市',
+						value: 1
+					}, {
+						text: '发往省',
+						value: 2
+					}],
+					selectedDatagramTo: [],
+					datagramToLevel1: 0,
+					datagramToLevel2: 0,
+					datagramToLevel3: 0,
+					photoUrl: '',
+					photoTake: false,
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				rainSensorInfo: {
+					rainSensorBrand: '',
+					rainSensorModel: '',
+					rainSensorBrandText: '',
+					rainSensorModelText: '',
+					rainSensorReplaceDate: null,
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				waterSensorInfo: {
+					waterSensorBrand: '',
+					waterSensorModel: '',
+					waterSensorBrandText: '',
+					waterSensorModelText: '',
+					waterSensorType: '',
+					waterSensorReplaceDate: null,
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				groundSensorInfo: {
+					groundSensorBrand: '',
+					groundSensorModel: '',
+					groundSensorBrandText: '',
+					groundSensorModelText: '',
+					groundSensorType: '',
+					groundSensorReplaceDate: null,
+					remark: '',
+					photoUrl: '',
+					photoTake: false,
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				powerInfo: {
+					batteryModel: '',
+					batteryReplaceDate: null,
+					sunPowerModel: '',
+					sunPowerReplaceDate: null,
+					batteryPhotoUrl: '',
+					batteryPhotoTake: false,
+					sunPhotoUrl: '',
+					sunPhotoTake: false,
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+
+				},
+				networkInfo: {
+					simCcid: '',
+					simPay: '',
+					simPayEndDate: null,
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				satelliteInfo: {
+					satelliteModel: '',
+					remark: '',
+					active: {
+						items: [{
+							'id': '0',
+							'dictValue': '有'
+						}, {
+							'id': '1',
+							'dictValue': '无'
+						}],
+						current: 0,
+					},
+					runStatus: {
+						items: [{
+							'id': '0',
+							'dictValue': '正常'
+						}, {
+							'id': '1',
+							'dictValue': '故障'
+						}],
+						current: 0,
+					},
+				},
+				localImageList: [],
+				uploadImageList: [],
+				title: '巡检信息填报',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toOss(path) {
+				return oss + path;
+			},
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			toSubmit() {
+				var formdata = {};
+				// formdata['planId'] = this.planId;
+				formdata['rtuCode'] = this.rtuCode;
+				formdata['reportDesc'] = this.baseInfo.reportDesc;
+				if (this.baseInfo.photo1Take) {
+					formdata['basePhoto1Take'] = 1;
+					formdata['basePhoto1Url'] = this.baseInfo.photo1Url;
+				} else {
+					formdata['basePhoto1Take'] = 0;
+				}
+				if (this.baseInfo.photo2Take) {
+					formdata['basePhoto2Take'] = 1;
+					formdata['basePhoto2Url'] = this.baseInfo.photo2Url;
+				} else {
+					formdata['basePhoto2Take'] = 0;
+				}
+				formdata['rtuStatus'] = this.rtuInfo.runStatus.current;
+				formdata['rtuBrand'] = this.rtuInfo.rtuBrandText;
+				formdata['rtuModel'] = this.rtuInfo.rtuModelText;
+				formdata['rtuReplaceDate'] = this.rtuInfo.rtuReplaceDate;
+				formdata['datagramToLevel1'] = this.rtuInfo.datagramToLevel1;
+				formdata['datagramToLevel2'] = this.rtuInfo.datagramToLevel2;
+				formdata['datagramToLevel3'] = this.rtuInfo.datagramToLevel3;
+				formdata['rtuDesc'] = this.rtuInfo.remark;
+				if (this.rtuInfo.photoTake) {
+					formdata['rtuPhotoTake'] = 1;
+					formdata['rtuPhotoUrl'] = this.rtuInfo.photoUrl;
+				} else {
+					formdata['rtuPhotoTake'] = 0;
+				}
+				if (this.rainSensorInfo.active.current === 0) {
+					formdata['rainSensorActive'] = 1;
+					formdata['rainSensorBrand'] = this.rainSensorInfo.rainSensorBrandText;
+					formdata['rainSensorModel'] = this.rainSensorInfo.rainSensorModelText;
+					formdata['rainSensorReplaceDate'] = this.rainSensorInfo.rainSensorReplaceDate;
+					formdata['rainSensorDesc'] = this.rainSensorInfo.remark;
+					formdata['rainSensorStatus'] = this.rainSensorInfo.runStatus.current;
+					if (this.rainSensorInfo.photoTake) {
+						formdata['rainSensorPhotoTake'] = 1;
+						formdata['rainSensorPhotoUrl'] = this.rainSensorInfo.photoUrl;
+					} else {
+						formdata['rainSensorPhotoTake'] = 0;
+					}
+				} else {
+					formdata['rainSensorActive'] = 0;
+				}
+				if (this.waterSensorInfo.active.current === 0) {
+					formdata['waterLevelSensorActive'] = 1;
+					formdata['waterSensorType'] = this.waterLevelSensorType.items[this.waterLevelSensorType.current].id;
+					formdata['waterSensorBrand'] = this.waterSensorInfo.waterSensorBrandText;
+					formdata['waterSensorModel'] = this.waterSensorInfo.waterSensorModelText;
+					formdata['waterSensorReplaceDate'] = this.waterSensorInfo.waterSensorReplaceDate;
+					formdata['waterSensorDesc'] = this.waterSensorInfo.remark;
+					formdata['waterLevelSensorStatus'] = this.waterSensorInfo.runStatus.current;
+					if (this.waterSensorInfo.photoTake) {
+						formdata['waterSensorPhotoTake'] = 1;
+						formdata['waterSensorPhotoUrl'] = this.waterSensorInfo.photoUrl;
+					} else {
+						formdata['waterSensorPhotoTake'] = 0;
+					}
+				} else {
+					formdata['waterLevelSensorActive'] = 0;
+				}
+				if (this.groundSensorInfo.active.current === 0) {
+					formdata['groundWaterSensorActive'] = 1;
+					formdata['groundSensorType'] = this.groundSensorType.items[this.groundSensorType.current].id;
+					formdata['groundWaterSensorStatus'] = this.groundSensorInfo.runStatus.current;
+					formdata['groundSensorBrand'] = this.groundSensorInfo.groundSensorBrandText;
+					formdata['groundSensorModel'] = this.groundSensorInfo.groundSensorModelText;
+					formdata['groundSensorReplaceDate'] = this.groundSensorInfo.groundSensorReplaceDate;
+					formdata['groundSensorDesc'] = this.groundSensorInfo.remark;
+					if (this.groundSensorInfo.photoTake) {
+						formdata['groundSensorPhotoTake'] = 1;
+						formdata['groundSensorPhotoUrl'] = this.groundSensorInfo.photoUrl;
+					} else {
+						formdata['groundSensorPhotoTake'] = 0;
+					}
+
+				} else {
+					formdata['groundWaterSensorActive'] = 0;
+				}
+				formdata['batteryModel'] = this.powerInfo.batteryModel;
+				formdata['batteryReplaceDate'] = this.powerInfo.batteryReplaceDate;
+				formdata['sunPowerModel'] = this.powerInfo.sunPowerModel;
+				formdata['sunPowerReplaceDate'] = this.powerInfo.sunPowerReplaceDate;
+				formdata['powerStatus'] = this.powerInfo.runStatus.current;
+				formdata['powerDesc'] = this.powerInfo.remark;
+				if (this.powerInfo.batteryPhotoTake) {
+					formdata['batteryPhotoTake'] = 1;
+					formdata['batteryPhotoUrl'] = this.powerInfo.batteryPhotoUrl;
+				} else {
+					formdata['batteryPhotoTake'] = 0;
+				}
+				if (this.powerInfo.sunPhotoTake) {
+					formdata['sunPhotoTake'] = 1;
+					formdata['sunPhotoUrl'] = this.powerInfo.sunPhotoUrl;
+				} else {
+					formdata['sunPhotoTake'] = 0;
+				}
+				if (this.networkInfo.active.current === 0) {
+					formdata['networkActive'] = 1;
+					formdata['simCcid'] = this.networkInfo.simCcid;
+					formdata['simPay'] = this.networkInfo.simPay;
+					formdata['simPayEndDate'] = this.networkInfo.simPayEndDate;
+					formdata['networkStatus'] = this.networkInfo.runStatus.current;
+					formdata['networkDesc'] = this.networkInfo.remark;
+				} else {
+					formdata['networkActive'] = 0;
+				}
+				if (this.satelliteInfo.active.current === 0) {
+					formdata['satelliteActive'] = 1;
+					formdata['satelliteModel'] = this.satelliteModel.items[this.satelliteModel.current].id;
+					formdata['satelliteStatus'] = this.satelliteInfo.runStatus.current;
+					formdata['satelliteDesc'] = this.satelliteInfo.remark;
+				} else {
+					formdata['satelliteActive'] = 0;
+				}
+				var that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/save',
+					method: 'POST',
+					data: formdata
+				}).then(res => {
+					if (res.success) {
+						uni.showModal({
+							content: '填报信息已成功提交',
+							showCancel: false,
+							success(res) {
+								if (res.confirm) {
+									uni.navigateBack();
+								}
+							}
+						});
+					} else {
+						uni.showModal({
+							content: '' + res.msg,
+							showCancel: false
+						});
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toSave() {
+
+			},
+			rtuReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			rainSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			waterSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			groundSensorReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			batteryReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			sunPowerReplaceDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			simPayEndDateClick(e) {
+				console.log('maskClick事件:', e);
+			},
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getReportDict() {
+				var that = this;
+				var waterLevelSensorTypeDictList = [];
+				//查询水位计
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=water_level_sensor_type',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							waterLevelSensorTypeDictList.push(dict);
+						}
+						that.waterLevelSensorType.items = waterLevelSensorTypeDictList;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+				var groundSensorTypeDictList = [];
+				//查询墒情传感器类型
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=ground_water_sensor_type',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							groundSensorTypeDictList.push(dict);
+						}
+						that.groundSensorType.items = groundSensorTypeDictList;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+				//查询北斗模式
+				var satelliteModelDictList = [];
+				http.request({
+					url: '/galaxy-system/dict-biz/dictionary?code=satellite_model',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const dictLength = res.data['length'];
+						for (var i = 0; i < dictLength; i++) {
+							let dict = res.data['' + i];
+							satelliteModelDictList.push(dict);
+						}
+						that.satelliteModel.items = satelliteModelDictList;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			// getPlanInfo() {
+			// 	var that = this;
+			// 	var postData = {};
+			// 	postData['id'] = this.planId;
+			// 	http.request({
+			// 		url: '/galaxy-test/equipment/inspection/plan/detail',
+			// 		method: 'GET',
+			// 		data: postData
+			// 	}).then(res => {
+			// 		console.log(res)
+			// 		if (res.data != null) {
+
+			// 			that.planInfo = res.data;
+			// 		}
+
+			// 	}).catch(err => {
+			// 		console.log(err)
+			// 	})
+			// },
+			onBasePhoto1DeleteClick() {
+				this.baseInfo.photo1Take = false;
+			},
+			onBasePhoto2DeleteClick() {
+				this.baseInfo.photo2Take = false;
+			},
+			onRtuPhotoDeleteClick() {
+				this.rtuInfo.photoTake = false;
+			},
+			onRainPhotoDeleteClick() {
+				this.rainSensorInfo.photoTake = false;
+			},
+			onWaterPhotoDeleteClick() {
+				this.waterSensorInfo.photoTake = false;
+			},
+			onGroundPhotoDeleteClick() {
+				this.groundSensorInfo.photoTake = false;
+			},
+			onBatteryPhotoDeleteClick() {
+				this.powerInfo.batteryPhotoTake = false;
+			},
+			onSunPowerPhotoDeleteClick() {
+				this.powerInfo.sunPhotoTake = false;
+			},
+			onRainActiveRadioChange: function(evt) {
+				for (let i = 0; i < this.rainSensorInfo.active.items.length; i++) {
+					if (this.rainSensorInfo.active.items[i].id === evt.detail.value) {
+						this.rainSensorInfo.active.current = i;
+						break;
+					}
+				}
+			},
+			onWaterActiveRadioChange: function(evt) {
+				for (let i = 0; i < this.waterSensorInfo.active.items.length; i++) {
+					if (this.waterSensorInfo.active.items[i].id === evt.detail.value) {
+						this.waterSensorInfo.active.current = i;
+						break;
+					}
+				}
+			},
+			onGroundActiveRadioChange: function(evt) {
+				for (let i = 0; i < this.groundSensorInfo.active.items.length; i++) {
+					if (this.groundSensorInfo.active.items[i].id === evt.detail.value) {
+						this.groundSensorInfo.active.current = i;
+						break;
+					}
+				}
+			},
+			onNetworkActiveRadioChange: function(evt) {
+				for (let i = 0; i < this.networkInfo.active.items.length; i++) {
+					if (this.networkInfo.active.items[i].id === evt.detail.value) {
+						this.networkInfo.active.current = i;
+						break;
+					}
+				}
+			},
+			onSatelliteActiveRadioChange: function(evt) {
+				for (let i = 0; i < this.satelliteInfo.active.items.length; i++) {
+					if (this.satelliteInfo.active.items[i].id === evt.detail.value) {
+						this.satelliteInfo.active.current = i;
+						break;
+					}
+				}
+			},
+
+			onWaterSensorTypeRadioChange: function(evt) {
+				for (let i = 0; i < this.waterLevelSensorType.items.length; i++) {
+					if (this.waterLevelSensorType.items[i].id === evt.detail.value) {
+						this.waterLevelSensorType.current = i;
+						break;
+					}
+				}
+			},
+			onGroundSensorTypeRadioChange: function(evt) {
+				for (let i = 0; i < this.groundSensorType.items.length; i++) {
+					if (this.groundSensorType.items[i].id === evt.detail.value) {
+						this.groundSensorType.current = i;
+						break;
+					}
+				}
+			},
+			onSatelliteModelRadioChange: function(evt) {
+				for (let i = 0; i < this.satelliteModel.items.length; i++) {
+					if (this.satelliteModel.items[i].id === evt.detail.value) {
+						this.satelliteModel.current = i;
+						break;
+					}
+				}
+			},
+			datagramToCheckboxChange: function(evt) {
+				console.log(evt)
+				this.rtuInfo.datagramToLevel1 = 0;
+				this.rtuInfo.datagramToLevel2 = 0;
+				this.rtuInfo.datagramToLevel3 = 0;
+				for (let i = 0; i < this.evt.detail.value.length; i++) {
+					let c = this.evt.detail.value[i];
+					if (c === '0') {
+						this.rtuInfo.datagramToLevel1 = 1;
+					} else if (c === '1') {
+						this.rtuInfo.datagramToLevel2 = 1;
+					} else if (c === '2') {
+						this.rtuInfo.datagramToLevel3 = 1;
+					}
+				}
+			},
+
+			onRtuStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.rtuInfo.runStatus.items.length; i++) {
+					if (this.rtuInfo.runStatus.items[i].id === evt.detail.value) {
+						this.rtuInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onRainSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.rainSensorInfo.runStatus.items.length; i++) {
+					if (this.rainSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.rainSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onWaterSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.waterSensorInfo.runStatus.items.length; i++) {
+					if (this.waterSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.waterSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onGroundSensorStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.groundSensorInfo.runStatus.items.length; i++) {
+					if (this.groundSensorInfo.runStatus.items[i].id === evt.detail.value) {
+						this.groundSensorInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onPowerStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.powerInfo.runStatus.items.length; i++) {
+					if (this.powerInfo.runStatus.items[i].id === evt.detail.value) {
+						this.powerInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onNetworkStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.networkInfo.runStatus.items.length; i++) {
+					if (this.networkInfo.runStatus.items[i].id === evt.detail.value) {
+						this.networkInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			onSatelliteStatusRadioChange: function(evt) {
+				for (let i = 0; i < this.satelliteInfo.runStatus.items.length; i++) {
+					if (this.satelliteInfo.runStatus.items[i].id === evt.detail.value) {
+						this.satelliteInfo.runStatus.current = i;
+						break;
+					}
+				}
+			},
+			uploadPhotoCallback(path, photoIndex) {
+				if (photoIndex === 'basePhoto1') {
+					this.baseInfo.photo1Url = path;
+					this.baseInfo.photo1Take = true;
+				} else if (photoIndex === 'basePhoto2') {
+					this.baseInfo.photo2Url = path;
+					this.baseInfo.photo2Take = true;
+				} else if (photoIndex === 'rtu') {
+					this.rtuInfo.photoUrl = path;
+					this.rtuInfo.photoTake = true;
+				} else if (photoIndex === 'rain') {
+					this.rainSensorInfo.photoUrl = path;
+					this.rainSensorInfo.photoTake = true;
+				} else if (photoIndex === 'water') {
+					this.waterSensorInfo.photoUrl = path;
+					this.waterSensorInfo.photoTake = true;
+				} else if (photoIndex === 'ground') {
+					this.groundSensorInfo.photoUrl = path;
+					this.groundSensorInfo.photoTake = true;
+				} else if (photoIndex === 'battery') {
+					this.powerInfo.batteryPhotoUrl = path;
+					this.powerInfo.batteryPhotoTake = true;
+				} else if (photoIndex === 'sun') {
+					this.powerInfo.sunPhotoUrl = path;
+					this.powerInfo.sunPhotoTake = true;
+				}
+			},
+			uploadPhoto(imagePath, photoIndex) {
+				var that = this;
+				console.log("accessToken:" + uni.getStorageSync('accessToken'));
+				console.log("path " + imagePath);
+				uni.showLoading({
+					title: '上传中'
+				});
+				uni.uploadFile({
+					url: this.baseURL +
+						'/galaxy-resource/oss/endpoint/put-file-attach?Blade-Auth=' +
+						uni.getStorageSync('accessToken'),
+					fileType: 'image',
+					filePath: imagePath,
+					name: 'file',
+					success: (uploadFileRes) => {
+						if (uploadFileRes.statusCode == 200) {
+							let data = JSON.parse(uploadFileRes.data);
+							if (data.success) {
+								let path = data.data['name'];
+								console.log("paht " + path);
+								that.uploadPhotoCallback(path, photoIndex);
+							}
+						}
+					},
+					fail: (err) => {
+						console.log(err);
+						reject('err')
+					},
+					complete() {
+						uni.hideLoading()
+					}
+				});
+			},
+			getBasePhoto1() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'basePhoto1');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getBasePhoto2() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'basePhoto2');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getRtuPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'rtu');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getRainSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'rain');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getWaterSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'water');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getGroundSensorPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'ground');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getBatteryPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'battery');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			getSunPowerPhoto() {
+				var that = this;
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					success: (res) => {
+						const len = res.tempFilePaths.length;
+						if (len === 1) {
+							res.tempFilePaths.forEach(path => {
+								that.uploadPhoto(path, 'sun');
+							})
+						} else {
+							uni.showModal({
+								content: '只能选择一张图片,请确认!',
+								showCancel: false
+							});
+						}
+					}
+				})
+			},
+			onSaveClick(e) {
+				if ((this.projectInfo.projectId != null && this.projectInfo.projectId.length > 0) &&
+					(this.checkAreaDict.id != null && this.checkAreaDict.id.length > 0) &&
+					(this.checkItemTypeDict.id != null && this.checkItemTypeDict.id.length > 0) &&
+					(this.checkItemLabelDict.id != null && this.checkItemLabelDict.id.length > 0) &&
+					(this.checkStandardDict.id != null && this.checkStandardDict.id.length > 0)) {
+					try {
+						var data = {};
+						data['failureHiddenDangerDesc'] = this.failureHiddenDangerDesc;
+						data['failureCheckPointDesc'] = this.failureCheckPointDesc;
+						data['failureCorrectiveSuggest'] = this.failureCorrectiveSuggest;
+						data['failureCheckNo'] = this.checkNo;
+						data['failureProjectId'] = this.projectInfo.projectId;
+						data['failureCheckArea'] = this.checkAreaDict.id;
+						data['failureCheckHiddenDangerType'] = this.checkItemTypeDict.id;
+						data['failureCheckHiddenDanger'] = this.checkItemLabelDict.id;
+						data['failureCheckHiddenDangerItemPoint'] = this.checkStandardDict.id;
+						data['failureCheckHiddenDangerStandard'] = this.checkItemStandardBasisDict.id;
+						data['failureHiddenDangerLevel'] = this.hiddenDangerRadio.items[this.hiddenDangerRadio.current]
+							.id;
+						data['failureCorrectivePlanTime'] = this.planTimeRadio.items[this.planTimeRadio.current]
+							.id;
+						data['createTime'] = this.dateFormat(new Date());
+						data['createUserName'] = this.userInfo1.nick_name;
+						this.saveLocalFiles();
+						console.log("save " + data);
+						var list = uni.getStorageSync('check_report_storage_index');
+						if (list != null && list.length > 0) {
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						} else {
+							list = [];
+							list.push(this.checkNo);
+							uni.setStorageSync('check_report_storage_index', list);
+							uni.setStorageSync('check_report_storage_' + this.checkNo, data);
+						}
+						var that = this;
+						uni.showModal({
+							title: '流程确认',
+							content: '请选择复制或继续检查',
+							cancelText: '复制检查单',
+							confirmText: '继续检查',
+							success: function(res) {
+								if (res.confirm) {
+									that.onContinunClick();
+								} else if (res.cancel) {
+									that.onCopyClick();
+								}
+							}
+						});
+					} catch (e) {
+						console.log(e)
+						uni.showModal({
+							content: '保存失败!',
+							showCancel: false
+						});
+					}
+				} else {
+					uni.showModal({
+						content: '请检查必填项',
+						showCancel: false
+					});
+				}
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+	
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
+	}
+	
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+	}
+	
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+		align-items: center;
+	}
+	
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+	
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+	
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+	
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+	
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+	
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+	
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 70px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+	
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 1;
+		height: 100rpx;
+		padding: 20rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+		background-color: #ffffff;
+
+		.ipt {
+			width: 380rpx;
+			height: 77rpx;
+			background: #f7f7f7;
+			border-radius: 38px;
+			padding: 0 37rpx;
+			box-sizing: border-box;
+			margin-right: 20rpx;
+		}
+
+		.control {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.block {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				flex: 1;
+			}
+
+			.icon {
+				height: auto;
+			}
+
+			.c {
+				width: 41rpx;
+				margin-right: 10rpx;
+			}
+
+			.s {
+				width: 36rpx;
+			}
+
+			.t {
+				width: 31rpx;
+			}
+		}
+	}
+
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 0px;
+		width: 100px;
+		height: 100px;
+
+		.note-image-box {
+			margin-top: 0px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 100%;
+				height: 0;
+				padding-top: 100%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 98%;
+					height: 98%;
+
+				}
+
+
+			}
+		}
+	}
+
+	.input-body {
+		background-color: #fff;
+		padding: 10px;
+	}
+</style>

+ 651 - 0
pages/equipment-inspection/equipmentinspectionreportdetail.vue

@@ -0,0 +1,651 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<uni-forms ref="baseForm">
+			<uSection title="巡检总结情况" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uCard :is-shadow="false">
+					<text class="uni-body">{{reportInfo.reportDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.basePhoto1Take ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.basePhoto1Url)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">图片一</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+				<uCard v-if="reportInfo.basePhoto2Take ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.basePhoto2Url)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">图片二</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection title="RTU设备信息" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.rtuStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="品牌" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rtuBrand}}</text>
+				</uCard>
+				<uCard title="型号" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rtuModel}}</text>
+				</uCard>
+				<uCard title="更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rtuReplaceDate}}</text>
+				</uCard>
+				<uCard title="上报到县市省" :is-shadow="false">
+					<view style="display: flex; flex-direction: row;align-items: center;">
+						<view v-if="reportInfo.datagramToLevel1">
+							<text>发往县</text>
+							<text style="margin-left: 5px;margin-right: 5px;">/</text>
+						</view>
+						<view v-if="reportInfo.datagramToLevel2">
+							<text>发往市</text>
+							<text style="margin-left: 5px;margin-right: 5px;">/</text>
+						</view>
+						<view v-if="reportInfo.datagramToLevel3">
+							<text>发往省</text>
+							<text style="margin-left: 5px;margin-right: 5px;">/</text>
+						</view>
+					</view>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rtuDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.rtuPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.rtuPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">RTU图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection v-if="reportInfo.rainSensorActive ==1" title="雨量传感器" ftitleFontSize="0.8rem" type="line"
+				style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.rainSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="品牌" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rainSensorBrand}}</text>
+				</uCard>
+				<uCard title="型号" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rainSensorModel}}</text>
+				</uCard>
+				<uCard title="更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rainSensorReplaceDate}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.rainSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.rainSensorPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.rainSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">雨量传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection v-if="reportInfo.waterLevelSensorActive ==1" title="水位传感器" ftitleFontSize="0.8rem" type="line"
+				style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.waterLevelSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="品牌" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorBrand}}</text>
+				</uCard>
+				<uCard title="型号" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorModel}}</text>
+				</uCard>
+				<uCard title="传感器类型" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorTypeText}}</text>
+				</uCard>
+				<uCard title="更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorReplaceDate}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.waterSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.waterSensorPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.waterSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">水位传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection v-if="reportInfo.groundWaterSensorActive ==1" title="墒情传感器" ftitleFontSize="0.8rem" type="line"
+				style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.groundWaterSensorStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="品牌" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorBrand}}</text>
+				</uCard>
+				<uCard title="型号" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorModel}}</text>
+				</uCard>
+				<uCard title="传感器类型" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorTypeText}}</text>
+				</uCard>
+				<uCard title="更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorReplaceDate}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.groundSensorDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.groundSensorPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.groundSensorPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">墒情传感器图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection title="供电系统" ftitleFontSize="0.8rem" type="line" style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.powerStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="蓄电池容量(AH)" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.batteryModel}}</text>
+				</uCard>
+				<uCard title="蓄电池更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.batteryReplaceDate}}</text>
+				</uCard>
+				<uCard title="太阳能板功率(W)" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.sunPowerModel}}</text>
+				</uCard>
+				<uCard title="太阳能板更换时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.sunPowerReplaceDate}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.powerDesc}}</text>
+				</uCard>
+				<uCard v-if="reportInfo.batteryPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.batteryPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">蓄电池图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+				<uCard v-if="reportInfo.sunPhotoTake ==1" padding="0" spacing="0" :is-shadow="false">
+					<template v-slot:cover>
+						<view class="custom-cover">
+							<image class="cover-image" style="width: 100%;" mode="aspectFill"
+								:src="toOss(reportInfo.sunPhotoUrl)">
+							</image>
+							<view class="cover-content" style="text-align: center;">
+								<text class="uni-subtitle uni-white" style="color: gray;">太阳能板图片</text>
+							</view>
+						</view>
+					</template>
+				</uCard>
+			</uSection>
+			<uSection v-if="reportInfo.networkActive ==1" title="4G移动网络" ftitleFontSize="0.8rem" type="line"
+				style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.networkStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="SIM卡号" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.simCcid}}</text>
+				</uCard>
+				<uCard title="开卡单位" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.simPay}}</text>
+				</uCard>
+				<uCard title="缴费截止时间" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.simPayEndDate}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.networkDesc}}</text>
+				</uCard>
+			</uSection>
+			<uSection v-if="reportInfo.satelliteActive ==1" title="北斗通讯" ftitleFontSize="0.8rem" type="line"
+				style="width: 100%;">
+				<template v-slot:right>
+					<view style="padding-right: 15px;">
+						<text style="font-size: 0.7rem;color: gray;">运行状态:</text>
+						<text v-if="reportInfo.satelliteStatus == 0"
+							style="font-size: 0.7rem;color: green;margin-left: 4px;">正常</text>
+						<text v-else style="font-size: 0.7rem;color: orangered;margin-left: 4px;">故障</text>
+					</view>
+				</template>
+				<uCard title="通讯模式" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.satelliteModelText}}</text>
+				</uCard>
+				<uCard title="备注说明" :is-shadow="false">
+					<text class="uni-body">{{reportInfo.satelliteDesc}}</text>
+				</uCard>
+			</uSection>
+		</uni-forms>
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		oss,
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uCard from '@/uni_modules/uni-card/components/uni-card/uni-card.vue'
+	export default {
+		components: {
+			uNavBar,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uCard,
+		},
+		onLoad(options) {
+			this.reportId = options.id;
+			//this.rtuCode = options.rtuCode;
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+			//初始化巡检填报字典
+			//this.getReportDict();
+			//查询计划信息
+			//this.getPlanInfo();
+			this.getReportInfo();
+		},
+		data() {
+			return {
+				baseURL: '',
+				reportId: 0,
+				reportInfo: {
+					reportDesc: '测试测试',
+					basePhoto1Url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					basePhoto1Take: true,
+					basePhoto2Url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					basePhoto2Take: true,
+
+					rtuStatus: 0,
+					rtuDesc: '测试测试',
+					rtuBrand: '测试测试',
+					rtuModel: '测试测试',
+					rtuReplaceDate: '2022-08-15 12:00:00',
+					datagramToLevel1: 1,
+					datagramToLevel2: 0,
+					datagramToLevel3: 1,
+					rtuPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					rtuPhotoTake: true,
+
+					rainSensorActive: 1,
+					rainSensorStatus: 0,
+					rainSensorDesc: '测试测试',
+					rainSensorReplaceDate: '2022-08-15 12:00:00',
+					rainSensorBrand: '测试测试',
+					rainSensorModel: '测试测试',
+					rainSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					rainSensorPhotoTake: true,
+
+					waterSensorBrand: '测试测试',
+					waterSensorModel: '测试测试',
+					waterSensorTypeText: '测试测试',
+					waterSensorReplaceDate: '2022-08-15 12:00:00',
+					waterSensorDesc: '测试测试',
+					waterSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					waterSensorPhotoTake: true,
+					waterLevelSensorActive: 1,
+					waterLevelSensorStatus: 1,
+
+					groundSensorBrand: '测试测试',
+					groundSensorModel: '测试测试',
+					groundSensorTypeText: '测试测试',
+					groundSensorReplaceDate: '2022-08-15 12:00:00',
+					groundSensorDesc: '测试测试',
+					groundSensorPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					groundSensorPhotoTake: true,
+					groundWaterSensorActive: 1,
+					groundWaterSensorStatus: 0,
+
+					batteryModel: '测试测试',
+					batteryReplaceDate: '2022-08-15 12:00:00',
+					sunPowerModel: '测试测试',
+					sunPowerReplaceDate: '2022-08-15 12:00:00',
+					batteryPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					batteryPhotoTake: true,
+					sunPhotoUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/094a9dc0-50c0-11eb-b680-7980c8a877b8.jpg',
+					sunPhotoTake: true,
+					powerDesc: '测试测试',
+					powerStatus: 0,
+
+					simCcid: '11111111111',
+					simPay: '测试测试',
+					simPayEndDate: '2022-08-15 12:00:00',
+					networkDesc: '111',
+					networkStatus: 0,
+					networkActive: 1,
+
+					satelliteModelText: '测试测试',
+					satelliteStatus: 0,
+					satelliteDesc: '测试测试',
+					satelliteActive: 1,
+				},
+				title: '巡检填报详情',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {},
+		created() {
+
+		},
+		methods: {
+			toOss(path) {
+				return oss + path;
+			},
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getReportInfo() {
+				var that = this;
+				var postData = {};
+				postData['id'] = this.reportId;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/detail',
+					method: 'GET',
+					data: postData
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.reportInfo = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 50rpx;
+	}
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 70px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+
+	.uni-body {
+		font-size: 0.7rem;
+	}
+
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 0px;
+		width: 100px;
+		height: 100px;
+
+		.note-image-box {
+			margin-top: 0px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 100%;
+				height: 0;
+				padding-top: 100%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 98%;
+					height: 98%;
+
+				}
+
+
+			}
+		}
+	}
+
+	.input-body {
+		background-color: #fff;
+		padding: 10px;
+	}
+</style>

+ 347 - 0
pages/equipment-inspection/equipmentinspectionreportlist.vue

@@ -0,0 +1,347 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uSection title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<view>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</view>
+			<uSection title="">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<template v-slot:body>
+							<view style="width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="width:100%;display:flex;flex-direction: row;justify-content: flex-start;align-items: center;">
+									<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+										src="/static/images/home/n3.png" mode="widthFix">
+									</image>
+									<text
+										style="margin-left: 10rpx; font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+									<text style="margin-left:8rpx;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+								</view>
+								<view style="display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+									<view style="margin-left:5px;font-size: 0.8rem;">
+										{{item.servicePersonName}}
+									</view>
+								</view>
+								<view style="margin-top: 5px;display: flex;flex-direction: row;align-items: center;">
+									<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+									<text style="font-size: 0.8rem;">填报时间:</text>
+									<text
+										style="margin-left:5px;font-size: 0.8rem;color:green">{{item.updateTime}}</text>
+								</view>
+								<view
+									style="height:22%;padding-top:4px;display:  flex;flex-direction: row;justify-content: flex-end;">
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="onToDetailClick(item.id)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="compose" size="18" color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">查看详情</text>
+										</view>
+									</view>
+								</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uList>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				planId: 0,
+				orgId: '',
+				projectId: '',
+				list: [],
+				title: '设备巡检填报信息',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				projectTree: [],
+				selectedTreeNode: '',
+				searchValue: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				this.pageCurrent = e.current;
+				this.getReportRecord()
+			},
+			onnodeclick(node) {
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchValue = '';
+					this.pageCurrent = 1;
+					this.getReportRecord();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+
+			},
+			search(res) {
+				this.getReportRecord();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchValue = '';
+				this.getReportRecord();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.searchValue = '';
+				this.getReportRecord();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getReportRecord();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getReportRecord() {
+				const that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				let postData = {};
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/my/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					if (res.data != null) {
+						if (res.data.records != null) {
+							that.list = res.data.records;
+						}
+						this.total = res.data.total;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onToDetailClick(id) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreportdetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+	
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+	
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 391 - 0
pages/equipment-inspection/equipmentinspectionreportrtulist.vue

@@ -0,0 +1,391 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack" >
+		</uni-nav-bar>
+	<!-- 	<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uSection title="分组选择" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<uSection title="">
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uSection>
+			<uSection title="">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<!-- 自定义 body -->
+						<template v-slot:body>
+							<view style="height: 100px;width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+									<view
+										style="font-size: 1rem;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+										{{item.rtuName}}
+									</view>
+								</view>
+								<view style="margin-top: 10rpx;">
+									<text style="font-size: 0.9rem;color: gray;">{{item.rtuCode}}</text>
+								</view>
+								<view
+									style="margin-top: 10rpx;padding-left: 0rpx;padding-right: 0rpx;display: flex;flex-direction: row;justify-content: center;">
+									<view v-if="item.reportStatus == 0" style="width: 100%;">
+										<button style="background-color: lightblue;" type="default"
+											@click="openPage(item.rtuCode)">开始填报</button>
+									</view>
+									<view v-if="item.reportStatus == 1" style="width: 100%;">
+										<button type="default" @click="toPlanClose(item.id)">已提交</button>
+									</view>
+								</view>
+							</view>
+
+						</template>
+					</uni-list-item>
+				</uList>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+		},
+		onLoad(option) {
+			this.planId = option.id;
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				planId: 0,
+				orgId: '',
+				projectId: '',
+				list: [],
+				title: '待巡检测站列表',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: ""
+			// });
+			//this.getProjectTree();
+			this.getRtuList();
+		},
+
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getRtuList()
+			},
+			onnodeclick(node) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				console.log('1111111orgId:', this.orgId);
+				console.log('1111111projectId:', this.projectId);
+
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', e.detail.value);
+				this.searchVal = '';
+				this.pageCurrent = 1;
+				// this.orgId = e.detail.orgId;
+				// this.projectId = e.detail.projectId;
+
+				// 	if (e.detail.value.length > 0) {
+				// 		let ids = this.selectedTreeNode.split("-");
+				// 		this.orgId = ids[0];
+				// 		if (ids[1] === '0') {
+				// 			this.projectId = '';
+				// 		} else {
+				// 			this.projectId = ids[1];
+				// 		}
+				// console.log('1111111orgId:', this.orgId);
+				// console.log('1111111projectId:', this.projectId);
+
+
+				// 	} else {
+				// 		this.orgId = '';
+				// 		this.projectId = '';
+
+
+				// 	}
+
+				this.getRtuList();
+			},
+			search(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+
+				this.getRtuList();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				// uni.showToast({
+				// 	title: 'clear事件,清除值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			blur(res) {
+				// uni.showToast({
+				// 	title: 'blur事件,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+			},
+			focus(e) {
+				// uni.showToast({
+				// 	title: 'focus事件,输出值为:' + e.value,
+				// 	icon: 'none'
+				// })
+			},
+			cancel(res) {
+				// uni.showToast({
+				// 	title: '点击取消,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						console.log("ffffffff " + that.projectTree[0].orgId)
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+
+						that.getRtuList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getRtuList(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.getRtuList();
+			},
+			getRtuList() {
+				var that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+
+				postData['id'] = this.planId;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+
+				console.log(postData)
+
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/rtu/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					console.log(res)
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			openPage(rtuCode) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreport?planId=' + this.planId +
+					'&rtuCode=' +
+					rtuCode;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toPlanClose(id) {
+
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 385 - 0
pages/equipment-inspection/myequipmentinspectionlist.vue

@@ -0,0 +1,385 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack" >
+		</uni-nav-bar>
+<!-- 		<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uSection title="">
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uSection>
+			<uSection title="">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<!-- 自定义 body -->
+						<template v-slot:body>
+							<view style="height: 100px;width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+									<view
+										style="font-size: 1rem;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+										{{item.rtuName}}
+									</view>
+								</view>
+								<view style="margin-top: 10rpx;">
+									<text style="font-size: 0.9rem;color: gray;">{{item.rtuCode}}</text>
+								</view>
+								<view
+									style="margin-top: 10rpx;padding-left: 0rpx;padding-right: 0rpx;display: flex;flex-direction: row;justify-content: center;">
+									<view v-if="item.reportStatus == 0" style="width: 100%;">
+										<button style="background-color: lightblue;" type="default"
+											@click="openPage(item.rtuCode)">开始填报</button>
+									</view>
+									<view v-if="item.reportStatus == 1" style="width: 100%;">
+										<button type="default" @click="toPlanClose(item.id)">已提交</button>
+									</view>
+								</view>
+							</view>
+
+						</template>
+					</uni-list-item>
+				</uList>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+		},
+		onLoad(option) {
+			this.planId = option.id;
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				planId: 0,
+				orgId: '',
+				projectId: '',
+				list: [],
+				title: '我的巡检任务',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: ""
+			// });
+			//this.getProjectTree();
+			//this.getRtuList();
+		},
+
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getRtuList()
+			},
+			onnodeclick(node) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				console.log('1111111orgId:', this.orgId);
+				console.log('1111111projectId:', this.projectId);
+
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', e.detail.value);
+				this.searchVal = '';
+				this.pageCurrent = 1;
+				// this.orgId = e.detail.orgId;
+				// this.projectId = e.detail.projectId;
+
+				// 	if (e.detail.value.length > 0) {
+				// 		let ids = this.selectedTreeNode.split("-");
+				// 		this.orgId = ids[0];
+				// 		if (ids[1] === '0') {
+				// 			this.projectId = '';
+				// 		} else {
+				// 			this.projectId = ids[1];
+				// 		}
+				// console.log('1111111orgId:', this.orgId);
+				// console.log('1111111projectId:', this.projectId);
+
+
+				// 	} else {
+				// 		this.orgId = '';
+				// 		this.projectId = '';
+
+
+				// 	}
+
+				this.getRtuList();
+			},
+			search(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+
+				this.getRtuList();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				// uni.showToast({
+				// 	title: 'clear事件,清除值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			blur(res) {
+				// uni.showToast({
+				// 	title: 'blur事件,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+			},
+			focus(e) {
+				// uni.showToast({
+				// 	title: 'focus事件,输出值为:' + e.value,
+				// 	icon: 'none'
+				// })
+			},
+			cancel(res) {
+				// uni.showToast({
+				// 	title: '点击取消,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						console.log("ffffffff " + that.projectTree[0].orgId)
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+
+						//that.getRtuList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getRtuList(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.getRtuList();
+			},
+			getRtuList() {
+				var that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+
+				postData['id'] = this.planId;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+
+				console.log(postData)
+
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/my/rtu/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					console.log(res)
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			openPage(rtuCode) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreport?planId=' + this.planId +
+					'&rtuCode=' +
+					rtuCode;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toPlanClose(id) {
+
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 267 - 0
pages/equipment-inspection/myequipmentinspectionreportlist.vue

@@ -0,0 +1,267 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<template v-slot:body>
+						<view style="width: 100%;display: flex;flex-direction: column;">
+							<view
+								style="width:100%;display:flex;flex-direction: row;justify-content: flex-start;align-items: center;">
+								<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+									src="/static/images/home/n3.png" mode="widthFix">
+								</image>
+								<text
+									style="margin-left: 10rpx; font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+								<text style="margin-left:8rpx;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+							</view>
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+								<view style="margin-left:5px;font-size: 0.8rem;">
+									{{item.servicePersonName}}
+								</view>
+							</view>
+							<view style="margin-top: 5px;display: flex;flex-direction: row;align-items: center;">
+								<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+								<text style="font-size: 0.8rem;">填报时间:</text>
+								<text style="margin-left:5px;font-size: 0.8rem;color:green">{{item.updateTime}}</text>
+							</view>
+							<view
+								style="height:22%;padding-top:4px;display:  flex;flex-direction: row;justify-content: flex-end;">
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="onToDetailClick(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="compose" size="18" color="coral" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.7rem">查看详情</text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uSection,
+			uGroup,
+			uPagination,
+		},
+		onLoad(option) {
+			this.getReportRecord();
+		},
+		data() {
+			return {
+				list: [],
+				title: '设备巡检填报信息',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getReportRecord()
+			},
+			getReportRecord() {
+				const that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				let postData = {};
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/my/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					if (res.data != null) {
+						if (res.data.records != null) {
+							that.list = res.data.records;
+						}
+						this.total = res.data.total;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onToDetailClick(id) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreportdetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+	
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+	
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 385 - 0
pages/equipment-inspection/myequipmentinspectionreportrtulist.vue

@@ -0,0 +1,385 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack" >
+		</uni-nav-bar>
+<!-- 		<u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uSection title="">
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchVal"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uSection>
+			<uSection title="">
+				<uList>
+					<uni-list-item v-for="item in list" :key="item.id">
+						<!-- 自定义 body -->
+						<template v-slot:body>
+							<view style="height: 100px;width: 100%;display: flex;flex-direction: column;">
+								<view
+									style="display: flex;flex-direction: row;width: 100%;justify-content: flex-start;">
+									<view
+										style="font-size: 1rem;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+										{{item.rtuName}}
+									</view>
+								</view>
+								<view style="margin-top: 10rpx;">
+									<text style="font-size: 0.9rem;color: gray;">{{item.rtuCode}}</text>
+								</view>
+								<view
+									style="margin-top: 10rpx;padding-left: 0rpx;padding-right: 0rpx;display: flex;flex-direction: row;justify-content: center;">
+									<view v-if="item.reportStatus == 0" style="width: 100%;">
+										<button style="background-color: lightblue;" type="default"
+											@click="openPage(item.rtuCode)">开始填报</button>
+									</view>
+									<view v-if="item.reportStatus == 1" style="width: 100%;">
+										<button type="default" @click="toPlanClose(item.id)">已提交</button>
+									</view>
+								</view>
+							</view>
+
+						</template>
+					</uni-list-item>
+				</uList>
+			</uSection>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+		},
+		onLoad(option) {
+			this.planId = option.id;
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				planId: 0,
+				orgId: '',
+				projectId: '',
+				list: [],
+				title: '测站巡检填报管理',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: ""
+			// });
+			//this.getProjectTree();
+			//this.getRtuList();
+		},
+
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getRtuList()
+			},
+			onnodeclick(node) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				console.log('1111111orgId:', this.orgId);
+				console.log('1111111projectId:', this.projectId);
+
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', e.detail.value);
+				this.searchVal = '';
+				this.pageCurrent = 1;
+				// this.orgId = e.detail.orgId;
+				// this.projectId = e.detail.projectId;
+
+				// 	if (e.detail.value.length > 0) {
+				// 		let ids = this.selectedTreeNode.split("-");
+				// 		this.orgId = ids[0];
+				// 		if (ids[1] === '0') {
+				// 			this.projectId = '';
+				// 		} else {
+				// 			this.projectId = ids[1];
+				// 		}
+				// console.log('1111111orgId:', this.orgId);
+				// console.log('1111111projectId:', this.projectId);
+
+
+				// 	} else {
+				// 		this.orgId = '';
+				// 		this.projectId = '';
+
+
+				// 	}
+
+				this.getRtuList();
+			},
+			search(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+
+				this.getRtuList();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				// uni.showToast({
+				// 	title: 'clear事件,清除值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			blur(res) {
+				// uni.showToast({
+				// 	title: 'blur事件,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+			},
+			focus(e) {
+				// uni.showToast({
+				// 	title: 'focus事件,输出值为:' + e.value,
+				// 	icon: 'none'
+				// })
+			},
+			cancel(res) {
+				// uni.showToast({
+				// 	title: '点击取消,输入值为:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.searchVal = '';
+				this.getRtuList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						console.log("ffffffff " + that.projectTree[0].orgId)
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+
+						//that.getRtuList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getRtuList(res) {
+				// uni.showToast({
+				// 	title: '搜索:' + res.value,
+				// 	icon: 'none'
+				// })
+				this.getRtuList();
+			},
+			getRtuList() {
+				var that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var postData = {};
+
+				postData['id'] = this.planId;
+				postData['orgId'] = this.orgId;
+				postData['projectId'] = this.projectId;
+
+				console.log(postData)
+
+				http.request({
+					url: '/galaxy-test/equipment/inspection/plan/my/rtu/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: postData,
+				}).then(res => {
+					console.log(res)
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			openPage(rtuCode) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreport?planId=' + this.planId +
+					'&rtuCode=' +
+					rtuCode;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toPlanClose(id) {
+
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 235 - 0
pages/equipment-inspection/todayequipmentinspectionreportlist.vue

@@ -0,0 +1,235 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack">
+		</uni-nav-bar>
+		<!-- <u-gap height="75px"></u-gap> -->
+		<view class="container">
+			<uni-list>
+				
+				<uListItem ellipsis="1" v-for="item in lastEquipmentInspectionList" :key="item.id"
+					:title="item.reportDesc" :note="item.createTime" clickable showArrow
+					@click="onEquipmentInspectionItemClick(item.id)">
+					<template v-slot:header>
+						<view>
+							<image class="slot-image" src="/static/images/user/c1.png" mode="widthFix"></image>
+						</view>
+					</template>
+				</uListItem>
+				
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+		},
+		onLoad(option) {
+			this.getLastEquipmentInspectionReport();
+		},
+		data() {
+			return {
+				list: [],
+				title: '今日巡检填报信息',
+				desc: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent=e.current;
+				this.getOrderList()
+			},
+			getLastEquipmentInspectionReport() {
+				const that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						if (res.data.records != null) {
+								
+							that.lastEquipmentInspectionList = res.data.records;
+						}
+						this.total=res.data.total;
+					
+					}
+			
+				}).catch(err => {
+					console.log(err)
+				})
+			
+			
+			},
+			onEquipmentInspectionItemClick(id) {
+				console.log(id)
+				var url = '/pages/equipment-inspection/equipmentinspectionreportdetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			
+			},
+
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 688 - 0
pages/home/adminhome.vue

@@ -0,0 +1,688 @@
+<template>
+	<view class="container">
+		<!-- 头部 start -->
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
+				:background="{ background: '#0BB9C8' }">
+				<view class="nav-wrap">
+					<!-- 				<picker mode="selector" :range="positionArr" range-key="name" @change="changePicker"
+						class="picker-box">
+						{{ position }}
+						<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
+					</picker> -->
+					<view style="width: 100%;height: auto;align-items: center;text-align: center;" v-if="!focus">
+						<text style="color: #ffffff; font-size: 20px;">运维系统</text>
+					</view>
+					<!-- 	<image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
+ -->
+					<!-- 		<view class="search-input" v-else>
+						<u-search height="50" placeholder="关键字" @blur="handleSearchBlur" :show-action="false"
+							v-model="keyword"></u-search>
+					</view> -->
+
+					<!-- 					<view class="tool">
+						<image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
+							@click="handleFocus" v-if="!focus"></image>
+						<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
+						<image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image>
+					</view> -->
+				</view>
+			</u-navbar>
+			<!-- 			<view class="head-bg"></view>
+			<swiper class="swiper-box" :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item v-for="(item, index) in bannerList" :key="index">
+					<navigator :url="item.url" hover-class="none" class="swiper-item">
+						<image :src="item.img" class="banner"></image>
+					</navigator>
+				</swiper-item>
+			</swiper> -->
+		</view>
+		<!-- 头部 end -->
+
+		<!-- 头部按钮 start -->
+		<view class="nav">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
+					<navigator :url="item.url" hover-class="none" class="nav-item" open-type="navigate">
+						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						<view class="nav-item-name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<!-- 头部按钮 end -->
+		<!-- 		<view class="video-box">
+			<view class="video-body">
+				<video style="width: 640rpx; height: 480rpx;" src="/static/video/test.mp4"></video>
+
+			</view>
+			<view class="video-title" style="margin-top: 5px;">
+				<view class="text">新闻视频提要:据报道....</view>
+			</view>
+
+		</view> -->
+
+		<!-- 公告 start -->
+		<view class="notice-box">
+			<image src="/static/images/home/notice.png" class="img" mode="widthFix"></image>
+			<view class="notice-info">
+				<navigator hover-class="none" class="notice-cell" v-for="(item, index) in noticeList" :key="index">
+					<!-- 			<image :src="item.img" class="icon" mode="widthFix"></image> -->
+					<view class="text">{{item.title}}</view>
+					<u-icon name="arrow-right" size="12" color="#C9C9C9"></u-icon>
+				</navigator>
+			</view>
+		</view>
+		<!-- 公告 end -->
+
+
+		<!-- 服务按钮 start -->
+		<!-- 		<view class="service-box">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index">
+					<navigator url="" hover-class="none" class="service-item">
+						<image :src="item.img" mode="widthFix" class="img"></image>
+						<view class="name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+				<u-grid-item bg-color="transparent" key="8">
+					<navigator url="/pages/service/service" hover-class="none" class="service-item">
+						<image src="/static/images/home/s8.png" mode="widthFix" class="img"></image>
+						<view class="name">更多</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view> -->
+		<!-- 服务按钮 end -->
+
+		<!-- 新闻模块 start -->
+		<view class="news">
+			<navigator hover-class="none" url="/pages/check-order/checkorderlist" class="cell">
+				<view class="ctitle">工单动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastCheckOrderList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.orderDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.updateTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+		<!-- 新闻模块 end -->
+
+		<view class="news">
+			<navigator hover-class="none" url="/pages/equipment-inspection/equipmentinspectionplanlist" class="cell">
+				<view class="ctitle">巡检动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastEquipmentInspectionList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.reportDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.createTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+	
+	</view>
+</template>
+
+<script>
+	
+	import {
+		fakePosition,
+		fakeBannerList,
+		fakeNavButton,
+		fakeServiceButton
+	} from "@/api/mock/home.js";
+	import http from '@/http/api.js';
+	export default {
+			components: {
+			
+			},
+		data() {
+			return {
+				position: '',
+				positionArr: [],
+				status: 'loadmore',
+				list: 15,
+				page: 0,
+				keyword: '',
+				focus: false,
+				bannerList: [],
+				noticeList: [],
+				warningList: [],
+				newsList: [{}, {}],
+				navButton: [],
+				serviceButton: [],
+				lastCheckOrderList: [],
+				lastEquipmentInspectionList: [],
+				role: {
+					'admin': '系统管理员',
+					'orgAdmin': '运维单位管理员',
+					'orgServicePerson': '运维单位技术员',
+				},
+				showHome: {
+					'admin': false,
+					'orgAdmin': false,
+					'orgServicePerson': false,
+				}
+			};
+		},
+		onLoad() {
+			if (this.userInfo.role_name === this.role['admin']) {
+				this.showHome.admin = true;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = false;
+				this.adminhome.onLoad();
+			} else if (this.userInfo.role_name === this.role['orgAdmin']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = true;
+				this.showHome.orgServicePerson = false;
+			} else if (this.userInfo.role_name === this.role['orgServicePerson']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = true;
+			} else {
+				this.$u.route({
+					url: '/pages/login/login-account'
+				})
+			}
+			// 后续将改为与后端联动
+			// 加载banner数据
+			fakePosition().then(data => {
+				this.position = data.position;
+				this.positionArr = data.positionArr;
+			});
+			// 加载banner数据
+			fakeBannerList().then(data => {
+				this.bannerList = data;
+			});
+			// 加载通知公告数据
+			// fakeNoticeList().then(data => {
+			// 	this.noticeList = data;
+			// });
+
+			// const noticeListTmp = [{
+			// 	id: '1',
+			// 	title: '2022年度巡检计划已经发布'
+			// }];
+
+			// this.noticeList = noticeListTmp;
+             this.getLastNotice();
+             this.getLastCheckOrder();
+			 this.getLastEquipmentInspectionReport();
+
+			// const lastCheckOrderListTmp = [{
+			// 	id: '1',
+			// 	processDesc: '河道 45222222维修工单创建',
+			// 	reportDate: '2022年8月20日 12时'
+			// }];
+
+			// this.lastCheckOrderList=lastCheckOrderListTmp;
+
+
+			// const lastEquipmentInspectionListTmp = [{
+			// 	id: '1',
+			// 	equipmentInspectionDesc: '测站河道 45222222 已经完成巡检填报',
+			// 	reportDate: '2022年8月20日 15时'
+			// }];
+
+			// this.lastEquipmentInspectionList=lastEquipmentInspectionListTmp;
+
+
+			// 加载顶部按钮数据
+			fakeNavButton().then(data => {
+				this.navButton = data;
+			});
+			// 加载服务按钮数据
+			fakeServiceButton().then(data => {
+				this.serviceButton = data;
+			});
+		},
+		onReachBottom() {
+			// 后续将改为与后端联动
+			if (this.page >= 3) return;
+			this.status = 'loading';
+			this.page = ++this.page;
+			setTimeout(() => {
+				this.list += 10;
+				if (this.page >= 3) this.status = 'nomore';
+				else this.status = 'loading';
+				this.newsList.push(...[{}, {}]);
+			}, 2000);
+		},
+		methods: {
+			getLastNotice(){
+				const that = this;
+				http.request({
+					url: '/galaxy-test/notice/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.noticeList = list;
+					}
+				
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastCheckOrder() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastCheckOrderList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastEquipmentInspectionReport() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastEquipmentInspectionList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			changePicker(e) {
+				console.log(this.pickerArr[e.detail.value].name);
+				this.position = this.pickerArr[e.detail.value].name;
+			},
+			handleFocus() {
+				this.focus = !this.focus;
+			},
+			handleSearchBlur() {
+				this.focus = false;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 0px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.nav-wrap {
+		width: 100%;
+		padding: 0 22rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.picker-box {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			font-size: 32rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #ffffff;
+
+			.arrow {
+				margin-left: 10rpx;
+			}
+		}
+
+		.rider {
+			flex-shrink: 0;
+			width: 131rpx;
+			height: auto;
+		}
+
+		.search-input {
+			width: 300rpx;
+			height: 50rpx;
+		}
+
+		.tool {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.icon {
+				height: auto;
+			}
+
+			.search-icon {
+				width: 40rpx;
+				margin-right: 34rpx;
+			}
+
+			.message-icon {
+				width: 32rpx;
+				margin-right: 27rpx;
+			}
+
+			.qr-icon {
+				width: 37rpx;
+			}
+		}
+	}
+
+	.swiper-box {
+		margin: 50rpx auto 0;
+		width: 710rpx;
+		height: 253rpx;
+
+		.swiper-item {
+			width: 100%;
+			height: 100%;
+
+			.banner {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.nav {
+		margin: 0rpx 0;
+		box-sizing: border-box;
+		padding: 0 10rpx;
+
+		&-item {
+			width: 100%;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+			height: 130rpx;
+
+			&-img {
+				width: 80rpx;
+				height: 80rpx;
+			}
+
+			&-name {
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #585b61;
+			}
+		}
+	}
+
+
+	.video-box {
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		width: 100%;
+
+		.video-body {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+		}
+
+		.video-title {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+
+			.text {
+				margin-top: 10rpx;
+				margin-bottom: 10rpx;
+				width: 640rpx;
+				// flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.notice-box {
+		display: flex;
+		align-items: center;
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 0 20rpx;
+		padding: 30rpx 20rpx;
+
+		.img {
+			width: 75rpx;
+			height: auto;
+			margin-right: 36rpx;
+			margin-left: 10rpx;
+		}
+
+		.notice-info {
+			flex: 1;
+
+			.notice-cell:first-of-type {
+				margin-bottom: 15rpx;
+			}
+		}
+
+		.notice-cell {
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.icon {
+				width: 63rpx;
+				margin-right: 18rpx;
+			}
+
+			.text {
+				flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.service-box {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 0;
+		padding: 0rpx 20rpx;
+
+		.service-item {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.img {
+				width: 70rpx;
+				height: auto;
+			}
+		}
+	}
+
+	.news {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 60rpx;
+		padding: 30rpx 20rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.ctitle {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #585b61;
+			}
+
+			.more {
+				display: flex;
+				align-items: center;
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a6abb5;
+			}
+		}
+
+		.news-list {
+			margin-top: 30rpx;
+
+			.news-item {
+				&:not(:last-of-type) {
+					padding: 0 0 30rpx;
+					margin-bottom: 30rpx;
+					border-bottom: 1px solid #eeeeee;
+				}
+
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.left {
+					flex: 1;
+					height: 160rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+
+					.info {
+						min-width: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #585b61;
+						line-height: 36rpx;
+					}
+
+					.date {
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 21rpx;
+							height: 21rpx;
+							margin-right: 9rpx;
+						}
+
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #a6abb5;
+					}
+				}
+
+				.img {
+					flex-shrink: 0;
+					width: 252rpx;
+					height: 160rpx;
+					border-radius: 20rpx;
+					background-color: #82848a;
+				}
+			}
+		}
+	}
+</style>

+ 22 - 0
pages/home/building.vue

@@ -0,0 +1,22 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-size="35" :background="{ background: '#fff' }" title="提示页" title-color="#000">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">正在开发中</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				data: {}
+			};
+		},
+	}
+</script>

+ 1206 - 0
pages/home/home.vue

@@ -0,0 +1,1206 @@
+<template>
+	<view class="container">
+		<uni-nav-bar :fixed="true" backgroundColor="#3F9EFF" statusBar="false" height="75px">
+			<block slot="left">
+				<view style="display: flex;flex-direction: column;justify-content: center;">
+					<image src="/static/images/nav_logo.png" class="logo" mode="widthFix"></image>
+				</view>
+			</block>
+			<view style="display: flex;flex:1,justify-content: center;align-items: center;">
+				<text style="color: #ffffff; font-size: 1rem;font-family: Microsoft YaHei;">山洪灾害监测预警平台运维系统</text>
+			</view>
+			<block slot="right">
+				<view style="margin-right:20rpx">
+					<uni-badge class="uni-badge-left-margin" absolute="rightTop" :is-dot="noticeDot" :text="noticeValue"
+						size="small">
+						<uIcons class="input-uni-icon" type="notification" size="24" color="#FFFFFF"
+							@click="onNoticeMoreClick" />
+					</uni-badge>
+				</view>
+			</block>
+		</uni-nav-bar>
+		<!-- 头部按钮 start -->
+		<view class="nav">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
+					<navigator v-if="item.badge" :url="item.url" hover-class="none" class="nav-item"
+						open-type="navigate">
+						<uni-badge class="uni-badge-left-margin" absolute="rightTop" :text="item.value" size="small">
+							<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						</uni-badge>
+						<view style="font-size: 0.7rem;font-weight: bold;">{{ item.name }}</view>
+					</navigator>
+					<navigator v-else :url="item.url" hover-class="none" class="nav-item" open-type="navigate">
+						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						<view style="font-size: 0.7rem;font-weight: bold;">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<!-- 头部按钮 end -->
+		<view v-if="showHome.admin">
+			<uSection style="margin-bottom: 0px;" title="实时统计" type="line">
+				<uGroup>
+					<uni-grid :column="4" :highlight="true">
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text class="text" style="font-size: 1rem;color: orangered;">{{realData.rtus}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">测站总数</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text class="text"
+									style="font-size: 1rem;color: orangered;">{{realData.warningRtus}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">预警设备</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text class="text"
+									style="font-size: 1rem;color: orangered;">{{realData.unconfirmOrderCount}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">未接工单</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text class="text"
+									style="font-size: 1rem;color: orangered;">{{realData.equipmentInspectionPercent}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">已完成巡检</text>
+							</view>
+						</uni-grid-item>
+					</uni-grid>
+				</uGroup>
+			</uSection>
+			<uSection style="margin-bottom: 0px;" title="预警统计" type="line">
+				<uGroup>
+					<uni-table ref="rtu_table" border stripe type="" emptyText="暂无更多数据">
+						<uni-tr>
+							<uni-th width="150" align="center">
+								<view style="text-align: center;color: black;">机构名称</view>
+							</uni-th>
+							<uni-th align="center">
+								<view style="text-align: center;color: black;">测站数量</view>
+							</uni-th>
+							<uni-th align="center">
+								<view style="text-align: center;color: black;">预警数量</view>
+							</uni-th>
+						</uni-tr>
+						<uni-tr v-for="item in rtuStatisticsList" :key="item.id">
+							<uni-td align="center">
+								<view style="text-align: center;">{{ item.orgName }}</view>
+							</uni-td>
+							<uni-td align="center">
+								<view style="text-align: center;">{{ item.rtuCount }}</view>
+							</uni-td>
+							<uni-td align="center">
+								<view style="text-align: center;">{{ item.warningRtuCount }}</view>
+							</uni-td>
+						</uni-tr>
+					</uni-table>
+				</uGroup>
+			</uSection>
+		</view>
+		<view v-if="showHome.orgAdmin">
+			<uSection title="实时统计" type="line">
+				<uGroup>
+					<uni-grid :column="4" :highlight="true">
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text style="font-size: 1rem;color: orangered;">{{realData.rtus}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">测站总数</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text style="font-size: 1rem;color: orangered;">{{realData.warningRtus}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">预警设备</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text style="font-size: 1rem;color: orangered;">{{realData.unconfirmOrderCount}}</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">未接工单</text>
+							</view>
+						</uni-grid-item>
+						<uni-grid-item>
+							<view class="grid-item-box" style="background-color: #fff;">
+								<text
+									style="font-size: 1rem;color: orangered;">{{realData.equipmentInspectionPercent}}%</text>
+								<text style="font-size: 0.7rem;font-weight: bold;">已完成巡检</text>
+							</view>
+						</uni-grid-item>
+
+					</uni-grid>
+				</uGroup>
+			</uSection>
+			<uSection style="margin-bottom: 0px;" title="今日工单动态" titleFontSize="0.8rem" type="line">
+				<uGroup>
+					<uni-list>
+						<uni-list-item v-for="item in todayOrderProcessList" :key="item.id" showArrow clickable
+							@click="toOrderProcessDetail(item.id)">
+							<template v-slot:body>
+								<view style="display: flex;flex-direction: column;width:100%;">
+									<view
+										style="display:flex;flex-direction: row;justify-content: start;align-items: center;">
+										<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+											src="/static/images/logo_app.png" mode="widthFix">
+										</image>
+										<view style="margin-left:5px;">
+											<text style="font-size:1rem;font-weight: bold;">{{item.rtuName}}</text>
+										</view>
+										<view style="margin-left:5px;">
+											<text style="font-size:0.9rem;">[{{item.rtuCode}}]</text>
+										</view>
+									</view>
+									<view>
+										<uIcons class="input-uni-icon" type="loop" size="18" color="skyblue" />
+										<text style="font-size:0.8rem;padding-left: 5px;">状态:</text>
+										<text
+											style="font-size:0.8rem;padding-left: 5px;">{{item.orderStatusName}}</text>
+									</view>
+
+									<view>
+										<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+										<text
+											style="font-size:0.8rem;padding-left: 5px;">{{item.orderProcessUserName}}</text>
+										<text style="font-size:0.8rem;padding-left: 5px;"></text>
+										<text style="font-size:0.8rem;padding-left: 5px;">{{item.updateTime}}</text>
+									</view>
+									<view style="display:flex;flex-direction:row;align-items: center;">
+										<uIcons class="input-uni-icon" type="compose" size="18" color="skyblue" />
+										<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.processDesc}}</text>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</uGroup>
+			</uSection>
+			<uSection style="margin-bottom: 0px;" title="今日巡检动态" titleFontSize="0.8rem" type="line">
+				<uGroup>
+					<uni-list>
+						<uni-list-item v-for="item in todayEquipmentInspectionList" :key="item.id" showArrow clickable
+							@click="onEquipmentInspectionItemClick(item.id)">
+							<template v-slot:body>
+								<view style="display: flex;flex-direction: column;width:100%;">
+									<view
+										style="display:flex;flex-direction: row;justify-content: start;align-items: center;">
+										<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+											src="/static/images/home/n3.png" mode="widthFix">
+										</image>
+										<view style="margin-left:5px;">
+											<text style="font-size:1rem;font-weight: bold;">{{item.rtuName}}</text>
+										</view>
+										<view style="margin-left:5px;">
+											<text style="font-size:0.9rem;">[{{item.rtuCode}}]</text>
+										</view>
+									</view>
+									<view>
+										<uIcons class="input-uni-icon" type="auth" size="18" color="skyblue" />
+										<text
+											style="font-size:0.8rem;padding-left: 5px;">{{item.servicePersonName}}</text>
+										<text style="font-size:0.8rem;padding-left: 5px;">时间:</text>
+										<text style="font-size:0.8rem;padding-left: 5px;">{{item.createTime}}</text>
+									</view>
+									<view style="display:flex;flex-direction:row;align-items: center;">
+										<uIcons class="input-uni-icon" type="compose" size="18" color="skyblue" />
+										<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.reportDesc}}</text>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</uGroup>
+			</uSection>
+		</view>
+		<view v-if="showHome.orgServicePerson">
+			<uSection style="margin-bottom: 10px;" title="未接工单" titleFontSize="1rem" type="line">
+				<template v-slot:right>
+					<view style="margin-right:20px;">
+						<text style="font-size:0.8rem;color:grey;">工单数量:</text>
+						<text style="font-size:0.8rem;color:orangered;font-weight: bold;">{{unconfirmOrderCount}}</text>
+					</view>
+				</template>
+				<uni-list>
+					<uni-list-item v-for="item in unconfirmOrderList" :key="item.id">
+						<template v-slot:body>
+							<view style="display: flex;flex-direction: column;width:100%;">
+								<view
+									style="display:flex;flex-direction: row;justify-content: start;align-items: center;">
+									<view
+										style="width:74%;display:flex;flex-direction: row;justify-content: start;align-items: center;">
+										<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+											src="/static/images/logo_app.png" mode="widthFix">
+										</image>
+										<view style="margin-left:5px;">
+											<text style="font-size:1rem;font-weight: bold;">{{item.rtuName}}</text>
+										</view>
+										<view style="margin-left:5px;">
+											<text style="font-size:0.9rem;">[{{item.rtuCode}}]</text>
+										</view>
+									</view>
+									<view style="width:26%;display:flex;flex-direction: row;justify-content: flex-end;">
+										<view
+											style="display:flex;flex-direction: row;justify-content: center;align-items: center; width: 100px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+											@click="onOrderItemClick(item.id)">
+											<uIcons class="input-uni-icon" type="compose" size="18" color="coral" />
+											<view style="padding-left:5px;">
+												<text style="color:black;font-size:0.7rem">接单确认</text>
+											</view>
+										</view>
+									</view>
+								</view>
+								<view>
+									<uIcons class="input-uni-icon" type="notification" size="18" color="skyblue" />
+									<text style="font-size:0.8rem;padding-left: 5px;">报单时间:</text>
+									<text style="font-size:0.8rem;padding-left: 5px;">{{item.createTime}}</text>
+								</view>
+								<view style="display:flex;flex-direction:row;align-items: center;">
+									<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+									</image>
+									<text style="font-size:0.8rem;padding-left: 10rpx;">{{item.orderDesc}}</text>
+								</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uni-list>
+			</uSection>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		fakePosition,
+		fakeBannerList,
+		fakeNavButton,
+		fakeServiceButton
+	} from "@/api/mock/home.js";
+	import http from '@/http/api.js';
+	import uBadge from '@/uni_modules/uni-badge/components/uni-badge/uni-badge.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import uTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	export default {
+		components: {
+			uGroup,
+			uSection,
+			uNavBar,
+			uDataPicker,
+			pageNav,
+			uList,
+			uListItem,
+			uTable,
+			uBreadcrumb,
+			uPagination,
+			uIcons,
+		},
+		data() {
+			return {
+				timer: null,
+				noticeDot: false,
+				noticeValue: 0,
+				value: 1,
+				customStyle: {
+					backgroundColor: '#62ed0d',
+					color: '#fff'
+				},
+				unconfirmOrderCount: '0',
+				position: '',
+				positionArr: [],
+				status: 'loadmore',
+				list: 15,
+				page: 0,
+				keyword: '',
+				focus: false,
+				bannerList: [],
+				noticeList: [],
+				warningList: [],
+				navButton: [],
+				unconfirmOrderList: [],
+				todayEquipmentInspectionList: [],
+				todayOrderProcessList: [],
+				rtuStatisticsList: [],
+				role: {
+					'admin': 'admin',
+					'orgAdmin': 'org_admin',
+					'orgServicePerson': 'org_servcie_person',
+				},
+				showHome: {
+					'admin': false,
+					'orgAdmin': false,
+					'orgServicePerson': false,
+				},
+				realData: {
+					rtuCount: 0,
+					warningRtuCount: 0,
+					orderDelayProcess: 0,
+					equipmentinspectionRtu: 0,
+				},
+				adminNavBtnlist: [{
+						name: '实时数据',
+						img: '/static/images/manage/site.png',
+						url: '/pages/rtu-manage/rtudata',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '工单查询',
+						img: '/static/images/home/order_manage.png',
+						url: '/pages/check-order/admincheckorderlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '巡检查询',
+						img: '/static/images/home/my_inspection.png',
+						url: '/pages/equipment-inspection/equipmentinspectionreportlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '统计报表',
+						img: '/static/images/manage/statistics.png',
+						url: '/pages/report-forms/adminreport',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '通讯录',
+						img: '/static/images/manage/g3.png',
+						url: '/pages/report-forms/contact',
+						badge: false,
+						value: 0,
+					}
+				],
+				orgAdminNavBtnlist: [{
+						name: '我的工单',
+						img: '/static/images/home/my_order.png',
+						url: '/pages/check-order/mycheckorderlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '工单查询',
+						img: '/static/images/home/order_manage.png',
+						url: '/pages/check-order/checkorderlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '巡检任务',
+						img: '/static/images/home/inspection.png',
+						url: '/pages/equipment-inspection/equipmentinspectionlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '巡检查询',
+						img: '/static/images/home/my_inspection.png',
+						url: '/pages/equipment-inspection/equipmentinspectionreportlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '统计报表',
+						img: '/static/images/manage/statistics.png',
+						url: '/pages/report-forms/report',
+						badge: false,
+						value: 0,
+					}
+				],
+				orgServicePersonNavBtnlist: [{
+						name: '我的工单',
+						img: '/static/images/home/my_order.png',
+						url: '/pages/check-order/mycheckorderlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '工单查询',
+						img: '/static/images/home/order_manage.png',
+						url: '/pages/check-order/checkorderlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '巡检任务',
+						img: '/static/images/home/inspection.png',
+						url: '/pages/equipment-inspection/equipmentinspectionlist',
+						badge: false,
+						value: 0,
+					},
+					{
+						name: '巡检历史',
+						img: '/static/images/home/my_inspection.png',
+						url: '/pages/equipment-inspection/myequipmentinspectionreportlist',
+						badge: false,
+						value: 0,
+					},
+				],
+			};
+		},
+		onLoad() {
+			this.getHomeInfo();
+			if (this.userInfo.role_name === this.role['admin']) {
+				this.showHome.admin = true;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = false;
+				this.navButton = this.adminNavBtnlist;
+				this.getRtuStatisticsList();
+			} else if (this.userInfo.role_name === this.role['orgAdmin']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = true;
+				this.showHome.orgServicePerson = false;
+				this.navButton = this.orgAdminNavBtnlist;
+				this.getTodayOrderProcessList();
+				this.getTodayEquipmentInspectionReport();
+			} else if (this.userInfo.role_name === this.role['orgServicePerson']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = true;
+				this.navButton = this.orgServicePersonNavBtnlist;
+				this.getUnconfirmOrderList();
+			} else {
+				this.$u.route({
+					url: '/pages/login/login-account'
+				})
+			}
+
+			this.timer = setInterval(() => {
+				//TODO 
+				this.getHomeInfo();
+				if (this.userInfo.role_name === this.role['admin']) {
+					this.getRtuStatisticsList();
+				} else if (this.userInfo.role_name === this.role['orgAdmin']) {
+					this.getTodayOrderProcessList();
+					this.getTodayEquipmentInspectionReport();
+				} else if (this.userInfo.role_name === this.role['orgServicePerson']) {
+					this.getUnconfirmOrderList();
+				}
+			}, 5000);
+		},
+		onUnload() {
+			if (this.timer != null) {
+				clearTimeout(this.timer);
+			}
+		},
+		onShow() {
+			this.getHomeInfo();
+			if (this.userInfo.role_name === this.role['admin']) {
+				this.showHome.admin = true;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = false;
+				this.navButton = this.adminNavBtnlist;
+				this.getRtuStatisticsList();
+			} else if (this.userInfo.role_name === this.role['orgAdmin']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = true;
+				this.showHome.orgServicePerson = false;
+				this.navButton = this.orgAdminNavBtnlist;
+				this.getTodayOrderProcessList();
+				this.getTodayEquipmentInspectionReport();
+			} else if (this.userInfo.role_name === this.role['orgServicePerson']) {
+				this.showHome.admin = false;
+				this.showHome.orgAdmin = false;
+				this.showHome.orgServicePerson = true;
+				this.navButton = this.orgServicePersonNavBtnlist;
+				this.getUnconfirmOrderList();
+			} else {
+				this.$u.route({
+					url: '/pages/login/login-account'
+				})
+			}
+
+
+		},
+		onHide() {
+			// if (this.timer != null) {
+			// 	clearTimeout(this.timer);
+			// }
+		},
+		onReachBottom() {
+			// 后续将改为与后端联动
+			// if (this.page >= 3) return;
+			// this.status = 'loading';
+			// this.page = ++this.page;
+			// setTimeout(() => {
+			// 	this.list += 10;
+			// 	if (this.page >= 3) this.status = 'nomore';
+			// 	else this.status = 'loading';
+			// 	this.newsList.push(...[{}, {}]);
+			// }, 2000);
+		},
+		methods: {
+			toOrderProcessDetail(id) {
+				console.log("opne record ", id)
+				var url = '/pages/check-order/orderprocessreportdetail?processId=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			onNoticeMoreClick() {
+				uni.navigateTo({
+					url: '/pages/news/noticelist'
+				})
+			},
+			onNoticeItemClick(id) {
+				console.log('执行click事件', id)
+				uni.navigateTo({
+					url: '/pages/news/detail?id=' + id
+				})
+			},
+			onOrderMoreClick() {
+				uni.navigateTo({
+					url: '/pages/check-order/todaycheckorderlist'
+				})
+			},
+			onOrderItemClick(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+			onEquipmentinspectionMoreClick() {
+				uni.navigateTo({
+					url: '/pages/equipment-inspection/todayequipmentinspectionreportlist'
+				})
+			},
+			onEquipmentInspectionItemClick(id) {
+				var url = '/pages/equipment-inspection/equipmentinspectionreportdetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			getHomeInfo() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/real/data/home/info',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						that.realData = res.data;
+						if (that.userInfo.role_name === that.role['orgServicePerson']) {
+							if (that.realData.myOrderCount > 0) {
+								that.navButton[0].badge = true;
+								that.navButton[0].value = that.realData.myOrderCount;
+							} else {
+								that.navButton[0].badge = false;
+							}
+							if (that.realData.equipmentInspectionCount > 0) {
+								that.navButton[2].badge = true;
+								that.navButton[2].value = that.realData.equipmentInspectionCount;
+							} else {
+								that.navButton[2].badge = false;
+							}
+						} else if (that.userInfo.role_name === that.role['orgAdmin']) {
+							if (that.realData.myOrderCount > 0) {
+								that.navButton[0].badge = true;
+								that.navButton[0].value = that.realData.myOrderCount;
+							} else {
+								that.navButton[0].badge = false;
+							}
+							if (that.realData.equipmentInspectionCount > 0) {
+								that.navButton[2].badge = true;
+								that.navButton[2].value = that.realData.equipmentInspectionCount;
+							} else {
+								that.navButton[2].badge = false;
+							}
+						} else if (that.userInfo.role_name === that.role['admin']) {
+
+						}
+						that.noticeDot = res.data.hasNewNotice;
+						that.noticeValue = res.data.newNoticeCount;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastNotice() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/notice/last/list',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.noticeList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getRtuStatisticsList() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/base/statistics',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						that.rtuStatisticsList = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getUnconfirmOrderList() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/unconfirm/list',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						that.unconfirmOrderList = res.data;
+						that.unconfirmOrderCount = "" + res.data.length;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getTodayOrderProcessList() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/process/today/list',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						that.todayOrderProcessList = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getTodayEquipmentInspectionReport() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/today/list',
+					method: 'GET'
+				}).then(res => {
+					if (res.data != null) {
+						that.todayEquipmentInspectionList = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			changePicker(e) {
+				console.log(this.pickerArr[e.detail.value].name);
+				this.position = this.pickerArr[e.detail.value].name;
+			},
+			handleFocus() {
+				this.focus = !this.focus;
+			},
+			handleSearchBlur() {
+				this.focus = false;
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	$nav-height: 75px;
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.uni-badge-left-margin {
+		margin-left: 0px;
+	}
+
+	.uni-badge-absolute {
+		margin-left: 40px;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.nav-item-name {
+		font-size: 0.9rem;
+		font-weight: bold;
+	}
+
+	.logo {
+		flex-shrink: 0;
+		width: 100rpx;
+		height: auto;
+	}
+
+	.nav-title {
+		height: $nav-height;
+	}
+
+	.nav-title-left {
+		/* #ifndef APP-PLUS-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: flex-start;
+		// width: 160rpx;
+		margin-left: 4px;
+	}
+
+	.nav-title-box {
+		/* #ifndef APP-PLUS-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		// width: 500rpx;
+		flex: 1;
+		background-color: #f8f8f8;
+		height: $nav-height;
+		border-radius: 15px;
+		padding: 0 15px;
+		flex-wrap: nowrap;
+		margin: 7px 0;
+		line-height: $nav-height;
+	}
+
+	.input-view {
+		/* #ifndef APP-PLUS-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		// width: 500rpx;
+		flex: 1;
+		// background-color: #f8f8f8;
+		// height: $nav-height;
+		// border-radius: 15px;
+		// padding: 0 15px;
+		flex-wrap: nowrap;
+		// margin: 7px 0;
+		// line-height: $nav-height;
+	}
+
+	.grid-item-box {
+		flex: 1;
+		// position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		padding: 15px 0;
+	}
+
+	.grid-item-box-row {
+		flex: 1;
+		// position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		padding: 15px 0;
+	}
+
+	.grid-dot {
+		position: absolute;
+		top: 5px;
+		right: 15px;
+	}
+
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 75px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.nav-wrap {
+		width: 100%;
+		padding: 0 22rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.picker-box {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			font-size: 32rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #ffffff;
+
+			.arrow {
+				margin-left: 10rpx;
+			}
+		}
+
+		.logo {
+			flex-shrink: 0;
+			width: 100rpx;
+			height: auto;
+		}
+
+		.search-input {
+			width: 300rpx;
+			height: 50rpx;
+		}
+
+		.tool {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.icon {
+				height: auto;
+			}
+
+			.search-icon {
+				width: 40rpx;
+				margin-right: 34rpx;
+			}
+
+			.message-icon {
+				width: 32rpx;
+				margin-right: 27rpx;
+			}
+
+			.qr-icon {
+				width: 37rpx;
+			}
+		}
+	}
+
+	.swiper-box {
+		margin: 50rpx auto 0;
+		width: 710rpx;
+		height: 253rpx;
+
+		.swiper-item {
+			width: 100%;
+			height: 100%;
+
+			.banner {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.nav {
+		margin: 0rpx 0;
+		box-sizing: border-box;
+		padding: 0 10rpx;
+
+
+		&-item {
+			width: 100%;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+			height: 130rpx;
+
+			&-img {
+				width: 80rpx;
+				height: 80rpx;
+			}
+
+			&-name {
+				font-size: 0.7rem;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #585b61;
+			}
+		}
+	}
+
+
+	.video-box {
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		width: 100%;
+
+		.video-body {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+		}
+
+		.video-title {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+
+			.text {
+				margin-top: 10rpx;
+				margin-bottom: 10rpx;
+				width: 640rpx;
+				// flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.notice-box {
+		display: flex;
+		align-items: center;
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 0 20rpx;
+		padding: 30rpx 20rpx;
+
+		.img {
+			width: 75rpx;
+			height: auto;
+			margin-right: 36rpx;
+			margin-left: 10rpx;
+		}
+
+		.notice-info {
+			flex: 1;
+
+			.notice-cell:first-of-type {
+				margin-bottom: 15rpx;
+			}
+		}
+
+		.notice-cell {
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.icon {
+				width: 63rpx;
+				margin-right: 18rpx;
+			}
+
+			.text {
+				flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.service-box {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 0;
+		padding: 0rpx 20rpx;
+
+		.service-item {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.img {
+				width: 70rpx;
+				height: auto;
+			}
+		}
+	}
+
+
+
+	.more {
+		display: flex;
+		align-items: center;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #a6abb5;
+	}
+
+	.orders {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 60rpx;
+		padding: 30rpx 20rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.ctitle {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #585b61;
+			}
+
+			.more {
+				display: flex;
+				align-items: center;
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a6abb5;
+			}
+		}
+
+		.orders-list {
+			margin-top: 30rpx;
+
+			.orders-item {
+				&:not(:last-of-type) {
+					padding: 0 0 30rpx;
+					margin-bottom: 30rpx;
+					border-bottom: 1px solid #eeeeee;
+				}
+
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.left {
+					flex: 1;
+					height: 160rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+
+					.info {
+						min-width: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #585b61;
+						line-height: 36rpx;
+					}
+
+					.date {
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 21rpx;
+							height: 21rpx;
+							margin-right: 9rpx;
+						}
+
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #a6abb5;
+					}
+				}
+
+				// .img {
+				// 	flex-shrink: 0;
+				// 	width: 252rpx;
+				// 	height: 160rpx;
+				// 	border-radius: 20rpx;
+				// 	background-color: #82848a;
+				// }
+			}
+		}
+
+
+	}
+</style>

+ 661 - 0
pages/home/orgadminhome.vue

@@ -0,0 +1,661 @@
+<template>
+	<view class="container">
+		<!-- 头部 start -->
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
+				:background="{ background: '#0BB9C8' }">
+				<view class="nav-wrap">
+					<!-- 				<picker mode="selector" :range="positionArr" range-key="name" @change="changePicker"
+						class="picker-box">
+						{{ position }}
+						<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
+					</picker> -->
+					<view style="width: 100%;height: auto;align-items: center;text-align: center;" v-if="!focus">
+						<text style="color: #ffffff; font-size: 20px;">运维系统</text>
+					</view>
+					<!-- 	<image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
+ -->
+					<!-- 		<view class="search-input" v-else>
+						<u-search height="50" placeholder="关键字" @blur="handleSearchBlur" :show-action="false"
+							v-model="keyword"></u-search>
+					</view> -->
+
+					<!-- 					<view class="tool">
+						<image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
+							@click="handleFocus" v-if="!focus"></image>
+						<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
+						<image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image>
+					</view> -->
+				</view>
+			</u-navbar>
+			<!-- 			<view class="head-bg"></view>
+			<swiper class="swiper-box" :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item v-for="(item, index) in bannerList" :key="index">
+					<navigator :url="item.url" hover-class="none" class="swiper-item">
+						<image :src="item.img" class="banner"></image>
+					</navigator>
+				</swiper-item>
+			</swiper> -->
+		</view>
+		<!-- 头部 end -->
+
+		<!-- 头部按钮 start -->
+		<view class="nav">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
+					<navigator :url="item.url" hover-class="none" class="nav-item" open-type="navigate">
+						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						<view class="nav-item-name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<!-- 头部按钮 end -->
+		<!-- 		<view class="video-box">
+			<view class="video-body">
+				<video style="width: 640rpx; height: 480rpx;" src="/static/video/test.mp4"></video>
+
+			</view>
+			<view class="video-title" style="margin-top: 5px;">
+				<view class="text">新闻视频提要:据报道....</view>
+			</view>
+
+		</view> -->
+
+		<!-- 公告 start -->
+		<view class="notice-box">
+			<image src="/static/images/home/notice.png" class="img" mode="widthFix"></image>
+			<view class="notice-info">
+				<navigator hover-class="none" class="notice-cell" v-for="(item, index) in noticeList" :key="index">
+					<!-- 			<image :src="item.img" class="icon" mode="widthFix"></image> -->
+					<view class="text">{{item.title}}</view>
+					<u-icon name="arrow-right" size="12" color="#C9C9C9"></u-icon>
+				</navigator>
+			</view>
+		</view>
+		<!-- 公告 end -->
+
+
+		<!-- 服务按钮 start -->
+		<!-- 		<view class="service-box">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index">
+					<navigator url="" hover-class="none" class="service-item">
+						<image :src="item.img" mode="widthFix" class="img"></image>
+						<view class="name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+				<u-grid-item bg-color="transparent" key="8">
+					<navigator url="/pages/service/service" hover-class="none" class="service-item">
+						<image src="/static/images/home/s8.png" mode="widthFix" class="img"></image>
+						<view class="name">更多</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view> -->
+		<!-- 服务按钮 end -->
+
+		<!-- 新闻模块 start -->
+		<view class="news">
+			<navigator hover-class="none" url="/pages/check-order/checkorderlist" class="cell">
+				<view class="ctitle">工单动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastCheckOrderList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.orderDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.updateTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+		<!-- 新闻模块 end -->
+
+		<view class="news">
+			<navigator hover-class="none" url="/pages/equipment-inspection/equipmentinspectionplanlist" class="cell">
+				<view class="ctitle">巡检动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastEquipmentInspectionList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.reportDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.createTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+	
+	</view>
+</template>
+
+<script>
+
+	import {
+		fakePosition,
+		fakeBannerList,
+		fakeNavButton,
+		fakeServiceButton
+	} from "@/api/mock/home.js";
+	import http from '@/http/api.js';
+	export default {
+			components: {
+		
+			},
+		data() {
+			return {
+				position: '',
+				positionArr: [],
+				status: 'loadmore',
+				list: 15,
+				page: 0,
+				keyword: '',
+				focus: false,
+				bannerList: [],
+				noticeList: [],
+				warningList: [],
+				newsList: [{}, {}],
+				navButton: [],
+				serviceButton: [],
+				lastCheckOrderList: [],
+				lastEquipmentInspectionList: [],
+			};
+		},
+		onLoad() {
+
+			// 后续将改为与后端联动
+			// 加载banner数据
+			fakePosition().then(data => {
+				this.position = data.position;
+				this.positionArr = data.positionArr;
+			});
+			// 加载banner数据
+			fakeBannerList().then(data => {
+				this.bannerList = data;
+			});
+			// 加载通知公告数据
+			// fakeNoticeList().then(data => {
+			// 	this.noticeList = data;
+			// });
+
+			// const noticeListTmp = [{
+			// 	id: '1',
+			// 	title: '2022年度巡检计划已经发布'
+			// }];
+
+			// this.noticeList = noticeListTmp;
+             this.getLastNotice();
+             this.getLastCheckOrder();
+			 this.getLastEquipmentInspectionReport();
+
+			// const lastCheckOrderListTmp = [{
+			// 	id: '1',
+			// 	processDesc: '河道 45222222维修工单创建',
+			// 	reportDate: '2022年8月20日 12时'
+			// }];
+
+			// this.lastCheckOrderList=lastCheckOrderListTmp;
+
+
+			// const lastEquipmentInspectionListTmp = [{
+			// 	id: '1',
+			// 	equipmentInspectionDesc: '测站河道 45222222 已经完成巡检填报',
+			// 	reportDate: '2022年8月20日 15时'
+			// }];
+
+			// this.lastEquipmentInspectionList=lastEquipmentInspectionListTmp;
+
+
+			// 加载顶部按钮数据
+			fakeNavButton().then(data => {
+				this.navButton = data;
+			});
+			// 加载服务按钮数据
+			fakeServiceButton().then(data => {
+				this.serviceButton = data;
+			});
+		},
+		onReachBottom() {
+			// 后续将改为与后端联动
+			if (this.page >= 3) return;
+			this.status = 'loading';
+			this.page = ++this.page;
+			setTimeout(() => {
+				this.list += 10;
+				if (this.page >= 3) this.status = 'nomore';
+				else this.status = 'loading';
+				this.newsList.push(...[{}, {}]);
+			}, 2000);
+		},
+		methods: {
+			getLastNotice(){
+				const that = this;
+				http.request({
+					url: '/galaxy-test/notice/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.noticeList = list;
+					}
+				
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastCheckOrder() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastCheckOrderList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastEquipmentInspectionReport() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastEquipmentInspectionList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			changePicker(e) {
+				console.log(this.pickerArr[e.detail.value].name);
+				this.position = this.pickerArr[e.detail.value].name;
+			},
+			handleFocus() {
+				this.focus = !this.focus;
+			},
+			handleSearchBlur() {
+				this.focus = false;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 0px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.nav-wrap {
+		width: 100%;
+		padding: 0 22rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.picker-box {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			font-size: 32rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #ffffff;
+
+			.arrow {
+				margin-left: 10rpx;
+			}
+		}
+
+		.rider {
+			flex-shrink: 0;
+			width: 131rpx;
+			height: auto;
+		}
+
+		.search-input {
+			width: 300rpx;
+			height: 50rpx;
+		}
+
+		.tool {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.icon {
+				height: auto;
+			}
+
+			.search-icon {
+				width: 40rpx;
+				margin-right: 34rpx;
+			}
+
+			.message-icon {
+				width: 32rpx;
+				margin-right: 27rpx;
+			}
+
+			.qr-icon {
+				width: 37rpx;
+			}
+		}
+	}
+
+	.swiper-box {
+		margin: 50rpx auto 0;
+		width: 710rpx;
+		height: 253rpx;
+
+		.swiper-item {
+			width: 100%;
+			height: 100%;
+
+			.banner {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.nav {
+		margin: 0rpx 0;
+		box-sizing: border-box;
+		padding: 0 10rpx;
+
+		&-item {
+			width: 100%;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+			height: 130rpx;
+
+			&-img {
+				width: 80rpx;
+				height: 80rpx;
+			}
+
+			&-name {
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #585b61;
+			}
+		}
+	}
+
+
+	.video-box {
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		width: 100%;
+
+		.video-body {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+		}
+
+		.video-title {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+
+			.text {
+				margin-top: 10rpx;
+				margin-bottom: 10rpx;
+				width: 640rpx;
+				// flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.notice-box {
+		display: flex;
+		align-items: center;
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 0 20rpx;
+		padding: 30rpx 20rpx;
+
+		.img {
+			width: 75rpx;
+			height: auto;
+			margin-right: 36rpx;
+			margin-left: 10rpx;
+		}
+
+		.notice-info {
+			flex: 1;
+
+			.notice-cell:first-of-type {
+				margin-bottom: 15rpx;
+			}
+		}
+
+		.notice-cell {
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.icon {
+				width: 63rpx;
+				margin-right: 18rpx;
+			}
+
+			.text {
+				flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.service-box {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 0;
+		padding: 0rpx 20rpx;
+
+		.service-item {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.img {
+				width: 70rpx;
+				height: auto;
+			}
+		}
+	}
+
+	.news {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 60rpx;
+		padding: 30rpx 20rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.ctitle {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #585b61;
+			}
+
+			.more {
+				display: flex;
+				align-items: center;
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a6abb5;
+			}
+		}
+
+		.news-list {
+			margin-top: 30rpx;
+
+			.news-item {
+				&:not(:last-of-type) {
+					padding: 0 0 30rpx;
+					margin-bottom: 30rpx;
+					border-bottom: 1px solid #eeeeee;
+				}
+
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.left {
+					flex: 1;
+					height: 160rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+
+					.info {
+						min-width: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #585b61;
+						line-height: 36rpx;
+					}
+
+					.date {
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 21rpx;
+							height: 21rpx;
+							margin-right: 9rpx;
+						}
+
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #a6abb5;
+					}
+				}
+
+				.img {
+					flex-shrink: 0;
+					width: 252rpx;
+					height: 160rpx;
+					border-radius: 20rpx;
+					background-color: #82848a;
+				}
+			}
+		}
+	}
+</style>

+ 661 - 0
pages/home/orgservicepersonhome.vue

@@ -0,0 +1,661 @@
+<template>
+	<view class="container">
+		<!-- 头部 start -->
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
+				:background="{ background: '#0BB9C8' }">
+				<view class="nav-wrap">
+					<!-- 				<picker mode="selector" :range="positionArr" range-key="name" @change="changePicker"
+						class="picker-box">
+						{{ position }}
+						<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
+					</picker> -->
+					<view style="width: 100%;height: auto;align-items: center;text-align: center;" v-if="!focus">
+						<text style="color: #ffffff; font-size: 20px;">运维系统</text>
+					</view>
+					<!-- 	<image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
+ -->
+					<!-- 		<view class="search-input" v-else>
+						<u-search height="50" placeholder="关键字" @blur="handleSearchBlur" :show-action="false"
+							v-model="keyword"></u-search>
+					</view> -->
+
+					<!-- 					<view class="tool">
+						<image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
+							@click="handleFocus" v-if="!focus"></image>
+						<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
+						<image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image>
+					</view> -->
+				</view>
+			</u-navbar>
+			<!-- 			<view class="head-bg"></view>
+			<swiper class="swiper-box" :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item v-for="(item, index) in bannerList" :key="index">
+					<navigator :url="item.url" hover-class="none" class="swiper-item">
+						<image :src="item.img" class="banner"></image>
+					</navigator>
+				</swiper-item>
+			</swiper> -->
+		</view>
+		<!-- 头部 end -->
+
+		<!-- 头部按钮 start -->
+		<view class="nav">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
+					<navigator :url="item.url" hover-class="none" class="nav-item" open-type="navigate">
+						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						<view class="nav-item-name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<!-- 头部按钮 end -->
+		<!-- 		<view class="video-box">
+			<view class="video-body">
+				<video style="width: 640rpx; height: 480rpx;" src="/static/video/test.mp4"></video>
+
+			</view>
+			<view class="video-title" style="margin-top: 5px;">
+				<view class="text">新闻视频提要:据报道....</view>
+			</view>
+
+		</view> -->
+
+		<!-- 公告 start -->
+		<view class="notice-box">
+			<image src="/static/images/home/notice.png" class="img" mode="widthFix"></image>
+			<view class="notice-info">
+				<navigator hover-class="none" class="notice-cell" v-for="(item, index) in noticeList" :key="index">
+					<!-- 			<image :src="item.img" class="icon" mode="widthFix"></image> -->
+					<view class="text">{{item.title}}</view>
+					<u-icon name="arrow-right" size="12" color="#C9C9C9"></u-icon>
+				</navigator>
+			</view>
+		</view>
+		<!-- 公告 end -->
+
+
+		<!-- 服务按钮 start -->
+		<!-- 		<view class="service-box">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index">
+					<navigator url="" hover-class="none" class="service-item">
+						<image :src="item.img" mode="widthFix" class="img"></image>
+						<view class="name">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+				<u-grid-item bg-color="transparent" key="8">
+					<navigator url="/pages/service/service" hover-class="none" class="service-item">
+						<image src="/static/images/home/s8.png" mode="widthFix" class="img"></image>
+						<view class="name">更多</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view> -->
+		<!-- 服务按钮 end -->
+
+		<!-- 新闻模块 start -->
+		<view class="news">
+			<navigator hover-class="none" url="/pages/check-order/checkorderlist" class="cell">
+				<view class="ctitle">工单动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastCheckOrderList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.orderDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.updateTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+		<!-- 新闻模块 end -->
+
+		<view class="news">
+			<navigator hover-class="none" url="/pages/equipment-inspection/equipmentinspectionplanlist" class="cell">
+				<view class="ctitle">巡检动态</view>
+				<view class="more">
+					更多
+					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
+				</view>
+			</navigator>
+
+			<view class="news-list">
+				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
+					v-for="(item, index) in lastEquipmentInspectionList" :key="index">
+					<view class="left">
+						<view class="info">
+							<text>{{item.reportDesc}}</text>
+						</view>
+						<view class="date">
+							<image src="/static/images/home/date.png" class="icon" mode=""></image>
+							<text>{{item.createTime}}</text>
+						</view>
+					</view>
+					<!-- 		<image src="" mode="" class="img"></image> -->
+				</navigator>
+				<!-- 		<u-loadmore :status="status" /> -->
+			</view>
+
+		</view>
+		
+	</view>
+</template>
+
+<script>
+
+	import {
+		fakePosition,
+		fakeBannerList,
+		fakeNavButton,
+		fakeServiceButton
+	} from "@/api/mock/home.js";
+	import http from '@/http/api.js';
+	export default {
+			components: {
+			
+			},
+		data() {
+			return {
+				position: '',
+				positionArr: [],
+				status: 'loadmore',
+				list: 15,
+				page: 0,
+				keyword: '',
+				focus: false,
+				bannerList: [],
+				noticeList: [],
+				warningList: [],
+				newsList: [{}, {}],
+				navButton: [],
+				serviceButton: [],
+				lastCheckOrderList: [],
+				lastEquipmentInspectionList: [],
+			};
+		},
+		onLoad() {
+
+			// 后续将改为与后端联动
+			// 加载banner数据
+			fakePosition().then(data => {
+				this.position = data.position;
+				this.positionArr = data.positionArr;
+			});
+			// 加载banner数据
+			fakeBannerList().then(data => {
+				this.bannerList = data;
+			});
+			// 加载通知公告数据
+			// fakeNoticeList().then(data => {
+			// 	this.noticeList = data;
+			// });
+
+			// const noticeListTmp = [{
+			// 	id: '1',
+			// 	title: '2022年度巡检计划已经发布'
+			// }];
+
+			// this.noticeList = noticeListTmp;
+             this.getLastNotice();
+             this.getLastCheckOrder();
+			 this.getLastEquipmentInspectionReport();
+
+			// const lastCheckOrderListTmp = [{
+			// 	id: '1',
+			// 	processDesc: '河道 45222222维修工单创建',
+			// 	reportDate: '2022年8月20日 12时'
+			// }];
+
+			// this.lastCheckOrderList=lastCheckOrderListTmp;
+
+
+			// const lastEquipmentInspectionListTmp = [{
+			// 	id: '1',
+			// 	equipmentInspectionDesc: '测站河道 45222222 已经完成巡检填报',
+			// 	reportDate: '2022年8月20日 15时'
+			// }];
+
+			// this.lastEquipmentInspectionList=lastEquipmentInspectionListTmp;
+
+
+			// 加载顶部按钮数据
+			fakeNavButton().then(data => {
+				this.navButton = data;
+			});
+			// 加载服务按钮数据
+			fakeServiceButton().then(data => {
+				this.serviceButton = data;
+			});
+		},
+		onReachBottom() {
+			// 后续将改为与后端联动
+			if (this.page >= 3) return;
+			this.status = 'loading';
+			this.page = ++this.page;
+			setTimeout(() => {
+				this.list += 10;
+				if (this.page >= 3) this.status = 'nomore';
+				else this.status = 'loading';
+				this.newsList.push(...[{}, {}]);
+			}, 2000);
+		},
+		methods: {
+			getLastNotice(){
+				const that = this;
+				http.request({
+					url: '/galaxy-test/notice/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.noticeList = list;
+					}
+				
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastCheckOrder() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastCheckOrderList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getLastEquipmentInspectionReport() {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/report/last/list',
+					method: 'GET'
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+						const len = res.data['length'];
+						var list = [];
+						for (var i = 0; i < len; i++) {
+							let dict = res.data['' + i];
+							list.push(dict);
+						}
+						that.lastEquipmentInspectionList = list;
+					}
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			changePicker(e) {
+				console.log(this.pickerArr[e.detail.value].name);
+				this.position = this.pickerArr[e.detail.value].name;
+			},
+			handleFocus() {
+				this.focus = !this.focus;
+			},
+			handleSearchBlur() {
+				this.focus = false;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 0px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.nav-wrap {
+		width: 100%;
+		padding: 0 22rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.picker-box {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			font-size: 32rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #ffffff;
+
+			.arrow {
+				margin-left: 10rpx;
+			}
+		}
+
+		.rider {
+			flex-shrink: 0;
+			width: 131rpx;
+			height: auto;
+		}
+
+		.search-input {
+			width: 300rpx;
+			height: 50rpx;
+		}
+
+		.tool {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.icon {
+				height: auto;
+			}
+
+			.search-icon {
+				width: 40rpx;
+				margin-right: 34rpx;
+			}
+
+			.message-icon {
+				width: 32rpx;
+				margin-right: 27rpx;
+			}
+
+			.qr-icon {
+				width: 37rpx;
+			}
+		}
+	}
+
+	.swiper-box {
+		margin: 50rpx auto 0;
+		width: 710rpx;
+		height: 253rpx;
+
+		.swiper-item {
+			width: 100%;
+			height: 100%;
+
+			.banner {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.nav {
+		margin: 0rpx 0;
+		box-sizing: border-box;
+		padding: 0 10rpx;
+
+		&-item {
+			width: 100%;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+			height: 130rpx;
+
+			&-img {
+				width: 80rpx;
+				height: 80rpx;
+			}
+
+			&-name {
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #585b61;
+			}
+		}
+	}
+
+
+	.video-box {
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		width: 100%;
+
+		.video-body {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+		}
+
+		.video-title {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+
+			.text {
+				margin-top: 10rpx;
+				margin-bottom: 10rpx;
+				width: 640rpx;
+				// flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.notice-box {
+		display: flex;
+		align-items: center;
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 0 20rpx;
+		padding: 30rpx 20rpx;
+
+		.img {
+			width: 75rpx;
+			height: auto;
+			margin-right: 36rpx;
+			margin-left: 10rpx;
+		}
+
+		.notice-info {
+			flex: 1;
+
+			.notice-cell:first-of-type {
+				margin-bottom: 15rpx;
+			}
+		}
+
+		.notice-cell {
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.icon {
+				width: 63rpx;
+				margin-right: 18rpx;
+			}
+
+			.text {
+				flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.service-box {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 0;
+		padding: 0rpx 20rpx;
+
+		.service-item {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.img {
+				width: 70rpx;
+				height: auto;
+			}
+		}
+	}
+
+	.news {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 60rpx;
+		padding: 30rpx 20rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.ctitle {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #585b61;
+			}
+
+			.more {
+				display: flex;
+				align-items: center;
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a6abb5;
+			}
+		}
+
+		.news-list {
+			margin-top: 30rpx;
+
+			.news-item {
+				&:not(:last-of-type) {
+					padding: 0 0 30rpx;
+					margin-bottom: 30rpx;
+					border-bottom: 1px solid #eeeeee;
+				}
+
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.left {
+					flex: 1;
+					height: 160rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+
+					.info {
+						min-width: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #585b61;
+						line-height: 36rpx;
+					}
+
+					.date {
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 21rpx;
+							height: 21rpx;
+							margin-right: 9rpx;
+						}
+
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #a6abb5;
+					}
+				}
+
+				.img {
+					flex-shrink: 0;
+					width: 252rpx;
+					height: 160rpx;
+					border-radius: 20rpx;
+					background-color: #82848a;
+				}
+			}
+		}
+	}
+</style>

+ 319 - 0
pages/login/login-account.vue

@@ -0,0 +1,319 @@
+<template>
+	<view class="container">
+		<view class="content">
+			<view class="top">
+				<image src="/static/images/logo_login.png" class="logo" mode="widthFix"></image>
+				<view style="width: 100%;text-align: center;margin-bottom: 100rpx;">
+					<text style="font-size: 32rpx;">
+						山洪灾害预警监测平台运维系统
+					</text>
+				</view>
+				<view class="cell">
+					<view class="input-box">
+						<uIcons type="auth" size="30"></uIcons>
+						<input type="text" v-model="username" placeholder="请输入账号" class="ipt" placeholder-class="hold"
+							@blur="handleInputCheck" />
+					</view>
+				</view>
+				<view class="cell">
+
+					<view class="input-box">
+
+						<uIcons type="locked" size="30"></uIcons>
+						<input type="password" v-model="password" placeholder="请输入密码" class="ipt"
+							placeholder-class="hold" @blur="handleInputCheck" />
+					</view>
+				</view>
+				<!-- <view class="agree">
+					登录即代表同意
+					<text class="a">《用户协议》</text>
+					和
+					<text class="a">《隐私政策》</text>
+				</view> -->
+
+				<!-- <view class="tip">未注册用户验证后将自动注册并登录</view> -->
+				<view class="cell">
+					<view style="margin-top: 30rpx;margin-right:24rpx;display: flex;justify-content: flex-end;flex-direction:row;">
+						<checkbox-group @change="checkboxChange">
+							<label style="font-size: 24rpx;">
+								<checkbox value="rememberPw" :checked="rememberPw" />记住密码
+							</label>
+						</checkbox-group>
+					</view>
+				</view>
+				<view class="cell">
+					<button class="submit" @click="submit" :disabled="disabled">登录</button>
+				</view>
+				<!-- <navigator url="/pages/login/login-phone" hover-class="none" class="change">手机登录 ></navigator> -->
+			</view>
+
+			<!-- 社交账号登录 -->
+			<!-- 			<view class="bottom">
+				<view class="tag">社交账号登录</view>
+				<view class="chat-arr">
+					<image src="/static/images/wx.png" class="icon" mode=""></image>
+					<image src="/static/images/qq.png" class="icon" mode=""></image>
+					<image src="/static/images/wb.png" class="icon" mode=""></image>
+				</view>
+			</view> -->
+		</view>
+		<!--  -->
+	</view>
+</template>
+
+<script>
+	import md5 from '@/utils/md5.js'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+import {
+	devUrl,
+	prodUrl,
+	contentType
+} from '@/common/setting'
+	export default {
+		components: {
+			uIcons,
+		},
+		data() {
+			return {
+				tenantId: '000000',
+				username: '',
+				password: '',
+				disabled: true,
+				rememberPw: false
+			};
+		},
+		onLoad() {
+			var userLoginInfo = uni.getStorageSync("userLoginInfo");
+			if (null != userLoginInfo && "" != userLoginInfo) {
+				this.rememberPw = true;
+				this.disabled = false;
+				this.username = userLoginInfo.username;
+				this.password = userLoginInfo.pw;
+			}
+		},
+		methods: {
+			submit() {
+
+				this.$u.api.token(this.tenantId, this.username, md5(this.password)).then(data => {
+					var dt = new Date();
+
+					uni.setStorageSync("loginTime", dt.getTime());
+					if (this.rememberPw) {
+						uni.setStorageSync("userLoginInfo", {
+							username: this.username,
+							pw: this.password,
+						});
+					} else {
+						uni.removeStorageSync("userLoginInfo");
+					}
+					this.$u.func.login(data)
+				}).catch(err => {
+					console.log(err)
+					this.$u.func.showToast({
+						title: '用户名或密码错误'+err,
+					})
+				})
+			},
+			handleInputCheck() {
+				this.disabled = false
+			},
+			checkboxChange: function(e) {
+				var values = e.detail.value;
+				if (values.length > 0) {
+					this.rememberPw = true;
+				} else {
+					this.rememberPw = false;
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		min-height: 100vh;
+		overflow: hidden;
+
+		.set-icon {
+			vertical-align: middle;
+			width: 41rpx;
+			height: auto;
+			margin-right: 35rpx;
+		}
+	}
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+
+		height: 90vh;
+		width: 100%;
+
+		.top {
+			width: 100%;
+		}
+
+		.logo {
+			display: block;
+			width: 128rpx;
+			height: auto;
+			margin: 0 auto 40rpx;
+		}
+
+		.cell {
+			width: 100%;
+			padding: 0 85rpx;
+			box-sizing: border-box;
+			margin-top: 12rpx;
+
+			.name {
+				font-size: 22rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 400;
+				color: #3e4a59;
+				line-height: 30rpx;
+				opacity: 0.72;
+			}
+
+			.input-box {
+				padding: 30rpx 0;
+				border-bottom: 2rpx solid #f6f6f6;
+				display: flex;
+				align-items: center;
+
+				.code {
+					font-size: 22rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #0d0d0d;
+					line-height: 30rpx;
+
+					text {
+						color: #14b9c8;
+					}
+				}
+
+				.ipt {
+					flex: 1;
+					// height: 24rpx;
+					font-size: 24rpx;
+					padding-left: 10rpx;
+				}
+
+				.hold {
+					font-size: 24rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #3e4a59;
+					line-height: 30px;
+					opacity: 0.45;
+				}
+			}
+		}
+
+		.agree {
+			margin: 27rpx 95rpx 0;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #cacaca;
+			line-height: 34rpx;
+
+			.a {
+				color: #000000;
+			}
+		}
+
+		.submit {
+			margin-top: 40rpx;
+			border: none;
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			box-sizing: border-box;
+			border-radius: 15rpx;
+			// font-size: 36rpx;
+			background: linear-gradient(to right, #48b1f8, #3976f7);
+			color: #ffffff;
+
+			&::after {
+				content: none;
+			}
+
+			&::before {
+				content: none;
+			}
+
+			&[disabled='true'] {
+				background: linear-gradient(to right, #48b1f8, #3976f7);
+				font-size: 36rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 500;
+				color: #ffffff;
+			}
+		}
+
+		.tip {
+			margin-top: 30rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #cacaca;
+			line-height: 34rpx;
+		}
+
+		.change {
+			margin-top: 20rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #14b9c8;
+			line-height: 34rpx;
+		}
+
+		.tag {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #9f9f9f;
+			line-height: 34rpx;
+
+			&::before {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+
+			&::after {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+		}
+
+		.chat-arr {
+			margin-top: 50rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.icon {
+				width: 73rpx;
+				height: 73rpx;
+			}
+		}
+	}
+</style>

+ 290 - 0
pages/login/login-phone.vue

@@ -0,0 +1,290 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" back-icon-name="arrow-leftward" title="登录"
+			:background="{ background: '#fff' }" title-color="#000000">
+			<view class="" slot="right">
+				<image src="/static/images/user/c8.png" class="set-icon" mode="widthFix"></image>
+			</view>
+		</u-navbar>
+
+		<view class="content">
+			<view class="top">
+				<image src="/static/images/logo.png" class="logo" mode="widthFix"></image>
+				<view class="cell">
+					<view class="name">手机号</view>
+					<view class="input-box">
+						<input type="number" v-model="phone" placeholder="请输入手机号码" class="ipt" placeholder-class="hold"
+							@blur="handleInputCheck" />
+					</view>
+				</view>
+				<view class="cell">
+					<view class="name">短信验证码</view>
+					<view class="input-box">
+						<input type="number" v-model="code" placeholder="请输入验证码" class="ipt" placeholder-class="hold"
+							@blur="handleInputCheck" />
+						<view class="code" @click="sendCode" v-if="count === 60">获取验证码</view>
+						<view class="code" v-else><text>{{ count }}</text>秒重新获取</view>
+					</view>
+				</view>
+				<!-- <view class="agree">
+					登录即代表同意
+					<text class="a">《用户协议》</text>
+					和
+					<text class="a">《隐私政策》</text>
+				</view> -->
+				<button class="submit" @click="submit" :disabled="disabled">登录</button>
+				<view class="tip">未注册用户验证后将自动注册并登录</view>
+				<navigator url="/pages/login/login-account" hover-class="none" class="change">密码登录 ></navigator>
+			</view>
+
+			<!-- 社交账号登录 -->
+			<view class="bottom">
+				<view class="tag">社交账号登录</view>
+				<view class="chat-arr">
+					<image src="/static/images/wx.png" class="icon" mode=""></image>
+					<image src="/static/images/qq.png" class="icon" mode=""></image>
+					<image src="/static/images/wb.png" class="icon" mode=""></image>
+				</view>
+			</view>
+		</view>
+		<!--  -->
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				phone: '',
+				code: '',
+				disabled: true,
+				count: 60,
+				timer: ''
+			};
+		},
+		methods: {
+			submit() {
+				this.$u.func.showToast({
+					title: '新版本即将到来',
+				})
+			},
+			handleInputCheck() {
+				if (!this.phone && !/^1\d{10}$/.test(this.phone)) {
+					this.disabled = true
+					return uni.showToast({
+						title: '请输入正确的手机号',
+						duration: 2000,
+						icon: 'none'
+					});
+				}
+				if (!this.code) {
+					this.disabled = true
+					return uni.showToast({
+						title: '请输入验证码',
+						duration: 2000,
+						icon: 'none'
+					});
+				}
+				this.disabled = false
+			},
+			async sendCode() {
+				this.count = this.count - 1;
+				this.timer = setInterval(() => {
+					if (this.count == 0) {
+						clearInterval(this.timer);
+						this.count = 60;
+						return;
+					}
+					this.count = this.count - 1;
+				}, 1000);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		min-height: 100vh;
+		overflow: hidden;
+
+		.set-icon {
+			vertical-align: middle;
+			width: 41rpx;
+			height: auto;
+			margin-right: 35rpx;
+		}
+	}
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		justify-content: space-around;
+		align-items: center;
+
+		height: 90vh;
+		width: 100%;
+
+		.top {
+			width: 100%;
+		}
+
+		.logo {
+			display: block;
+			width: 281rpx;
+			height: auto;
+			margin: 0 auto 120rpx;
+		}
+
+		.cell {
+			width: 100%;
+			padding: 0 85rpx;
+			box-sizing: border-box;
+			margin-top: 36rpx;
+
+			.name {
+				font-size: 22rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 400;
+				color: #3e4a59;
+				line-height: 30rpx;
+				opacity: 0.72;
+			}
+
+			.input-box {
+				padding: 30rpx 0;
+				border-bottom: 2rpx solid #f6f6f6;
+				display: flex;
+				align-items: center;
+
+				.code {
+					font-size: 22rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #0d0d0d;
+					line-height: 30rpx;
+
+					text {
+						color: #14b9c8;
+					}
+				}
+
+				.ipt {
+					flex: 1;
+					// height: 24rpx;
+					font-size: 24rpx;
+				}
+
+				.hold {
+					font-size: 26rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #3e4a59;
+					line-height: 30px;
+					opacity: 0.45;
+				}
+			}
+		}
+
+		.agree {
+			margin: 27rpx 95rpx 0;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #cacaca;
+			line-height: 34rpx;
+
+			.a {
+				color: #000000;
+			}
+		}
+
+		.submit {
+			margin: 60rpx 90rpx 0;
+			border: none;
+			width: 572rpx;
+			height: 86rpx;
+			line-height: 86rpx;
+			box-sizing: border-box;
+			border-radius: 15rpx;
+			background-color: #14b9c8;
+			color: #ffffff;
+
+			&::after {
+				content: none;
+			}
+
+			&::before {
+				content: none;
+			}
+
+			&[disabled='true'] {
+				background: #e4e4e4;
+				font-size: 36rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 500;
+				color: #ffffff;
+			}
+		}
+
+		.tip {
+			margin-top: 30rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #cacaca;
+			line-height: 34rpx;
+		}
+
+		.change {
+			margin-top: 20rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #14b9c8;
+			line-height: 34rpx;
+		}
+
+		.tag {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #9f9f9f;
+			line-height: 34rpx;
+
+			&::before {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+
+			&::after {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+		}
+
+		.chat-arr {
+			margin-top: 50rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.icon {
+				width: 73rpx;
+				height: 73rpx;
+			}
+		}
+	}
+</style>

+ 22 - 0
pages/manage/building.vue

@@ -0,0 +1,22 @@
+<template>
+	<view class="container">
+		<page-nav :desc="desc" :title="title"></page-nav>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">正在开发中</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				data: {},
+				title: '决策管理',
+				desc: ''
+			};
+		},
+	}
+</script>

+ 139 - 0
pages/manage/manage.vue

@@ -0,0 +1,139 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="管理"
+			:background="{ background: '#0BB9C8' }" title-color="#fff">
+			<image slot="right" src="/static/images/home/message.png" class="message-icon" mode="widthFix"></image>
+		</u-navbar>
+
+		<view class="tab">
+			<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
+				height="100" @change="change"></u-tabs>
+		</view>
+
+		<swiper id="swiperBox" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange">
+			<swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
+				<scroll-view scroll-y style="width: 100%;height: 100%;" @scrolltolower="onreachBottom">
+					<view class="content">
+						<u-grid :col="3">
+							<u-grid-item v-for="(_item, _index) in gridList" :key="_index">
+								<navigator url="" hover-class="none" class="gitem">
+									<image :src="_item.img" class="img" mode="widthFix"></image>
+									<view class="name">{{ _item.name }}</view>
+								</navigator>
+							</u-grid-item>
+						</u-grid>
+					</view>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				swiperHeight: 0,
+				list: [{
+						name: '常用'
+					},
+					{
+						name: '系统'
+					},
+					{
+						name: '部门'
+					}
+				],
+				current: 0,
+				gridList: [{
+						name: '常规',
+						img: '/static/images/manage/g1.png'
+					},
+					{
+						name: '权限',
+						img: '/static/images/manage/g2.png'
+					},
+					{
+						name: '角色',
+						img: '/static/images/manage/g3.png'
+					},
+					{
+						name: '用户',
+						img: '/static/images/manage/g4.png'
+					},
+					{
+						name: '分类',
+						img: '/static/images/manage/g5.png'
+					},
+					{
+						name: '公告',
+						img: '/static/images/manage/g6.png'
+					}
+				]
+			};
+		},
+		onReady() {
+			let that = this;
+			uni.getSystemInfo({
+				success(e) {
+					console.log(e);
+					let {
+						windowWidth,
+						windowHeight,
+						safeArea
+					} = e;
+					const query = uni.createSelectorQuery().in(that);
+					query
+						.select('#swiperBox')
+						.boundingClientRect(data => {
+							that.swiperHeight = safeArea.bottom - data.top;
+						})
+						.exec();
+				}
+			});
+		},
+		methods: {
+			tabsChange(e) {
+				this.current = e.detail.current;
+			},
+			change(index) {
+				this.current = index;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.swiper-box {
+		height: 100vh;
+	}
+
+	.message-icon {
+		width: 32rpx;
+		height: auto;
+		margin-right: 27rpx;
+	}
+
+	.tab {
+		margin-bottom: 10rpx;
+	}
+
+	.gitem {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+
+		.img {
+			width: 54rpx;
+			height: auto;
+			margin-bottom: 26rpx;
+		}
+
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #030305;
+		line-height: 36rpx;
+	}
+</style>

+ 330 - 0
pages/news/detail.vue

@@ -0,0 +1,330 @@
+<template>
+	<view class="container">
+		<!-- 	<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="新闻详情页"
+			:background="{ background: '#fff' }" title-color="#000000">
+			<view class="right-nav" slot="right">
+				<image src="/static/images/news/search.png" class="icon icon-search" mode="widthFix"></image>
+				<image src="/static/images/news/menu.png" class="icon icon-menu" mode="widthFix"></image>
+			</view>
+		</u-navbar> -->
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack" >
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<!-- <u-gap height="75px"></u-gap> -->
+
+		<!-- 	<view class="header">
+			<image src="" class="avatar" mode=""></image>
+			<view class="info">
+				<view class="name">
+					中国空间站
+					<text class="tag">专栏作家</text>
+				</view>
+				<view class="date">06-17</view>
+			</view>
+			<view class="btn">+关注</view>
+		</view> -->
+
+		<view class="content" style="margin-top: 10px;">
+			<view class="title">
+				{{noticeInfo.title}}
+			</view>
+			<view class="static">
+				<view class="left">
+					<view class="block">
+						{{noticeInfo.releaseTime}}
+						<!-- 		<image src="/static/images/news/gf.png" class="gf"></image>
+						官方 -->
+					</view>
+					<!-- 			<view class="block">
+						<image src="/static/images/news/x.png" class="gf"></image>
+						焦点新闻
+					</view> -->
+				</view>
+				<!-- 			<view class="right">
+					<image src="/static/images/news/l.png" class="l" mode="widthFix"></image>
+					66666
+				</view> -->
+			</view>
+			<view class="detail">
+				<u-parse :html="noticeInfo.content"></u-parse>
+			</view>
+		</view>
+
+		<!-- 		<view class="footer">
+			<input type="text" value="" placeholder="说点什么..." class="ipt" />
+			<view class="control">
+				<view class="block">
+					<image src="/static/images/news/c.png" class="icon c" mode="widthFix"></image>
+					458
+				</view>
+				<view class="block">
+					<image src="/static/images/news/s.png" class="icon s" mode="widthFix"></image>
+				</view>
+				<view class="block">
+					<image src="/static/images/news/t.png" class="icon t" mode="widthFix"></image>
+				</view>
+			</view>
+		</view> -->
+	</view>
+</template>
+
+
+<script>
+		import http from '@/http/api.js';
+	export default {
+		data() {
+			return {
+				title: '公告详情页',
+				noticeInfo: {
+					'title': '',
+					'releaseTime': '',
+					'content': '',
+				}
+
+			};
+		},
+		onLoad(options) {
+			console.log(options.id)
+			this.getNotice(options.id);
+		},
+		methods:{
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getNotice(id) {
+				const that = this;
+				http.request({
+					url: '/galaxy-test/notice/detail',
+					method: 'GET',
+					params: {
+						'id':id,
+					},
+				}).then(res => {
+					console.log(res.data)
+					if (res.data != null) {
+					     that.noticeInfo=res.data; 
+					}
+			
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		padding: 0 0 150rpx;
+	}
+
+	.right-nav {
+		display: flex;
+		align-items: center;
+		margin-right: 40rpx;
+
+		.icon {
+			height: auto;
+
+			&-search {
+				width: 40rpx;
+				margin-right: 40rpx;
+			}
+
+			&-menu {
+				width: 40rpx;
+			}
+		}
+	}
+
+	.header {
+		display: flex;
+		align-items: center;
+		padding: 44rpx;
+
+		.avatar {
+			flex-shrink: 0;
+			width: 69rpx;
+			height: 69rpx;
+			background: #ffffff;
+			border: 1px solid #14b9c8;
+			border-radius: 50%;
+		}
+
+		.info {
+			flex: 1;
+			margin-left: 14rpx;
+
+			.name {
+				display: flex;
+				align-items: center;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #000000;
+				line-height: 36rpx;
+
+				.tag {
+					margin-left: 10rpx;
+					display: inline-block;
+					padding: 8rpx 10rpx;
+					font-size: 14rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #4cbeca;
+					line-height: 21rpx;
+					border: 1px solid #0bb9c8;
+					border-radius: 6px;
+				}
+			}
+
+			.date {
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a3a3a3;
+				line-height: 36rpx;
+			}
+		}
+
+		.btn {
+			padding: 8rpx 19rpx;
+			background: #e6e6e6;
+			border-radius: 6rpx;
+			font-size: 20rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #4cbeca;
+			line-height: 1;
+		}
+	}
+
+	.content {
+		padding: 0 44rpx;
+
+		.title {
+			font-size: 40rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #000000;
+			line-height: 47rpx;
+		}
+
+		.static {
+			margin-top: 34rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.left,
+			.right {
+				display: flex;
+				align-items: center;
+
+				.block {
+					display: flex;
+					align-items: center;
+					margin-right: 10rpx;
+				}
+			}
+
+			.left {
+				font-size: 20rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #787878;
+				line-height: 1;
+
+				.gf {
+					width: 24rpx;
+					height: 24rpx;
+					margin-right: 8rpx;
+				}
+			}
+
+			.right {
+				font-size: 20rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #787878;
+				line-height: 1;
+
+				.l {
+					width: 25rpx;
+					height: auto;
+					margin-right: 6rpx;
+				}
+			}
+		}
+
+		.detail {
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #000000;
+			line-height: 47rpx;
+			margin-top: 50rpx;
+		}
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 999;
+		height: 100rpx;
+		padding: 20rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		background-color: #ffffff;
+
+		.ipt {
+			width: 380rpx;
+			height: 77rpx;
+			background: #f7f7f7;
+			border-radius: 38px;
+			padding: 0 37rpx;
+			box-sizing: border-box;
+			margin-right: 20rpx;
+		}
+
+		.control {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: space-around;
+
+			.block {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				flex: 1;
+			}
+
+			.icon {
+				height: auto;
+			}
+
+			.c {
+				width: 41rpx;
+				margin-right: 10rpx;
+			}
+
+			.s {
+				width: 36rpx;
+			}
+
+			.t {
+				width: 31rpx;
+			}
+		}
+	}
+</style>

+ 260 - 0
pages/news/list.vue

@@ -0,0 +1,260 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-color="#fff" back-icon-size="35" title="新闻动态" :background="{ background: '#0BB9C8' }"
+			title-color="#fff">
+			<image slot="right" src="/static/images/home/message.png" class="message-icon" mode="widthFix"></image>
+		</u-navbar> -->
+		
+
+
+	<view class="tab">
+			<u-tabs :list="tabs" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
+				height="100" @change="change"></u-tabs>
+		</view>
+
+		<swiper id="swiperBox" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange">
+			<swiper-item class="swiper-item" v-for="(pitem, pindex) in tabs" :key="pindex">
+				<scroll-view scroll-y style="width: 100%;height: 100%;" refresher-enabled
+					:refresher-triggered="pitem.triggered" @scrolltolower="onreachBottom"
+					@refresherrefresh="refresherrefresh(pindex)" @refresherrestore="refresherrestore(pindex)"
+					@refresherabort="refresherabort(pindex)">
+					<view class="content">
+						<navigator class="news" v-for="(item, index) in contentList[pindex].list" :key="index"
+							url="/pages/news/detail" hover-class="none">
+							<view class="head">
+								<image src="" class="avatar" mode=""></image>
+								<view class="info">
+									<view class="name">
+										中国空间站
+										<text class="tag">专栏作家</text>
+									</view>
+									<view class="date">06-11</view>
+								</view>
+								<u-icon name="arrow-right" size="35" color="#C5C5C5"></u-icon>
+							</view>
+							<view class="des">
+								神舟十二号载人发射任务取得圆满成功。
+							</view>
+						</navigator>
+						<view class="nomore">
+							<u-loadmore :status="contentList[pindex].status" />
+						</view>
+					</view>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				swiperHeight: 0,
+				tabs: [{
+						name: '互动',
+						triggered: false,
+						_triggered: false
+					},
+					{
+						name: '动态',
+						triggered: false,
+						_triggered: false
+					},
+					{
+						name: '通知',
+						triggered: false,
+						_triggered: false
+					}
+				],
+				contentList: [{
+						list: 8,
+						page: 1,
+						status: 'loadmore'
+					},
+					{
+						list: 8,
+						page: 1,
+						status: 'loadmore'
+					},
+					{
+						list: 8,
+						page: 1,
+						status: 'loadmore'
+					}
+				],
+				current: 0
+			};
+		},
+		onLoad() {},
+		onReady() {
+			let that = this;
+			uni.getSystemInfo({
+				success(e) {
+					console.log(e);
+					let {
+						windowWidth,
+						windowHeight,
+						safeArea
+					} = e;
+					const query = uni.createSelectorQuery().in(that);
+					query
+						.select('#swiperBox')
+						.boundingClientRect(data => {
+							that.swiperHeight = safeArea.bottom - data.top;
+						})
+						.exec();
+				}
+			});
+		},
+		onPullDownRefresh() {
+			setTimeout(() => {
+				uni.stopPullDownRefresh();
+			}, 1500);
+		},
+		methods: {
+			tabsChange(e) {
+				this.current = e.detail.current;
+			},
+			refresherrefresh(index) {
+				console.log('自定义下拉刷新被触发');
+				let _this = this;
+				if (_this.tabs[index]._triggered) {
+					return;
+				}
+				_this.tabs[index]._triggered = true;
+				//界面下拉触发,triggered可能不是true,要设为true
+				if (!_this.tabs[index].triggered) {
+					_this.tabs[index].triggered = true;
+				}
+
+				setTimeout(() => {
+					_this.tabs[index].triggered = false; //触发onRestore,并关闭刷新图标
+					_this.tabs[index]._triggered = false;
+				}, 1000);
+			},
+			refresherrestore(index) {
+				console.log('自定义下拉刷新被复位');
+				let _this = this;
+				_this.tabs[index].triggered = false;
+				_this.tabs[index]._triggered = false;
+			},
+			refresherabort(index) {
+				console.log('自定义下拉刷新被中止	');
+				let _this = this;
+				_this.tabs[index].triggered = false;
+				_this.tabs[index]._triggered = false;
+			},
+			// scroll-view到底部加载更多
+			onreachBottom() {
+				let current = this.current;
+				if (this.contentList[current].page >= 3) return;
+				this.contentList[current].status = 'loading';
+				setTimeout(() => {
+					this.contentList[current].page = ++this.contentList[current].page;
+					this.contentList[current].list += 10;
+					if (this.contentList[current].page >= 3)
+						this.contentList[current].status = 'nomore';
+					else this.contentList[current].status = 'loading';
+				}, 2000);
+			},
+			change(index) {
+				this.current = index;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.message-icon {
+		width: 32rpx;
+		height: auto;
+		margin-right: 27rpx;
+	}
+
+	.tab {
+		margin: 0 0 10rpx;
+		border-bottom: 1px solid #e4e7ed;
+	}
+
+	.content {
+		padding: 0 0 150rpx;
+
+		.news {
+			&:not(:last-of-type) {
+				border-bottom: 2rpx solid #e4e7ed;
+			}
+		}
+	}
+
+	.nomore {
+		padding: 30rpx 20rpx;
+	}
+
+	.news {
+		margin: 30rpx 30rpx 0;
+		padding: 0 0 30rpx;
+
+		.head {
+			display: flex;
+
+			.avatar {
+				flex-shrink: 0;
+				width: 69rpx;
+				height: 69rpx;
+				background: #ffffff;
+				border: 1px solid #14b9c8;
+				border-radius: 50%;
+			}
+
+			.info {
+				flex: 1;
+				margin-left: 14rpx;
+
+				.name {
+					display: flex;
+					align-items: center;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #000000;
+					line-height: 36rpx;
+
+					.tag {
+						margin-left: 15rpx;
+						display: inline-block;
+						padding: 8rpx 10rpx;
+						font-size: 14rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #4cbeca;
+						line-height: 21rpx;
+						border: 1px solid #0bb9c8;
+						border-radius: 6px;
+					}
+				}
+
+				.date {
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #a3a3a3;
+					line-height: 36rpx;
+				}
+			}
+		}
+
+		.des {
+			margin-top: 40rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			color: #000000;
+			line-height: 47rpx;
+		}
+	}
+
+	.swiper-box {
+		height: 100vh;
+	}
+</style>

+ 284 - 0
pages/news/noticelist.vue

@@ -0,0 +1,284 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<uni-list>
+			<uni-list-item ellipsis="1" v-for="item in noticeList" :key="item.id" :title="item.title"
+				:note="item.releaseTime" showArrow clickable @click="onNoticeItemClick(item.id)"></uni-list-item>
+		</uni-list>
+		<uni-load-more :status="status" @clickLoadMore="clickLoadMore" />
+	</view>
+</template>
+
+<script>
+	import uLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uniSection from '@/uni_modules/uni-section/uni-section.vue'
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uniPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uniBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+	export default {
+		components: {
+			uList,
+			uListItem,
+			uNavBar,
+			uLoadMore,
+		},
+		data() {
+			return {
+				title: '公告消息',
+				status: 'more',
+				pageCurrent: 1,
+				pageSize: 10,
+				noticeList: [],
+				totalCount: 0,
+			};
+		},
+		onLoad() {
+			this.getNotice();
+		},
+		onReady() {
+			//let that = this;
+			// uni.getSystemInfo({
+			// 	success(e) {
+			// 		console.log(e);
+			// 		let {
+			// 			windowWidth,
+			// 			windowHeight,
+			// 			safeArea
+			// 		} = e;
+			// 		const query = uni.createSelectorQuery().in(that);
+			// 		query
+			// 			.select('#swiperBox')
+			// 			.boundingClientRect(data => {
+			// 				that.swiperHeight = safeArea.bottom - data.top;
+			// 			})
+			// 			.exec();
+			// 	}
+			// });
+
+		},
+		onPullDownRefresh() {
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: "当前状态:" + this.status
+			// })
+			// setTimeout(() => {
+			// 	uni.stopPullDownRefresh();
+			// }, 1500);
+		},
+		onReachBottom() {
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: "当前状态:" + this.status
+			// })
+			if (this.totalCount > this.noticeList.length) {
+
+				this.status = 'loading';
+
+				setTimeout(() => {
+
+					this.pageCurrent++
+
+					this.getNotice(); //执行的方法
+
+				}, 1000)
+
+			} else { //停止加载
+
+				this.status = 'noMore';
+
+			}
+
+			// 后续将改为与后端联动
+			// if (this.page >= 3) return;
+			// this.status = 'loading';
+			// this.page = ++this.page;
+			// setTimeout(() => {
+			// 	this.list += 10;
+			// 	if (this.page >= 3) this.status = 'nomore';
+			// 	else this.status = 'loading';
+			// 	this.newsList.push(...[{}, {}]);
+			// }, 2000);
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			clickLoadMore(e) {
+				// uni.showToast({
+				// 	icon: 'none',
+				// 	title: "当前状态:" + e.detail.status
+				// })
+
+				// })
+				if (this.totalCount > this.noticeList.length) {
+
+					this.status = 'loading';
+
+					setTimeout(() => {
+
+						this.pageCurrent++
+
+						this.getNotice(); //执行的方法
+
+					}, 1000)
+
+				} else { //停止加载
+
+					this.status = 'noMore';
+
+				}
+			},
+			getNotice() {
+				const that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				//const isSubmit = '0';
+				http.request({
+					url: '/galaxy-test/notice/list',
+					method: 'GET',
+					params: {
+						current,
+						size,
+					},
+				}).then(res => {
+					if (res.data.records != null) {
+						for (var i = 0; i < res.data.records.length; i++) {
+							that.noticeList.push(res.data.records[i]);
+						}
+					}
+					that.totalCount = res.data.total;
+					if (that.totalCount > that.noticeList.length) {
+						this.status = 'more';
+					}
+					that.viewNotice();
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			viewNotice() {
+				http.request({
+					url: '/galaxy-test/notice/view',
+					method: 'POST',
+				}).then(res => {}).catch(err => {
+					console.log(err)
+				})
+			},
+			onNoticeItemClick(id) {
+
+				console.log('执行click事件', id)
+				uni.navigateTo({
+					url: '/pages/news/detail?id=' + id
+				})
+
+			},
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	.message-icon {
+		width: 32rpx;
+		height: auto;
+		margin-right: 27rpx;
+	}
+
+	.tab {
+		margin: 0 0 10rpx;
+		border-bottom: 1px solid #e4e7ed;
+	}
+
+	.content {
+		padding: 0 0 150rpx;
+
+		.news {
+			&:not(:last-of-type) {
+				border-bottom: 2rpx solid #e4e7ed;
+			}
+		}
+	}
+
+	.nomore {
+		padding: 30rpx 20rpx;
+	}
+
+	.news {
+		margin: 30rpx 30rpx 0;
+		padding: 0 0 30rpx;
+
+		.head {
+			display: flex;
+
+			.avatar {
+				flex-shrink: 0;
+				width: 69rpx;
+				height: 69rpx;
+				background: #ffffff;
+				border: 1px solid #14b9c8;
+				border-radius: 50%;
+			}
+
+			.info {
+				flex: 1;
+				margin-left: 14rpx;
+
+				.name {
+					display: flex;
+					align-items: center;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #000000;
+					line-height: 36rpx;
+
+					.tag {
+						margin-left: 15rpx;
+						display: inline-block;
+						padding: 8rpx 10rpx;
+						font-size: 14rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #4cbeca;
+						line-height: 21rpx;
+						border: 1px solid #0bb9c8;
+						border-radius: 6px;
+					}
+				}
+
+				.date {
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #a3a3a3;
+					line-height: 36rpx;
+				}
+			}
+		}
+
+		.des {
+			margin-top: 40rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			color: #000000;
+			line-height: 47rpx;
+		}
+	}
+
+	.swiper-box {
+		height: 100vh;
+	}
+</style>

+ 403 - 0
pages/report-forms/adminreport.vue

@@ -0,0 +1,403 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" styleType="text"
+				activeColor="#4cd964"></uni-segmented-control>
+			<view class="content">
+				<view v-show="current === 0">
+					<uGroup>
+						<uni-table ref="order_table" border stripe type="" emptyText="暂无更多数据">
+							<uni-tr>
+								<uni-th width="120" align="center">机构名称</uni-th>
+								<uni-th width="120" align="center">工单数量</uni-th>
+								<uni-th width="120" align="center">未完成工单</uni-th>
+							</uni-tr>
+							<uni-tr v-for="(item, index) in orderTableData" :key="index">
+								<uni-td>
+									<view style="text-align: center;">{{ item.orgName }}</view>
+								</uni-td>
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.orderCount }}</view>
+								</uni-td>
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.processingOrderCount }}
+									</view>
+								</uni-td>
+							</uni-tr>
+						</uni-table>
+					</uGroup>
+				</view>
+				<view v-show="current === 1">
+					<uGroup>
+						<uni-table ref="equipment_inspection_table" border stripe type="" emptyText="暂无更多数据">
+							<uni-tr>
+								<uni-th width="150" align="center">机构名称</uni-th>
+								<uni-th align="center">巡检任务</uni-th>
+								<uni-th align="center">已完成巡检任务</uni-th>
+							</uni-tr>
+							<uni-tr v-for="(item, index) in equipmentInspectionTableData" :key="index">
+								<uni-td>
+									<view style="text-align: center;">{{ item.orgName }}</view>
+								</uni-td>
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.rtuCount }}</view>
+								</uni-td>
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.completeCount }}</view>
+								</uni-td>
+							</uni-tr>
+						</uni-table>
+					</uGroup>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uSegmentedControl from '@/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb,
+			uSection,
+			uDataPicker,
+			uSegmentedControl,
+			uniTable
+		},
+		onLoad(option) {
+
+		},
+		data() {
+			return {
+				list: [],
+				title: '统计报表',
+				items: ['工单统计', '巡检统计'],
+				current: 0,
+				desc: '',
+				orderTableData: [],
+				equipmentInspectionTableData: [],
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				orgId: '',
+				projectId: '',
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			this.getOrderList();
+			this.getInspectionCountList();
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			onClickItem(e) {
+				if (this.current != e.currentIndex) {
+					this.current = e.currentIndex;
+				}
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+
+			},
+			onnodeclick(node) {
+
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchVal = '';
+					this.pageCurrent = 1;
+					this.getOrderList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+
+			},
+			search(res) {
+				this.getOrderList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			blur(res) {},
+			focus(e) {},
+			cancel(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getOrderList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getOrderList() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/org/statistics',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.orderTableData = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getInspectionCountList() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/org/statistics',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.equipmentInspectionTableData = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toDetailPage(id) {
+				var url = '/pages/check-order/orderprocessrecord?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 228 - 0
pages/report-forms/contact.vue

@@ -0,0 +1,228 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<view v-for="item in list" :key="item.id">
+				<uGroup :title="item.orgName" margin-top="20">
+					<uni-table ref="order_table" border stripe type="" emptyText="暂无更多数据">
+						<uni-tr>
+							<uni-th width="120" align="center"><view style="text-align: center;color: black;">姓名</view></uni-th>
+							<uni-th width="120" align="center"><view style="text-align: center;color: black;">角色</view></uni-th>
+							<uni-th align="center"><view style="text-align: center;color: black;">联系电话</view></uni-th>
+						</uni-tr>
+						<uni-tr v-for="person in item.servicePersonVOList" :key="person.id">
+							<uni-td>
+								<view style="text-align: center;">{{ person.personName }}</view>
+							</uni-td>
+							<uni-td align="center">
+								<view style="text-align: center;">{{ person.roleName }}</view>
+							</uni-td>
+							<uni-td align="center">
+								<view style="text-align: center;">{{ person.contactPhone }}</view>
+							</uni-td>
+						</uni-tr>
+					</uni-table>
+				</uGroup>
+			</view>
+		</view>
+	</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uSegmentedControl from '@/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb,
+			uSection,
+			uDataPicker,
+			uSegmentedControl,
+			uniTable
+		},
+		onLoad(option) {
+           this.getContact();
+		},
+		data() {
+			return {
+				list: [],
+				title: '通讯录',
+				desc: '',
+				orderTableData: [],
+				equipmentInspectionTableData: [],
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				orgId: '',
+				projectId: '',
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getContact() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/project/person/contact',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.list = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 415 - 0
pages/report-forms/report.vue

@@ -0,0 +1,415 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" styleType="text"
+				activeColor="#4cd964"></uni-segmented-control>
+			<view class="content">
+				<view v-show="current === 0">
+					<uGroup>
+						<uni-table ref="order_table" border stripe type="" emptyText="暂无更多数据">
+							<uni-tr>
+								<uni-th width="120" align="center"><view style="text-align: center;color: black;">运维人员姓名</view></uni-th>
+								<uni-th width="120" align="center"><view style="text-align: center;color: black;">已接工单</view></uni-th>
+								<uni-th width="120" align="center"><view style="text-align: center;color: black;">未完成工单</view></uni-th>
+							</uni-tr>
+							<uni-tr v-for="(item, index) in orderTableData" :key="index">
+								<uni-td>
+									<view style="text-align: center;">{{ item.servicePersonName }}</view>
+								</uni-td>
+				<!-- 				<uni-td>
+									<view v-if="item.rtuName" style="text-align: center;">
+										{{ item.rtuName }}
+									</view>
+									<view v-else style="text-align: center;">
+										{{ item.rtuCode }}
+									</view>
+								</uni-td> -->
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.orderCount }}</view>
+								</uni-td>
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.processingOrderCount }}</view>
+								</uni-td>
+							</uni-tr>
+						</uni-table>
+					</uGroup>
+				</view>
+				<view v-show="current === 1">
+					<uGroup>
+						<uni-table ref="equipment_inspection_table" border stripe type="" emptyText="暂无更多数据">
+							<uni-tr>
+								<uni-th width="150" align="center"><view style="text-align: center;color: black;">运维人员姓名</view></uni-th>
+								<uni-th align="center"><view style="text-align: center;color: black;">已完成巡检任务</view></uni-th>
+								<!-- 			<uni-th width="120" align="center">降水量</uni-th> -->
+							</uni-tr>
+							<uni-tr v-for="(item, index) in equipmentInspectionTableData" :key="index">
+								<uni-td>
+									<view style="text-align: center;">{{ item.servicePersonName }}</view>
+								</uni-td>
+				<!-- 				<uni-td>
+									<view v-if="item.rtuName" style="text-align: center;">
+										{{ item.rtuName }}
+									</view>
+									<view v-else style="text-align: center;">
+										{{ item.rtuCode }}
+									</view>
+								</uni-td> -->
+								<uni-td align="center">
+									<view style="text-align: center;color: coral;">{{ item.completeCount }}</view>
+								</uni-td>
+							</uni-tr>
+						</uni-table>
+					</uGroup>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uSegmentedControl from '@/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb,
+			uSection,
+			uDataPicker,
+			uSegmentedControl,
+			uniTable
+		},
+		onLoad(option) {
+			
+		},
+		data() {
+			return {
+				list: [],
+				title: '统计报表',
+				items: ['工单统计', '巡检统计'],
+				current: 0,
+				desc: '',
+				orderTableData: [],
+				equipmentInspectionTableData: [],
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				orgId: '',
+				projectId: '',
+				projectTree: [],
+				selectedTreeNode: '',
+				searchVal: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+            this.getOrderList();
+			 this.getInspectionCountList();
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			onClickItem(e) {
+				if (this.current != e.currentIndex) {
+					this.current = e.currentIndex;
+				}
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				//this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getOrderList()
+
+			},
+			onnodeclick(node) {
+
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchVal = '';
+					this.pageCurrent = 1;
+					this.getOrderList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+
+			},
+			search(res) {
+				this.getOrderList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			blur(res) {},
+			focus(e) {},
+			cancel(res) {
+				this.searchVal = '';
+				this.getOrderList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getOrderList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getOrderList() {			
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/check/order/statistics',
+					method: 'GET',				
+				}).then(res => {
+					if (res.data != null) {		
+						that.orderTableData = res.data;						
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			getInspectionCountList() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/equipment/inspection/statistics',
+					method: 'GET',				
+				}).then(res => {
+					if (res.data != null) {		
+						that.equipmentInspectionTableData = res.data;						
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			toDetailPage(id) {
+				var url = '/pages/check-order/orderprocessrecord?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderReport(id) {
+				var url = '/pages/check-order/orderprocesslist?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toOrderConfirm(id) {
+				var that = this;
+				uni.showModal({
+					content: '确定进行接单确认操作?',
+					showCancel: true,
+					success(res) {
+						if (res.confirm) {
+							var postData2 = {};
+							postData2['id'] = id;
+							http.request({
+								url: '/galaxy-test/rtu/check/order/confirm',
+								method: 'POST',
+								data: postData2
+							}).then(res => {
+								console.log(res)
+								if (res.success) {
+									uni.showModal({
+										content: '接单已成功,是否立即填报?',
+										showCancel: true,
+										success(res) {
+											if (res.confirm) {
+												var url =
+													'/pages/check-order/orderprocesslist?id=' + id;
+												uni.navigateTo({
+													url: url
+												})
+											}
+										}
+									});
+								}
+							}).catch(err => {
+								console.log(err)
+							})
+						}
+					}
+				});
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 100rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		//margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 17 - 0
pages/rtu-manage/data.js

@@ -0,0 +1,17 @@
+export default [{
+    "date": "2020-09-01 12:11:00",
+    "name": "小水库33",
+    "value": "3.222"
+}, {
+    "date": "2020-09-02 12:11:00",
+    "name": "小水库44",
+    "value": "3.222"
+}, {
+    "date": "2020-09-03 12:11:00",
+    "name": "小水库88",
+    "value": "3.222"
+}, {
+    "date": "2020-09-04 12:11:00",
+    "name": "小水库344",
+    "value": "3.222"
+}]

+ 494 - 0
pages/rtu-manage/rtudata.vue

@@ -0,0 +1,494 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<!-- 头部按钮 start -->
+		<view class="nav">
+			<u-grid :col="4" :border="false">
+				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
+					<navigator :url="item.url" hover-class="none" class="nav-item" open-type="navigate">
+						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+						<view style="font-size: 0.7rem;font-weight: bold;">{{ item.name }}</view>
+					</navigator>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<!-- 头部按钮 end -->
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import pageNav from '@/components/page-nav/page-nav.vue';
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	export default {
+		components: {
+			uGroup,
+			uSection,
+			uNavBar,
+			uDataPicker,
+			pageNav,
+			uList,
+			uListItem,
+		},
+		data() {
+			return {
+				title: '实时数据',
+				navButton: [],
+			};
+		},
+		onLoad() {
+			const navBtnlist = [{
+					name: '雨情数据',
+					img: '/static/images/manage/statistics.png',
+					url: '/pages/rtu-manage/rturaindata'
+				},
+				{
+					name: '河道数据',
+					img: '/static/images/manage/statistics.png',
+					url: '/pages/rtu-manage/rturiverdata'
+				},
+				{
+					name: '水库数据',
+					img: '/static/images/manage/statistics.png',
+					url: '/pages/rtu-manage/rtursvrdata'
+				},
+				{
+					name: '墒情数据',
+					img: '/static/images/manage/statistics.png',
+					url: '/pages/rtu-manage/rtugrounddata'
+				}
+			];
+			this.navButton = navBtnlist;
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	$nav-height: 75px;
+
+	.nav-title {
+		height: $nav-height;
+	}
+
+	.nav-title-left {
+		/* #ifndef APP-PLUS-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: flex-start;
+		// width: 160rpx;
+		margin-left: 4px;
+	}
+
+	.nav-title-box {
+		/* #ifndef APP-PLUS-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		// width: 500rpx;
+		flex: 1;
+		background-color: #f8f8f8;
+		height: $nav-height;
+		border-radius: 15px;
+		padding: 0 15px;
+		flex-wrap: nowrap;
+		margin: 7px 0;
+		line-height: $nav-height;
+	}
+
+	.grid-item-box {
+		flex: 1;
+		// position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		padding: 15px 0;
+	}
+
+	.grid-item-box-row {
+		flex: 1;
+		// position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		padding: 15px 0;
+	}
+
+	.grid-dot {
+		position: absolute;
+		top: 5px;
+		right: 15px;
+	}
+
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 0px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.nav-wrap {
+		width: 100%;
+		padding: 0 22rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.picker-box {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			font-size: 32rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #ffffff;
+
+			.arrow {
+				margin-left: 10rpx;
+			}
+		}
+
+		.logo {
+			flex-shrink: 0;
+			width: 100rpx;
+			height: auto;
+		}
+
+		.search-input {
+			width: 300rpx;
+			height: 50rpx;
+		}
+
+		.tool {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+
+			.icon {
+				height: auto;
+			}
+
+			.search-icon {
+				width: 40rpx;
+				margin-right: 34rpx;
+			}
+
+			.message-icon {
+				width: 32rpx;
+				margin-right: 27rpx;
+			}
+
+			.qr-icon {
+				width: 37rpx;
+			}
+		}
+	}
+
+	.swiper-box {
+		margin: 50rpx auto 0;
+		width: 710rpx;
+		height: 253rpx;
+
+		.swiper-item {
+			width: 100%;
+			height: 100%;
+
+			.banner {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.nav {
+		margin: 0rpx 0;
+		box-sizing: border-box;
+		padding: 0 10rpx;
+
+		&-item {
+			width: 100%;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+			height: 130rpx;
+
+			&-img {
+				width: 80rpx;
+				height: 80rpx;
+			}
+
+			&-name {
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #585b61;
+			}
+		}
+	}
+
+
+	.video-box {
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		width: 100%;
+
+		.video-body {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+		}
+
+		.video-title {
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+
+			.text {
+				margin-top: 10rpx;
+				margin-bottom: 10rpx;
+				width: 640rpx;
+				// flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.notice-box {
+		display: flex;
+		align-items: center;
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 0 20rpx;
+		padding: 30rpx 20rpx;
+
+		.img {
+			width: 75rpx;
+			height: auto;
+			margin-right: 36rpx;
+			margin-left: 10rpx;
+		}
+
+		.notice-info {
+			flex: 1;
+
+			.notice-cell:first-of-type {
+				margin-bottom: 15rpx;
+			}
+		}
+
+		.notice-cell {
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.icon {
+				width: 63rpx;
+				margin-right: 18rpx;
+			}
+
+			.text {
+				flex: 1;
+				min-width: 0;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+
+	.service-box {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 0;
+		padding: 0rpx 20rpx;
+
+		.service-item {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #585b61;
+
+			.img {
+				width: 70rpx;
+				height: auto;
+			}
+		}
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.more {
+		display: flex;
+		align-items: center;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #a6abb5;
+	}
+
+	.orders {
+		background: #ffffff;
+		border-radius: 20px 20px 20px 20px;
+		margin: 30rpx 20rpx 60rpx;
+		padding: 30rpx 20rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.ctitle {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #585b61;
+			}
+
+			.more {
+				display: flex;
+				align-items: center;
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a6abb5;
+			}
+		}
+
+		.orders-list {
+			margin-top: 30rpx;
+
+			.orders-item {
+				&:not(:last-of-type) {
+					padding: 0 0 30rpx;
+					margin-bottom: 30rpx;
+					border-bottom: 1px solid #eeeeee;
+				}
+
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.left {
+					flex: 1;
+					height: 160rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+
+					.info {
+						min-width: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #585b61;
+						line-height: 36rpx;
+					}
+
+					.date {
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 21rpx;
+							height: 21rpx;
+							margin-right: 9rpx;
+						}
+
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #a6abb5;
+					}
+				}
+
+				// .img {
+				// 	flex-shrink: 0;
+				// 	width: 252rpx;
+				// 	height: 160rpx;
+				// 	border-radius: 20rpx;
+				// 	background-color: #82848a;
+				// }
+			}
+		}
+
+
+	}
+</style>

+ 414 - 0
pages/rtu-manage/rtugrounddata.vue

@@ -0,0 +1,414 @@
+<template>
+	<view class="wrap">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view class="container">
+			<uSection title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uDataPicker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uDataPicker>
+			</uSection>
+			<uSection title="">
+				<uSearchBar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uSearchBar>
+			</uSection>
+			<uSection title="">
+				<uTable ref="table" :loading="loading" border stripe type="" emptyText="暂无更多数据">
+					<uni-tr>
+						<uni-th width="120" align="center">上报时间</uni-th>
+						<uni-th align="center">测站名称</uni-th>
+						<uni-th width="120" align="center">墒情数据</uni-th>
+					</uni-tr>
+					<uni-tr v-for="item in tableData" :key="item.id">
+						<uni-td>
+							<view style="text-align: center;">{{ item.tm }}</view>
+						</uni-td>
+						<uni-td>
+							<view v-if="item.rtuName" style="text-align: center;">
+								{{ item.rtuName }}
+							</view>
+							<view v-else style="text-align: center;">
+								{{ item.rtuCode }}
+							</view>
+						</uni-td>
+						<uni-td align="center">
+							<view class="uni-group">
+								<button class="uni-button" size="mini" type="default"
+									@click="toGroundInfo(item)">墒情</button>
+							</view>
+						</uni-td>
+					</uni-tr>
+				</uTable>
+			</uSection>
+			<uGroup>
+				<view style="margin-top: 5px;background-color: azure;">
+					<uPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uSearchBar,
+			uDataPicker,
+			uGroup,
+			uSection,
+			uTable,
+			uPagination,
+			uBreadcrumb,
+			uNavBar,
+		},
+		onLoad(option) {
+			this.selectedIndexs = [];
+		},
+		created() {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				selectedTreeNode: '',
+				orgId: '',
+				projectId: '',
+				title: '墒情实时数据',
+				desc: '',
+				searchValue: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+				projectTree: [],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getData();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onnodeclick(e) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				this.searchValue = '';
+				this.pageCurrent = 1;
+				this.getData();
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', this.selectedTreeNode);
+			},
+			// 多选处理
+			selectedItems() {
+				return this.selectedIndexs.map(i => this.tableData[i])
+			},
+			// 多选
+			selectionChange(e) {
+				console.log(e.detail.index)
+				this.selectedIndexs = e.detail.index
+			},
+			//批量删除
+			delTable() {
+				//console.log(this.selectedItems())
+			},
+			// 分页触发
+			change(e) {
+				this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getData(e.current)
+			},
+			// 获取数据
+			getData() {
+				this.loading = true
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formData = {};
+				formData['rtuName'] = this.searchValue;
+				formData['projectId'] = this.projectId;
+				formData['orgId'] = this.orgId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/data/ground/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: formData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.tableData = res.data.records;
+						that.total = res.data.total;
+					}
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+			toGroundInfo(item) {
+				console.log(item.id + " " + item.rtuName)
+				uni.navigateTo({
+					url: '/pages/rtu-manage/rtugrounddatadetail?id=' + item.id
+				})
+			},
+			search(res) {
+				this.getData();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				this.getData();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.getData();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.wrap {
+		padding: 0 0 100rpx;
+	}
+
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.goods-carts {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		position: absolute;
+		left: 0;
+		right: 0;
+		/* #ifdef H5 */
+		left: var(--window-left);
+		right: var(--window-right);
+		/* #endif */
+		top: 0;
+	}
+
+	.button {
+		display: flex;
+		align-items: center;
+		height: 35px;
+		margin-left: 10px;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+
+	.uni-group {
+		display: flex;
+		align-items: center;
+	}
+
+	.data-pickerview {
+		height: 400px;
+		border: 1px #e5e5e5 solid;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+</style>

+ 333 - 0
pages/rtu-manage/rtugrounddatadetail.vue

@@ -0,0 +1,333 @@
+<template>
+	<view class="container">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view>
+			<uSection title="">
+				<uni-table ref="table" :loading="loading" border stripe type="" emptyText="暂无更多数据">
+					<uni-tr>
+						<uni-th width="240" align="center">含水量</uni-th>
+						<uni-th align="center">数值</uni-th>
+					</uni-tr>
+					<uni-tr v-for="(item,index) in tableData" :key="index">
+						<uni-td>
+							<view style="text-align: center;">{{ item.name }}</view>
+						</uni-td>
+						<uni-td align="center">
+							<view style="text-align: center;color: coral;">{{ item.value }}</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+			</uSection>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+
+	export default {
+		components: {
+			uSearchBar,
+			uDataPicker,
+			uGroup,
+			uSection,
+			uniTable,
+			uPagination,
+			uBreadcrumb,
+			uNavBar,
+		},
+		onLoad(option) {
+			this.selectedIndexs = [];
+			this.id = option.id;
+			this.getData();
+		},
+		data() {
+			return {
+				id: '',
+				title: '墒情详情',
+				desc: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			// 获取数据
+			getData() {
+				this.loading = true
+				var formData = {};
+				formData['id'] = this.id;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/data/ground/detail',
+					method: 'GET',
+					data: formData,
+				}).then(res => {
+					if (res.data != null) {
+						var values = [];
+						var v1 = {
+							'name': '垂线平均含水量',
+							'value': res.data.vtavslm
+						};
+						values.push(v1);
+						var v2 = {
+							'name': '表层含水量',
+							'value': res.data.srlslm
+						};
+						values.push(v2);
+						var slm10 = {
+							'name': '10CM深度含水量',
+							'value': res.data.slm10
+						};
+						values.push(slm10);
+						var slm20 = {
+							'name': '20CM深度含水量',
+							'value': res.data.slm20
+						};
+						values.push(slm20);
+						var slm30 = {
+							'name': '30CM深度含水量',
+							'value': res.data.slm30
+						};
+						values.push(slm30);
+						var slm40 = {
+							'name': '40CM深度含水量',
+							'value': res.data.slm40
+						};
+						values.push(slm40);
+						var slm60 = {
+							'name': '60CM深度含水量',
+							'value': res.data.slm60
+						};
+						values.push(slm60);
+						var slm80 = {
+							'name': '80CM深度含水量',
+							'value': res.data.slm80
+						};
+						values.push(slm80);
+						var slm100 = {
+							'name': '100CM深度含水量',
+							'value': res.data.slm100
+						};
+						values.push(slm100);
+						that.tableData = values;
+						that.total = values.length;
+
+						console.log('data', values);
+					}
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+
+	.goods-carts {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		position: absolute;
+		left: 0;
+		right: 0;
+		/* #ifdef H5 */
+		left: var(--window-left);
+		right: var(--window-right);
+		/* #endif */
+		top: 0;
+	}
+
+	.button {
+		display: flex;
+		align-items: center;
+		height: 35px;
+		margin-left: 10px;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+
+	.uni-group {
+		display: flex;
+		align-items: center;
+	}
+
+	.data-pickerview {
+		height: 400px;
+		border: 1px #e5e5e5 solid;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+</style>

+ 489 - 0
pages/rtu-manage/rtumanage.vue

@@ -0,0 +1,489 @@
+<template>
+	<view class="wrap">
+		<uNavBar :fixed="true" backgroundColor="#3F9EFF" statusBar="false" height="75px">
+			<block slot="left">
+				<view style="display: flex;flex-direction: column;justify-content: center;">
+					<image src="/static/images/nav_logo.png" class="logo" mode="widthFix"></image>
+				</view>
+			</block>
+			<view style="width:100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: #ffffff; font-size: 1rem;font-family: Microsoft YaHei;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view class="container">
+			<uSection title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uSection>
+			<view>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</view>
+			<uSection title="">
+				<uni-list>
+					<uni-list-item v-for="(item, index) in tableData" :key="index">
+						<template v-slot:body>
+							<view style="height: 125px;width: 100%;display: flex;flex-direction: column;">
+								<!-- 测站名称 -->
+								<view
+									style="height:22%; width:100%;display:flex;flex-direction: row;justify-content: flex-start;align-items: center;">
+									<image class="order-title-image" style="box-shadow:0 0 2px 2px lightblue"
+										src="/static/images//manage//site.png" mode="widthFix">
+									</image>
+									<text style="margin-left: 10rpx; font-size: 1rem;font-weight: bold;">{{item.rtuName}}</text>
+									<text
+										style="margin-left:8rpx;font-size: 0.9rem;color:grey;">[{{item.rtuCode}}]</text>
+								</view>
+								<!-- 运行状态 -->
+								<view
+									style="height:18%;width: 100%;display: flex;flex-direction: row;align-items: center;">
+									<view v-if="item.runStatusId==1"
+										style="display: flex; flex-direction: row;align-items: center;">
+										<image class="slot-image" src="/static/images/icon_warning.png" mode="widthFix">
+										</image>
+										<text style="color: orangered;font-size:0.7rem">预警</text>
+									</view>
+									<view v-else style="display: flex; flex-direction: row;align-items: center;">
+										<image class="slot-image" src="/static/images/tabbar/demo_selected.png"
+											mode="widthFix">
+										</image>
+										<text style="color: green;font-size:0.7rem">正常</text>
+									</view>
+									<text style="margin-left: 10px;color:gray;font-size:0.7rem;">最近上报时间</text>
+									<text
+										style="margin-left: 4px;color:gray;font-size:0.7rem;">{{item.lastUpTime}}</text>
+								</view>
+								<!-- 测站类型 -->
+								<view
+									style="height:18%;width: 100%;display: flex;flex-direction:row;justify-content: flex-start;align-items: center;">
+									<text style="color:gray;font-size:0.7rem;margin-right: 5px;">测站类型:</text>
+									<view v-if="item.isRain===1">
+										<text style="color:gray;font-size:0.7rem">雨量站</text>
+									</view>
+									<view v-if="item.isRiver===1">
+										<text v-if="item.isRain===1"
+											style="margin-left:2px;margin-right:2px;color:skyblue;font-size:0.7rem">
+											/
+										</text>
+										<text style="color:gray;font-size:0.7rem">河道站</text>
+									</view>
+									<view v-if="item.isRes===1">
+										<text v-if="item.isRain===1 || item.isRiver===1"
+											style="margin-left:2px;margin-right:2px;color:skyblue;font-size:0.7rem">
+											/
+										</text>
+										<text style="color:gray;font-size:0.7rem">水库站</text>
+									</view>
+								</view>
+								<!-- 业务数据 -->
+								<view
+									style="height:18%;display: flex;flex-direction:row;justify-content: flex-start;align-items: center;">
+									<view>
+										<text style="color:gray;font-size:0.6rem;margin-right: 5px;">实时数据:</text>
+									</view>
+									<view v-if="item.isRain===1">
+										<text style="color:gray;font-size:0.6rem">降水(mm)</text>
+										<text v-if="item.drp"
+											style="margin-left:2px;color:gray;font-size:0.6rem">:{{item.drp}}</text>
+										<text v-else style="margin-left:2px;color:gray;font-size:0.6rem">:</text>
+									</view>
+									<view v-if="item.isRiver===1">
+										<text v-if="item.isRain===1"
+											style="margin-left:2px;margin-right:2px;color:skyblue;font-size:0.6rem">
+											/
+										</text>
+										<text style="color:gray;font-size:0.6rem">水位(m)</text>
+										<text v-if="item.z"
+											style="margin-left:2px;color:gray;font-size:0.6rem">:{{item.z}}</text>
+										<text v-else style="margin-left:2px;color:gray;font-size:0.6rem">: </text>
+
+									</view>
+									<view v-if="item.isRes===1">
+										<text v-if="item.isRain===1 || item.isRiver===1"
+											style="margin-left:2px;margin-right:2px;color:skyblue;font-size:0.6rem">
+											/
+										</text>
+										<text style="color:gray;font-size:0.6rem">库上水位(m)</text>
+										<text v-if="item.rz"
+											style="margin-left:2px;color:gray;font-size:0.6rem">:{{item.rz}}</text>
+										<text v-else style="margin-left:2px;color:gray;font-size:0.6rem">: </text>
+
+									</view>
+								</view>
+								<!-- 操作 -->
+								<view
+									style="height:22%;padding-top:4px;display:  flex;flex-direction: row;justify-content: flex-end;">
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toWarningPage(item.rtuCode)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="notification" size="18"
+												color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">预警信息</text>
+										</view>
+									</view>
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toCheckOrderPage(item.rtuCode)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="gear" size="18" color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">工单管理</text>
+										</view>
+									</view>
+									<view
+										style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+										@click="toLocation(item)">
+										<view style="display:flex;flex-direction: column;justify-content: center;">
+											<uIcons class="input-uni-icon" type="location" size="18" color="coral" />
+										</view>
+										<view
+											style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+											<text style="color:black;font-size:0.7rem">导航</text>
+										</view>
+									</view>
+								</view>
+							</view>
+						</template>
+					</uni-list-item>
+				</uni-list>
+				<uGroup>
+					<view class="uni-pagination-box">
+						<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+							@change="change" />
+					</view>
+				</uGroup>
+			</uSection>
+		</view>
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import uSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	export default {
+		name: '',
+		components: {
+			uGroup,
+			uSection,
+			uNavBar,
+			uDataPicker,
+			uList,
+			uListItem,
+			uTable,
+			uBreadcrumb,
+			uPagination,
+			uIcons,
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				title: '管理工作台',
+				desc: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+				projectTree: [],
+				orgId: '',
+				projectId: '',
+				searchValue: '',
+				selectedTreeNode: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			this.loadList();
+		},
+		methods: {
+			onnodeclick(node) {
+				if (node.projectId != null) {
+					this.orgId = node.orgId;
+					this.projectId = node.projectId;
+					this.searchValue = '';
+					this.pageCurrent = 1;
+					this.loadList();
+				}
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+               console.log("onchange++++++"+e)
+			},
+			// 分页触发
+			change(e) {
+				//this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.loadList()
+			},
+			search(res) {
+				this.loadList();
+			},
+			input(res) {
+
+			},
+			clear(res) {
+				this.searchVal = '';
+				this.loadList();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.searchVal = '';
+				this.loadList();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.loadList();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			loadList() {
+				this.loading = true
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formData = {};
+				formData['rtuName'] = this.searchValue;
+				formData['projectId'] = this.projectId;
+				formData['orgId'] = this.orgId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: formData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.tableData = res.data.records;
+					}
+					that.total = res.data.total;
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+			toWarningPage(rtuCode) {
+				uni.navigateTo({
+					url: '/pages/warning/rtuwarninglist?rtuCode=' + rtuCode
+				})
+			},
+			toLocation(item) {
+				let lat = item.lat;
+				let lng = item.lng;
+				let name = item.rtuName;
+				let add = item.locationDesc;
+				uni.openLocation({
+					latitude: Number(lat),
+					longitude: Number(lng),
+					name: name,
+					address: "",
+					success() {}
+				})
+			},
+			toCheckOrderPage(rtuCode) {
+				uni.navigateTo({
+					url: '/pages/check-order/rtu/rtucheckorderlist?rtuCode=' + rtuCode
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.logo {
+		flex-shrink: 0;
+		width: 100rpx;
+		height: auto;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 20px;
+		height: 20px;
+		border-radius: 50%;
+
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 20px;
+		height: 20px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+</style>

+ 404 - 0
pages/rtu-manage/rturaindata.vue

@@ -0,0 +1,404 @@
+<template>
+	<view class="wrap">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view class="container">
+			<uni-section title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uni-section>
+			<uni-section title="">
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uni-section>
+			<uni-section title="">
+				<uni-table ref="table" :loading="loading" border stripe type="" emptyText="暂无更多数据">
+					<uni-tr>
+						<uni-th width="120" align="center">上报时间</uni-th>
+						<uni-th align="center">测站名称</uni-th>
+						<uni-th width="120" align="center">降水量</uni-th>
+					</uni-tr>
+					<uni-tr v-for="(item, index) in tableData" :key="index">
+						<uni-td>
+							<view style="text-align: center;">{{ item.tm }}</view>
+						</uni-td>
+						<uni-td>
+							<view v-if="item.rtuName" style="text-align: center;">
+								{{ item.rtuName }}
+							</view>
+							<view v-else style="text-align: center;">
+								{{ item.rtuCode }}
+							</view>
+						</uni-td>
+						<uni-td align="center">
+							<view style="text-align: center;color: coral;">{{ item.drp }}</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+				<view style="margin-top: 5px;background-color: azure;">
+					<uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uni-section>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uniSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uniPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uniBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+	import tableData from './data.js'
+	export default {
+		components: {
+			uniSearchBar,
+			uGroup,
+			uniSection,
+			uniTable,
+			uniPagination,
+			uniBreadcrumb,
+			uNavBar,
+		},
+		onLoad(option) {
+			this.selectedIndexs = [];
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				selectedTreeNode: '',
+				title: '雨水情实时数据',
+				desc: '',
+				orgId: '',
+				projectId: '',
+				searchValue: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+				projectTree: [],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getData();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onnodeclick(e) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				this.searchValue = '';
+				this.pageCurrent = 1;
+				this.getData();
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', this.selectedTreeNode);
+
+			},
+			// 多选处理
+			selectedItems() {
+				return this.selectedIndexs.map(i => this.tableData[i])
+			},
+			// 多选
+			selectionChange(e) {
+				console.log(e.detail.index)
+				this.selectedIndexs = e.detail.index
+			},
+			//批量删除
+			delTable() {
+				//console.log(this.selectedItems())
+			},
+			// 分页触发
+			change(e) {
+				this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getData()
+			},
+			// 获取数据
+			getData() {
+				this.loading = true
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formData = {};
+				formData['rtuName'] = this.searchValue;
+				formData['projectId'] = this.projectId;
+				formData['orgId'] = this.orgId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/data/rain/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: formData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.tableData = res.data.records;
+						that.total = res.data.total;
+					}
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+			search(res) {
+				this.getData();
+			},
+			input(res) {
+				//console.log('----input:', res)
+			},
+			clear(res) {
+				this.searchValue = '';
+				this.getData();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.searchValue = '';
+				this.getData();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.wrap {
+		padding: 0 0 100rpx;
+	}
+	
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.goods-carts {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		position: absolute;
+		left: 0;
+		right: 0;
+		/* #ifdef H5 */
+		left: var(--window-left);
+		right: var(--window-right);
+		/* #endif */
+		top: 0;
+	}
+
+	.button {
+		display: flex;
+		align-items: center;
+		height: 35px;
+		margin-left: 10px;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+
+	.uni-group {
+		display: flex;
+		align-items: center;
+	}
+
+	.data-pickerview {
+		height: 400px;
+		border: 1px #e5e5e5 solid;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+</style>

+ 404 - 0
pages/rtu-manage/rturiverdata.vue

@@ -0,0 +1,404 @@
+<template>
+	<view class="wrap">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view class="container">
+			<uni-section title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uni-section>
+			<uni-section title="">
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uni-section>
+			<uni-section title="">
+				<uni-table ref="table" :loading="loading" border stripe type="" emptyText="暂无更多数据">
+					<uni-tr>
+						<uni-th width="120" align="center">上报时间</uni-th>
+						<uni-th align="center">测站名称</uni-th>
+						<uni-th width="120" align="center">水位</uni-th>
+					</uni-tr>
+					<uni-tr v-for="(item, index) in tableData" :key="index">
+						<uni-td>
+							<view style="text-align: center;">{{ item.tm }}</view>
+						</uni-td>
+						<uni-td>
+							<view v-if="item.rtuName" style="text-align: center;">
+								{{ item.rtuName }}
+							</view>
+							<view v-else style="text-align: center;">
+								{{ item.rtuCode }}
+							</view>
+						</uni-td>
+						<uni-td align="center">
+							<view style="text-align: center;color: coral;">{{ item.z }}</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+				<view style="margin-top: 5px;background-color: azure;">
+					<uniPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uni-section>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uniGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uniSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uniPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uniBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+	import tableData from './data.js'
+	export default {
+		components: {
+			uniSearchBar,
+			uniGroup,
+			uniSection,
+			uniTable,
+			uniPagination,
+			uniBreadcrumb,
+			uNavBar,
+		},
+		onLoad(option) {
+			this.selectedIndexs = [];
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				selectedTreeNode: '',
+				orgId: '',
+				projectId: '',
+				title: '河道水情实时数据',
+				desc: '',
+				searchValue: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+				projectTree: [],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getData();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onnodeclick(e) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				this.searchValue = '';
+				this.pageCurrent = 1;
+				this.getData();
+			},
+			onpopupopened(e) {
+				//console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				//	console.log('popupclosed');
+			},
+			onchange(e) {
+
+			},
+			openProjectSelect() {
+
+			},
+			// 多选处理
+			selectedItems() {
+				return this.selectedIndexs.map(i => this.tableData[i])
+			},
+			// 多选
+			// selectionChange(e) {
+			// 	console.log(e.detail.index)
+			// 	this.selectedIndexs = e.detail.index
+			// },
+			//批量删除
+			delTable() {
+				//console.log(this.selectedItems())
+			},
+			// 分页触发
+			change(e) {
+				this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getData(e.current)
+			},
+			// 获取数据
+			getData() {
+				this.loading = true
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formData = {};
+				formData['rtuName'] = this.searchValue;
+				formData['projectId'] = this.projectId;
+				formData['orgId'] = this.orgId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/data/river/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: formData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.tableData = res.data.records;
+						that.total = res.data.total;
+					}
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+			search(res) {
+				this.getData();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				this.getData();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+				this.getData();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.wrap {
+		padding: 0 0 100rpx;
+	}
+	
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+
+	.goods-carts {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		position: absolute;
+		left: 0;
+		right: 0;
+		/* #ifdef H5 */
+		left: var(--window-left);
+		right: var(--window-right);
+		/* #endif */
+		top: 0;
+	}
+
+	.button {
+		display: flex;
+		align-items: center;
+		height: 35px;
+		margin-left: 10px;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+
+	.uni-group {
+		display: flex;
+		align-items: center;
+	}
+
+	.data-pickerview {
+		height: 400px;
+		border: 1px #e5e5e5 solid;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+</style>

+ 402 - 0
pages/rtu-manage/rtursvrdata.vue

@@ -0,0 +1,402 @@
+<template>
+	<view class="wrap">
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" status-bar left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uNavBar>
+		<view class="container">
+			<uni-section title="查询" titleFontSize="0.8rem" type="line" style="padding-left: 10px;padding-right: 10px;">
+				<uni-data-picker placeholder="请选择机构" popup-title="请选择所在地区" :localdata="projectTree"
+					v-model="selectedTreeNode" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened"
+					@popupclosed="onpopupclosed">
+				</uni-data-picker>
+			</uni-section>
+			<uni-section>
+				<uni-search-bar placeholder="请录入测站编码或测站名称" @confirm="search" :focus="false" v-model="searchValue"
+					@blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
+				</uni-search-bar>
+			</uni-section>
+			<uni-section title="">
+				<uni-table ref="table" :loading="loading" border stripe type="" emptyText="暂无更多数据">
+					<uni-tr>
+						<uni-th width="120" align="center">上报时间</uni-th>
+						<uni-th align="center">测站名称</uni-th>
+						<uni-th width="120" align="center">库上水位</uni-th>
+					</uni-tr>
+					<uni-tr v-for="(item, index) in tableData" :key="index">
+						<uni-td>
+							<view style="text-align: center;">{{ item.tm }}</view>
+						</uni-td>
+						<uni-td>
+							<view v-if="item.rtuName" style="text-align: center;">
+								{{ item.rtuName }}
+							</view>
+							<view v-else style="text-align: center;">
+								{{ item.rtuCode }}
+							</view>
+						</uni-td>
+						<uni-td align="center">
+							<view style="text-align: center;color: coral;">{{ item.rz }}</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+				<view style="margin-top: 5px;background-color: azure;">
+					<uniPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uni-section>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniSearchBar from '@/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uniGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uniSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uniTable from '@/uni_modules/uni-table/components/uni-table/uni-table.vue'
+	import uniPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uniBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import http from '@/http/api.js';
+	import tableData from './data.js'
+	export default {
+		components: {
+			uniSearchBar,
+			uNavBar,
+			uniGroup,
+			uniSection,
+			uniTable,
+			uniPagination,
+			uniBreadcrumb,
+		},
+		onLoad(option) {
+			this.getProjectTree();
+		},
+		data() {
+			return {
+				selectedTreeNode: '',
+				orgId: '',
+				projectId: '',
+				title: '水库水情实时数据',
+				desc: '',
+				searchValue: '',
+				tableData: [],
+				// 每页数据量
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+				loading: false,
+				selectedIndexs: [],
+				projectTree: [],
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getProjectTree() {
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/manage/tree',
+					method: 'GET',
+				}).then(res => {
+					if (res.data != null) {
+						that.projectTree = res.data;
+						that.selectedTreeNode = that.projectTree[0].value;
+						that.orgId = that.projectTree[0].orgId;
+						that.projectId = that.projectTree[0].projectId;
+						that.getData();
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+			onnodeclick(e) {
+				this.orgId = node.orgId;
+				this.projectId = node.projectId;
+				this.searchValue = '';
+				this.pageCurrent = 1;
+				this.getData();
+			},
+			onpopupopened(e) {
+
+			},
+			onpopupclosed(e) {
+
+			},
+			onchange(e) {
+				console.log('onchange:', this.selectedTreeNode);
+			},
+			// 多选处理
+			selectedItems() {
+				return this.selectedIndexs.map(i => this.tableData[i])
+			},
+			// 多选
+			selectionChange(e) {
+				console.log(e.detail.index)
+				this.selectedIndexs = e.detail.index
+			},
+			//批量删除
+			delTable() {
+				console.log(this.selectedItems())
+			},
+			// 分页触发
+			change(e) {
+				this.$refs.table.clearSelection()
+				this.selectedIndexs.length = 0
+				this.pageCurrent = e.current;
+				this.getData(e.current)
+			},
+			// 获取数据
+			getData() {
+				this.loading = true
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formData = {};
+				formData['rtuName'] = this.searchValue;
+				formData['projectId'] = this.projectId;
+				formData['orgId'] = this.orgId;
+				var that = this;
+				http.request({
+					url: '/galaxy-test/rtu/data/rsvr/page',
+					method: 'GET',
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+					data: formData,
+				}).then(res => {
+					if (res.data.records != null) {
+						that.tableData = res.data.records;
+						that.total = res.data.total;
+					}
+					this.loading = false
+				}).catch(err => {
+					console.log(err)
+					this.loading = false
+				})
+			},
+			search(res) {
+				this.getData();
+			},
+			input(res) {
+				//	console.log('----input:', res)
+			},
+			clear(res) {
+				this.getData();
+			},
+			blur(res) {
+
+			},
+			focus(e) {
+
+			},
+			cancel(res) {
+
+				this.getData();
+			},
+			onBackPress() {
+				// #ifdef APP-PLUS
+				plus.key.hideSoftKeybord();
+				// #endif
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.wrap {
+		padding: 0 0 100rpx;
+	}
+	
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.goods-carts {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		position: absolute;
+		left: 0;
+		right: 0;
+		/* #ifdef H5 */
+		left: var(--window-left);
+		right: var(--window-right);
+		/* #endif */
+		top: 0;
+	}
+
+	.button {
+		display: flex;
+		align-items: center;
+		height: 35px;
+		margin-left: 10px;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+
+	.search-result {
+		padding-top: 10px;
+		padding-bottom: 20px;
+		text-align: center;
+	}
+
+	.search-result-text {
+		text-align: center;
+		font-size: 14px;
+		color: #666;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 0px;
+	}
+
+	.uni-mt-10 {
+		margin-top: 10px;
+	}
+
+	.uni-group {
+		display: flex;
+		align-items: center;
+	}
+
+	.data-pickerview {
+		height: 400px;
+		border: 1px #e5e5e5 solid;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.popper__arrow {
+		top: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+</style>

+ 188 - 0
pages/service/service.vue

@@ -0,0 +1,188 @@
+<template>
+	<view class="container">
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+				back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="服务"
+				title-color="#fff"></u-navbar>
+			<view class="head-bg"></view>
+			<!-- 我的订阅 start -->
+			<view class="card sub">
+				<view class="title">我的订阅</view>
+				<view class="list">
+					<u-grid :col="4" :border="false">
+						<u-grid-item bg-color="transparent" v-for="(item, index) in subscribeList" :key="index">
+							<navigator url="" hover-class="none" class="nav-item">
+								<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
+								<view class="nav-item-name">{{ item.name }}</view>
+							</navigator>
+						</u-grid-item>
+					</u-grid>
+				</view>
+			</view>
+			<!-- 我的订阅 end -->
+
+			<!-- 服务列表 start -->
+			<view class="card wrap" v-for="(item, index) in serviceList" :key="index">
+				<view class="title">{{item.name}}</view>
+				<view class="list">
+					<u-grid :col="4" :border="false">
+						<u-grid-item bg-color="transparent" v-for="(_item, _index) in item.list" :key="_index">
+							<navigator url="" hover-class="none" class="nav-item">
+								<image :src="_item.img" mode="widthFix" class="nav-item-img"></image>
+								<view class="nav-item-name">{{ _item.name }}</view>
+							</navigator>
+						</u-grid-item>
+					</u-grid>
+				</view>
+			</view>
+			<!-- 服务列表 end -->
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		fakeSubscribeList,
+		fakeServiceList,
+	} from "@/api/mock/service.js";
+	export default {
+		data() {
+			return {
+				// 我的订阅
+				subscribeList: [],
+				// 服务列表
+				serviceList: [],
+			};
+		},
+		onLoad() {
+			// 后续将改为与后端联动
+			// 加载我的订阅数据
+			fakeSubscribeList().then(data => {
+				this.subscribeList = data;
+			})
+			// 加载服务集合数据
+			fakeServiceList().then(data => {
+				this.serviceList = data;
+			})
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+	}
+
+	.head-bg {
+		position: absolute;
+		left: 0px;
+		top: 0px;
+		z-index: -1;
+		width: 750rpx;
+		height: 270rpx;
+		background: #0bb9c8;
+	}
+
+	.card {
+		margin: 30rpx;
+		background: #ffffff;
+		border-radius: 20rpx;
+		margin-top: 36rpx;
+	}
+
+	.sub {
+		.title {
+			padding-top: 36rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+
+			font-size: 30rpx;
+			font-family: Source Han Sans CN;
+			font-weight: 500;
+			color: #000000;
+
+			&::before {
+				content: '';
+				display: block;
+				width: 135rpx;
+				height: 1rpx;
+				background: #e4e7ed;
+				margin: 0 17rpx;
+			}
+
+			&::after {
+				content: '';
+				display: block;
+				width: 135rpx;
+				height: 1rpx;
+				background: #e4e7ed;
+				margin: 0 17rpx;
+			}
+		}
+	}
+
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 0 30rpx;
+
+		.nav-item {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+			align-items: center;
+			font-size: 30rpx;
+			font-family: Source Han Sans CN;
+			font-weight: 400;
+			color: #131313;
+			line-height: 48rpx;
+			opacity: 0.77;
+
+			&-img {
+				width: 54rpx;
+				height: 54rpx;
+				margin-bottom: 30rpx;
+			}
+
+			&-name {
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #585b61;
+			}
+		}
+	}
+
+	.wrap {
+		.title {
+			padding: 36rpx 16rpx;
+			display: flex;
+			align-items: center;
+			font-size: 32rpx;
+			font-family: Source Han Sans CN;
+			font-weight: 500;
+			color: #000000;
+
+			&::before {
+				content: "";
+				display: block;
+				width: 5rpx;
+				height: 36rpx;
+				margin-right: 10rpx;
+				background: #3ac4d1;
+			}
+		}
+	}
+</style>

+ 22 - 0
pages/system/setting.vue

@@ -0,0 +1,22 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-size="35" :background="{ background: '#fff' }" title="设置" title-color="#000">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">正在开发中</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				data: {}
+			};
+		},
+	}
+</script>

+ 146 - 0
pages/user/about.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="container">
+<!-- 		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="关于"
+			back-icon-size="35" :background="{ background: '#3F9EFF' }" title-color="#000">
+		</u-navbar> -->
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack">
+		</uNavBar>
+		<view class="content">
+			<view class="form">
+				<view class="cell">
+					<view class="name">APP版本</view>
+					<input type="text" placeholder="" disabled="true" v-model="version" class="ipt"
+						placeholder-class="hold" style="color: #82848A;" />
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	import pickRegions from '@/components/pick-regions/pick-regions.vue';
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import {
+		version
+	} from '@/common/setting.js'
+	export default {
+		components: {
+			pickRegions,
+			uNavBar
+		},
+		data() {
+			return {
+				version: '',
+				title:'关于'
+			};
+		},
+		onLoad() {
+             this.version=version;
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		padding: 0 0 200rpx;
+		overflow: hidden;
+	}
+
+	.complie {
+		vertical-align: middle;
+		padding: 10rpx 20rpx;
+		font-size: 32rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+	}
+
+	.content {
+		background-color: #ffffff;
+		overflow: hidden;
+	}
+
+	.avatar {
+		margin-top: 30rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		flex-direction: column;
+
+		font-size: 30rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+
+		.avatar-image {
+			width: 162rpx;
+			height: 162rpx;
+			background: #ffffff;
+			border-radius: 50%;
+			background-color: #82848a;
+			margin-bottom: 15rpx;
+		}
+	}
+
+	.form {
+		padding: 0 36rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 40rpx 0;
+
+			font-size: 30rpx;
+			font-family: Source Han Sans CN;
+			font-weight: bold;
+			color: #666666;
+
+			&:not(:last-of-type) {
+				border-bottom: 2rpx solid #efefef;
+			}
+
+			.ipt {
+				flex: 1;
+				margin-left: 40rpx;
+				text-align: right;
+				font-size: 23rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.hold {
+				font-size: 27rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #c8c8ce;
+			}
+		}
+	}
+
+	.back {
+		margin-top: 40rpx;
+		text-align: center;
+		height: 109rpx;
+		background: #ffffff;
+
+		font-size: 34rpx;
+		font-family: Source Han Sans CN;
+		font-weight: bold;
+		color: #141414;
+		line-height: 109rpx;
+	}
+</style>

+ 316 - 0
pages/user/center.vue

@@ -0,0 +1,316 @@
+<template>
+	<view class="container">
+		<view class="head">
+			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="个人中心"
+				:background="{ background: 'transprent' }" title-color="#FFFFFF">
+				<!-- <view @click="$u.func.route('/pages/system/setting')" slot="right">
+					<image src="/static/images/user/setting.png" class="set-icon" mode="widthFix"></image>
+				</view> -->
+			</u-navbar>
+	<!-- 		<image src="/static/images/user/bg.png" class="head-bg" />
+ -->
+			<!-- 用户信息 -->
+			<view class="user-box">
+				<view class="left" style="width: 60%;">
+					<view style="display: flex;flex-direction: row;width: 100%;">
+						<view style="display: flex;flex-direction: column;justify-content: center;">
+							<image :src="userInfo.avatar" class="avatar" mode=""></image>
+							<view class="user-name">{{ userInfo.nick_name }}</view>
+						</view>
+					</view>
+					<view style="display: flex;flex-direction: row;width: 100%;color: #F0F0F0;">
+						{{roleName}}/{{deptName}}
+						<!-- <view class="tag">{{ userInfo.tenant_id }}</view> -->
+					</view>
+				</view>	
+				<view style="display: flex;flex-direction: column;justify-content: flex-end;">
+					<!-- <image :src="userInfo.avatar" class="avatar" mode=""></image> -->
+					<!-- <view class="user-name">{{ userInfo.nick_name }}</view> -->
+	<!-- 				<view class="tag" style="display: none;">{{ userInfo.tenant_id }}</view> -->
+					<view @click="$u.func.route('/pages/user/profile')" class="edit-btn">编辑资料</view>
+				</view>	
+			</view>
+			<!-- 操作按钮 -->
+			<!-- 			<view class="nav">
+				<navigator url="" hover-class="none" class="nav-item">
+					<image src="/static/images/user/n1.png" class="icon" mode=""></image>
+					<view class="name">我的消息</view>
+				</navigator>
+				<navigator url="" hover-class="none" class="nav-item">
+					<image src="/static/images/user/n2.png" class="icon" mode=""></image>
+					<view class="name">我的待办</view>
+				</navigator>
+				<navigator url="" hover-class="none" class="nav-item">
+					<image src="/static/images/user/n3.png" class="icon" mode=""></image>
+					<view class="name">我的地址</view>
+				</navigator>
+				<navigator url="" hover-class="none" class="nav-item">
+					<image src="/static/images/user/n4.png" class="icon" mode=""></image>
+					<view class="name">我的收藏</view>
+				</navigator>
+			</view> -->
+		</view>
+		<!-- 功能列表 -->
+		<view class="cell-box">
+			<u-cell-group :border="false">
+				<u-cell-item title="修改密码" :border-bottom="false" @click="$u.func.route('/pages/user/modify-password')">
+					<image slot="icon" src="/static/images/user/c8.png" class="icon" mode=""></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view>
+<!-- 		<view class="cell-box">
+			<u-cell-group :border="false">
+				<u-cell-item title="显示字体" :border-bottom="false" @click="$u.func.route('/pages/user/font-setting')">
+					<image slot="icon" src="/static/images/user/c1.png" class="icon" mode=""></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<!-- 		
+		<view class="cell-box">
+			<u-cell-group :border="false">
+				<u-cell-item title="我的评价">
+					<image slot="icon" src="/static/images/user/c1.png" class="icon" mode=""></image>
+				</u-cell-item>
+				<u-cell-item title="常见问题">
+					<image slot="icon" src="/static/images/user/c2.png" class="icon" mode=""></image>
+				</u-cell-item>
+				<u-cell-item title="客服中心" :border-bottom="false">
+					<image slot="icon" src="/static/images/user/c3.png" class="icon" mode=""></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view> -->
+		<view class="cell-box">
+			<u-cell-group :border="false">
+				<!-- 				<u-cell-item title="推荐">
+					<image slot="icon" src="/static/images/user/c4.png" class="icon" mode=""></image>
+				</u-cell-item>
+				<u-cell-item title="评分">
+					<image slot="icon" src="/static/images/user/c5.png" class="icon" mode=""></image>
+				</u-cell-item> -->
+	<!-- 			<u-cell-item title="联系系统管理员" @click="$u.func.route('/pages/system/setting')">
+					<image slot="icon" src="/static/images/user/c3.png" class="icon" mode=""></image>
+				</u-cell-item> -->
+
+			</u-cell-group>
+		</view>
+
+		<view class="cell-box">
+			<u-cell-group :border="false">
+				<!-- 				<u-cell-item title="推荐">
+					<image slot="icon" src="/static/images/user/c4.png" class="icon" mode=""></image>
+				</u-cell-item>
+				<u-cell-item title="评分">
+					<image slot="icon" src="/static/images/user/c5.png" class="icon" mode=""></image>
+				</u-cell-item> -->
+
+				<u-cell-item title="关于" :border-bottom="false" @click="$u.func.route('/pages/user/about')">
+					<image slot="icon" src="/static/images/user/c7.png" class="icon" mode=""></image>
+				</u-cell-item>
+			</u-cell-group>
+		</view>
+
+		<u-gap height="50"></u-gap>
+		<view class="cell-box">
+			<u-cell-group :border="false">
+				<button type="warn" @click="logout()">退出登录</button>
+			</u-cell-group>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	export default {
+		onLoad() {
+			console.log(this.userInfo.nick_name)
+			const that = this;
+
+			http.request({
+				url: '/galaxy-system/dept/detail?id=' + this.userInfo.dept_id,
+				method: 'GET'
+			}).then(res => {
+				console.log(JSON.stringify(res.data))
+				that.deptName = res.data.deptName;
+			}).catch(err => {
+				console.log(err)
+			})
+
+			http.request({
+				url: '/galaxy-system/role/select?roleId=' + this.userInfo.role_id,
+				method: 'GET'
+			}).then(res => {
+				console.log(JSON.stringify(res.data))
+				var name = "";
+				res.data.forEach(info => {
+					name += name.length > 0 ? ":" : "";
+					name += info.roleName;
+				})
+				that.roleName = name;
+			}).catch(err => {
+				console.log(err)
+			})
+		},
+		data() {
+			return {
+				roleName: 'ff',
+				deptName: '111'
+			};
+		},
+		methods: {
+			logout() {
+				this.$u.func.logout();
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		overflow: hidden;
+	}
+
+	.head {
+		position: relative;
+		top: 0;
+		left: 0;
+		z-index: 1;
+		// min-height: 582rpx;
+		min-height: 400rpx;
+		overflow: hidden;
+		background: #3F9EFF;
+
+		.set-icon {
+			vertical-align: middle;
+			width: 41rpx;
+			height: auto;
+			margin-right: 35rpx;
+		}
+
+		.head-bg {
+			position: absolute;
+			left: 0px;
+			top: 0px;
+			z-index: -1;
+			width: 750rpx;
+			height: 582rpx;
+			background: #0bb9c8;
+		}
+	}
+
+	.user-box {
+		display: flex;
+		justify-content: space-between;
+		padding: 0 20rpx 0 64rpx;
+		margin-top: 36rpx;
+
+		.left {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+
+			.avatar {
+				width: 128rpx;
+				height: 128rpx;
+				background: #ffffff;
+				border-radius: 50%;
+			}
+
+			.user-name {
+				margin-top: 20rpx;
+				font-size: 36rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 500;
+				color: #ffffff;
+			}
+
+			.tag {
+				margin-top: 20rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				padding: 5rpx 16rpx;
+				border: 1px solid #f5f5f5;
+				border-radius: 7rpx;
+
+				font-size: 19rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 300;
+				color: #ffffff;
+			}
+		}
+
+		.edit-btn {
+			margin-top: 20rpx;
+			flex-shrink: 0;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+
+			width: 165rpx;
+			height: 54rpx;
+			border: 2rpx solid #f5f5f5;
+			border-radius: 11rpx;
+
+			font-size: 27rpx;
+			font-family: Source Han Sans CN;
+			font-weight: 400;
+			color: #ffffff;
+		}
+	}
+
+	.nav {
+		display: flex;
+		//border-top: 2rpx solid #7dcdd6;
+		margin: 36rpx 38rpx 0;
+		padding: 36rpx 0 42rpx;
+
+		.nav-item {
+			width: calc(100% / 4);
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: space-between;
+
+			font-size: 25rpx;
+			font-family: Source Han Sans CN;
+			font-weight: 400;
+			color: #ffffff;
+
+			&:not(:last-of-type) {
+				position: relative;
+
+				&::after {
+					position: absolute;
+					right: 0;
+					top: 50%;
+					transform: translateY(-50%);
+					content: '';
+					display: block;
+					width: 2rpx;
+					background-color: #3ac4d1;
+					height: 30rpx;
+				}
+			}
+
+			.icon {
+				width: 48rpx;
+				height: 48rpx;
+				margin-bottom: 6rpx;
+			}
+		}
+	}
+
+	.cell-box {
+		background: #ffffff;
+		margin: 18rpx;
+
+		.icon {
+			width: 32rpx;
+			height: 32rpx;
+			margin-right: 22rpx;
+		}
+	}
+</style>

+ 22 - 0
pages/user/font-setting.vue

@@ -0,0 +1,22 @@
+<template>
+	<view class="container">
+		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
+			back-icon-size="35" :background="{ background: '#fff' }" title="字体设置" title-color="#000">
+		</u-navbar>
+		<view class="u-demo">
+			<view class="u-demo-wrap">
+				<view class="u-demo-title">正在开发中</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				data: {}
+			};
+		},
+	}
+</script>

+ 208 - 0
pages/user/modify-password.vue

@@ -0,0 +1,208 @@
+<template>
+	<view class="container">
+<!-- 		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="修改密码"
+			back-icon-size="35" :background="{ background: '#fff' }" title-color="#000">
+		</u-navbar> -->
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" @clickLeft="toBack">
+		</uNavBar>
+		<view class="content">
+			<view class="form">
+				<view class="cell">
+					<view class="name"><text style="color: #FF0000; font-weight: bold;font-size: 20px;">*</text>旧密码
+					</view>
+					<input type="text" password="true" placeholder="输入旧密码" v-model="oldPassword" class="ipt" placeholder-class="hold" />
+				</view>
+				<view class="cell">
+					<view class="name"><text style="color: #FF0000; font-weight: bold;font-size: 20px;">*</text>新密码
+					</view>
+					<input type="text" password="true" placeholder="输入新密码" v-model="newPassword" class="ipt" placeholder-class="hold" />
+				</view>
+				<view class="cell">
+					<view class="name"><text style="color: #FF0000; font-weight: bold;font-size: 20px;">*</text>确认新密码
+					</view>
+					<input type="text" password="true" placeholder="再次输入新密码" v-model="newPassword1" class="ipt"
+						placeholder-class="hold" />
+				</view>
+				<u-gap height="50"></u-gap>
+				<view class="cell">
+					<view style="width: 100%;">
+						<button type="warn" @click="formSubmit()">提交</button>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	import md5 from '@/utils/md5.js'
+	import pickRegions from '@/components/pick-regions/pick-regions.vue';
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	export default {
+		components: {
+			pickRegions,
+			uNavBar
+		},
+		data() {
+			return {
+				title:'修改密码',
+				oldPassword: '',
+				newPassword: '',
+				newPassword1: ''
+			};
+		},
+		onLoad() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			formSubmit: function() {
+				const that = this;
+				if (this.oldPassword.length > 0 && this.newPassword.length > 0 && this.newPassword1.length > 0) {
+					uni.showModal({
+						content: '确定修改密码?',
+						showCancel: true,
+						success(res) {
+							if (res.confirm) {
+								let oldPassword = md5(that.oldPassword);
+								let newPassword = md5(that.newPassword);
+								let newPassword1 = md5(that.newPassword1);
+								http.request({
+									url: '/galaxy-user/update-password',
+									method: 'POST',
+									params: {
+										oldPassword,
+										newPassword,
+										newPassword1
+									}
+								}).then(res => {
+									console.log(JSON.stringify(res.data))
+									if (res.success) {
+										uni.showModal({
+											content: '修改已成功',
+											showCancel: false,
+											success(res) {
+												if (res.confirm) {
+													that.$u.func.logout();
+												}
+											}
+										});
+									}
+								}).catch(err => {
+									console.log(err)
+								})
+							}
+						}
+					});
+
+				} else {
+					uni.showModal({
+						content: '请确认必填项',
+						showCancel: false
+					});
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		padding: 0 0 200rpx;
+		overflow: hidden;
+	}
+
+	.complie {
+		vertical-align: middle;
+		padding: 10rpx 20rpx;
+		font-size: 32rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+	}
+
+	.content {
+		background-color: #ffffff;
+		overflow: hidden;
+	}
+
+	.avatar {
+		margin-top: 30rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		flex-direction: column;
+
+		font-size: 30rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+
+		.avatar-image {
+			width: 162rpx;
+			height: 162rpx;
+			background: #ffffff;
+			border-radius: 50%;
+			background-color: #82848a;
+			margin-bottom: 15rpx;
+		}
+	}
+
+	.form {
+		padding: 0 36rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 40rpx 0;
+
+			font-size: 30rpx;
+			font-family: Source Han Sans CN;
+			font-weight: bold;
+			color: #666666;
+
+			&:not(:last-of-type) {
+				border-bottom: 2rpx solid #efefef;
+			}
+
+			.ipt {
+				flex: 1;
+				margin-left: 40rpx;
+				text-align: right;
+				font-size: 23rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.hold {
+				font-size: 27rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #c8c8ce;
+			}
+		}
+	}
+
+	.back {
+		margin-top: 40rpx;
+		text-align: center;
+		height: 109rpx;
+		background: #ffffff;
+
+		font-size: 34rpx;
+		font-family: Source Han Sans CN;
+		font-weight: bold;
+		color: #141414;
+		line-height: 109rpx;
+	}
+</style>

+ 270 - 0
pages/user/profile.vue

@@ -0,0 +1,270 @@
+<template>
+	<view class="container">
+		<!-- 		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="个人资料"
+			back-icon-size="35" :background="{ background: '#fff' }" title-color="#000">
+			<view class="complie" slot="right" @click="submit">完成</view>
+		</u-navbar> -->
+
+		<uNavBar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			:title="title" rightText="完成" @clickLeft="toBack" @clickRight="submit">
+		</uNavBar>
+
+		<view class="content">
+			<view class="avatar">
+				<image :src="userInfo.avatar" class="avatar-image" mode=""></image>
+				<view class="a" @click="handleChooseImg">更换头像</view>
+			</view>
+			<view class="form">
+				<view class="cell">
+					<view class="name">姓名</view>
+					<input type="text" placeholder="请输入姓名" v-model="userInfo.nick_name" class="ipt"
+						placeholder-class="hold" />
+				</view>
+				<view class="cell">
+					<view class="name">角色</view>
+					<input type="text" placeholder="" disabled="true" v-model="deptName" class="ipt"
+						placeholder-class="hold" style="color: #82848A;" />
+				</view>
+				<view class="cell">
+					<view class="name">单位</view>
+					<input type="text" placeholder="" disabled="true" v-model="roleName" class="ipt"
+						placeholder-class="hold" style="color: #82848A;" />
+				</view>
+				<!-- 		<view class="cell">
+					<view class="name">生日</view>
+					<picker mode="date" class="ipt" :class="{ hold: !detail.birthday }"
+						@change="changeDefaultPicker('birthday', $event)">
+						<view>{{ detail.birthday || '请选择生日' }}</view>
+					</picker>
+				</view> -->
+				<!-- 				<view class="cell">
+					<view class="name">性别</view>
+					<picker mode="selector" :range="sexPicker" range-key="name" class="ipt"
+						:class="{ hold: !detail.sex }" @change="changePicker('sex', $event)">
+						<view>{{ detail.sex === 1?'男':'女' || '请选择性别' }}</view>
+					</picker>
+				</view> -->
+				<view class="cell">
+					<view class="name">手机号</view>
+					<input type="number" placeholder="请填写手机号" v-model="detail.phone" class="ipt"
+						placeholder-class="hold" />
+				</view>
+				<view class="cell">
+					<view class="name">邮箱</view>
+					<input v-model="detail.email" class="ipt" placeholder-class="hold" />
+				</view>
+				<!--<view class="cell">
+					<view class="name">国家/地区</view>
+					<pickRegions :defaultRegion="detail.region" v-model="detail.region"
+						:class="{ hold: !detail.region, ipt: true }">
+						<view>{{ detail.region || '请选择国家/地区' }}</view>
+					</pickRegions>
+				</view>-->
+			</view>
+		</view>
+		<!--  -->
+		<!-- <view class="back" @click="logout">退出登录</view> -->
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	import pickRegions from '@/components/pick-regions/pick-regions.vue';
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	export default {
+		components: {
+			pickRegions,
+			uNavBar
+		},
+		data() {
+			return {
+				sexPicker: [{
+						name: '男'
+					},
+					{
+						name: '女'
+					}
+				],
+				detail: {},
+				deptName: '',
+				roleName: '',
+				title: '个人资料'
+			};
+		},
+		onLoad() {
+			const that = this;
+			this.$u.api.userInfo().then(data => {
+				console.log(data);
+				if (data.success) {
+					this.detail = data.data;
+					http.request({
+						url: '/galaxy-system/dept/detail?id=' + this.userInfo.dept_id,
+						method: 'GET'
+					}).then(res => {
+						console.log(JSON.stringify(res.data))
+						that.deptName = res.data.deptName;
+					}).catch(err => {
+						console.log(err)
+					})
+
+					http.request({
+						url: '/galaxy-system/role/select?roleId=' + this.userInfo.role_id,
+						method: 'GET'
+					}).then(res => {
+						console.log(JSON.stringify(res.data))
+						var name = "";
+						res.data.forEach(info => {
+							name += name.length > 0 ? ":" : "";
+							name += info.roleName;
+						})
+						that.roleName = name;
+					}).catch(err => {
+						console.log(err)
+					})
+
+
+				}
+			}).catch(err => {
+				console.log(err)
+				this.$u.func.showToast({
+					title: err,
+				})
+			})
+
+
+
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			logout() {
+				this.$u.func.logout();
+			},
+			submit() {
+				// let detail = this.detail
+				// if (!detail.phone && !/^1\d{10}$/.test(detail.phone)) {
+				// 	return uni.showToast({
+				// 		title: '请输入正确的手机号',
+				// 		duration: 2000,
+				// 		icon: 'none'
+				// 	});
+				// }
+				// console.log(JSON.stringify(detail));
+			},
+			changeDefaultPicker(name, e) {
+				this.detail[name] = e.detail.value;
+			},
+			changePicker(name, e) {
+				this.detail[name] = this[`${name}Picker`][e.detail.value].name;
+			},
+			handleChooseImg() {
+				let that = this;
+				uni.chooseImage({
+					count: 1,
+					success(e) {
+						that.detail.avatar = e.tempFilePaths[0];
+					}
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		padding: 0 0 200rpx;
+		overflow: hidden;
+	}
+
+	.complie {
+		vertical-align: middle;
+		padding: 10rpx 20rpx;
+		font-size: 32rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+	}
+
+	.content {
+		background-color: #ffffff;
+		overflow: hidden;
+	}
+
+	.avatar {
+		margin-top: 30rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		flex-direction: column;
+
+		font-size: 30rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 400;
+		color: #14b9c8;
+
+		.avatar-image {
+			width: 162rpx;
+			height: 162rpx;
+			background: #ffffff;
+			border-radius: 50%;
+			background-color: #82848a;
+			margin-bottom: 15rpx;
+		}
+	}
+
+	.form {
+		padding: 0 36rpx;
+
+		.cell {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 40rpx 0;
+
+			font-size: 30rpx;
+			font-family: Source Han Sans CN;
+			font-weight: bold;
+			color: #666666;
+
+			&:not(:last-of-type) {
+				border-bottom: 2rpx solid #efefef;
+			}
+
+			.ipt {
+				flex: 1;
+				margin-left: 40rpx;
+				text-align: right;
+				font-size: 23rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.hold {
+				font-size: 27rpx;
+				font-family: Source Han Sans CN;
+				font-weight: bold;
+				color: #c8c8ce;
+			}
+		}
+	}
+
+	.back {
+		margin-top: 40rpx;
+		text-align: center;
+		height: 109rpx;
+		background: #ffffff;
+
+		font-size: 34rpx;
+		font-family: Source Han Sans CN;
+		font-weight: bold;
+		color: #141414;
+		line-height: 109rpx;
+	}
+</style>

+ 273 - 0
pages/warning/rtuwarninglist.vue

@@ -0,0 +1,273 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<uni-list>
+				<uni-list-item v-for="item in list" :key="item.id">
+					<template v-slot:body>
+						<view style="min-height: 110px;width: 100%;display: flex;flex-direction: column;">
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<image class="order-title-image" src="/static/images/icon_warning.png" mode="widthFix">
+								</image>
+								<text style="margin-left: 5px;font-size: 1rem;">{{item.rtuName}}</text>
+								<text style="margin-left: 5px;font-size: 0.9rem;">[{{item.rtuCode}}]</text>
+							</view>
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<view style="font-size: 0.7rem;">预警时间:</view>
+								<view style="margin-left:10px;font-size: 0.7rem;">
+									{{item.warningHappenTime}}
+								</view>
+							</view>
+							<view style="display: flex;flex-direction: row;align-items: center;">
+								<view style="font-size: 0.7rem;">恢复时间:</view>
+								<view v-if="item.warningRecoveryTime!=null"
+									style="margin-left:10px;font-size: 0.7rem;">{{item.warningRecoveryTime}}
+								</view>
+							</view>
+							<view style="margin-top: 0px;display: flex;flex-direction: row;align-items: center;">
+								<!-- <uIcons class="input-uni-icon" type="notification" size="18" color="#999" /> -->
+								<text style="font-size: 0.7rem;">{{item.warningDesc}}</text>
+							</view>
+							<view style="margin-top:4px;display: flex;flex-direction: row;justify-content: flex-end;">
+								<view
+									style="display:flex;flex-direction: row;justify-content: center;width: 90px;height:28px;margin-right: 10px;border-radius:7px;background-color:lightblue"
+									@click="toWarningPage(item.id)">
+									<view style="display:flex;flex-direction: column;justify-content: center;">
+										<uIcons class="input-uni-icon" type="info" size="18" color="coral" />
+									</view>
+									<view
+										style="display:flex;flex-direction: column;justify-content: center;padding-left:5px;">
+										<text style="color:black;font-size:0.6rem">预警详情</text>
+									</view>
+								</view>
+
+							</view>
+						</view>
+					</template>
+
+				</uni-list-item>
+
+			</uni-list>
+			<uGroup>
+				<view class="uni-pagination-box">
+					<uPagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
+						@change="change" />
+				</view>
+			</uGroup>
+		</view>
+
+		<u-gap height="70"></u-gap>
+	</view>
+</template>
+
+<script>
+	// import pageNav from '@/components/page-nav/page-nav.vue';
+	import http from '@/http/api.js';
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	export default {
+		name: '',
+		components: {
+			uNavBar,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uPagination,
+			uBreadcrumb
+		},
+		onLoad(option) {
+			this.rtuCode = option.rtuCode;
+		},
+		data() {
+			return {
+				list: [],
+				title: '测站预警信息',
+				desc: '',
+				rtuCode: '',
+				pageSize: 10,
+				// 当前页
+				pageCurrent: 1,
+				// 数据总量
+				total: 0,
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {
+			// uni.setNavigationBarTitle({
+			// 	title: ""
+			// });
+			this.loadList();
+		},
+		created() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			loadList() {
+				var that = this;
+				const current = this.pageCurrent;
+				const size = this.pageSize;
+				const isSubmit = '0';
+				var formdata = {};
+				formdata['rtuCode'] = this.rtuCode;
+				http.request({
+					url: '/galaxy-test/rtu/warning/page',
+					method: 'GET',
+					data: formdata,
+					params: {
+						current,
+						size,
+						isSubmit
+					},
+				}).then(res => {
+					if (res.data.records != null) {
+						that.list = res.data.records;
+					}
+					this.total = res.data.total;
+
+				}).catch(err => {
+					console.log(err)
+				})
+
+
+			},
+			toWarningPage(id) {
+				var url = '/pages/warning/warninginfodetail?id=' + id;
+				uni.navigateTo({
+					url: url
+				})
+			},
+
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+</style>
+
+<style lang="scss" scoped>
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.order-title-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		// margin-right: 10px;
+		width: 25px;
+		height: 25px;
+		border-radius: 50%;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.content-box {
+		flex: 1;
+		/* #ifdef APP-NVUE */
+		justify-content: center;
+		/* #endif */
+		height: 100%;
+		line-height: 44px;
+		padding: 0 15px;
+		position: relative;
+		background-color: #fff;
+		border-bottom-color: #f5f5f5;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+	}
+
+	.content-text {
+		font-size: 15px;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding: 10px 0;
+		background-color: #fff;
+	}
+
+	.button {
+		border-color: #e5e5e5;
+		border-style: solid;
+		border-width: 1px;
+		padding: 4px 8px;
+		border-radius: 4px;
+	}
+
+	.button-text {
+		font-size: 15px;
+	}
+
+	.slot-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		height: 100%;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 0 20px;
+		background-color: #ff5a5f;
+	}
+
+	.slot-button-text {
+		color: #ffffff;
+		font-size: 14px;
+	}
+</style>

+ 376 - 0
pages/warning/warninginfodetail.vue

@@ -0,0 +1,376 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view style="width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;">
+				<text style="color: white;font-size: 1rem;">{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<uni-forms ref="baseForm">
+			<uSection title="预警基本信息" titleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uCard :is-shadow="false" title="预警名称">
+					<text class="uni-body">{{warnInfo.warnName}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警时间">
+					<text class="uni-body">{{warnInfo.warnTime}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警等级">
+					<text class="uni-body">{{warnInfo.warnLevelCode}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警信息">
+					<text class="uni-body">{{warnInfo.warnInfo}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警状态">
+					<text class="uni-body">{{warnInfo.warnStatusText}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="审核状态">
+					<text class="uni-body">{{warnInfo.reviewStatusText}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="站类">
+					<text class="uni-body">{{warnInfo.typeText}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警类别">
+					<text class="uni-body">{{warnInfo.warnSort}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警定位">
+					<text class="uni-body">{{warnInfo.warnLocation}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警政区">
+					<text class="uni-body">{{warnInfo.warnAdcd}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="用户政区">
+					<text class="uni-body">{{warnInfo.userAdcd}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警点经度">
+					<text class="uni-body">{{warnInfo.warnLgtd}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="预警点纬度">
+					<text class="uni-body">{{warnInfo.warnLttd}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="备注">
+					<text class="uni-body">{{warnInfo.remark}}</text>
+				</uCard>
+			</uSection>
+			<uSection title="雨情数据" titleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uCard :is-shadow="false" title="雨量站预警频率">
+					<text class="uni-body">{{warnInfo.rainWarnRateText}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="降雨时段">
+					<text class="uni-body">{{warnInfo.intv}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="时段降水">
+					<text class="uni-body">{{warnInfo.drp}}</text>
+				</uCard>
+			</uSection>
+			<uSection title="河道水情数据" titleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uCard :is-shadow="false" title="河道水位">
+					<text class="uni-body">{{warnInfo.z}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="河道流量">
+					<text class="uni-body">{{warnInfo.q}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="河道水势">
+					<text class="uni-body">{{warnInfo.wptn}}</text>
+				</uCard>
+			</uSection>
+			<uSection title="水库水情数据" titleFontSize="0.8rem" type="line" style="width: 100%;">
+				<uCard :is-shadow="false" title="库上水位">
+					<text class="uni-body">{{warnInfo.rz}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="水库水势">
+					<text class="uni-body">{{warnInfo.rwptn}}</text>
+				</uCard>
+				<uCard :is-shadow="false" title="水库流量">
+					<text class="uni-body">{{warnInfo.inq}}</text>
+				</uCard>
+			</uSection>
+		</uni-forms>
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js';
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/js_sdk/mmmm-image-tools/index.js';
+	import {
+		oss,
+		devUrl,
+		prodUrl
+	} from '@/common/setting';
+
+	import uNavBar from '@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue'
+	import uDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
+	import uGroup from '@/uni_modules/uni-group/uni-group.vue'
+	import uSection from '@/uni_modules/uni-section/uni-section.vue'
+	import uPagination from '@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue'
+	import uBreadcrumb from '@/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue'
+	import uList from '@/uni_modules/uni-list/components/uni-list/uni-list.vue'
+	import uListItem from '@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import uCard from '@/uni_modules/uni-card/components/uni-card/uni-card.vue'
+	export default {
+		components: {
+			uNavBar,
+			uDataPicker,
+			uPagination,
+			uBreadcrumb,
+			uList,
+			uListItem,
+			uIcons,
+			uGroup,
+			uSection,
+			uCard,
+		},
+		onLoad(options) {
+			this.id = options.id;
+			console.log("iiiiiiiiiiiii " + this.id)
+			this.baseURL = process.env.NODE_ENV === 'development' ? devUrl : prodUrl;
+
+			this.getWarnInfo();
+		},
+		data() {
+			return {
+				id: '',
+				baseURL: '',
+
+				warnInfo: {
+
+				},
+				title: '预警信息详情',
+				desc: '',
+			}
+		},
+		computed: {
+			getIcon() {
+				return path => {
+					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
+				}
+			},
+		},
+		onShow() {},
+		created() {
+
+		},
+		methods: {
+			toOss(path) {
+				return oss + path;
+			},
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			dateFormat(dt) {
+				var text = "" + dt.getFullYear();
+				text += "-";
+				text += ((dt.getMonth() + 1) < 10) ? ("0" + (dt.getMonth() + 1)) : (dt
+					.getMonth() +
+					1);
+				text += "-";
+				text += dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
+				text += " ";
+				text += dt.getHours() < 10 ? "0" + dt.getHours() : dt.getHours();
+				text += ":";
+				text += dt.getMinutes() < 10 ? "0" + dt.getMinutes() : dt.getMinutes();
+				text += ":";
+				text += dt.getSeconds() < 10 ? "0" + dt.getSeconds() : dt.getSeconds();
+				return text;
+			},
+			getWarnInfo() {
+				var that = this;
+				var postData = {};
+				postData['id'] = this.id;
+				console.log("iiiiiiiiiiiii " + this.id)
+				http.request({
+					url: '/galaxy-test/rtu/warning/original/detail',
+					method: 'GET',
+					data: postData
+				}).then(res => {
+					console.log(res)
+					if (res.data != null) {
+						that.warnInfo = res.data;
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	/* page {
+		background-color: rgb(240, 242, 244);
+	} */
+	.uni-body {
+		font-size: 0.7rem;
+	}
+
+	.cell-hover-class {
+		background-color: rgb(235, 237, 238);
+	}
+
+	.view-flex-rs {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+	}
+
+	.view-flex-rc {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.view-flex-re {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+	}
+
+	.view-flex-cs {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.view-flex-cc {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+	}
+
+	.view-flex-ce {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.line-body {
+		padding-left: 10px;
+		padding-right: 10px;
+	}
+
+	.required-star {
+		color: #FF0000;
+		font-size: 15px;
+		width: 20px;
+		text-align: center;
+		padding-left: 0px;
+		padding-right: 2px;
+	}
+
+	.item-title {
+		color: #909399;
+		font-size: 15px;
+	}
+
+	.mline-text {
+		padding-left: 2px;
+		width: 100%;
+		/* background-color:#909399; */
+		height: 70px;
+		border: 1px solid #FF5A5F;
+		border-radius: 5px;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.container {
+		padding: 0 0 50rpx;
+	}
+
+	.u-cell-icon {
+		width: 36rpx;
+		height: 36rpx;
+		margin-right: 8rpx;
+	}
+
+	.slot-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.slot-image {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		margin-right: 10px;
+		width: 30px;
+		height: 30px;
+	}
+
+	.slot-text {
+		flex: 1;
+		font-size: 14px;
+		color: #4cd964;
+		margin-right: 10px;
+	}
+
+	.img-container {
+		margin-bottom: 0px;
+		width: 100px;
+		height: 100px;
+
+		.note-image-box {
+			margin-top: 0px;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10px;
+
+			.note-image-item {
+				position: relative;
+				width: 100%;
+				height: 0;
+				padding-top: 100%;
+				box-sizing: border-box;
+				// background-color: #18B566;
+
+
+				.close-icon {
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					right: 0px;
+					top: 0px;
+					width: 22px;
+					height: 22px;
+					border-radius: 50%;
+					background-color: #d5d5d5;
+					z-index: 2;
+				}
+
+				.image-box {
+					display: flex;
+					justify-content: center;
+
+					align-items: center;
+					position: absolute;
+					top: 5px;
+					right: 5px;
+					border: 5px;
+					left: 5px;
+					border: 1px #eee solid;
+					border-radius: 5px;
+					overflow: hidden;
+					width: 98%;
+					height: 98%;
+
+				}
+
+
+			}
+		}
+	}
+
+	.input-body {
+		background-color: #fff;
+		padding: 10px;
+	}
+</style>

二进制
static/.DS_Store


二进制
static/images/.DS_Store


二进制
static/images/home/.DS_Store


二进制
static/images/home/banner.png


二进制
static/images/home/date.png


二进制
static/images/home/focus.png


二进制
static/images/home/inspection.png


二进制
static/images/home/message.png


部分文件因为文件数量过多而无法显示