Jelajahi Sumber

安宁:1.0.17:更新所有矿APP加强权限验证

tiandewen 2 tahun lalu
induk
melakukan
2481e0538a
100 mengubah file dengan 5965 tambahan dan 1650 penghapusan
  1. 30 26
      common/production-http/interface.js
  2. 8 0
      common/production-http/production-api.js
  3. 17 0
      common/vmeitime-http/api.js
  4. 2 1
      common/vmeitime-http/interface.js
  5. 233 1
      components/e-link/e-link.vue
  6. 9 3
      components/origanizationSection/origanizationSection.vue
  7. 36 0
      components/t-p-n-section-1/data.json
  8. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/btn.png
  9. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_1.png
  10. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_2.png
  11. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_3.png
  12. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_4.png
  13. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_5.png
  14. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_1_icon_6.png
  15. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_1.png
  16. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_10.png
  17. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_2.png
  18. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_3.png
  19. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_4.png
  20. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_5.png
  21. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_6.png
  22. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_7.png
  23. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_8.png
  24. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_2_icon_9.png
  25. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_1.png
  26. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_2.png
  27. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_3.png
  28. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_4.png
  29. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_5.png
  30. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_3_icon_6.png
  31. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_4_icon_1.png
  32. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_4_icon_2.png
  33. TEMPAT SAMPAH
      components/t-p-n-section-1/icon/section_4_icon_3.png
  34. 304 0
      components/t-p-n-section-1/t-p-n-section-1 - 九宫格版本.vue
  35. 366 231
      components/t-p-n-section-1/t-p-n-section-1.vue
  36. 1 2
      components/t-p-n-section-2/t-p-n-section-2.vue
  37. 16 12
      components/t-p-ningdongyunying/t-p-ningdongyunying.vue
  38. 1 5
      components/t-p-yangchangwan/t-p-yangchangwan.vue
  39. 5 5
      manifest.json
  40. 50 2
      pages.json
  41. 3 0
      pages/index/record/record-browse/record-browse.vue
  42. 9 0
      pages/index/record/record.vue
  43. 160 20
      pages/index/search/search.vue
  44. 1 1
      pages/my/forget-password/forget-password.vue
  45. 2 1
      pages/my/login/login.vue
  46. 0 0
      pages/my/personal_information/personal_information_info.vue
  47. 0 0
      pages/my/personal_information/personal_information_peixun.vue
  48. 1 1
      pages/ningdongyunying/production_map/production_map.vue
  49. 114 0
      pages/ningdongyunying/real_time_alarm/real_time_alarm.vue
  50. 0 0
      pages/origanization/communication/origanization/personal_information/personal_information_info.vue
  51. 0 0
      pages/origanization/communication/origanization/personal_information/personal_information_peixun.vue
  52. 63 0
      pages/origanization/communication/origanization/personnel_statistics/chart.json
  53. TEMPAT SAMPAH
      pages/origanization/communication/origanization/personnel_statistics/icon/btn.png
  54. TEMPAT SAMPAH
      pages/origanization/communication/origanization/personnel_statistics/icon/check.png
  55. 359 0
      pages/origanization/communication/origanization/personnel_statistics/personnel_statistics.vue
  56. 59 0
      pages/origanization/communication/origanization/personnel_statistics/screen/chart.json
  57. 420 0
      pages/origanization/communication/origanization/personnel_statistics/screen/screen.vue
  58. 13 3
      pages/production/shangtang/shangtang.vue
  59. 75 0
      pages/production/video_monitor_app/playback/playback.vue
  60. 8 1
      pages/production/video_monitor_app/video-block/video-block.vue
  61. 1 1
      pages/production/video_monitor_app/video_monitor_app.vue
  62. 6 0
      pages/production/zaoquan/power_monitoring/power_monitoring.vue
  63. 6 3
      pages/production/zidonghua/zidonghua.vue
  64. TEMPAT SAMPAH
      pages/tabbar/index/icon/icon.png
  65. TEMPAT SAMPAH
      pages/tabbar/index/icon/icon_1.png
  66. TEMPAT SAMPAH
      pages/tabbar/index/icon/nav_1.png
  67. TEMPAT SAMPAH
      pages/tabbar/index/icon/nav_2.png
  68. TEMPAT SAMPAH
      pages/tabbar/index/icon/nav_3.png
  69. 20 2
      pages/tabbar/index/index - 全矿适配版本.vue
  70. 1130 0
      pages/tabbar/index/index - 安全管理体系-图标版本.vue
  71. 19 0
      pages/tabbar/index/index - 泛微.vue
  72. 671 0
      pages/tabbar/index/index-安全管理体系第一版.vue
  73. 106 105
      pages/tabbar/index/index.vue
  74. 10 3
      pages/tabbar/my/my.vue
  75. 44 42
      pages/tabbar/workbench/workbench.vue
  76. 217 116
      pages/workbench/duty_information/duty_information.vue
  77. TEMPAT SAMPAH
      static/anning.png
  78. 69 0
      uni_modules/qiun-data-charts/changelog.md
  79. 121 55
      uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
  80. 1 1
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js
  81. 298 276
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
  82. 3 10
      uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md
  83. 777 289
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js
  84. 18 0
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js
  85. 4 4
      uni_modules/qiun-data-charts/package.json
  86. 74 423
      uni_modules/qiun-data-charts/readme.md
  87. 0 0
      unpackage/dist/build/.automator/h5/.automator.json
  88. 2 2
      unpackage/dist/build/app-plus/app-config-service.js
  89. 2 2
      unpackage/dist/build/app-plus/app-service.js
  90. 1 1
      unpackage/dist/build/app-plus/app-view.js
  91. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-icon/icon_13.png
  92. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-icon/icon_14.png
  93. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/btn.png
  94. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_1.png
  95. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_2.png
  96. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_3.png
  97. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_4.png
  98. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_5.png
  99. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_6.png
  100. 0 0
      unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_2_icon_1.png

+ 30 - 26
common/production-http/interface.js

@@ -37,16 +37,18 @@ export default {
 		// 内网
 		// baseUrl: "http://n.nmjt.nxjiewei.com:8011/api",
 		header: {
-			"Content-Type":"multipart/form-data",
-			'Content-Type':'application/json;charset=UTF-8',
-			'Content-Type':'application/x-www-form-urlencoded',
-			'Authorization' : uni.getStorageSync('token_type') +' '+uni.getStorageSync('Authorization') || {}
-		},  
+			"Content-Type": "multipart/form-data",
+			'Content-Type': 'application/json;charset=UTF-8',
+			'Content-Type': 'application/x-www-form-urlencoded',
+			'Authorization' : uni.getStorageSync('token_type') +' '+uni.getStorageSync('Authorization') || {},
+			'accesskey': "b364b449a18af327867f7edc3431b541"
+		},
 		data: {
-			
+
 		},
 		method: "GET",
-		dataType: "json",  /* 如设为json,会对返回的数据做一次 JSON.parse */
+		dataType: "json",
+		/* 如设为json,会对返回的数据做一次 JSON.parse */
 		responseType: "text",
 		success() {},
 		fail() {},
@@ -66,26 +68,29 @@ export default {
 		options.dataType = options.dataType || this.config.dataType
 		options.url = options.baseUrl + options.url
 		// 合并对象
-		options.data = {...options.data,...this.config.data}
+		options.data = {
+			...options.data,
+			...this.config.data
+		}
 		options.method = options.method || this.config.method
 		//TODO 加密数据
-		
+
 		//TODO 数据签名
 		/* 
 		_token = {'token': getStorage(STOREKEY_LOGIN).token || 'undefined'},
 		_sign = {'sign': sign(JSON.stringify(options.data))}
 		options.header = Object.assign({}, options.header, _token,_sign) 
 		*/
-	   
+
 		return new Promise((resolve, reject) => {
 			let _config = null
-			
+
 			// uni.showLoading({
 			// 	icon:"none",
 			// 	title:"加载中...",
 			// 	mask:true
 			// })
-			
+
 			options.complete = (response) => {
 				let statusCode = response.statusCode
 				// console.log("【" + _config.requestId + "】 状态码:" + JSON.stringify(statusCode))
@@ -94,22 +99,22 @@ export default {
 					if (statusCode === 200) {
 						// uni.hideLoading()
 						// console.log("【" + _config.requestId + "】 结果:" + JSON.stringify(response.data))
-						if(response.data.code == 401){
+						if (response.data.code == 401) {
 							uni.showToast({
-								icon:"none",
-								title:"登录失效、请重新登录"
+								icon: "none",
+								title: "登录失效、请重新登录"
 							})
-							setTimeout(function(){
+							setTimeout(function() {
 								uni.redirectTo({
-									url:"/pages/login/login"
+									url: "/pages/login/login"
 								})
-							},2000)
+							}, 2000)
 						}
-					}else if(statusCode === 500){
+					} else if (statusCode === 500) {
 						uni.hideLoading()
 						uni.showToast({
-							icon:"none",
-							title:"500"
+							icon: "none",
+							title: "500"
 						})
 						// setTimeout(function(){
 						// 	uni.navigateTo({
@@ -139,7 +144,7 @@ export default {
 			if (this.interceptor.request) {
 				this.interceptor.request(_config)
 			}
-			
+
 			// 统一的请求日志记录
 			// _reqlog(_config)
 
@@ -151,7 +156,7 @@ export default {
 			}
 
 			uni.request(_config);
-			
+
 		});
 	},
 	get(url, data, options) {
@@ -160,7 +165,7 @@ export default {
 		}
 		options.url = url
 		options.data = data
-		options.method = 'GET'  
+		options.method = 'GET'
 		return this.request(options)
 	},
 	post(url, data, options) {
@@ -219,7 +224,7 @@ function _reslog(res) {
 		console.log("【" + res.config.requestId + "】 响应结果:" + JSON.stringify(res))
 	}
 	//TODO 除了接口服务错误外,其他日志调接口异步写入日志数据库
-	switch(_statusCode){
+	switch (_statusCode) {
 		case 200:
 			break;
 		case 401:
@@ -230,4 +235,3 @@ function _reslog(res) {
 			break;
 	}
 }
-

+ 8 - 0
common/production-http/production-api.js

@@ -424,3 +424,11 @@ export const peopleTotalNum = (data) => {
 		data,
 	})
 }
+
+export const get_ycbj_list = (data) => {
+	return http.request({
+		method: "POST",
+		url: '/jt/safety/get_ycbj_list',
+		data,
+	})
+}

+ 17 - 0
common/vmeitime-http/api.js

@@ -960,4 +960,21 @@ export const examination_get_detail = (data) => {
 		url: '/examination/get_detail',
 		data,
 	})
+}
+
+// 人员统计
+export const census_personal_analysis = (data) => {
+	return http.request({
+		method: "POST",
+		url: '/census/personal_analysis',
+		data,
+	})
+}
+// 人员统计 筛选部门
+export const census_get_section_screen = (data) => {
+	return http.request({
+		method: "POST",
+		url: '/census/get_section_screen',
+		data,
+	})
 }

+ 2 - 1
common/vmeitime-http/interface.js

@@ -53,7 +53,8 @@ export default {
 			"Content-Type":"multipart/form-data",
 			'Content-Type':'application/json;charset=UTF-8',
 			'Content-Type':'application/x-www-form-urlencoded',
-			'Authorization' : uni.getStorageSync('token_type') +' '+uni.getStorageSync('Authorization') || {}
+			'Authorization' : uni.getStorageSync('token_type') +' '+uni.getStorageSync('Authorization') || {},
+			'accesskey': "b364b449a18af327867f7edc3431b541"
 		},  
 		data: {},
 		method: "GET",

+ 233 - 1
components/e-link/e-link.vue

@@ -73,10 +73,40 @@
 				</view>
 			</view>
 		</view>
+	
+	
+		<!-- 宁煤信息平台登录框 -->
+		<uni-popup ref="popup" type="center" @maskClick="maskClick">
+			<view class="login_box">
+				<view class="input_box">
+					<view class="label">工号:</view>
+					<view class="box">
+						{{staff_num}}
+					</view>
+				</view>
+				<view class="input_box">
+					<view class="label">登录密码(宁煤信息平台):</view>
+					<view class="box">
+						<input type="password" v-model="password" />
+					</view>
+				</view>
+				<view class="btn" @click="login()">确认</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
 <script>
+	import {
+		set_base_url
+	} from '@/common/set_base_url.js'
+	import time from "@/common/time.js"
+	import {
+		diffTime
+	} from "@/common/time.js"
+	import {
+		goToLink
+	} from "@/common/common.js"
 	export default {
 		props: [
 			"linksList",
@@ -84,10 +114,112 @@
 		],
 		data() {
 			return {
-
+				staff_num: "",
+				password: "",
+				
+				url: "",
+				
+				app_id: "",
+				gps: "",
+				deviceID: "",
+				phoneType: ""
 			};
 		},
+		mounted() {
+			this.staff_num = uni.getStorageSync('user').staff_num
+		},
 		methods: {
+			maskClick() {
+				this.password = ""
+			},
+			login() {
+				// #ifdef APP-PLUS
+				if (this.password == '') {
+					uni.showToast({
+						icon: "none",
+						title: "密码不能为空!"
+					})
+					return
+				}
+			
+				this.$refs.popup.close()
+				// 获取gps
+				uni.getLocation({
+					type: 'wgs84',
+					success: (res) => {
+						console.log('当前位置的经度:' + res.longitude);
+						console.log('当前位置的纬度:' + res.latitude);
+			
+						this.gps = res.longitude + ',' + res.latitude
+						// 获取设备信息
+						plus.device.getInfo({
+							success: (e) => {
+								console.log(JSON.stringify(e.uuid));
+								console.log(plus.device.model)
+			
+								this.deviceID = JSON.stringify(e.uuid)
+								this.phoneType = plus.device.model
+			
+			
+								uni.request({
+									method: "POST",
+									url: "http://mtyyxs.shnxmyjt.com:33300/api/OAuth/Login",
+									header: {
+										'Content-Type': 'application/json;charset=UTF-8',
+										'caller': 'UnifiedPortal'
+									},
+									data: {
+										phoneType: this.phoneType,
+										password: this.password,
+										gps: this.gps,
+										userID: this.staff_num,
+										resolvingPower: "851*393",
+										deviceID: this.deviceID,
+										ip: "112312313"
+									},
+									success: (res) => {
+										console.log(this.password)
+										console.log(res)
+			
+										if (res.data.code = '11002') {
+											uni.showToast({
+												icon: "none",
+												title: res.data.msg
+											})
+			
+											if (res.data.data.length > 20) {
+												uni.setStorageSync('ningmei_token', res
+													.data.data)
+												uni.setStorageSync(
+													'ningmei_token_time',
+													new Date().format("yyyy-MM-dd")
+													)
+												uni.navigateTo({
+													url: "../../index/ningMeiXinXiPingTai/ningMeiXinXiPingTai",
+													success: (res) => {
+														// 通过eventChannel向被打开页面传送数据
+														res.eventChannel
+															.emit(
+																'acceptDataFromOpenerPage', {
+																	data: this
+																		.url
+																})
+													}
+												})
+											}
+										}
+									}
+								})
+			
+							}
+						});
+			
+			
+					}
+				})
+				// #endif
+			
+			},
 			go_page(item){
 				// console.log(item)
 				
@@ -111,6 +243,67 @@
 				}
 				
 				
+				if (link.indexOf("nativeApp://") != -1) {
+					let app_name = link.match(/nativeApp:\/\/(\S*)\?/)[1]
+					let app_down_link = link.split('?')[1]
+				
+					// #ifdef APP
+					if (plus.os.name == 'Android') {
+				
+						plus.runtime.launchApplication({
+							pname: app_name
+						}, (e) => {
+							console.log('Open system default browser failed: ' + e.message)
+				
+							uni.showModal({
+								title: app_name,
+								content: '未安装此应用、是否下载?',
+								success: (res) => {
+									if (res.confirm) {
+										console.log('用户点击确定');
+				
+										uni.navigateTo({
+											url: "../../index/h5/h5?url=" + app_down_link
+										})
+									} else if (res.cancel) {
+										console.log('用户点击取消');
+									}
+								}
+							});
+						})
+					}
+					
+					return
+					// #endif
+				}
+				
+				if (link.indexOf("http://mtyyxs.shnxmyjt.com") != -1) {
+					console.log("信息平台")
+				
+					this.url = item
+					// 有登录记录
+					let token = uni.getStorageSync('ningmei_token')
+					let time = uni.getStorageSync('ningmei_token_time')
+					// 30天刷新一次
+					let diffTimeShow = diffTime(time, new Date().format("yyyy-MM-dd")).split(' ')[0];
+					console.log(diffTimeShow)
+					if (token.length > 20 && diffTimeShow < 30) {
+						uni.navigateTo({
+							url: "../../index/ningMeiXinXiPingTai/ningMeiXinXiPingTai",
+							success: (res) => {
+								// 通过eventChannel向被打开页面传送数据
+								res.eventChannel.emit('acceptDataFromOpenerPage', {
+									data: this.url
+								})
+							}
+						})
+					} else {
+						this.$refs.popup.open()
+					}
+					
+					return
+				}
+				
 				// 二维码
 				if(link.indexOf("pageId") != -1 && link.indexOf("app:") == -1){
 					let pageId = ""
@@ -198,6 +391,8 @@
 					
 				}
 				
+				
+			
 			}
 		}
 	}
@@ -370,4 +565,41 @@
 		}
 
 	}
+	
+	.login_box {
+		width: 500rpx;
+		padding: 30rpx 50rpx;
+		border-radius: 20rpx;
+		margin: 0 auto;
+		background-color: #FFFFFF;
+	
+		.input_box {
+			margin-bottom: 30rpx;
+	
+			.label {
+				color: #6C6F74;
+				margin-bottom: 20rpx;
+			}
+	
+			.box {
+				background: #FFFFFF;
+				border-radius: 8rpx;
+				border: 2rpx solid #E9EBF2;
+	
+				box-sizing: border-box;
+				padding: 20rpx 25rpx;
+	
+			}
+		}
+	
+		.btn {
+			width: 500rpx;
+			margin: 0 auto;
+			border-radius: 8rpx;
+			background-color: #009FE8;
+			line-height: 90rpx;
+			color: #FFFFFF;
+			text-align: center;
+		}
+	}
 </style>

+ 9 - 3
components/origanizationSection/origanizationSection.vue

@@ -141,9 +141,15 @@
 			},
 
 			go_user_info(staff_num) {
-				uni.navigateTo({
-					url: "./personal_information/personal_information?staff_num=" + staff_num
-				})
+				if(uni.getStorageSync('mine_code') == 'ningmeijituan'){
+					uni.navigateTo({
+						url: "./personal_information/personal_information_peixun?staff_num=" + staff_num
+					})
+				}else{
+					uni.navigateTo({
+						url: "./personal_information/personal_information_info?staff_num=" + staff_num
+					})
+				}
 			}
 		}
 	}

+ 36 - 0
components/t-p-n-section-1/data.json

@@ -0,0 +1,36 @@
+[
+	{
+		"title":"生产类",
+		"list":[
+			{
+				"icon":"./icon/section_1_icon_1.png",
+				"name":"采煤"
+			},
+			{
+				"icon":"./icon/section_1_icon_2.png",
+				"name":"掘进"
+			},
+			{
+				"icon":"./icon/section_1_icon_3.png",
+				"name":"主运输"
+			}
+		]
+	},
+	{
+		"title":"辅助类",
+		"list":[
+			{
+				"icon":"./icon/section_2_icon_1.png",
+				"name":"主扇通风"
+			},
+			{
+				"icon":"./icon/section_2_icon_2.png",
+				"name":"电力监控"
+			},
+			{
+				"icon":"./icon/section_2_icon_3.png",
+				"name":"智慧水务"
+			}
+		]
+	}
+]

TEMPAT SAMPAH
components/t-p-n-section-1/icon/btn.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_1.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_2.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_3.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_4.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_5.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_1_icon_6.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_1.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_10.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_2.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_3.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_4.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_5.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_6.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_7.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_8.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_2_icon_9.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_1.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_2.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_3.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_4.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_5.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_3_icon_6.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_4_icon_1.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_4_icon_2.png


TEMPAT SAMPAH
components/t-p-n-section-1/icon/section_4_icon_3.png


+ 304 - 0
components/t-p-n-section-1/t-p-n-section-1 - 九宫格版本.vue

@@ -0,0 +1,304 @@
+<!-- 宁煤集团-数据统计版本 -->
+<template>
+	<view class="content">
+		<view class="item_box" style="background-color: #34495D;" @click="go_zdhxt('xdt')">
+			<view class="img">
+				<image src="../t-p-icon/icon_13.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">巷道图</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #638BD5;" @click="go_production_statistics()">
+			<view class="img">
+				<image src="../t-p-icon/icon_2.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">生产报表</view>
+				<view class="tip">当日产量{{days_output}}吨</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #A3A2E4;" @click="go_personnel_orientation()">
+			<view class="img">
+				<image src="../t-p-icon/icon_3.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">人员定位</view>
+				<view class="tip">井下人数{{mineall_people}}人</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #8BC8DA;" @click="go_safety_monitoring()">
+			<view class="img">
+				<image src="../t-p-icon/icon_4.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">安全监测</view>
+				<!-- <view class="tip">6268监测点</view> -->
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #9AE2A2;" @click="go_zdhxt('tfgl')">
+			<view class="img">
+				<image src="../t-p-icon/icon_5.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">通风管理</view>
+			</view>
+		</view>
+		<!-- <view class="item_box" style="background-color: #FBB47B;" @click="go_h5('http://nmjt.nxjiewei.com:8011/web/monitor/video/videoList?mine_code=')"> -->
+		<view class="item_box" style="background-color: #FBB47B;" @click="go_h5('http://webdevelop.nxjiewei.com/assets/html/video/?mine_code=')">
+			<view class="img">
+				<image src="../t-p-icon/icon_6.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">视频监控</view>
+				<view class="tip">工业视频</view>
+			</view>
+		</view>
+		<!-- <view class="item_box" style="background-color: #FA8B89;" @click="go_risk_precontr0l()">
+			<view class="img">
+				<image src="../t-p-icon/icon_7.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">风险预控</view>
+				<view class="tip">分数统计</view>
+			</view>
+		</view> -->
+		<!-- <view class="item_box" style="background-color: #009FE8;" @click="go_h5('http://ningdongyunying.nxjiewei.com:8011/web/monitor/performanceRanking/performanceRanking')">
+			<view class="img">
+				<image src="../t-p-icon/icon_1.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">绩效排名</view>
+				<view class="tip">绩效考核分数统计</view>
+			</view>
+		</view> -->
+		<view class="item_box" style="background-color: #005754;" @click="go_zdhxt('tsj')">
+			<view class="img">
+				<image src="../t-p-icon/icon_15.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">提升机</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #2C3E50;" @click="go_zdhxt('zys')">
+			<view class="img">
+				<image src="../t-p-icon/icon_8.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">主运输</view>
+				<view class="tip">主运输皮带</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #2873FF;" @click="go_zdhxt('psxt')">
+			<view class="img">
+				<image src="../t-p-icon/icon_9.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">排水系统</view>
+				<view class="tip">中央水泵</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #8BC8DA;" @click="go_zdhxt('yfzd')">
+			<view class="img">
+				<image src="../t-p-icon/icon_10.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">压风制氮</view>
+				<view class="tip">压风制氮系统 </view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #A3A2E4;" @click="go_rongzhi()">
+			<view class="img">
+				<image src="../t-p-icon/icon_14.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">设备监测</view>
+				<view class="tip">容知设备监控</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #31B3F7;" @click="go_zdhxt('kyjc')">
+			<view class="img">
+				<image src="../t-p-icon/icon_11.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">矿压监测</view>
+			</view>
+		</view>
+		<!-- <view class="item_box" style="background-color: #5175E3;" @click="go_shangtang()">
+			<view class="img">
+				<image src="../t-p-icon/icon_4.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">视频分析</view>
+			</view>
+		</view> -->
+		<view class="item_box" style="background-color: #4B81EE;" @click="go_zdhxt('jkrc')">
+			<view class="img">
+				<image src="../t-p-icon/icon_16.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">架空人车</view>
+			</view>
+		</view>
+		<view class="item_box" style="background-color: #CCCCCC;" @click="go_zdhxt('glyq')">
+			<view class="img">
+				<image src="../t-p-icon/icon_17.png" mode=""></image>
+			</view>
+			<view class="text">
+				<view class="name">锅炉烟气</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "t-p-n-section-1",
+		data() {
+			return {
+				mine_code: "",		
+				
+				mineall_people: "",
+				days_output: ""
+			};
+		},
+		created() {
+			// 人员定位
+			this.$p_api.personnel_mineall_total({
+				mine: "all"
+			}).then((res) => {
+				this.mineall_people = res.data.data.total + res.data.data.mine_leader_total + res.data
+					.data.company_leader_total
+			})
+			
+			// 当日生产
+			this.$p_api.coalmine_output({
+			
+			}).then((res) => {
+				this.days_output = res.data.data.total
+			})
+			
+		},
+		methods: {
+			// 自动化统计列表
+			go_zdhxt(zdhxt) {
+				uni.navigateTo({
+					// url: "../../production/zidonghua/zidonghua?url=" + "http://webdevelop.nxjiewei.com/assets/html/E-zidonghua/?zdhxt=" + zdhxt
+					url: "../../production/zidonghua/zidonghua?zdhxt=" + zdhxt
+				})
+			},
+			// 生产统计
+			go_production_statistics() {
+				uni.navigateTo({
+					url: "../../ningdongyunying/production_statistics/production_statistics"
+				})
+			},
+			// 人员定位
+			go_personnel_orientation() {
+				uni.navigateTo({
+					url: "../../ningdongyunying/personnel_orientation/personnel_orientation"
+				})
+			},
+			// 安全监测
+			go_safety_monitoring() {
+				uni.navigateTo({
+					url: "../../ningdongyunying/safety_monitoring/safety_monitoring"
+				})
+			},
+			// 风险预控
+			go_risk_precontr0l() {
+				uni.navigateTo({
+					url: "../../ningdongyunying/risk_precontrol/risk_precontrol"
+				})
+			},
+			// 视频监控
+			go_h5(url) {
+				// uni.navigateTo({
+				// 	url: "../../ningdongyunying/h5/h5?url=" + url
+				// })
+				
+				// 原生 rtsp流
+				uni.navigateTo({
+					url:"../../production/video_monitor_app/video_monitor_app?mine_code=ningmeijituan"
+				})
+			},
+			go_rongzhi(){
+				
+				if(uni.getStorageSync('mine_code') != 'ningmeijituan'){
+					uni.navigateTo({
+						url: "../../ningdongyunying/h5/h5?url=" + "http://rongzhi.nxjiewei.com:8011/h5/#/auth"
+					})
+				}else{
+					uni.navigateTo({
+						url:"../../index/record/record?mine_code=ningmeijituan&pageId=b89076dac2cd45a8831ee8d3e85b4ed6"
+					})
+				}
+				
+			},
+			
+			// 商汤
+			go_shangtang(){
+				uni.navigateTo({
+					url:"../../production/shangtang/shangtang"
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		box-sizing: border-box;
+		padding: 20rpx 25rpx 0;
+		margin-bottom: 100rpx;
+		
+
+		overflow: hidden;
+
+
+		.item_box {
+			float: left;
+
+			width: 220rpx;
+			height: 280rpx;
+
+			margin-right: 20rpx;
+			margin-bottom: 20rpx;
+			border-radius: 16rpx;
+
+			.img {
+				box-sizing: border-box;
+				padding-top: 40rpx;
+				text-align: center;
+
+				image {
+					width: 140rpx;
+					height: 140rpx;
+				}
+			}
+
+			.text {
+				text-align: center;
+				color: #FFFFFF;
+				line-height: 40rpx;
+
+				.name {
+					font-size: 28rpx;
+				}
+
+				.tip {
+					font-size: 24rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+			}
+		}
+
+		.item_box:nth-child(3n) {
+			margin-right: 0;
+		}
+
+	}
+</style>

+ 366 - 231
components/t-p-n-section-1/t-p-n-section-1.vue

@@ -1,153 +1,244 @@
+<!-- 宁煤集团-数据统计版本 -->
 <template>
-	<view class="content">
-		<view class="item_box" style="background-color: #34495D;" @click="go_zdhxt('xdt')">
-			<view class="img">
-				<image src="../t-p-icon/icon_13.png" mode=""></image>
+	<view>
+		<view class="content">
+			<view class="section">
+				<view class="title">
+					<view class="line"></view>
+					<view class="text">生产类</view>
+					<view class="line"></view>
+				</view>
+				<view class="list">
+					<view class="item" @click="go_record('ba8e5fa1c63d4f14a0f4cabb3ec585fc')">
+						<view class="icon">
+							<image src="./icon/section_1_icon_1.png" mode=""></image>
+						</view>
+						<view class="name">采煤</view>
+					</view>
+					<view class="item" style="background-color: #A3A2E4;"
+						@click="go_record('a1547d077a7e46b0a8197b8c034e2dee')">
+						<view class="icon">
+							<image src="./icon/section_1_icon_2.png" mode=""></image>
+						</view>
+						<view class="name">掘进</view>
+					</view>
+					<view class="item" style="background-color: #8BC8DA;" @click="go_zdhxt('zys')">
+						<view class="icon">
+							<image src="./icon/section_1_icon_3.png" mode=""></image>
+						</view>
+						<view class="name">主运输</view>
+					</view>
+					<view class="item" style="background-color: #63D57B;" @click="go_production_statistics()">
+						<view class="icon">
+							<image src="./icon/section_1_icon_4.png" mode=""></image>
+						</view>
+						<view class="name">生产报表</view>
+					</view>
+					<view class="item" style="background-color: #E57A98;" @click="go_zdhxt('xdt')">
+						<view class="icon">
+							<image src="./icon/section_1_icon_5.png" mode=""></image>
+						</view>
+						<view class="name">巷道图</view>
+					</view>
+					<view class="item" style="background-color: #E9A037;" @click="show_toast()">
+						<view class="icon">
+							<image src="./icon/section_1_icon_6.png" mode=""></image>
+						</view>
+						<view class="name">化工</view>
+					</view>
+				</view>
 			</view>
-			<view class="text">
-				<view class="name">巷道图</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #638BD5;" @click="go_production_statistics()">
-			<view class="img">
-				<image src="../t-p-icon/icon_2.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">生产报表</view>
-				<view class="tip">当日产量{{days_output}}吨</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #A3A2E4;" @click="go_personnel_orientation()">
-			<view class="img">
-				<image src="../t-p-icon/icon_3.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">人员定位</view>
-				<view class="tip">井下人数{{mineall_people}}人</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #8BC8DA;" @click="go_safety_monitoring()">
-			<view class="img">
-				<image src="../t-p-icon/icon_4.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">安全监测</view>
-				<!-- <view class="tip">6268监测点</view> -->
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #9AE2A2;" @click="go_zdhxt('tfgl')">
-			<view class="img">
-				<image src="../t-p-icon/icon_5.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">通风管理</view>
-			</view>
-		</view>
-		<!-- <view class="item_box" style="background-color: #FBB47B;" @click="go_h5('http://nmjt.nxjiewei.com:8011/web/monitor/video/videoList?mine_code=')"> -->
-		<view class="item_box" style="background-color: #FBB47B;" @click="go_h5('http://webdevelop.nxjiewei.com/assets/html/video/?mine_code=')">
-			<view class="img">
-				<image src="../t-p-icon/icon_6.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">视频监控</view>
-				<view class="tip">工业视频</view>
-			</view>
-		</view>
-		<!-- <view class="item_box" style="background-color: #FA8B89;" @click="go_risk_precontr0l()">
-			<view class="img">
-				<image src="../t-p-icon/icon_7.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">风险预控</view>
-				<view class="tip">分数统计</view>
-			</view>
-		</view> -->
-		<!-- <view class="item_box" style="background-color: #009FE8;" @click="go_h5('http://ningdongyunying.nxjiewei.com:8011/web/monitor/performanceRanking/performanceRanking')">
-			<view class="img">
-				<image src="../t-p-icon/icon_1.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">绩效排名</view>
-				<view class="tip">绩效考核分数统计</view>
-			</view>
-		</view> -->
-		<view class="item_box" style="background-color: #005754;" @click="go_zdhxt('tsj')">
-			<view class="img">
-				<image src="../t-p-icon/icon_15.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">提升机</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #2C3E50;" @click="go_zdhxt('zys')">
-			<view class="img">
-				<image src="../t-p-icon/icon_8.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">主运输</view>
-				<view class="tip">主运输皮带</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #2873FF;" @click="go_zdhxt('psxt')">
-			<view class="img">
-				<image src="../t-p-icon/icon_9.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">排水系统</view>
-				<view class="tip">中央水泵</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #8BC8DA;" @click="go_zdhxt('yfzd')">
-			<view class="img">
-				<image src="../t-p-icon/icon_10.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">压风制氮</view>
-				<view class="tip">压风制氮系统 </view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #A3A2E4;" @click="go_rongzhi()">
-			<view class="img">
-				<image src="../t-p-icon/icon_14.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">设备监测</view>
-				<view class="tip">容知设备监控</view>
-			</view>
-		</view>
-		<view class="item_box" style="background-color: #31B3F7;" @click="go_zdhxt('kyjc')">
-			<view class="img">
-				<image src="../t-p-icon/icon_11.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">矿压监测</view>
-			</view>
-		</view>
-		<!-- <view class="item_box" style="background-color: #5175E3;" @click="go_shangtang()">
-			<view class="img">
-				<image src="../t-p-icon/icon_4.png" mode=""></image>
-			</view>
-			<view class="text">
-				<view class="name">视频分析</view>
-			</view>
-		</view> -->
-		<view class="item_box" style="background-color: #4B81EE;" @click="go_zdhxt('jkrc')">
-			<view class="img">
-				<image src="../t-p-icon/icon_16.png" mode=""></image>
+
+			<view class="section">
+				<view class="title">
+					<view class="line"></view>
+					<view class="text">辅助类</view>
+					<view class="line"></view>
+				</view>
+				<view class="list">
+					<view class="item" style="background-color: #E9A037;" @click="go_zdhxt('tfgl')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_1.png" mode=""></image>
+						</view>
+						<view class="name">主扇通风</view>
+					</view>
+					<view class="item" style="background-color: #638BD5;" @click="show_toast()">
+						<view class="icon">
+							<image src="./icon/section_2_icon_2.png" mode=""></image>
+						</view>
+						<view class="name">电力监控</view>
+					</view>
+					<view class="item" style="background-color: #638BD5;" @click="show_toast()">
+						<view class="icon">
+							<image src="./icon/section_2_icon_3.png" mode=""></image>
+						</view>
+						<view class="name">智慧水务</view>
+					</view>
+					<view class="item" style="background-color: #A3A2E4;" @click="go_zdhxt('psxt')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_4.png" mode=""></image>
+						</view>
+						<view class="name">排水系统</view>
+					</view>
+					<view class="item" style="background-color: #8BC8DA;" @click="go_zdhxt('yfzd')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_6.png" mode=""></image>
+						</view>
+						<view class="name">压风制氮</view>
+					</view>
+					<view class="item" style="background-color: #E9A037;"
+						@click="go_record('b89076dac2cd45a8831ee8d3e85b4ed6')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_7.png" mode=""></image>
+						</view>
+						<view class="name">设备健康诊断</view>
+					</view>
+					<view class="item" style="background-color: #E57A98;" @click="show_toast()">
+						<view class="icon">
+							<image src="./icon/section_2_icon_8.png" mode=""></image>
+						</view>
+						<view class="name">胶轮车监控</view>
+					</view>
+					<view class="item" style="background-color: #A3A2E4;" @click="go_zdhxt('jkrc')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_9.png" mode=""></image>
+						</view>
+						<view class="name">架空乘人器</view>
+					</view>
+					<view class="item" style="background-color: #63D57B;" @click="go_zdhxt('tsj')">
+						<view class="icon">
+							<image src="./icon/section_2_icon_10.png" mode=""></image>
+						</view>
+						<view class="name">副井提升</view>
+					</view>
+				</view>
 			</view>
-			<view class="text">
-				<view class="name">架空人车</view>
+
+			<view class="section">
+				<view class="title">
+					<view class="line"></view>
+					<view class="text">监测监控类</view>
+					<view class="line"></view>
+				</view>
+				<view class="list">
+					<view class="item" style="background-color: #E9A037;" @click="go_video()">
+						<view class="icon">
+							<image src="./icon/section_3_icon_1.png" mode=""></image>
+						</view>
+						<view class="name">工业视频</view>
+					</view>
+					<view class="item" style="background-color: #638BD5;" @click="go_shangtang()">
+						<view class="icon">
+							<image src="./icon/section_3_icon_2.png" mode=""></image>
+						</view>
+						<view class="name">AI视频分析</view>
+					</view>
+					<view class="item" style="background-color: #638BD5;" @click="go_safety_monitoring()">
+						<view class="icon">
+							<image src="./icon/section_3_icon_3.png" mode=""></image>
+						</view>
+						<view class="name">安全监测</view>
+					</view>
+					<view class="item" style="background-color: #A3A2E4;" @click="go_personnel_orientation()">
+						<view class="icon">
+							<image src="./icon/section_3_icon_4.png" mode=""></image>
+						</view>
+						<view class="name">人员定位</view>
+					</view>
+					<view class="item" style="background-color: #63D57B;" @click="go_zdhxt('kyjc')">
+						<view class="icon">
+							<image src="./icon/section_3_icon_5.png" mode=""></image>
+						</view>
+						<view class="name">矿压监测</view>
+					</view>
+					<view class="item" style="background-color: #8BC8DA;" @click="go_zdhxt('glyq')">
+						<view class="icon">
+							<image src="./icon/section_3_icon_6.png" mode=""></image>
+						</view>
+						<view class="name">锅炉烟气</view>
+					</view>
+
+				</view>
 			</view>
-		</view>
-		<view class="item_box" style="background-color: #CCCCCC;" @click="go_zdhxt('glyq')">
-			<view class="img">
-				<image src="../t-p-icon/icon_17.png" mode=""></image>
+
+			<view class="section">
+				<view class="title">
+					<view class="line"></view>
+					<view class="text">重点场所</view>
+					<view class="line"></view>
+				</view>
+				<view class="list">
+					<view class="item" style="background-color: #E9A037;"
+						@click="go_record('58915240cbff480d87ce20cbdfa66a87')">
+						<view class="icon">
+							<image src="./icon/section_4_icon_1.png" mode=""></image>
+						</view>
+						<view class="name">南湖</view>
+					</view>
+					<view class="item" style="background-color: #638BD5;" @click="show_toast()">
+						<view class="icon">
+							<image src="./icon/section_4_icon_2.png" mode=""></image>
+						</view>
+						<view class="name">班前会</view>
+					</view>
+					<view class="item" style="background-color:#E57A98;"
+						@click="go_record('4c1dbe725d8d485e9c58ab81c9f1fd5d')">
+						<view class="icon">
+							<image src="./icon/section_4_icon_3.png" mode=""></image>
+						</view>
+						<view class="name">培训课堂</view>
+					</view>
+
+				</view>
 			</view>
-			<view class="text">
-				<view class="name">锅炉烟气</view>
+
+			<view class="section">
+				<view class="title">
+					<view class="line"></view>
+					<view class="text">实时预警</view>
+					<view class="line"></view>
+				</view>
+				<view class="table" v-if="list">
+					<uni-table emptyText="暂无更多数据" stripe>
+						<!-- 表头行 -->
+						<uni-tr>
+							<uni-th align="center">时间</uni-th>
+							<uni-th align="center" width="90">单位</uni-th>
+							<uni-th align="center">地点</uni-th>
+							<!-- <uni-th 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 list" :key="index" v-if="index < 5">
+							<uni-td style="vertical-align: middle;" align="center">
+								<view>{{item.enter_time}}</view>
+							</uni-td>
+							<uni-td style="vertical-align: middle;" align="center">
+								<view>{{item.coal_name}}</view>
+							</uni-td>
+							<uni-td style="vertical-align: middle;" align="center">
+								<view>{{item.survey_name}}</view>
+							</uni-td>
+							<uni-td style="vertical-align: middle;" align="center">
+								<view>{{item.abnormal_reason}}</view>
+							</uni-td>
+							<uni-td style="vertical-align: middle;" align="center">
+								<view>{{item.do_measure}}</view>
+							</uni-td>
+						</uni-tr>
+
+					</uni-table>
+					
+					<view class="btn">
+						<view class="icon">
+							<image src="./icon/btn.png" mode=""></image>
+						</view>
+						<view class="btn_text" @click="go_real_time_alarm()">点击查看全部信息</view>
+					</view>
+				</view>
 			</view>
 		</view>
-		
 	</view>
 </template>
 
@@ -156,37 +247,48 @@
 		name: "t-p-n-section-1",
 		data() {
 			return {
-				mine_code: "",		
-				
-				mineall_people: "",
-				days_output: ""
+				list:[]
 			};
 		},
-		created() {
-			// 人员定位
-			this.$p_api.personnel_mineall_total({
-				mine: "all"
-			}).then((res) => {
-				this.mineall_people = res.data.data.total + res.data.data.mine_leader_total + res.data
-					.data.company_leader_total
-			})
-			
-			// 当日生产
-			this.$p_api.coalmine_output({
-			
-			}).then((res) => {
-				this.days_output = res.data.data.total
-			})
-			
+		mounted() {
+			this.get_ycbj_list()
 		},
 		methods: {
+			get_ycbj_list(){
+				this.$p_api.get_ycbj_list({
+					
+				}).then((res)=>{
+					this.list = res.data.content
+				})
+			},
+			show_toast() {
+				uni.showToast({
+					icon: "none",
+					title: "正在建设中..."
+				})
+			},
+			go_real_time_alarm() {
+				uni.navigateTo({
+					url: "../../ningdongyunying/real_time_alarm/real_time_alarm"
+				})
+			},
+			go_record(pageId) {
+				uni.navigateTo({
+					url: "../../index/record/record?mine_code=ningmeijituan&pageId=" + pageId
+				})
+			},
 			// 自动化统计列表
 			go_zdhxt(zdhxt) {
 				uni.navigateTo({
-					// url: "../../production/zidonghua/zidonghua?url=" + "http://webdevelop.nxjiewei.com/assets/html/E-zidonghua/?zdhxt=" + zdhxt
 					url: "../../production/zidonghua/zidonghua?zdhxt=" + zdhxt
 				})
 			},
+			// 视频监控
+			go_video() {
+				uni.navigateTo({
+					url: "../../production/video_monitor_app/video_monitor_app?mine_code=ningmeijituan"
+				})
+			},
 			// 生产统计
 			go_production_statistics() {
 				uni.navigateTo({
@@ -205,100 +307,133 @@
 					url: "../../ningdongyunying/safety_monitoring/safety_monitoring"
 				})
 			},
-			// 风险预控
-			go_risk_precontr0l() {
-				uni.navigateTo({
-					url: "../../ningdongyunying/risk_precontrol/risk_precontrol"
-				})
-			},
-			// 视频监控
-			go_h5(url) {
-				// uni.navigateTo({
-				// 	url: "../../ningdongyunying/h5/h5?url=" + url
-				// })
-				
-				// 原生 rtsp流
-				uni.navigateTo({
-					url:"../../production/video_monitor_app/video_monitor_app?mine_code=ningmeijituan"
-				})
-			},
-			go_rongzhi(){
-				
-				if(uni.getStorageSync('mine_code') != 'ningmeijituan'){
-					uni.navigateTo({
-						url: "../../ningdongyunying/h5/h5?url=" + "http://rongzhi.nxjiewei.com:8011/h5/#/auth"
-					})
-				}else{
-					uni.navigateTo({
-						url:"../../index/record/record?mine_code=ningmeijituan&pageId=b89076dac2cd45a8831ee8d3e85b4ed6"
-					})
-				}
-				
-			},
-			
 			// 商汤
-			go_shangtang(){
+			go_shangtang() {
 				uni.navigateTo({
-					url:"../../production/shangtang/shangtang"
+					url: "../../production/shangtang/shangtang"
 				})
-			}
+			},
 		}
 	}
 </script>
 
 <style lang="scss">
 	.content {
-		margin-top: -175rpx;
-		
 		box-sizing: border-box;
 		padding: 20rpx 25rpx 0;
-		margin-bottom: 100rpx;
-		
 
-		overflow: hidden;
+		margin-bottom: 150rpx;
+
+		.section {
+			.title {
+				line-height: 90rpx;
+				font-size: 34rpx;
+				color: #424242;
+				font-weight: 700;
+
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				.text {
+					margin: 0 20rpx;
+				}
+
+				.line {
+					width: 100rpx;
+					height: 2rpx;
+					background-color: #BFBFBF;
+				}
+			}
+
+			.list {
+				overflow: hidden;
+
+				.item {
+					float: left;
 
+					width: 200rpx;
+					height: 166rpx;
+					background-color: #638BD5;
+					text-align: center;
 
-		.item_box {
-			float: left;
+					box-sizing: border-box;
+					padding-top: 25rpx;
+					padding-bottom: 34rpx;
 
-			width: 220rpx;
-			height: 280rpx;
+					margin-right: 50rpx;
+					margin-bottom: 40rpx;
+					border-radius: 16rpx;
 
-			margin-right: 20rpx;
-			margin-bottom: 20rpx;
-			border-radius: 16rpx;
+					.icon {
+						image {
+							width: 64rpx;
+							height: 64rpx;
+						}
+					}
 
-			.img {
-				box-sizing: border-box;
-				padding-top: 40rpx;
-				text-align: center;
+					.name {
+						margin-top: 4rpx;
+						font-size: 28rpx;
+						font-weight: 700;
+						color: #FFFFFF;
+					}
+				}
 
-				image {
-					width: 140rpx;
-					height: 140rpx;
+				.item:nth-child(3n) {
+					margin-right: 0;
 				}
 			}
 
-			.text {
-				text-align: center;
-				color: #FFFFFF;
-				line-height: 40rpx;
+			.table {
+				.uni-table-th {
+					color: #FFFFFF;
+					background-color: #00A0E8;
+				}
+
+				.uni-table-th.table--border {
+					border: none;
+				}
 
-				.name {
-					font-size: 28rpx;
+				.uni-table-td.table--border {
+					color: #666666;
+					border: none;
 				}
 
-				.tip {
-					font-size: 24rpx;
-					white-space: nowrap;
-					overflow: hidden;
-					text-overflow: ellipsis;
+				position: relative;
+
+				margin:0 -25rpx 20rpx;
+				width: 750rpx;
+
+				.btn {
+					margin: 40rpx auto 0;
+					width: 400rpx;
+					height: 50rpx;
+
+					background-color: #69BBFA;
+					border-radius: 50rpx;
+
+					display: flex;
+					align-items: center;
+					justify-content: center;
+
+					.icon {
+						image {
+							width: 23rpx;
+							height: 24rpx;
+
+							display: block;
+						}
+					}
+
+					.btn_text {
+						margin-left: 10rpx;
+						font-size: 28rpx;
+						color: #FFFFFF;
+					}
 				}
 			}
-		}
 
-		.item_box:nth-child(3n) {
-			margin-right: 0;
 		}
 
 	}

+ 1 - 2
components/t-p-n-section-2/t-p-n-section-2.vue

@@ -49,7 +49,6 @@
 
 <style lang="scss">
 	.swiper-item{
-		margin-top: -100rpx;
 		position: relative;
 		
 		overflow: hidden;
@@ -65,7 +64,7 @@
 	.map{
 		position: absolute;
 		left: 0;
-		top: 0;
+		top: -10rpx;
 		// z-index: 999;
 		
 		width: 750rpx;

+ 16 - 12
components/t-p-ningdongyunying/t-p-ningdongyunying.vue

@@ -19,11 +19,12 @@
 		</swiper> -->
 
 		<view class="content">
-			<image src="./img/bg.jpg" mode="widthFix"></image>
+			<view class="img">
+				<image src="./img/bg.jpg" mode="widthFix"></image>
+			</view>
 
 			<view class="box">
 				<t-p-n-section-1></t-p-n-section-1>
-
 				<t-p-n-section-2></t-p-n-section-2>
 			</view>
 		</view>
@@ -65,17 +66,20 @@
 	// 上下滑动
 	.content {
 		position: relative;
-		
-		padding-top: 200rpx;
-	}
 
-	image {
-		width: 750rpx;
-	}
+		.img {
+			position: absolute;
+			bottom: 0;
+			left: 0;
 
-	.box {
-		position: absolute;
-		top: 0rpx;
-		left: 0;
+			image {
+				width: 750rpx;
+			}
+		}
+
+		.box {
+			position: relative;
+
+		}
 	}
 </style>

+ 1 - 5
components/t-p-yangchangwan/t-p-yangchangwan.vue

@@ -108,12 +108,8 @@
 			},
 			// 视频监控
 			go_video_monitor(mine_code){
-				// uni.navigateTo({
-				// 	url:"../../production/video_monitor/video_monitor?mine_code=" + mine_code
-				// })
-				
 				uni.navigateTo({
-					url:"../../production/video_monitor_app/video_monitor_app?mine_code=" + mine_code
+					url:"../../production/video_monitor/video_monitor?mine_code=" + mine_code
 				})
 			},
 		}

+ 5 - 5
manifest.json

@@ -1,8 +1,8 @@
 {
-    "name" : "宁煤安全",
+    "name" : "安宁",
     "appid" : "__UNI__5DF9CB2",
     "description" : "",
-    "versionName" : "1.0.15",
+    "versionName" : "1.0.17",
     "versionCode" : "100",
     "transformPx" : false,
     /* 5+App特有相关 */
@@ -117,9 +117,9 @@
             "splashscreen" : {
                 "androidStyle" : "default",
                 "android" : {
-                    "hdpi" : "static/star.png",
-                    "xhdpi" : "static/star.png",
-                    "xxhdpi" : "static/star.png"
+                    "hdpi" : "static/anning.png",
+                    "xhdpi" : "static/anning.png",
+                    "xxhdpi" : "static/anning.png"
                 }
             }
         },

+ 50 - 2
pages.json

@@ -374,7 +374,13 @@
 			}
 
 		}, {
-			"path": "pages/my/personal_information/personal_information",
+			"path": "pages/my/personal_information/personal_information_info",
+			"style": {
+				"navigationBarTitleText": "个人信息"
+			}
+
+		}, {
+			"path": "pages/my/personal_information/personal_information_peixun",
 			"style": {
 				"navigationBarTitleText": "个人信息"
 			}
@@ -429,7 +435,13 @@
 			}
 
 		}, {
-			"path": "pages/origanization/communication/origanization/personal_information/personal_information",
+			"path": "pages/origanization/communication/origanization/personal_information/personal_information_info",
+			"style": {
+				"navigationBarTitleText": "个人信息"
+			}
+
+		}, {
+			"path": "pages/origanization/communication/origanization/personal_information/personal_information_peixun",
 			"style": {
 				"navigationBarTitleText": "个人信息"
 			}
@@ -942,8 +954,44 @@
             }
             
         }
+        ,{
+            "path" : "pages/origanization/communication/origanization/personnel_statistics/personnel_statistics",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "人员统计",
+                "enablePullDownRefresh": false
+            }
+        }
+        ,{
+            "path" : "pages/origanization/communication/origanization/personnel_statistics/screen/screen",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "部门信息",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/production/video_monitor_app/playback/playback",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "视频回放",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/ningdongyunying/real_time_alarm/real_time_alarm",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "实时预警",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
+		// "navigationStyle":"custom",
 		"navigationBarTextStyle": "white",
 		"navigationBarTitleText": " ",
 		"navigationBarBackgroundColor": "#009FE8",

+ 3 - 0
pages/index/record/record-browse/record-browse.vue

@@ -72,6 +72,9 @@
 			get_browse() {
 				uni.request({
 					url: this.base_url + "/swagger/api/pageuser/v1/getPageUserByPageId/" + this.pageId,
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data)
 						this.browse = res.data.data

+ 9 - 0
pages/index/record/record.vue

@@ -220,6 +220,9 @@
 				uni.request({
 					url: this.base_url + "/swagger/api/page/v1/detailPage?pageId=" + this.pageId +
 						"&sourceType=&organizationIds=&userId=&userName=",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data)
 						const data = res.data.data
@@ -303,6 +306,9 @@
 				uni.request({
 					method:"POST",
 					url: this.base_url + "/swagger/api/pageuser/v1/addPageUser/",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					data:{
 						createBy:"",
 						createDate:"",
@@ -318,6 +324,9 @@
 				
 				uni.request({
 					url: this.base_url + "/swagger/api/pageuser/v1/getPageUserByPageId/" + this.pageId,
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data)
 						this.browse = res.data.data

+ 160 - 20
pages/index/search/search.vue

@@ -23,8 +23,13 @@
 		<view style="height: 93rpx;"></view>
 
 
+		<view class="tab">
+			<view class="item" :class="active == 1?'active':''"  @click="change_active(1)">文件</view>
+			<view class="item" :class="active == 2?'active':''"  @click="change_active(2)">人员</view>
+		</view>
+
 		<!-- 搜索列表 -->
-		<view class="list">
+		<view class="list" v-if="active == 1">
 			<view class="item" v-for="(item,index) in list" :key="index" @click="go_record(item.id)">
 				<view class="title">{{item.title}}</view>
 				<view class="icon">
@@ -32,6 +37,22 @@
 				</view>
 			</view>
 		</view>
+		
+		<!-- 搜索人员 -->
+		<view class="people_list" v-if="active == 2">
+			<view class="item" v-for="(item,index) in people_list" :key="index" @click="go_user_info(item.staff_num)">
+				<view class="left">
+					<view class="icon">{{item.name.charAt(0)}}</view>
+					<view class="text">{{item.name}} {{item.dept_name}} {{item.duty_num}}</view>
+				</view>
+				<view class="right" @click.stop="phone(item.mobile)">
+					<uni-icons type="phone"></uni-icons>
+				</view>
+			</view>
+		
+			<view v-if="people_list.length == 0" style="font-size: 32rpx;text-align: center;line-height: 400rpx;">暂无搜索结果
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -48,6 +69,8 @@
 
 				// 搜索结果列表
 				list: [],
+				people_list:[],
+				active:1
 			};
 		},
 		onLoad(option) {
@@ -63,28 +86,56 @@
 			this.base_url = set_base_url(this.mine_code)
 		},
 		methods: {
+			change_active(index){
+				this.active = index
+				
+				this.search()
+			},
 			click_left() {
 				uni.navigateBack();
 			},
 			search() {
 				uni.showLoading()
-
-				uni.request({
-					url: this.base_url + "/swagger/api/page/v1/getPageList",
-					method: "GET",
-					data: {
-						title: this.search_text,
-						departmentId: "",
-						pageNumber: 0,
-						pageSize: 0
-					},
-					success: (res) => {
-						console.log(res)
-						uni.hideLoading()
-
-						this.list = res.data.data
-					}
-				})
+				
+				if(this.active == 1){
+					uni.request({
+						url: this.base_url + "/swagger/api/page/v1/getPageList",
+						method: "GET",
+						header:{
+							'accesskey': "b364b449a18af327867f7edc3431b541"
+						},
+						data: {
+							title: this.search_text,
+							departmentId: "",
+							pageNumber: 0,
+							pageSize: 0
+						},
+						success: (res) => {
+							console.log(res)
+							uni.hideLoading()
+					
+							this.list = res.data.data
+						}
+					})
+				}else if(this.active == 2){
+					uni.request({
+						url: this.base_url + "/user/search",
+						method: "POST",
+						header:{
+							'Authorization' : uni.getStorageSync('token_type') +' '+uni.getStorageSync('Authorization')
+						},
+						data: {
+							content: this.search_text
+						},
+						success: (res) => {
+							console.log(res)
+							uni.hideLoading()
+					
+							this.people_list = res.data.data
+						}
+					})
+				}
+			
 			},
 
 			// 打开二维码页面
@@ -92,7 +143,25 @@
 				uni.navigateTo({
 					url:"../../index/record/record?pageId=" + id + "&mine_code=" + this.mine_code,
 				})
-			}
+			},
+			
+			go_user_info(staff_num) {
+				uni.navigateTo({
+					url:"../../origanization/communication/origanization/personal_information/personal_information?staff_num=" + staff_num
+				})
+			},
+			phone(mobile) {
+				if (mobile != null) {
+					uni.makePhoneCall({
+						phoneNumber: mobile
+					});
+				}else{
+					uni.showToast({
+						icon:"none",
+						title:"未绑定手机号"
+					})
+				}
+			},
 
 		}
 
@@ -179,9 +248,39 @@
 	}
 
 
+	.tab{
+		background-color: #FFFFFF;
+		z-index: 999;
+		position: fixed;
+		top: 1;
+		left: 0;
+		
+		width: 750rpx;
+		box-sizing: border-box;
+		padding: 20rpx 25rpx;
+		display: flex;
+		
+		.item{
+			box-sizing: border-box;
+			padding: 10rpx 30rpx;
+			
+			border-radius: 10rpx;
+			margin-right: 20rpx;
+			font-size: 26rpx;
+			
+			border: 1rpx solid #009fe8;
+			color: #009fe8;
+		}
+		.item.active{
+			background-color: #009fe8;
+			color: #FFFFFF;
+		}
+	}
+
 	.list {
+		margin-top: 60rpx;
 		box-sizing: border-box;
-		padding: 25rpx;
+		padding: 10rpx 25rpx;
 
 		.item {
 			display: flex;
@@ -199,4 +298,45 @@
 			.icon {}
 		}
 	}
+
+	.people_list {
+		margin-top: 60rpx;
+		box-sizing: border-box;
+		padding: 10rpx 25rpx;
+	
+		.item {
+			height: 110rpx;
+	
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+	
+			border-bottom: 1rpx solid #F3F8F7;
+	
+			.left {
+				display: flex;
+				align-items: center;
+				.icon {
+					width: 35rpx;
+					height: 35rpx;
+					text-align: center;
+					line-height: 35rpx;
+					border-radius: 50%;
+					border: 1rpx solid #00A1E9;
+	
+					font-size: 24rpx;
+					color: #00A1E9;
+				}
+	
+				.text {
+					margin-left: 18rpx;
+					font-size: 30rpx;
+	
+				}
+			}
+	
+			.right {}
+		}
+	
+	}
 </style>

+ 1 - 1
pages/my/forget-password/forget-password.vue

@@ -334,7 +334,7 @@
 		}
 
 		.change_btn {
-			margin: 40px auto;
+			margin: 40px auto 0;
 			width: 200px;
 			height: 50px;
 			background: rgba(100, 220, 255, 0.8);

+ 2 - 1
pages/my/login/login.vue

@@ -155,7 +155,8 @@
 
 	.content {
 		width: 750rpx;
-		height: 100vh;
+		min-height: 100vh;
+		height: 100%;
 		// background-image: url(~@/static/login.png);
 		background-image: url(~@/static/login_bg.jpg);
 		background-size: cover;

pages/my/personal_information/personal_information - 新版个人信息页.vue → pages/my/personal_information/personal_information_info.vue


pages/my/personal_information/personal_information.vue → pages/my/personal_information/personal_information_peixun.vue


+ 1 - 1
pages/ningdongyunying/production_map/production_map.vue

@@ -85,7 +85,7 @@
 			// 根据矿编码切换首页接口不同的请求基础路径
 			switch (this.mine_code) {
 				case 'ningdongyunying':
-					this.title = "宁东运营部"
+					this.title = "生产数据"
 					break;
 				case 'meihuajing':
 					this.title = "梅花井"

+ 114 - 0
pages/ningdongyunying/real_time_alarm/real_time_alarm.vue

@@ -0,0 +1,114 @@
+<template>
+	<view class="content">
+		<view class="section">
+			<view class="table" v-if="list">
+				<uni-table emptyText="暂无更多数据" stripe>
+					<!-- 表头行 -->
+					<uni-tr>
+						<uni-th align="center">时间</uni-th>
+						<uni-th align="center" width="90">单位</uni-th>
+						<uni-th align="center">地点</uni-th>
+						<!-- <uni-th 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 list" :key="index">
+						<uni-td style="vertical-align: middle;" align="center">
+							<view>{{item.enter_time}}</view>
+						</uni-td>
+						<uni-td style="vertical-align: middle;" align="center">
+							<view>{{item.coal_name}}</view>
+						</uni-td>
+						<uni-td style="vertical-align: middle;" align="center">
+							<view>{{item.survey_name}}</view>
+						</uni-td>
+						<uni-td style="vertical-align: middle;" align="center">
+							<view>{{item.abnormal_reason}}</view>
+						</uni-td>
+						<uni-td style="vertical-align: middle;" align="center">
+							<view>{{item.do_measure}}</view>
+						</uni-td>
+					</uni-tr>
+
+				</uni-table>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				list:[]
+			};
+		},
+		onLoad() {
+			this.get_ycbj_list()
+		},
+		methods:{
+			get_ycbj_list(){
+				this.$p_api.get_ycbj_list({
+					
+				}).then((res)=>{
+					this.list = res.data.content
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		box-sizing: border-box;
+		padding: 0rpx 25rpx;
+
+		margin-bottom: 150rpx;
+
+		.section {
+			.title {
+				line-height: 90rpx;
+				font-size: 34rpx;
+				color: #424242;
+				font-weight: 700;
+
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				.text {
+					margin: 0 20rpx;
+				}
+
+				.line {
+					width: 100rpx;
+					height: 2rpx;
+					background-color: #BFBFBF;
+				}
+			}
+
+			.table {
+				margin:0 -25rpx 20rpx;
+				width: 750rpx;
+				.uni-table-th {
+					color: #FFFFFF;
+					background-color: #00A0E8;
+				}
+
+				.uni-table-th.table--border {
+					border: none;
+				}
+
+				.uni-table-td.table--border {
+					color: #666666;
+					border: none;
+				}
+
+
+			}
+
+		}
+
+	}
+</style>

pages/origanization/communication/origanization/personal_information/personal_information - 个人信息页.vue → pages/origanization/communication/origanization/personal_information/personal_information_info.vue


pages/origanization/communication/origanization/personal_information/personal_information.vue → pages/origanization/communication/origanization/personal_information/personal_information_peixun.vue


+ 63 - 0
pages/origanization/communication/origanization/personnel_statistics/chart.json

@@ -0,0 +1,63 @@
+{
+	"pie_bumen": {
+		"series": [{
+			"data": [{
+				"name": "机关部门",
+				"value": 50
+			}, {
+				"name": "国家能源集团直属中心(直属机构)",
+				"value": 30
+			}, {
+				"name": "煤炭生产单位",
+				"value": 20
+			}, {
+				"name": "煤制油化工单位",
+				"value": 18
+			}, {
+				"name": "专业化公司及其他单位",
+				"value": 8
+			}, {
+				"name": "参股企业",
+				"value": 8
+			}]
+		}]
+	},
+	"table_pie_bumen": [{
+			"section": "机关部室",
+			"num": "85",
+			"proportion": "35%"
+		},
+		{
+			"section": "国家能源集团直属中心(直属机构)",
+			"num": "30",
+			"proportion": "15%"
+		}
+	],
+	"pie_xueli": {
+		"series": [{
+			"data": [{
+				"name": "高中",
+				"value": 50
+			}, {
+				"name": "大专",
+				"value": 30
+			}, {
+				"name": "本科",
+				"value": 20
+			}, {
+				"name": "研究生",
+				"value": 18
+			}, {
+				"name": "硕士",
+				"value": 8
+			}]
+		}]
+	},
+	"column_nianling": {
+		"categories": ["25岁以下", "25~29岁", "30~34岁", "35~39岁", "40~44岁", "45~49岁"],
+		"series": [{
+			"name": "人数",
+			"data": [35, 36, 31, 33, 13, 34]
+		}]
+	}
+}

TEMPAT SAMPAH
pages/origanization/communication/origanization/personnel_statistics/icon/btn.png


TEMPAT SAMPAH
pages/origanization/communication/origanization/personnel_statistics/icon/check.png


+ 359 - 0
pages/origanization/communication/origanization/personnel_statistics/personnel_statistics.vue

@@ -0,0 +1,359 @@
+<template>
+	<view>
+		<view class="top_bg_color"></view>
+		<!-- 人员总数 -->
+		<view class="total">
+			<view class="num">{{total_count}}</view>
+			<view class="tip">在职总人数</view>
+		</view>
+
+		<view class="container">
+			<view class="content">
+				<view class="title">
+					<view class="left">
+						部门分布
+					</view>
+					<view class="right" @click="screen()">
+						<view class="icon">
+							<image src="./icon/check.png" mode=""></image>
+						</view>
+						<view class="text">筛选</view>
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts" :chartData="chartData_1" />
+					</view>
+					<view class="table">
+						<uni-table border emptyText="暂无更多数据">
+							<!-- 表头行 -->
+							<uni-tr>
+								<uni-th align="center" width="150">部门名称</uni-th>
+								<uni-th align="center" width="100">人数</uni-th>
+								<uni-th align="center" width="100">占比</uni-th>
+							</uni-tr>
+							<!-- 表格数据行 -->
+							<uni-tr v-for="(item,index) in table_1" :key="index">
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.section}}</view>
+								</uni-td>
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.num}}</view>
+								</uni-td>
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.proportion}}</view>
+								</uni-td>
+							</uni-tr>
+
+						</uni-table>
+
+						<view class="btn">
+							<view class="icon">
+								<image src="./icon/btn.png" mode=""></image>
+							</view>
+							<view class="btn_text" @click="go_origanization()">点击查看组织架构信息</view>
+						</view>
+					</view>
+				
+				</view>
+			</view>
+
+			<view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						学历分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts" :chartData="chartData_2" />
+					</view>
+				</view>
+			</view>
+
+			<view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						年龄分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="column" :opts="opts_column" :chartData="chartData_3" :ontouch="true" />
+					</view>		
+				</view>
+			</view>
+
+			<!-- <view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						党员分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts" :chartData="chartData_1" />
+					</view>
+				</view>
+			</view> -->
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import data from "./chart.json"
+
+	export default {
+		data() {
+			return {
+				total_count:"-",
+				chartData_1: {},
+				chartData_2: {},
+				chartData_3: {},
+				
+				table_1:[],
+				table_2:[],
+				//您可以通过修改 config-ucharts.js 文件中下标为 ['pie'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
+				opts: {
+					extra: {
+						pie: {
+							border: false,
+						}
+					},
+					legend: {
+						lineHeight: 25
+					}
+				},
+				opts_column: {
+					legend: {
+						show: false
+					},
+					enableScroll: true,
+					xAxis: {
+						scrollShow: true,
+						itemCount: 4,
+					}
+				}
+			};
+		},
+		onLoad() {
+			// #ifdef H5
+			function GetQueryString(name) {
+				var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+				var r = window.location.href.substr(1).match(reg);
+				if (r != null) return unescape(r[2]);
+				return null;
+			}
+			
+			// 调用方法
+			// alert(GetQueryString("参数名1"));
+			// alert(GetQueryString("参数名2"));
+			if (uni.getStorageSync('mine_code') == 'ningmeijituan') {
+				if (window.location.href.indexOf('page=personnel_statistics') != -1) {
+					console.log(window.location.href)
+			// 		this.$api.oauth_getNoPasswordToken({
+			// 			href: window.location.href,
+			// 			token: GetQueryString("token")
+			// 		}).then((res) => {
+			
+			// 		})
+				}else{
+					console.log('no_token')
+				}
+			}else{
+				console.log("no_ningmeijituan")
+			}
+			// #endif
+			
+			this.getServerData()
+		},
+		methods: {
+			screen() {
+				uni.navigateTo({
+					url: "./screen/screen"
+				})
+			},
+			go_origanization(){
+				uni.navigateTo({
+					url:"../origanization?page=origanization"
+				})
+			},
+			getServerData() {
+				this.$api.census_personal_analysis({
+					
+				}).then((res)=>{
+					console.log(res.data.content.data)
+					
+					this.chartData_1 = JSON.parse(JSON.stringify(res.data.content.data.pie_bumen));
+					this.chartData_2 = JSON.parse(JSON.stringify(res.data.content.data.pie_xueli));
+					this.chartData_3 = JSON.parse(JSON.stringify(res.data.content.data.column_nianling));
+					
+					this.table_1 = res.data.content.data.table_pie_bumen
+					this.total_count = res.data.content.data.total_count
+				})
+				//模拟从服务器获取数据时的延时
+				// setTimeout(() => {
+				// 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+				// 	this.chartData_1 = JSON.parse(JSON.stringify(data.pie_bumen));
+				// 	this.chartData_2 = JSON.parse(JSON.stringify(data.pie_xueli));
+				// 	this.chartData_3 = JSON.parse(JSON.stringify(data.column_nianling));
+					
+				// 	this.table_1 = data.table_pie_bumen
+				// }, 500);
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #f3f9f7;
+		padding-bottom: 50rpx;
+	}
+
+	.top_bg_color {
+		width: 750rpx;
+		height: 600rpx;
+		background-image: linear-gradient(to bottom, #009fe8, #48bae4, #85d2e0, #bfe6e5, #f3f9f7);
+	}
+
+	.total {
+		margin-top: -560rpx;
+		margin-bottom: 50rpx;
+
+		color: #FFFFFF;
+		text-align: center;
+
+		.num {
+			font-size: 60rpx;
+		}
+
+		.tip {
+			font-size: 28rpx;
+			opacity: 0.8;
+		}
+	}
+
+	.container {
+		box-sizing: border-box;
+		padding: 0 25rpx;
+	}
+
+	.content {
+		margin-bottom: 40rpx;
+		width: 700rpx;
+		background: #FFFFFF;
+		box-shadow: 1rpx 10rpx 16rpx 0rpx rgba(0, 0, 0, 0.1300);
+		border-radius: 20rpx;
+
+		overflow: hidden;
+
+		.title {
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			height: 90rpx;
+
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			background: linear-gradient(-90deg, #FFFFFF, #FFF6E7);
+
+			.left {
+				color: #343434;
+				font-weight: 700;
+
+				border-left: 6rpx solid #FCC950;
+				border-radius: 4rpx;
+				padding-left: 20rpx;
+			}
+
+			.right {
+				display: flex;
+				align-items: center;
+
+				.icon {
+					margin-right: 8rpx;
+
+					image {
+						width: 22rpx;
+						height: 25rpx;
+					}
+				}
+
+				.text {
+					font-size: 26rpx;
+					color: #343434;
+				}
+			}
+		}
+
+		.box {
+			box-sizing: border-box;
+			padding: 25rpx 10rpx;
+
+			/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
+			.charts-box {
+				width: 100%;
+				height: 600rpx;
+			}
+
+			.table {
+				.uni-table-th.table--border {
+					color: #000000;
+					background-color: #FFF6E7;
+				}
+
+				.uni-table-td.table--border {
+					color: #666666;
+				}
+
+				position: relative;
+
+				margin:0 -10rpx 20rpx;
+				width: 700rpx;
+				
+				.btn {
+					margin: 40rpx auto 0;
+					width: 400rpx;
+					height: 50rpx;
+
+					background-color: #69BBFA;
+					border-radius: 50rpx;
+
+					display: flex;
+					align-items: center;
+					justify-content: center;
+
+					.icon {
+						image {
+							width: 23rpx;
+							height: 24rpx;
+
+							display: block;
+						}
+					}
+
+					.btn_text {
+						margin-left: 10rpx;
+						font-size: 28rpx;
+						color: #FFFFFF;
+					}
+				}
+			}
+
+		}
+	}
+	
+	.content:nth-child(3){
+		.box{
+			.table{
+				margin-top: 40rpx;
+				.uni-table-th.table--border {
+					background-color: #FFE0E0;
+				}
+			}
+		}
+	}
+</style>

+ 59 - 0
pages/origanization/communication/origanization/personnel_statistics/screen/chart.json

@@ -0,0 +1,59 @@
+{
+	"pie_bumen": {
+		"series": [{
+			"data": [{
+				"name": "信息中心",
+				"value": 50
+			}, {
+				"name": "安全管理部",
+				"value": 30
+			}, {
+				"name": "综掘队",
+				"value": 20
+			}, {
+				"name": "综采2队",
+				"value": 18
+			}]
+		}]
+	},
+	"table_pie_bumen":[
+		{
+			"section":"信息中心",
+			"num":"85",
+			"proportion":"35%"
+		},
+		{
+			"section":"安全管理部",
+			"num":"30",
+			"proportion":"15%"
+		}
+	],
+	"pie_xueli": {
+		"series": [{
+			"data": [{
+				"name": "高中",
+				"value": 50
+			}, {
+				"name": "大专",
+				"value": 30
+			}, {
+				"name": "本科",
+				"value": 20
+			}, {
+				"name": "研究生",
+				"value": 18
+			}, {
+				"name": "硕士",
+				"value": 8
+			}]
+		}]
+	},
+	"column_nianling":{
+		"categories": ["20~25岁", "26~31岁", "32~37岁", "38~43岁", "44~49岁", "50~55岁"],
+		"series": [{
+				"name": "人数",
+				"data": [35, 36, 31, 33, 13, 34]
+			}
+		]
+	}
+}

+ 420 - 0
pages/origanization/communication/origanization/personnel_statistics/screen/screen.vue

@@ -0,0 +1,420 @@
+<template>
+	<view>
+		<view class="top_bg_color"></view>
+
+		<view class="select_box">
+			<view class="select" @click="select_section()">
+				<view class="text">{{section_name}}</view>
+				<view class="icon">
+					<uni-icons type="bottom"></uni-icons>
+				</view>
+			</view>
+			<view class="select" @click="select_type()">
+				<view class="text">{{type}}</view>
+				<view class="icon">
+					<uni-icons type="bottom"></uni-icons>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 人员总数 -->
+		<view class="total">
+			<view class="num">{{total_count}}</view>
+			<view class="tip">当前部门在职总人数</view>
+		</view>
+		
+		<view class="container">
+			<view class="content">
+				<view class="title">
+					<view class="left">
+						部门分布
+					</view>
+					<!-- <view class="right" @click="select_chart_type()">
+						<view class="text">饼状图</view>
+						<uni-icons type="bottom" size="12" color="#fff"></uni-icons>
+					</view> -->
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts" :chartData="chartData_1" />
+					</view>
+					<view class="table">
+						<uni-table border emptyText="暂无更多数据">
+							<uni-tr>
+								<uni-th align="center" width="150">部门名称</uni-th>
+								<uni-th align="center" width="100">人数</uni-th>
+								<uni-th align="center" width="100">占比</uni-th>
+							</uni-tr>
+							<uni-tr v-for="(item,index) in table_1" :key="index">
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.section}}</view>
+								</uni-td>
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.num}}</view>
+								</uni-td>
+								<uni-td style="vertical-align: middle;" align="center">
+									<view>{{item.proportion}}</view>
+								</uni-td>
+							</uni-tr>
+						</uni-table>
+					</view>
+									
+				</view>
+			</view>
+			
+			<view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						学历分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts_xueli" :chartData="chartData_2" />
+					</view>
+				</view>
+			</view>
+			
+			<view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						年龄分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="column" :opts="opts_column" :chartData="chartData_3" :ontouch="true" />
+					</view>
+				</view>
+			</view>
+			
+			<!-- <view class="content">
+				<view class="title" style="background: linear-gradient(-90deg, #FFFFFF, #FFE0E0);">
+					<view class="left" style="border-left-color: #FF4949;">
+						党员分布
+					</view>
+				</view>
+				<view class="box">
+					<view class="charts-box">
+						<qiun-data-charts type="pie" :opts="opts" :chartData="chartData_1" />
+					</view>
+				</view>
+			</view> -->
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import data from "./chart.json"
+	export default {
+		data() {
+			return {
+				// 煤矿
+				section_name:"",
+				section_list: [],
+				section_id:"",
+				// 类型
+				type:"枣泉煤矿",
+				type_list:['办公室','规划发展部','财务部','企业策划部'],
+				
+				total_count:"-",
+				chartData_1: {},
+				chartData_2: {},
+				chartData_3: {},
+				
+				table_1:[],
+				//您可以通过修改 config-ucharts.js 文件中下标为 ['pie'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
+				opts: {
+					extra: {
+						pie: {
+							border: false,
+						}
+					},
+					legend: {
+						show:false,
+						lineHeight: 25
+					}
+				},
+				opts_xueli:{
+					extra: {
+						pie: {
+							border: false,
+						}
+					},
+					legend: {
+						lineHeight: 25,
+					}
+				},
+				opts_column: {
+					legend: {
+						show: false
+					},
+					enableScroll: true,
+					xAxis: {
+						scrollShow: true,
+						itemCount: 4,
+					}
+				}
+			};
+		},
+		onLoad() {
+			this.get_census_get_section_screen()
+			this.getServerData()
+		},
+		methods: {
+			// 获取一级部门数据
+			get_census_get_section_screen(){
+				this.$api.census_get_section_screen({
+					
+				}).then((res)=>{
+					console.log(res.data.content.data)
+					this.section_list = res.data.content.data
+					this.section_name = res.data.content.data[0].title
+					this.section_id = res.data.content.data[0].id
+					
+					this.get_type_list(this.section_id)
+				})
+			},
+			// 获取二级部门数据
+			get_type_list(section_id){
+				this.$api.census_get_section_screen({
+					section_id:section_id
+				}).then((res)=>{
+					console.log(res.data.content.data)
+					this.type_list = res.data.content.data
+					this.type = res.data.content.data[0].title
+					
+					// 初始化部门数据
+					uni.showLoading({
+						mask:true
+					})
+					this.$api.census_personal_analysis({
+						section_id:res.data.content.data[0].id
+					}).then((res)=>{
+						uni.hideLoading()
+						console.log(res.data.content.data)
+						
+						this.chartData_1 = JSON.parse(JSON.stringify(res.data.content.data.pie_bumen));
+						this.chartData_2 = JSON.parse(JSON.stringify(res.data.content.data.pie_xueli));
+						this.chartData_3 = JSON.parse(JSON.stringify(res.data.content.data.column_nianling));
+						
+						this.table_1 = res.data.content.data.table_pie_bumen
+						this.total_count = res.data.content.data.total_count
+					})
+				})
+			},
+			// 选部门
+			select_section(){
+				
+				let itemList = []
+				
+				this.section_list.forEach((item,index)=>{
+					itemList[index] = item.title
+				})
+				
+				uni.showActionSheet({
+					itemList: itemList,
+					success: (res)=> {
+						console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
+						
+						this.section_name = this.section_list[res.tapIndex].title
+						this.section_id = this.section_list[res.tapIndex].id
+						this.get_type_list(this.section_id)
+					},
+					fail: (res)=> {
+						console.log(res.errMsg);
+					}
+				});
+			},
+			// 选类型
+			select_type(){
+				let itemList = []
+				
+				this.type_list.forEach((item,index)=>{
+					itemList[index] = item.title
+				})
+				
+				uni.showActionSheet({
+					itemList: itemList,
+					success: (res)=> {
+						console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
+						this.type = this.type_list[res.tapIndex].title
+						
+						console.log(this.type_list[res.tapIndex].id,this.type_list[res.tapIndex].title)
+						
+						uni.showLoading({
+							mask:true
+						})
+						this.$api.census_personal_analysis({
+							section_id:this.type_list[res.tapIndex].id
+						}).then((res)=>{
+							uni.hideLoading()
+							console.log(res.data.content.data)
+							
+							this.chartData_1 = JSON.parse(JSON.stringify(res.data.content.data.pie_bumen));
+							this.chartData_2 = JSON.parse(JSON.stringify(res.data.content.data.pie_xueli));
+							this.chartData_3 = JSON.parse(JSON.stringify(res.data.content.data.column_nianling));
+							
+							this.table_1 = res.data.content.data.table_pie_bumen
+							this.total_count = res.data.content.data.total_count
+						})
+					},
+					fail: (res)=> {
+						console.log(res.errMsg);
+					}
+				});
+			},
+			
+			getServerData() {
+				//模拟从服务器获取数据时的延时
+				// setTimeout(() => {
+				// 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+				// 	this.chartData_1 = JSON.parse(JSON.stringify(data.pie_bumen));
+				// 	this.chartData_2 = JSON.parse(JSON.stringify(data.pie_xueli));
+				// 	this.chartData_3 = JSON.parse(JSON.stringify(data.column_nianling));
+					
+				// 	this.table_1 = data.table_pie_bumen
+				// }, 500);
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #f3f9f7;
+		padding-bottom: 50rpx;
+	}
+
+	.top_bg_color {
+		width: 750rpx;
+		height: 600rpx;
+		background-image: linear-gradient(to bottom, #009fe8, #48bae4, #85d2e0, #bfe6e5, #f3f9f7);
+	}
+
+	
+	.select_box{
+		margin: -550rpx 25rpx 0;
+		width: 700rpx;
+		height: 100rpx;
+		background-color: #FFFFFF;
+		border-radius: 20rpx;
+		
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		.select{
+			width: 350rpx;
+			padding: 0 20rpx;
+			
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			
+			border-right: 4rpx solid #E9E9E9;
+			.text{
+				font-size: 26rpx;
+			}
+		}
+		.select:last-child{
+			border-right: none;
+		}
+	}
+
+	
+	.total {
+		margin: 50rpx 0;
+	
+		color: #FFFFFF;
+		text-align: center;
+	
+		.num {
+			font-size: 60rpx;
+		}
+	
+		.tip {
+			font-size: 28rpx;
+			opacity: 0.8;
+		}
+	}
+	
+	.container {
+		margin-top: 30rpx;
+		box-sizing: border-box;
+		padding: 0 25rpx;
+	}
+	
+	.content {
+		margin-bottom: 40rpx;
+		width: 700rpx;
+		background: #FFFFFF;
+		box-shadow: 1rpx 10rpx 16rpx 0rpx rgba(0, 0, 0, 0.1300);
+		border-radius: 20rpx;
+	
+		overflow: hidden;
+	
+		.title {
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			height: 90rpx;
+	
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+	
+			background: linear-gradient(-90deg, #FFFFFF, #FFF6E7);
+	
+			.left {
+				color: #343434;
+				font-weight: 700;
+	
+				border-left: 6rpx solid #FCC950;
+				border-radius: 4rpx;
+				padding-left: 20rpx;
+			}
+	
+			.right {
+				display: flex;
+				align-items: center;
+	
+				background-color: #FCC950;
+				border-radius: 30rpx;
+				padding: 5rpx 20rpx;
+				.text {
+					font-size: 26rpx;
+					color: #FFFFFF;
+					margin-right: 8rpx;
+				}
+			}
+		}
+	
+		.box {
+			box-sizing: border-box;
+			padding: 25rpx 10rpx;
+	
+			/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
+			.charts-box {
+				width: 100%;
+				height: 600rpx;
+			}
+			
+			.table {
+				.uni-table-th.table--border {
+					color: #000000;
+					background-color: #FFF6E7;
+				}
+			
+				.uni-table-td.table--border {
+					color: #666666;
+				}
+			
+				position: relative;
+			
+				margin:0 -10rpx 20rpx;
+				width: 700rpx;
+			}
+			
+		}
+	}
+</style>

+ 13 - 3
pages/production/shangtang/shangtang.vue

@@ -11,7 +11,8 @@
 				href: "",
 				
 				staff_num:"",
-				mine_code:""
+				mine_code:"",
+				base_url:""
 			};
 		},
 		onLoad() {
@@ -23,6 +24,15 @@
 				this.mine_code = "ningdongyunying"
 			}else if(mine_code == 'jinjiaqu' || mine_code == 'jinjiaqu_neiwang'){
 				this.mine_code = "640323B0011010019259"
+			}else if(mine_code == 'ningmeijituan'){
+				this.mine_code = "640323B0011010019259"
+				this.staff_num = '15102632'
+			}
+			
+			if(uni.getStorageSync("mine_code").indexOf('_neiwang') != -1){
+				this.base_url = "http://n.shangtang.jinjiaqu.nxjiewei.com:8011"
+			}else{
+				this.base_url = "http://shangtang.jinjiaqu.nxjiewei.com:8011"
 			}
 
 			this.get_token()
@@ -32,7 +42,7 @@
 				uni.request({
 					// 登录 获取token
 					method:"POST",
-					url: "http://shangtang.jinjiaqu.nxjiewei.com:8011/v1/app/token/get",
+					url: this.base_url + "/v1/app/token/get",
 					header:{
 						"Content-Type": "application/json"
 					},
@@ -45,7 +55,7 @@
 						if(res.data.code == 0){
 							console.log(res.data.data)
 							// 金家渠
-							this.href = "http://shangtang.jinjiaqu.nxjiewei.com:8011/h5/index.html?token=" + res.data.data.access_token
+							this.href = this.base_url + "/h5/index.html?token=" + res.data.data.access_token
 						}else{
 							uni.showToast({
 								icon:"none",

+ 75 - 0
pages/production/video_monitor_app/playback/playback.vue

@@ -0,0 +1,75 @@
+<template>
+	<view>
+		<view class="video_box">
+			
+		</view>
+		
+		<view class="calendar-filled">
+			<view class="icon">
+				<uni-icons type="calendar-filled" color="#00A0E8" size="26"></uni-icons>
+			</view>
+			<view class="time">
+				2022-07-16
+			</view>
+			<view class="icon">
+				<uni-icons type="bottom"></uni-icons>
+			</view>
+		</view>
+		
+		<view class="btn_list">
+			<view class="btn" v-for="item in 17">00:00-00:30</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+	.video_box{
+		height: 600rpx;
+	}
+	.calendar-filled{
+		margin: 0 auto;
+		width: 360rpx;
+		height: 70rpx;
+		border-radius: 50rpx;
+		border: 2rpx solid #00A0E8;
+		
+		box-sizing: border-box;
+		padding: 0 40rpx;
+		
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		
+		.time{
+			font-size: 28rpx;
+			color: #00A0E8;
+		}
+	}
+	
+	.btn_list{
+		box-sizing: border-box;
+		padding: 25rpx;
+		overflow: hidden;
+		.btn{
+			margin-right: 50rpx;
+			
+			width: 200rpx;
+			height: 65rpx;
+			font-size: 24rpx;
+			color: #464646;
+		}
+		.btn:nth-child(3n){
+			margin-right: 0;
+		}
+	}
+</style>

+ 8 - 1
pages/production/video_monitor_app/video-block/video-block.vue

@@ -11,7 +11,8 @@
 				</view>
 				<view class="name">
 					<view class="text">{{item.camera_name}}</view>
-					<view class="icon" @click.stop="popup()">
+					<!-- <view class="icon" @click.stop="popup()"> -->
+					<view class="icon" @click.stop="go_playback()">
 						<image src="./icon/icon.png" mode=""></image>
 					</view>
 				</view>
@@ -173,6 +174,12 @@
 			},
 			popup() {
 				// this.$refs.popup.open()
+			},
+			
+			go_playback(){
+				uni.navigateTo({
+					url:"../playback/playback"
+				})
 			}
 		}
 	}

+ 1 - 1
pages/production/video_monitor_app/video_monitor_app.vue

@@ -18,7 +18,7 @@
 			
 			this.mine_code = option.mine_code
 			
-			if(this.mine_code.indexOf('_neiwang') != -1){
+			if(uni.getStorageSync("mine_code").indexOf('_neiwang') != -1){
 				this.base_url = "http://n.video.nxjiewei.com:8011/api"
 			}else{
 				this.base_url = "http://video.nxjiewei.com:8011/api"

+ 6 - 0
pages/production/zaoquan/power_monitoring/power_monitoring.vue

@@ -87,6 +87,9 @@
 				uni.request({
 					url:this.base_url + "/electric/dsspara",
 					method:"GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						uni.hideLoading()
 						console.log(res.data.data)
@@ -103,6 +106,9 @@
 				uni.request({
 					url:this.base_url + "/electric/mdpara",
 					method:"GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					data:{
 						dsspara_id:dsspara_id
 					},

+ 6 - 3
pages/production/zidonghua/zidonghua.vue

@@ -522,7 +522,8 @@
 					name: "金家渠煤矿",
 					list: [{
 						name: "矿压监测",
-						url: "http://webdevelop.nxjiewei.com/assets/html/zhks-quankuang/zidonghua/#/pages/jinjiaqu/kuang_ya_jian_ce/kuang_ya_jian_ce"
+						// url: "http://webdevelop.nxjiewei.com/assets/html/zhks-quankuang/zidonghua/#/pages/jinjiaqu/kuang_ya_jian_ce/kuang_ya_jian_ce"
+						url: "../jinjiaqu/kuang_ya_jian_ce/kuang_ya_jian_ce"
 					}]
 				}],
 
@@ -624,12 +625,14 @@
 				}
 			},
 			inner_item_active(item_2) {
-				console.log(item_2)
-
 				if (item_2.url.indexOf('unified_automation_system') != -1) {
 					uni.navigateTo({
 						url: item_2.url + "&name=" + item_2.name
 					})
+				}else if(item_2.url.indexOf('jinjiaqu/kuang_ya_jian_ce/kuang_ya_jian_ce') != -1){
+					uni.navigateTo({
+						url: '../jinjiaqu/kuang_ya_jian_ce/kuang_ya_jian_ce'
+					})
 				} else {
 					uni.navigateTo({
 						url: "./detail/detail?url=" + item_2.url + "&name=" + item_2.name

TEMPAT SAMPAH
pages/tabbar/index/icon/icon.png


TEMPAT SAMPAH
pages/tabbar/index/icon/icon_1.png


TEMPAT SAMPAH
pages/tabbar/index/icon/nav_1.png


TEMPAT SAMPAH
pages/tabbar/index/icon/nav_2.png


TEMPAT SAMPAH
pages/tabbar/index/icon/nav_3.png


+ 20 - 2
pages/tabbar/index/index - 全矿适配版本.vue

@@ -32,13 +32,13 @@
 			<t-i-ice :iceList="ice_list" :mine_code="mine_code"></t-i-ice>
 		</view>
 
-		<t-i-icon v-if="mine_code == 'ningmeijituan'" :iconList="iconList" :mine_code="mine_code"></t-i-icon>
+		<t-i-icon v-if="mine_code == 'ningmeijituan' || 'wuyegongsi'" :iconList="iconList" :mine_code="mine_code"></t-i-icon>
 
 		<!-- 新闻列表 -->
 		<t-i-news :newsList="newsList" :mine_code="mine_code"></t-i-news>
 
 		<!-- 固定入口 -->
-		<t-i-icon v-if="mine_code != 'ningmeijituan'" :iconList="iconList" :mine_code="mine_code"></t-i-icon>
+		<t-i-icon v-if="mine_code != 'ningmeijituan' && iconList.length > 0" :iconList="iconList" :mine_code="mine_code"></t-i-icon>
 
 		<!-- 常用功能 -->
 		<t-i-common v-if="mine_code == 'ningdongyunying'"></t-i-common>
@@ -290,6 +290,9 @@
 				uni.request({
 					url: this.base_url + "/scrollImg/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data.data)
 						this.banners = res.data.data.data
@@ -302,6 +305,9 @@
 				uni.request({
 					url: this.base_url + "/article/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					data: {
 						pageSize: 4
 					},
@@ -315,6 +321,9 @@
 				this.ice_list = []
 				uni.request({
 					url: this.base_url + "/home/links",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data)
 
@@ -339,6 +348,9 @@
 				uni.request({
 					url: this.base_url + "/notice/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						if (!res.data.data.content) {
 							this.text = res.data.data.message
@@ -355,6 +367,9 @@
 				// 加分组
 				uni.request({
 					url: this.base_url + "/homeNav/listByCategory",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					method: "GET",
 					success: (res) => {
 						// console.log(res.data.data)
@@ -368,6 +383,9 @@
 				uni.request({
 					url: this.base_url + "/home/links",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res)
 						this.home_link = res.data.data

File diff ditekan karena terlalu besar
+ 1130 - 0
pages/tabbar/index/index - 安全管理体系-图标版本.vue


+ 19 - 0
pages/tabbar/index/index - 泛微.vue

@@ -0,0 +1,19 @@
+<template>
+	<view>
+		<web-view src=""></web-view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	
+</style>

+ 671 - 0
pages/tabbar/index/index-安全管理体系第一版.vue

@@ -0,0 +1,671 @@
+<template>
+	<view>
+		<!-- 首页风格切换-1-切换风格 -->
+		<view class="top_bg_color">
+			<!-- 背景虚化轮播图 -->
+			<!-- <view class="bg_img" :style="{backgroundImage:'url('+top_bg_color_img+')'}"></view> -->
+			<!-- 固定安全色 -->
+			<view class="bg_img" :style="{backgroundColor:top_bg_color}"></view>
+
+			<t-i-navbar :mine_code="mine_code" :navbar_bg_color="navbar_bg_color"></t-i-navbar>
+			<t-i-notice :text="text"></t-i-notice>
+			<t-i-banner :banner="banners" :mine_code="mine_code" @change_top_bg_color_img="change_top_bg_color_img">
+			</t-i-banner>
+		</view>
+		
+		<view v-for="(item,index) in common" :key="index">
+			<view class="fixed_system" v-if="item.type_name == '七大板块' && item.index == index">
+				<view class="line">
+					<view class="item" v-for="(item_2,index_2) in item.data" :key="index_2" v-if="index_2 < 3" @click="go_page(item_2)">
+						<view class="icon">
+							<image :src="item_2.thumb" mode=""></image>
+						</view>
+						<view class="text">{{item_2.title}}</view>
+					</view>
+				</view>
+				<view class="line">
+					<view class="item" v-for="(item_2,index_2) in item.data" :key="index_2" v-if="index_2 > 2" @click="go_page(item_2)">
+						<view class="icon">
+							<image :src="item_2.thumb" mode=""></image>
+						</view>
+						<view class="text">{{item_2.title}}</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="todo" v-if="item.type_name == '待办事项' && item.index == index">
+				<view class="left">
+					<view class="title">
+						<view class="icon"></view>
+						<view class="text">待办事项</view>
+					</view>
+				</view>
+				<view class="right">
+					<view class="tip">您有 <text style="color: #FF0000;">0</text> 项待办</view>
+					<view class="detail">
+						详情 <uni-icons type="right" size="12" color="#B5B5B5"></uni-icons>
+					</view>
+				</view>
+			</view>
+			
+			<view class="nav" v-if="item.type_name == '实操应用' && item.index == index">
+				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+					<view class="title">
+						<view class="icon"></view>
+						<view class="text">{{item_2.title}}</view>
+					</view>
+					<view class="list">
+						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+							<view class="icon">
+								<image :src="item_3.thumb" mode=""></image>
+							</view>
+							<view class="text">{{item_3.title}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		
+			<view class="nav" v-if="item.type_name == '数据平台' && item.index == index">
+				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+					<view class="title">
+						<view class="icon"></view>
+						<view class="text">{{item_2.title}}</view>
+					</view>
+					<view class="list">
+						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+							<view class="icon">
+								<image :src="item_3.thumb" mode=""></image>
+							</view>
+							<view class="text">{{item_3.title}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		
+			<view class="nav" v-if="item.type_name == '学习资料' && item.index == index">
+				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+					<view class="title">
+						<view class="icon"></view>
+						<view class="text">{{item_2.title}}</view>
+					</view>
+					<view class="list">
+						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+							<view class="icon">
+								<image :src="item_3.thumb" mode=""></image>
+							</view>
+							<view class="text">{{item_3.title}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="news" v-if="item.type_name == '动态信息' && item.index == index">
+				<view class="title_box">
+					<view class="left">
+						<view class="title">
+							<view class="icon"></view>
+							<view class="text">动态信息</view>
+						</view>
+					</view>
+					<view class="right" @click="go_more()">
+						<view class="detail">
+							查看全部 <uni-icons type="right" size="12" color="#B5B5B5"></uni-icons>
+						</view>
+					</view>
+				</view>
+				<view class="list">
+					<view class="item" v-for="(item,index) in newsList" :key="index" @click="go_detail(item.id)">
+						<view class="icon"></view>
+						<view class="inner">
+							<view class="new_title">{{item.title}}</view>
+							<view class="tip">
+								<view class="time">{{item.created_at}}</view>
+								<view class="detail">
+									详情<image src="./icon/new_detail.png" mode=""></image>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+
+	
+	</view>
+</template>
+
+<script>
+	import {
+		set_base_url
+	} from '@/common/set_base_url.js'
+	import {
+		goToLink
+	} from '@/common/common.js'
+	// 版本控制
+	import upApp from "@/uni_modules/uni-upgrade-center-app/utils/check-update"
+
+	export default {
+		data() {
+			return {
+				// 根_mine_code
+				app_mine_code: "",
+				// 当前煤矿编码
+				mine_code: "",
+				// 首页接口的基础请求路径  默认为当前矿编码的基础路径
+				base_url: " ",
+
+				// 轮播图
+				banners: [],
+				// 新闻列表
+				newsList: "",
+				// 值班公告
+				text: "",
+				
+				// 背景虚化图片
+				top_bg_color_img: "",
+				// 背景安全色
+				top_bg_color: "#7372c2",
+				top_bg_color_list: ['#d62b2b', '#00a2e8', '#b08654',"#7372c2"],
+				
+				// 标题栏背景色
+				navbar_bg_color: "",
+
+				common:[]
+			}
+		},
+		onPullDownRefresh() {
+			uni.reLaunch({
+				url: "./index"
+			})
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onLoad() {
+			// 初始化当前煤矿编码
+			this.mine_code = uni.getStorageSync('mine_code')
+			// 根据矿编码切换首页接口不同的请求基础路径
+			this.base_url = set_base_url(this.mine_code)
+			
+			// #ifdef H5
+			if (this.mine_code == 'ningmeijituan') {
+				if (window.location.href.indexOf('token') != -1) {
+					this.$api.oauth_getNoPasswordToken({
+						token: window.location.href.split('token=')[1].split('&')[0],
+						caller: window.location.href.split('token=')[1].split('&')[1].split('=')[1]
+					}).then((res) => {
+
+						uni.setStorageSync('Authorization', res.data.data.accessToken)
+						uni.setStorageSync('token_type', res.data.data.token_type)
+						// 存储用户基本信息
+						uni.setStorageSync('user', res.data.data.user);
+						uni.setStorageSync('people_code', res.data.data.user.people_code);
+						// 存储电话号码
+						uni.setStorageSync('mobile', res.data.data.user.mobile);
+					})
+				}else{
+					this.check_token()
+				}
+			}else{
+				this.check_token()
+			}
+			// #endif
+
+			// 检查更新
+			upApp()
+			
+			// #ifdef APP-PLUS
+			this.check_token()
+			// #endif
+
+
+			// 获取轮播图
+			this.get_banner()
+			// 获取首页新闻列表
+			this.getNews()
+			// 值班公告
+			this.get_notice()
+			
+			this.get_home_aqyk_newLinks()
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > 300) {
+				this.navbar_bg_color = "#009fe8"
+			} else {
+				this.navbar_bg_color = ""
+			}
+		},
+		methods: {
+			// 单点登录及token过期验证
+			check_token() {
+				// token过期验证
+				this.$api.worksheet_classify_list({
+
+				}).then((res) => {
+					// console.log(res)
+					if (res.data.code == 401) {
+						uni.showToast({
+							icon: "none",
+							title: "登录失效、请重新登录"
+						})
+
+						uni.clearStorageSync('Authorization');
+
+						setTimeout(function() {
+							uni.redirectTo({
+								url: "../../my/login/login"
+							})
+						}, 1500)
+					} else {
+						// console.log(res)
+					}
+				})
+			},
+			
+			get_home_aqyk_newLinks() {
+				this.$api.home_aqyk_newLinks({
+			
+				}).then((res) => {
+					// console.log(res.data)
+					
+					let data = res.data
+						data.forEach((item,index)=>{
+							item['index'] = index
+						})
+						
+						// console.log(data)
+					
+					this.common = data
+				})
+			},
+
+			// 获取轮播图
+			get_banner() {
+				uni.request({
+					url: this.base_url + "/scrollImg/list",
+					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
+					success: (res) => {
+						// console.log(res.data.data.data)
+						this.banners = res.data.data.data
+						this.top_bg_color_img = this.banners[0].imgURL
+					}
+				})
+			},
+			// 请求新闻动态
+			getNews() {
+				uni.request({
+					url: this.base_url + "/article/list",
+					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
+					data: {
+						pageSize: 4
+					},
+					success: (res) => {
+						this.newsList = res.data.data.data
+					}
+				})
+			},
+			// 值班公告
+			get_notice() {
+				uni.request({
+					url: this.base_url + "/notice/list",
+					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
+					success: (res) => {
+						if (!res.data.data.content) {
+							this.text = res.data.data.message
+						} else {
+							this.text = res.data.data.content.replace(/<br /g, " ").replace(/>/g, " ").replace(
+								/\//g, " ")
+						}
+					}
+				})
+			},
+
+			// 切换背景图片
+			change_top_bg_color_img(index) {
+				if (index > 3) {
+					index = parseInt(4 * Math.random())
+				}
+
+				this.top_bg_color = this.top_bg_color_list[index]
+			},
+		
+			go_page(item){
+				if(item.link == null){
+					uni.showToast({
+						icon:"none",
+						title:"暂未开通"
+					})
+					return
+				}
+				
+				goToLink(item, this.mine_code)
+				
+			},
+			// 打开详情页
+			go_detail(id) {
+				uni.navigateTo({
+					url: "../../index/news/news?id=" + id + "&mine_code=ningmeijituan"
+				})
+			},
+			// 打开列表
+			go_more() {
+				uni.navigateTo({
+					url: "../../index/news/news_list/news_list?mine_code=ningmeijituan"
+				})
+			}
+		}
+
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #FFFFFF;
+	}
+
+	.top_bg_color {
+		position: relative;
+
+		width: 750rpx;
+		overflow: hidden;
+
+		.bg_img {
+			width: 750rpx;
+			height: 440rpx;
+
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 0;
+			background-position: center;
+			background-size: 100% 100%;
+			filter: blur(50px);
+			transform: scale(2);
+			opacity: 0.9;
+		}
+	}
+
+	.fixed_system {
+		box-sizing: border-box;
+		padding: 25rpx 0;
+		
+		width: 750rpx;
+		height: 436rpx;
+		background-image: url(./icon/section.png);
+		background-size: 100% 100%;
+		background-repeat: no-repeat;
+		
+		.line {
+			box-sizing: border-box;
+			padding: 25rpx;
+		
+			display: flex;
+			justify-content: center;
+		
+			.item {
+				margin-right: 54rpx;
+		
+				.icon {
+					image {
+						width: 109rpx;
+						height: 109rpx;
+						display: block;
+					}
+				}
+		
+				.text {
+					font-size: 28rpx;
+					color: #171717;
+				}
+			}
+		}
+		
+		.line:first-child {
+			.item:nth-child(3) {
+				margin-right: 0;
+			}
+		}
+		
+		.line:last-child {
+			.item:nth-child(4) {
+				margin-right: 0;
+			}
+		}
+	}
+		
+	.todo {
+		box-sizing: border-box;
+		padding: 25rpx;
+		
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		
+		.left {
+			.title {
+				display: flex;
+				align-items: center;
+		
+				.icon {
+					width: 9rpx;
+					height: 34rpx;
+					background-color: #04A0E8;
+					border-radius: 5rpx;
+				}
+		
+				.text {
+					margin-left: 10rpx;
+					color: #6A6A6A;
+					font-size: 33rpx;
+					font-weight: 700;
+				}
+			}
+		}
+		
+		.right {
+			display: flex;
+			align-items: baseline;
+		
+			.tip {
+				font-size: 25rpx;
+				color: #6A6A6A;
+			}
+		
+			.detail {
+				margin-left: 24rpx;
+				font-size: 25rpx;
+				color: #B5B5B5;
+			}
+		}
+	}
+		
+	.nav {
+		background-color: #F7F9F7;
+		width: 750rpx;
+		
+		padding: 10rpx 0;
+		.section {
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			padding: 25rpx;
+		
+			.title {
+				padding: 20rpx 0;
+				display: flex;
+				align-items: center;
+		
+				.icon {
+					width: 9rpx;
+					height: 34rpx;
+					background-color: #04A0E8;
+					border-radius: 5rpx;
+				}
+		
+				.text {
+					margin-left: 10rpx;
+					color: #6A6A6A;
+					font-size: 33rpx;
+					font-weight: 700;
+				}
+			}
+		
+			.list {
+				width: 700rpx;
+				overflow: hidden;
+		
+				.item {
+					margin-top: 20rpx;
+					float: left;
+					margin-right: 20rpx;
+		
+					width: 120rpx;
+					text-align: center;
+		
+					.icon {
+						image {
+							width: 73rpx;
+							height: 73rpx;
+						}
+					}
+		
+					.text {
+						color: #171717;
+						font-size: 26rpx;
+		
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+				}
+		
+				.item:nth-child(5n) {
+					margin-right: 0;
+				}
+			}
+		}
+	}
+		
+	.news {
+		background-color: #F7F9F7;
+		padding-top: 20rpx;
+		
+		.title_box {
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			padding: 25rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+		
+			.left {
+				.title {
+					display: flex;
+					align-items: center;
+		
+					.icon {
+						width: 9rpx;
+						height: 34rpx;
+						background-color: #04A0E8;
+						border-radius: 5rpx;
+					}
+		
+					.text {
+						margin-left: 10rpx;
+						color: #6A6A6A;
+						font-size: 33rpx;
+						font-weight: 700;
+					}
+				}
+			}
+		
+			.right {
+				display: flex;
+				align-items: baseline;
+		
+				.tip {
+					font-size: 25rpx;
+					color: #6A6A6A;
+				}
+		
+				.detail {
+					margin-left: 24rpx;
+					font-size: 25rpx;
+					color: #B5B5B5;
+				}
+			}
+		}
+		
+		.list {
+			box-sizing: border-box;
+			padding: 25rpx;
+			background-color: #FFFFFF;
+		
+			.item {
+				margin-bottom: 20rpx;
+				display: flex;
+				justify-content: space-between;
+		
+				border-bottom: 1rpx solid #F5F6F7;
+		
+				.icon {
+					position: relative;
+					top: 16rpx;
+		
+					width: 8rpx;
+					height: 8rpx;
+					background: #999999;
+					border-radius: 50%;
+				}
+		
+				.inner {
+					width: 680rpx;
+		
+					.new_title {
+						color: #171717;
+						font-size: 29rpx;
+						line-height: 44rpx;
+					}
+		
+					.tip {
+						margin: 20rpx 0;
+						display: flex;
+						justify-content: space-between;
+		
+						.time {
+							font-size: 26rpx;
+							color: #999999;
+						}
+		
+						.detail {
+							color: #FD6B5C;
+							font-size: 23rpx;
+		
+							image {
+								margin-left: 8rpx;
+								width: 19rpx;
+								height: 16rpx;
+							}
+						}
+					}
+				}
+			}
+		
+			.item:last-child {
+				border: none;
+			}
+		}
+	}
+	
+	
+	
+</style>

+ 106 - 105
pages/tabbar/index/index.vue

@@ -68,70 +68,69 @@
 
 		<view v-for="(item,index) in common" :key="index">
 
-			<view class="todo" v-if="item.type_name == '待办事项' && item.index == index">
-				<view class="left">
-					<view class="title">
-						<view class="icon"></view>
-						<view class="text">待办事项</view>
+			<view v-if="item.type_name == '待办事项' && item.index == index">
+				<view class="todo">
+					<view class="box">
+						<view class="name">待办事项</view>
+						<view class="text">有 <text style="color: #FF0000;">5</text> 项 <uni-icons type="right" size="14"></uni-icons></view>
 					</view>
-				</view>
-				<view class="right">
-					<view class="tip">您有 <text style="color: #FF0000;">0</text> 项待办</view>
-					<view class="detail">
-						详情 <uni-icons type="right" size="12" color="#B5B5B5"></uni-icons>
+					<view style="width: 4rpx; height: 45rpx; background-color: #E6E6E6;"></view>
+					<view class="box">
+						<view class="name">实时预警</view>
+						<view class="text">有 <text style="color: #FF0000;">23</text> 条 <uni-icons type="right" size="14"></uni-icons></view>
 					</view>
 				</view>
 			</view>
 
-			<view class="nav" v-if="item.type_name == '实操应用' && item.index == index">
-				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
-					<view class="title">
-						<view class="icon"></view>
-						<view class="text">{{item_2.title}}</view>
-					</view>
-					<view class="list">
-						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
-							@click="go_page(item_3)">
+			<view v-if="item.type_name == '实操应用' && item.index == index">
+				<view class="nav">
+					<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+						<view class="title">
 							<view class="icon">
-								<image :src="item_3.thumb" mode=""></image>
+								<image src="./icon/nav_1.png" mode=""></image>
+							</view>
+							<view class="text">{{item_2.title}}</view>
+						</view>
+						<view class="list">
+							<view class="item" v-if="index_3 < 6" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+								<view class="text">{{item_3.title}}</view>
 							</view>
-							<view class="text">{{item_3.title}}</view>
 						</view>
 					</view>
 				</view>
 			</view>
 
-			<view class="nav" v-if="item.type_name == '数据平台' && item.index == index">
-				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
-					<view class="title">
-						<view class="icon"></view>
-						<view class="text">{{item_2.title}}</view>
-					</view>
-					<view class="list">
-						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
-							@click="go_page(item_3)">
+			<view v-if="item.type_name == '数据平台' && item.index == index">
+				<view class="nav">
+					<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+						<view class="title">
 							<view class="icon">
-								<image :src="item_3.thumb" mode=""></image>
+								<image src="./icon/nav_2.png" mode=""></image>
+							</view>
+							<view class="text">{{item_2.title}}</view>
+						</view>
+						<view class="list">
+							<view class="item" v-if="index_3 < 6" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+								<view class="text">{{item_3.title}}</view>
 							</view>
-							<view class="text">{{item_3.title}}</view>
 						</view>
 					</view>
 				</view>
 			</view>
 
-			<view class="nav" v-if="item.type_name == '学习资料' && item.index == index">
-				<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
-					<view class="title">
-						<view class="icon"></view>
-						<view class="text">{{item_2.title}}</view>
-					</view>
-					<view class="list">
-						<view class="item" v-for="(item_3,index_3) in item_2.children" :key="index_3"
-							@click="go_page(item_3)">
+			<view v-if="item.type_name == '学习资料' && item.index == index">
+				<view class="nav">
+					<view class="section" v-for="(item_2,index_2) in item.data" :key="index_2">
+						<view class="title">
 							<view class="icon">
-								<image :src="item_3.thumb" mode=""></image>
+								<image src="./icon/nav_3.png" mode=""></image>
+							</view>
+							<view class="text">{{item_2.title}}</view>
+						</view>
+						<view class="list">
+							<view class="item" v-if="index_3 < 6" v-for="(item_3,index_3) in item_2.children" :key="index_3" @click="go_page(item_3)">
+								<view class="text">{{item_3.title}}</view>
 							</view>
-							<view class="text">{{item_3.title}}</view>
 						</view>
 					</view>
 				</view>
@@ -554,6 +553,9 @@
 				uni.request({
 					url: this.base_url + "/scrollImg/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						// console.log(res.data.data.data)
 						this.banners = res.data.data.data
@@ -566,6 +568,9 @@
 				uni.request({
 					url: this.base_url + "/article/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					data: {
 						pageSize: 4
 					},
@@ -579,6 +584,9 @@
 				uni.request({
 					url: this.base_url + "/notice/list",
 					method: "GET",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
 						if (!res.data.data.content) {
 							this.text = res.data.data.message
@@ -842,15 +850,16 @@
 					color: #171717;
 				}
 			}
-		}
-
-		.line:first-child {
-			.item:nth-child(3) {
+			
+			.item:nth-child(3){
 				margin-right: 0;
 			}
 		}
 
 		.line:last-child {
+			.item:nth-child(3){
+				margin-right: 54rpx;
+			}
 			.item:nth-child(4) {
 				margin-right: 0;
 			}
@@ -858,6 +867,12 @@
 	}
 
 	.todo {
+		margin: 0 auto;
+		width: 700rpx;
+		margin-top: 20rpx;
+		border-radius: 20rpx;
+		box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0,0,0,.1);
+		height: 114rpx;
 		box-sizing: border-box;
 		padding: 25rpx;
 
@@ -865,87 +880,71 @@
 		justify-content: space-between;
 		align-items: center;
 
-		.left {
-			.title {
-				display: flex;
-				align-items: center;
-
-				.icon {
-					width: 9rpx;
-					height: 34rpx;
-					background-color: #04A0E8;
-					border-radius: 5rpx;
-				}
-
-				.text {
-					margin-left: 10rpx;
-					color: #6A6A6A;
-					font-size: 33rpx;
-					font-weight: 700;
-				}
-			}
-		}
-
-		.right {
+		.box{
+			width: 350rpx;
 			display: flex;
-			align-items: baseline;
-
-			.tip {
-				font-size: 25rpx;
-				color: #6A6A6A;
+			justify-content: space-between;
+			align-items: center;
+			color: #6A6A6A;
+			
+			box-sizing: border-box;
+			padding: 0 15rpx;
+			.name{
+				font-size: 32rpx;
+				font-weight: 700;
 			}
-
-			.detail {
-				margin-left: 24rpx;
-				font-size: 25rpx;
-				color: #B5B5B5;
+			.text{
+				display: flex;
+				align-items: center;
+				font-size: 24rpx;
 			}
 		}
 	}
 
 	.nav {
-		background-color: #F7F9F7;
-		width: 750rpx;
-
-		padding: 10rpx 0;
+		margin: 30rpx auto;
+		width: 700rpx;
+		box-sizing: border-box;
+		padding: 30rpx 10rpx;
+		border-radius: 20rpx;
+		box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0,0,0,.1);
 
 		.section {
-			background-color: #FFFFFF;
-			box-sizing: border-box;
-			padding: 25rpx;
-
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			
 			.title {
-				padding: 20rpx 0;
-				display: flex;
-				align-items: center;
-
+				width: 150rpx;
+				text-align: center;
 				.icon {
-					width: 9rpx;
-					height: 34rpx;
-					background-color: #04A0E8;
-					border-radius: 5rpx;
+					text-align: center;
+					image{
+						width: 70rpx;
+						height: 70rpx;
+					}
 				}
 
 				.text {
 					margin-left: 10rpx;
 					color: #6A6A6A;
-					font-size: 33rpx;
+					font-size: 28rpx;
 					font-weight: 700;
 				}
 			}
 
 			.list {
-				width: 700rpx;
+				width: 520rpx;
 				overflow: hidden;
 
 				.item {
-					margin-top: 20rpx;
+					border-right: 2rpx solid #E6E6E6;
 					float: left;
-					margin-right: 20rpx;
+					margin: 15rpx 0;
+					margin-right: 22rpx;
 
-					width: 120rpx;
+					width: 150rpx;
 					text-align: center;
-
 					.icon {
 						image {
 							width: 73rpx;
@@ -963,17 +962,19 @@
 					}
 				}
 
-				.item:nth-child(5n) {
+				.item:nth-child(3n) {
+					margin-right: 0;
+					border-right: none;
+				}
+				.item:last-child {
 					margin-right: 0;
+					border-right: none;
 				}
 			}
 		}
 	}
 
 	.news {
-		background-color: #F7F9F7;
-		padding-top: 20rpx;
-
 		.title_box {
 			background-color: #FFFFFF;
 			box-sizing: border-box;

+ 10 - 3
pages/tabbar/my/my.vue

@@ -269,9 +269,16 @@
 		methods: {
 			// 个人信息
 			go_information() {
-				uni.navigateTo({
-					url: "../../my/personal_information/personal_information"
-				})
+				if(this.mine_code == 'ningmeijituan'){
+					uni.navigateTo({
+						url: "../../my/personal_information/personal_information_peixun"
+					})
+				}else{
+					uni.navigateTo({
+						url: "../../my/personal_information/personal_information_info"
+					})
+				}
+				
 			},
 			// 查询使用时长
 			get_user_selectRecordDuration() {

+ 44 - 42
pages/tabbar/workbench/workbench.vue

@@ -4,8 +4,8 @@
 		<view class="top">
 			<image :src="header"></image>
 		</view>
-		
-		
+
+
 		<!-- 工作台矿切换 -->
 		<!-- <view v-if="app_mine_code == 'ningmeijituan'">
 			<scroll-view scroll-x>
@@ -241,7 +241,7 @@
 												uni.setStorageSync(
 													'ningmei_token_time',
 													new Date().format("yyyy-MM-dd")
-													)
+												)
 												uni.navigateTo({
 													url: "../../index/ningMeiXinXiPingTai/ningMeiXinXiPingTai",
 													success: (res) => {
@@ -290,13 +290,16 @@
 			// },
 
 			get_workbench_index() {
-				uni.showLoading({
-					mask: true
-				})
+				// uni.showLoading({
+				// 	mask: true
+				// })
 				uni.request({
 					url: this.base_url + "/workbench/index",
+					header:{
+						'accesskey': "b364b449a18af327867f7edc3431b541"
+					},
 					success: (res) => {
-						uni.hideLoading()
+						// uni.hideLoading()
 						// console.log(res.data.data)
 						this.header = res.data.data.header
 						this.nav = res.data.data.nav
@@ -584,43 +587,42 @@
 
 		}
 	}
-	
-	
-		.login_box {
-			width: 500rpx;
-			padding: 30rpx 50rpx;
-			border-radius: 20rpx;
-			margin: 0 auto;
-			background-color: #FFFFFF;
-	
-			.input_box {
-				margin-bottom: 30rpx;
-	
-				.label {
-					color: #6C6F74;
-					margin-bottom: 20rpx;
-				}
-	
-				.box {
-					background: #FFFFFF;
-					border-radius: 8rpx;
-					border: 2rpx solid #E9EBF2;
-	
-					box-sizing: border-box;
-					padding: 20rpx 25rpx;
-	
-				}
+
+
+	.login_box {
+		width: 500rpx;
+		padding: 30rpx 50rpx;
+		border-radius: 20rpx;
+		margin: 0 auto;
+		background-color: #FFFFFF;
+
+		.input_box {
+			margin-bottom: 30rpx;
+
+			.label {
+				color: #6C6F74;
+				margin-bottom: 20rpx;
 			}
-	
-			.btn {
-				width: 500rpx;
-				margin: 0 auto;
+
+			.box {
+				background: #FFFFFF;
 				border-radius: 8rpx;
-				background-color: #009FE8;
-				line-height: 90rpx;
-				color: #FFFFFF;
-				text-align: center;
+				border: 2rpx solid #E9EBF2;
+
+				box-sizing: border-box;
+				padding: 20rpx 25rpx;
+
 			}
 		}
-	
+
+		.btn {
+			width: 500rpx;
+			margin: 0 auto;
+			border-radius: 8rpx;
+			background-color: #009FE8;
+			line-height: 90rpx;
+			color: #FFFFFF;
+			text-align: center;
+		}
+	}
 </style>

+ 217 - 116
pages/workbench/duty_information/duty_information.vue

@@ -6,27 +6,33 @@
 				<view class="title">我的值班</view>
 				<view class="line"></view>
 			</view>
-			<view class="header_title" :class="active===2?'active':''"  @click="click_item(2)">
-				<view class="title">值班表</view>
+			<view class="header_title" :class="active===2?'active':''" @click="click_item(2)">
+				<view class="title">单位值班表</view>
 				<view class="line"></view>
 			</view>
+			<!-- <view class="header_title" :class="active===3?'active':''" @click="click_item(3)">
+				<view class="title">全公司值班</view>
+				<view class="line"></view>
+			</view> -->
 		</view>
-		
+
 		<!-- content -->
 		<view class="content" v-if="active === 1">
 			<scroll-view scroll-x>
 				<!-- 月份 -->
 				<view class="month">
 					<view class="month_list">
-						
-						<view class="month_item"  v-for="(item,index) in month_list" :key="index"  :class="month_item_active===index?'month_item_active':''" @click="click_month_item(index,item)">
-							
+
+						<view class="month_item" v-for="(item,index) in month_list" :key="index"
+							:class="month_item_active===index?'month_item_active':''"
+							@click="click_month_item(index,item)">
+
 							<view class="text">{{item.month}}</view>
 						</view>
-						
+
 					</view>
 				</view>
-			
+
 			</scroll-view>
 			<!-- 内容 -->
 			<view class="inner" v-if="month_list.length > 0">
@@ -50,21 +56,24 @@
 					</view>
 				</view>
 			</view>
-			<view v-if="month_list.length == 0" style="text-align: center;line-height: 90rpx;font-size: 28rpx;color:#666; ">当前没有你值班的排期!</view>
+			<view v-if="month_list.length == 0"
+				style="text-align: center;line-height: 90rpx;font-size: 28rpx;color:#666; ">当前没有你值班的排期!</view>
 		</view>
-		
+
 		<!-- content -->
 		<view class="content" v-if="active === 2">
 			<scroll-view scroll-x>
 				<!-- 月份 -->
 				<view class="month">
 					<view class="month_list">
-						
-						<view class="month_item" v-for="(item,index) in month_all_list" :key="index" :class="month_all_item_active===index?'month_item_active':''" @click="click_month_all_item(index,item)">
-							
+
+						<view class="month_item" v-for="(item,index) in month_all_list" :key="index"
+							:class="month_all_item_active===index?'month_item_active':''"
+							@click="click_month_all_item(index,item)">
+
 							<view class="text">{{item}}</view>
 						</view>
-						
+
 					</view>
 				</view>
 			</scroll-view>
@@ -88,12 +97,24 @@
 							</view>
 						</view>
 					</view>
-					
+
+				</view>
+			</view>
+		</view>
+
+
+		<view class="content" v-if="active === 3">
+			<view class="section_name">
+				<view>
+					<picker mode="multiSelector" @columnchange="columnchange" @change="change_section" :value="array" :range="array" range-key="title">
+						<view class="uni-input">{{section_name}}</view>
+					</picker>
+				</view>
+				<view>
+					<uni-icons type="right"></uni-icons>
 				</view>
 			</view>
 		</view>
-	
-	
 	</view>
 </template>
 
@@ -104,186 +125,241 @@
 		data() {
 			return {
 				// 默认选中表
-				active:1,
-				
+				active: 1,
+
 				// 我的值班
 				// 当前选中的月份
-				month_item_active:0,
+				month_item_active: 0,
 				// 值班月份-个人
-				month_list:[],
+				month_list: [],
 				// 值班信息
-				list:[],
-				
-				
+				list: [],
+
+
 				// 值班表
 				// 当前选中的月份
-				month_all_item_active:0,
+				month_all_item_active: 0,
 				// 值班月份-所有人
-				month_all_list:[],
+				month_all_list: [],
 				// 值班信息
-				all_list:[]
-				
+				all_list: [],
+
+
+				// 全公司值班
+				section_name: "部门名称",
+				array: [
+					[],
+					[]
+				],
+				index: [0, 0],
+
 			};
 		},
 		onLoad() {
-			
+
 			// 获取值班月份-所有人
 			this.getMonthAll()
-			
+
 			// 获取值班月份-个人
 			this.getMonth()
-			
-			
+
+
+			// 全公司值班
+			this.get_section_get_tree_structure(285)
 		},
-		methods:{
+		methods: {
 			// 当前选中的表
-			click_item(item){
+			click_item(item) {
 				this.active = item
 			},
-			
-			
-			click_month_item(index){
+
+
+			click_month_item(index) {
 				this.month_item_active = index
 			},
-			
-			
+
+
 			// 值班月份-所有人
-			click_month_all_item(index,item){
+			click_month_all_item(index, item) {
 				// 当前点击的月份
 				this.month_all_item_active = index
 				// 获取值班列表-所有人
 				this.getAllList(item)
 			},
-			
-			
+
+
 			// 值班月份-个人
-			click_month_item(index,item){
+			click_month_item(index, item) {
 				// 当前点击的月份
 				this.month_item_active = index
 				// 获取值班列表-所有人
 				this.getList(item.month)
 			},
-			
-			
-			
+
+
+
 			// 获取值班月份-所有人
-			getMonthAll(){
+			getMonthAll() {
 				this.$api.notice_all_list_month({
-					
-				}).then((res)=>{
+
+				}).then((res) => {
 					const data = res.data.data
 					this.month_all_list = data
-					
+
 					// 获取值班列表-所有人
 					this.getAllList(this.month_all_list[0])
 				})
-				
+
 			},
 			// 获取值班信息-所有人
-			getAllList(month){
+			getAllList(month) {
 				this.$api.notice_all_list_list({
-					month:month
-				}).then((res)=>{
+					month: month
+				}).then((res) => {
 					// console.log(res.data)
 					const data = res.data.data
-					
+
 					this.all_list = data
 				})
 			},
-		
+
 			// 获取值班月份-个人
-			getMonth(){
-				
+			getMonth() {
+
 				this.$api.notice_my_list_month({
-					name:user.name
-				}).then((res)=>{
+					name: user.name
+				}).then((res) => {
 					console.log(res.data.data)
 					const data = res.data.data
 					this.month_list = data
-					
+
 					// 获取值班列表-个人
 					this.getList(this.month_list[0].month)
 					// console.log(this.month_list[0].month)
 				})
-				
+
 			},
 			// 获取值班信息-个人
-			getList(month){
+			getList(month) {
 				this.$api.notice_my_list_list({
-					month:month,
-					name:user.name
-				}).then((res)=>{
+					month: month,
+					name: user.name
+				}).then((res) => {
 					console.log(res)
 					const data = res.data.data
-					
+
 					this.list = data
 				})
-				
+
 			},
-					
-					
-		
+
+
+			// 全公司值班
+			get_section_get_tree_structure(section_id) {
+				this.$api.section_get_tree_structure({
+					section_id: section_id
+				}).then((res) => {
+					this.array[0] = res.data.content.data.children
+					this.$api.section_get_tree_structure({
+						section_id: res.data.content.data.children[0].id
+					}).then((res) => {
+						this.array[1] = res.data.content.data.children
+						this.section_name = this.array[0][0].title+ '-' +this.array[1][0].title
+					})
+
+				})
+			},
+			change_section(e) {
+				console.log('picker发送选择改变,携带值为', e.detail.value)
+				this.index = e.detail.value
+				this.section_name = this.array[0][this.index[0]].title+ '-' +this.array[1][this.index[1]].title
+			},
+			columnchange(e) {
+				let column = e.detail.column
+				let value = e.detail.value
+				if (column == 0) {
+					uni.showLoading({
+						mask: true
+					})
+					this.array[1] = []
+					this.$api.section_get_tree_structure({
+						section_id: this.array[0][value].id
+					}).then((res) => {
+						uni.hideLoading()
+						this.array[1] = res.data.content.data.children
+						this.$forceUpdate()
+					})
+				}
+			}
+
 		}
 	}
 </script>
 
 <style lang="scss">
-	page{
+	page {
 		background-color: #f0f0f0;
 	}
-	.header{
+
+	.header {
 		background-color: #fff;
 		width: 100%;
 		height: 97rpx;
 		box-sizing: border-box;
 		padding-top: 21rpx;
-		
+
 		display: flex;
-		
-		.header_title{
+
+		.header_title {
+			// width: 250rpx;
 			width: 50%;
-			.title{
+
+			.title {
 				text-align: center;
 				height: 47rpx;
-				font-size: 36rpx;
+				font-size: 32rpx;
 				font-weight: 500;
 				color: #BDC3C7;
 				line-height: 47rpx;
 
 			}
 		}
-		.active{
-			.title{
+
+		.active {
+			.title {
 				color: #009FE8;
 			}
-			.line{
-				margin-top: 21rpx;
-				
+
+			.line {
+				margin-top: 28rpx;
+
 				background-color: #009FE8;
-				height: 8rpx;
-			
+				height: 4rpx;
+
 			}
 		}
 	}
 
-	.content{
-		.month{
+	.content {
+		.month {
 			height: 100rpx;
 			box-sizing: border-box;
 			padding-left: 13rpx;
 			padding-top: 24rpx;
-			.month_list{
+
+			.month_list {
 				display: flex;
-				.month_item{
+
+				.month_item {
 					box-sizing: border-box;
 					border: 1rpx solid #009FE8;
-					background-color:  transparent;
+					background-color: transparent;
 					height: 60rpx;
 					border-radius: 10rpx;
 					text-align: center;
 					margin-right: 21rpx;
-					
-					.text{
+
+					.text {
 						width: 210rpx;
 
 						font-size: 32rpx;
@@ -293,29 +369,31 @@
 
 					}
 				}
-				.month_item_active{
+
+				.month_item_active {
 					background-color: #009FE8;
-					
-					.text{
+
+					.text {
 						color: #FFF;
 					}
 				}
-				
+
 			}
 		}
-		.inner{
-			.inner_title{
+
+		.inner {
+			.inner_title {
 				width: 750rpx;
 				height: 94rpx;
 				background: #FFFFFF;
-				
+
 				box-sizing: border-box;
 				padding: 0 21rpx;
-				
+
 				border-bottom: 4rpx solid #009FE8;
 				display: flex;
-				
-				.time{
+
+				.time {
 					width: 194rpx;
 					font-size: 32rpx;
 					font-weight: 500;
@@ -323,7 +401,8 @@
 					line-height: 94rpx;
 					text-align: center;
 				}
-				.name{
+
+				.name {
 					margin-left: 45rpx;
 					width: 469rpx;
 					font-size: 32rpx;
@@ -331,23 +410,25 @@
 					color: #009FE8;
 					line-height: 94rpx;
 					text-align: center;
-					
+
 				}
 			}
-			.inner_box{
-				
-				.inner_item{
+
+			.inner_box {
+
+				.inner_item {
 					margin-bottom: 2rpx;
 					background-color: #fff;
 					box-sizing: border-box;
 					padding: 21rpx;
-					
+
 					display: flex;
 					align-items: center;
-					
-					.item_left{
+
+					.item_left {
 						width: 194rpx;
-						.month_day{
+
+						.month_day {
 							text-align: center;
 							height: 39rpx;
 							font-size: 30rpx;
@@ -356,7 +437,8 @@
 							line-height: 39rpx;
 
 						}
-						.week{
+
+						.week {
 							text-align: center;
 							height: 30rpx;
 							font-size: 27rpx;
@@ -366,11 +448,14 @@
 
 						}
 					}
-					.item_right{
+
+					.item_right {
 						width: 469rpx;
-						.inner_info{
+
+						.inner_info {
 							margin-left: 45rpx;
-							text{
+
+							text {
 								font-size: 30rpx;
 								font-weight: 500;
 								color: #232627;
@@ -382,6 +467,22 @@
 				}
 			}
 		}
-	}
 
+		.section_name {
+			width: 750rpx;
+			box-sizing: border-box;
+			padding: 25rpx;
+			background-color: #FFFFFF;
+			font-size: 30rpx;
+			color: #545454;
+
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.uni-input {
+				width: 600rpx;
+			}
+		}
+	}
 </style>

TEMPAT SAMPAH
static/anning.png


+ 69 - 0
uni_modules/qiun-data-charts/changelog.md

@@ -1,3 +1,72 @@
+## 2.4.3-20220505(2022-05-05)
+- 秋云图表组件 修复开启canvas2d后将series赋值为空数组显示加载图标时,再次赋值后画布闪动的bug
+- 秋云图表组件 修复升级hbx最新版后ECharts的highlight方法报错的bug
+- uCharts.js 雷达图新增参数opts.extra.radar.gridEval,数据点位网格抽希,默认1
+- uCharts.js 雷达图新增参数opts.extra.radar.axisLabel,	是否显示刻度点值,默认false
+- uCharts.js 雷达图新增参数opts.extra.radar.axisLabelTofix,刻度点值小数位数,默认0
+- uCharts.js 雷达图新增参数opts.extra.radar.labelPointShow,是否显示末端刻度圆点,默认false
+- uCharts.js 雷达图新增参数opts.extra.radar.labelPointRadius,刻度圆点的半径,默认3
+- uCharts.js 雷达图新增参数opts.extra.radar.labelPointColor,刻度圆点的颜色,默认#cccccc
+- uCharts.js 雷达图新增参数opts.extra.radar.linearType,渐变色类型,可选值"none"关闭渐变,"custom"开启渐变
+- uCharts.js 雷达图新增参数opts.extra.radar.customColor,自定义渐变颜色,数组类型对应series的数组长度以匹配不同series颜色的不同配色方案,例如["#FA7D8D", "#EB88E2"]
+- uCharts.js 雷达图优化支持series.textColor、series.textSize属性
+- uCharts.js 柱状图中温度计式图标,优化支持全圆角类型,修复边框有缝隙的bug,详见官网【演示】中的温度计图表
+- uCharts.js 柱状图新增参数opts.extra.column.activeWidth,当前点击柱状图的背景宽度,默认一个单元格单位
+- uCharts.js 混合图增加opts.extra.mix.area.gradient 区域图是否开启渐变色
+- uCharts.js 混合图增加opts.extra.mix.area.opacity 区域图透明度,默认0.2
+- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelText,自定义标签文字,避免formatter格式化的繁琐,详见官网【演示】中的饼图
+- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelShow,自定义是否显示某一个指示标签,避免因饼图类别太多导致标签重复或者居多导致图形变形的问题,详见官网【演示】中的饼图
+- uCharts.js 增加opts.series[i].legendText/opts.series[0].data[i].legendText(与series.name同级)自定义图例显示文字的方法
+- uCharts.js 优化X轴、Y轴formatter格式化方法增加形参,统一为fromatter:function(value,index,opts){}
+- uCharts.js 修复横屏模式下无法使用双指缩放方法的bug
+- uCharts.js 修复当只有一条数据或者多条数据值相等的时候Y轴自动计算的最大值错误的bug
+- 【官网模板】增加外部自定义图例与图表交互的例子,[点击跳转](https://www.ucharts.cn/v2/#/layout/info?id=2)
+
+## 注意:非unimodules 版本如因更新 hbx 至 3.4.7 导致报错如下,请到码云更新非 unimodules 版本组件,[点击跳转](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6)
+> Error in callback for immediate watcher "uchartsOpts": "SyntaxError: Unexpected token u in JSON at position 0"
+## 2.4.2-20220421(2022-04-21)
+- 秋云图表组件 修复HBX升级3.4.6.20220420版本后echarts报错的问题
+## 2.4.2-20220420(2022-04-20)
+## 重要!此版本uCharts新增了很多功能,修复了诸多已知问题
+- 秋云图表组件 新增onzoom开启双指缩放功能(仅uCharts),前提需要直角坐标系类图表类型,并且ontouch为true、opts.enableScroll为true,详见实例项目K线图
+- 秋云图表组件 新增optsWatch是否监听opts变化,关闭optsWatch后,动态修改opts不会触发图表重绘
+- 秋云图表组件 修复开启canvas2d功能后,动态更新数据后画布闪动的bug
+- 秋云图表组件 去除directory属性,改为自动获取echarts.min.js路径(升级不受影响)
+- 秋云图表组件 增加getImage()方法及@getImage事件,通过ref调用getImage()方法获,触发@getImage事件获取当前画布的base64图片文件流。
+- 秋云图表组件 支付宝、字节跳动、飞书、快手小程序支持开启canvas2d同层渲染设置。
+- 秋云图表组件 新增加【非uniCloud】版本组件,避免有些不需要uniCloud的使用组件发布至小程序需要提交隐私声明问题,请到码云[【非uniCloud版本】](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6),或npm[【非uniCloud版本】](https://www.npmjs.com/package/@qiun/uni-ucharts)下载使用。
+- uCharts.js 新增dobuleZoom双指缩放功能
+- uCharts.js 新增山峰图type="mount",数据格式为饼图类格式,不需要传入categories,具体详见新版官网在线演示
+- uCharts.js 修复折线图当数据中存在null时tooltip报错的bug
+- uCharts.js 修复饼图类当画布比较小时自动计算的半径是负数报错的bug
+- uCharts.js 统一各图表类型的series.formatter格式化方法的形参为(val, index, series, opts),方便格式化时有更多参数可用
+- uCharts.js 标记线功能增加labelText自定义显示文字,增加labelAlign标签显示位置(左侧或右侧),增加标签显示位置微调labelOffsetX、labelOffsetY
+- uCharts.js 修复条状图当数值很小时开启圆角后样式错误的bug
+- uCharts.js 修复X轴开启disabled后,X轴仍占用空间的bug
+- uCharts.js 修复X轴开启滚动条并且开启rotateLabel后,X轴文字与滚动条重叠的bug
+- uCharts.js 增加X轴rotateAngle文字旋转自定义角度,取值范围(-90至90)
+- uCharts.js 修复地图文字标签层级显示不正确的bug
+- uCharts.js 修复饼图、圆环图、玫瑰图当数据全部为0的时候不显示数据标签的bug
+- uCharts.js 修复当opts.padding上边距为0时,Y轴顶部刻度标签位置不正确的bug
+
+## 另外我们还开发了各大原生小程序组件,已发布至码云和npm
+[https://gitee.com/uCharts/uCharts](https://gitee.com/uCharts/uCharts)
+[https://www.npmjs.com/~qiun](https://www.npmjs.com/~qiun)
+
+## 对于原生uCharts文档我们已上线新版官方网站,详情点击下面链接进入官网
+[https://www.uCharts.cn/v2/](https://www.ucharts.cn/v2/)
+## 2.3.7-20220122(2022-01-22)
+## 重要!使用vue3编译,请使用cli模式并升级至最新依赖,HbuilderX编译需要使用3.3.8以上版本
+- uCharts.js 修复uni-app平台组件模式使用vue3编译到小程序报错的bug。
+## 2.3.7-20220118(2022-01-18)
+## 注意,使用vue3的前提是需要3.3.8.20220114-alpha版本的HBuilder!
+## 2.3.67-20220118(2022-01-18)
+- 秋云图表组件 组件初步支持vue3,全端编译会有些问题,具体详见下面修改:
+1. 小程序端运行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new uni_modules_qiunDataCharts_js_sdk_uCharts_uCharts.uCharts,将.uCharts去掉。
+2. 小程序端发行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new e.uCharts,将.uCharts去掉,变为 new e。
+3. 如果觉得上述步骤比较麻烦,如果您的项目只编译到小程序端,可以修改u-charts.js最后一行导出方式,将 export default uCharts;变更为 export default { uCharts: uCharts }; 这样变更后,H5和App端的renderjs会有问题,请开发者自行选择。(此问题非组件问题,请等待DC官方修复Vue3的小程序端)
+## 2.3.6-20220111(2022-01-11)
+- 秋云图表组件 修改组件 props 属性中的 background 默认值为 rgba(0,0,0,0)
 ## 2.3.6-20211201(2021-12-01)
 - uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug
 ## 2.3.5-20211014(2021-10-15)

+ 121 - 55
uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue

@@ -1,5 +1,5 @@
 <!-- 
- * qiun-data-charts 秋云高性能跨全端图表组件 v2.3.6-20211201
+ * qiun-data-charts 秋云高性能跨全端图表组件
  * Copyright (c) 2021 QIUN® 秋云 https://www.ucharts.cn All rights reserved.
  * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  * 复制使用请保留本段注释,感谢支持开源!
@@ -97,7 +97,7 @@
     </block>
     <!-- #endif -->
     <!-- 其他小程序通过vue渲染图表 -->
-    <!-- #ifdef MP-360 || MP-BAIDU || MP-QQ || MP-TOUTIAO || MP-WEIXIN -->
+    <!-- #ifdef MP-360 || MP-BAIDU || MP-QQ || MP-TOUTIAO || MP-WEIXIN || MP-KUAISHOU || MP-LARK || MP-JD -->
     <block v-if="type2d">
       <view v-if="ontouch" @tap="_tap">
         <canvas
@@ -156,7 +156,7 @@
 </template>
 
 <script>
-import uChartsMp from '../../js_sdk/u-charts/u-charts.js';
+import uCharts from '../../js_sdk/u-charts/u-charts.js';
 import cfu from '../../js_sdk/u-charts/config-ucharts.js';
 // #ifdef APP-VUE || H5
 import cfe from '../../js_sdk/u-charts/config-echarts.js';
@@ -175,7 +175,7 @@ function deepCloneAssign(origin = {}, ...args) {
 
 function formatterAssign(args,formatter) {
   for (let key in args) {
-    if(args[key] !== null && typeof args[key] === 'object'){
+    if(args.hasOwnProperty(key) && args[key] !== null && typeof args[key] === 'object'){
       formatterAssign(args[key],formatter)
     }else if(key === 'format' && typeof args[key] === 'string'){
       args['formatter'] = formatter[args[key]] ? formatter[args[key]] : undefined;
@@ -247,7 +247,7 @@ export default {
     },
     background: {
       type: String,
-      default: 'none'
+      default: 'rgba(0,0,0,0)'
     },
     animation: {
       type: Boolean,
@@ -306,6 +306,14 @@ export default {
       type: Boolean,
       default: false
     },
+    optsWatch: {
+      type: Boolean,
+      default: true
+    },
+    onzoom: {
+      type: Boolean,
+      default: false
+    },
     ontap: {
       type: Boolean,
       default: true
@@ -373,6 +381,12 @@ export default {
     tapLegend: {
       type: Boolean,
       default: true
+    },
+    menus: {
+      type: Array,
+      default () {
+        return []
+      }
     }
   },
   data() {
@@ -420,16 +434,17 @@ export default {
     if (this.canvas2d === false || systemInfo.platform === 'windows' || systemInfo.platform === 'mac') {
       this.type2d = false;
     }else{
+      this.type2d = true;
       this.pixel = systemInfo.pixelRatio;
-      if (this.canvasId === 'uchartsid' || this.canvasId == '') {
-        console.log('[uCharts]:开启canvas2d模式,必须指定canvasId,否则会出现偶尔获取不到dom节点的问题!');
-      }
     }
     // #endif
     //非微信小程序端强制关闭canvas2d模式
     // #ifndef MP-WEIXIN
     this.type2d = false;
     // #endif
+    // #ifdef  MP-TOUTIAO || MP-LARK || MP-ALIPAY
+    this.type2d = this.canvas2d;
+    // #endif
     // #ifdef MP-ALIPAY
     this.inAli = true;
     this.pixel = systemInfo.pixelRatio;
@@ -505,11 +520,11 @@ export default {
       handler(val, oldval) {
         if (typeof val === 'object') {
           if (JSON.stringify(val) !== JSON.stringify(oldval)) {
+            this._clearChart();
             if (val.series && val.series.length > 0) {
               this.beforeInit();
             }else{
               this.mixinDatacomLoading = true;
-              this._clearChart();
               this.showchart = false;
               this.mixinDatacomErrorMessage = null;
             }
@@ -543,7 +558,7 @@ export default {
     optsProps: {
       handler(val, oldval) {
         if (typeof val === 'object') {
-          if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === false) {
+          if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === false && this.optsWatch == true) {
             this.checkData(this.drawData);
           }
         } else {
@@ -848,10 +863,12 @@ export default {
     },
     _clearChart() {
       let cid = this.cid
-      if (this.echrts !== true) {
-        const ctx = uni.createCanvasContext(cid, this);
-        ctx.clearRect(0, 0, this.cWidth, this.cHeight);
-        ctx.draw();
+      if (this.echrts !== true && cfu.option[cid] && cfu.option[cid].context) {
+        const ctx = cfu.option[cid].context;
+        if(typeof ctx === "object" && !cfu.option[cid].update){
+          ctx.clearRect(0, 0, this.cWidth, this.cHeight);
+          ctx.draw();
+        }
       }
     },
     init() {
@@ -870,12 +887,13 @@ export default {
             this.cWidth = data.width;
             this.cHeight = data.height;
             if(this.echarts !== true){
-              cfu.option[cid].background = this.background == 'none' ? '#FFFFFF' : this.background;
+              cfu.option[cid].background = this.background == 'rgba(0,0,0,0)' ? '#FFFFFF' : this.background;
               cfu.option[cid].canvas2d = this.type2d;
               cfu.option[cid].pixelRatio = this.pixel;
               cfu.option[cid].animation = this.animation;
               cfu.option[cid].width = data.width * this.pixel;
               cfu.option[cid].height = data.height * this.pixel;
+              cfu.option[cid].onzoom = this.onzoom;
               cfu.option[cid].ontap = this.ontap;
               cfu.option[cid].ontouch = this.ontouch;
               cfu.option[cid].onmouse = this.openmouse;
@@ -918,14 +936,14 @@ export default {
                         const canvas = res[0].node;
                         const ctx = canvas.getContext('2d');
                         cfu.option[cid].context = ctx;
-                        canvas.width = data.width * this.pixel;
-                        canvas.height = data.height * this.pixel;
-                        canvas._width = data.width * this.pixel;
-                        canvas._height = data.height * this.pixel;
                         cfu.option[cid].rotateLock = cfu.option[cid].rotate;
                         if(cfu.instance[cid] && cfu.option[cid] && cfu.option[cid].update === true){
                           this._updataUChart(cid)
                         }else{
+                          canvas.width = data.width * this.pixel;
+                          canvas.height = data.height * this.pixel;
+                          canvas._width = data.width * this.pixel;
+                          canvas._height = data.height * this.pixel;
                           setTimeout(()=>{
                             cfu.option[cid].context.restore();
                             cfu.option[cid].context.save();
@@ -977,25 +995,46 @@ export default {
     	    //#endif
     	    //#ifndef H5
     	      uni.saveImageToPhotosAlbum({
-    	          filePath: res.tempFilePath,
-    	          success: function () {
-    	              uni.showToast({
-    	                  title: '保存成功',
-    	                  duration: 2000
-    	              });
-    	          }
+              filePath: res.tempFilePath,
+              success: function () {
+                uni.showToast({
+                  title: '保存成功',
+                  duration: 2000
+                });
+              }
     	      });
     	    //#endif
     	  } 
     	},this);
     },
+    getImage(){
+      if(this.type2d == false){
+        uni.canvasToTempFilePath({
+          canvasId: this.cid,
+          success: res=>{
+            this.emitMsg({name: 'getImage', params: {type:"getImage", base64: res.tempFilePath}});
+          }
+        },this);
+      }else{
+        const query = uni.createSelectorQuery().in(this)
+        query
+          .select('#' + this.cid)
+          .fields({ node: true, size: true })
+          .exec(res => {
+            if (res[0]) {
+              const canvas = res[0].node;
+              this.emitMsg({name: 'getImage', params: {type:"getImage", base64: canvas.toDataURL('image/png')}});
+            }
+          });
+      }
+    },
     // #ifndef APP-VUE || H5
     _newChart(cid) {
       if (this.mixinDatacomLoading == true) {
         return;
       }
       this.showchart = true;
-      cfu.instance[cid] = new uChartsMp(cfu.option[cid]);
+      cfu.instance[cid] = new uCharts(cfu.option[cid]);
       cfu.instance[cid].addEventListener('renderComplete', () => {
         this.emitMsg({name: 'complete', params: {type:"complete", complete: true, id: cid}});
         cfu.instance[cid].delEventListener('renderComplete')
@@ -1118,7 +1157,7 @@ export default {
     _touchStart(e) {
       let cid = this.cid
       lastMoveTime=Date.now();
-      if(cfu.option[cid].enableScroll === true){
+      if(cfu.option[cid].enableScroll === true && e.touches.length == 1){
         cfu.instance[cid].scrollStart(e);
       }
       this.emitMsg({name:'getTouchStart', params:{type:"touchStart", event:e.changedTouches[0], id:cid}});
@@ -1127,19 +1166,23 @@ export default {
       let cid = this.cid
       let currMoveTime = Date.now();
       let duration = currMoveTime - lastMoveTime;
-      if (duration < Math.floor(1000 / 60)) return;//每秒60帧
+      let touchMoveLimit = cfu.option[cid].touchMoveLimit || 24;
+      if (duration < Math.floor(1000 / touchMoveLimit)) return;//每秒60帧
       lastMoveTime = currMoveTime;
-      if(cfu.option[cid].enableScroll === true){
+      if(cfu.option[cid].enableScroll === true && e.changedTouches.length == 1){
         cfu.instance[cid].scroll(e);
       }
-      this.emitMsg({name: 'getTouchMove', params: {type:"touchMove", event:e.changedTouches[0], id: cid}});
       if(this.ontap === true && cfu.option[cid].enableScroll === false && this.onmovetip === true){
         this._tap(e,true)
       }
+      if(this.ontouch === true && cfu.option[cid].enableScroll === true && this.onzoom === true && e.changedTouches.length == 2){
+        cfu.instance[cid].dobuleZoom(e);
+      }
+      this.emitMsg({name: 'getTouchMove', params: {type:"touchMove", event:e.changedTouches[0], id: cid}});
     },
     _touchEnd(e) {
       let cid = this.cid
-      if(cfu.option[cid].enableScroll === true){
+      if(cfu.option[cid].enableScroll === true && e.touches.length == 0){
         cfu.instance[cid].scrollEnd(e);
       }
       this.emitMsg({name:'getTouchEnd', params:{type:"touchEnd", event:e.changedTouches[0], id:cid}});
@@ -1189,7 +1232,7 @@ function rddeepCloneAssign(origin = {}, ...args) {
 
 function rdformatterAssign(args,formatter) {
   for (let key in args) {
-    if(args[key] !== null && typeof args[key] === 'object'){
+    if(args.hasOwnProperty(key) && args[key] !== null && typeof args[key] === 'object'){
       rdformatterAssign(args[key],formatter)
     }else if(key === 'format' && typeof args[key] === 'string'){
       args['formatter'] = formatter[args[key]] ? formatter[args[key]] : undefined;
@@ -1215,7 +1258,7 @@ export default {
     // #endif
     setTimeout(()=>{
       if(this.rid === null){
-        this.$ownerInstance.callMethod('getRenderType')
+        this.$ownerInstance && this.$ownerInstance.callMethod('getRenderType')
       }
     },200)
   },
@@ -1230,7 +1273,7 @@ export default {
     ecinit(newVal, oldVal, owner, instance){
       let cid = JSON.stringify(newVal.id)
       this.rid = cid
-      that[cid] = this.$ownerInstance
+      that[cid] = this.$ownerInstance || instance
       let eopts = JSON.parse(JSON.stringify(newVal))
       let type = eopts.type;
       //载入并覆盖默认配置
@@ -1240,19 +1283,22 @@ export default {
         cfe.option[cid] = rddeepCloneAssign({}, eopts);
       }
       let newData = eopts.chartData;
-      //挂载categories和series
-      if(cfe.option[cid].xAxis && cfe.option[cid].xAxis.type && cfe.option[cid].xAxis.type === 'category'){
-        cfe.option[cid].xAxis.data = newData.categories
-      }
-      if(cfe.option[cid].yAxis && cfe.option[cid].yAxis.type && cfe.option[cid].yAxis.type === 'category'){
-        cfe.option[cid].yAxis.data = newData.categories
-      }
-      cfe.option[cid].series = []
-      for (var i = 0; i < newData.series.length; i++) {
-        cfe.option[cid].seriesTemplate = cfe.option[cid].seriesTemplate ? cfe.option[cid].seriesTemplate : {}
-        let Template = rddeepCloneAssign({},cfe.option[cid].seriesTemplate,newData.series[i])
-        cfe.option[cid].series.push(Template)
+      if(newData){
+        //挂载categories和series
+        if(cfe.option[cid].xAxis && cfe.option[cid].xAxis.type && cfe.option[cid].xAxis.type === 'category'){
+          cfe.option[cid].xAxis.data = newData.categories
+        }
+        if(cfe.option[cid].yAxis && cfe.option[cid].yAxis.type && cfe.option[cid].yAxis.type === 'category'){
+          cfe.option[cid].yAxis.data = newData.categories
+        }
+        cfe.option[cid].series = []
+        for (var i = 0; i < newData.series.length; i++) {
+          cfe.option[cid].seriesTemplate = cfe.option[cid].seriesTemplate ? cfe.option[cid].seriesTemplate : {}
+          let Template = rddeepCloneAssign({},cfe.option[cid].seriesTemplate,newData.series[i])
+          cfe.option[cid].series.push(Template)
+        }
       }
+      
       if (typeof window.echarts === 'object') {
           this.newEChart()
       }else{
@@ -1261,9 +1307,9 @@ export default {
         script.src = './uni_modules/qiun-data-charts/static/app-plus/echarts.min.js'
         // #endif
         // #ifdef H5
-        const rooturl = window.location.origin 
-        const directory = instance.getDataset().directory
-        script.src = rooturl + directory + 'uni_modules/qiun-data-charts/static/h5/echarts.min.js'
+        const { origin, pathname } = window.location
+        const rooturl = origin + pathname
+        script.src = rooturl + 'uni_modules/qiun-data-charts/static/h5/echarts.min.js'
         // #endif
         script.onload = this.newEChart
         document.head.appendChild(script)
@@ -1286,6 +1332,10 @@ export default {
             }))
             that[cid].callMethod('emitMsg',{name:"getIndex", params:{type:"getIndex", event:event, currentIndex:resdata.dataIndex, value:resdata.data, seriesName: resdata.seriesName,id:cid}})
           })
+          // 增加ECharts的highlight消息,实现按下移动返回索引功能。add by onefish 创建于 2021-12-11 09:50
+          cfe.instance[cid].on('highlight', resdata => {
+            that[cid].callMethod('emitMsg',{name:"getHighlight", params:{type:"highlight", res:resdata, id:cid}})
+          })
         }
         this.updataEChart(cid,cfe.option[cid])
       }else{
@@ -1344,9 +1394,12 @@ export default {
       if(JSON.stringify(newVal) == JSON.stringify(oldVal)){
         return;
       }
+      if(!newVal.canvasId){
+        return;
+      }
       let cid = JSON.parse(JSON.stringify(newVal.canvasId))
       this.rid = cid
-      that[cid] = this.$ownerInstance
+      that[cid] = this.$ownerInstance || instance
       cfu.option[cid] = JSON.parse(JSON.stringify(newVal))
       cfu.option[cid] = rdformatterAssign(cfu.option[cid],cfu.formatter)
       let canvasdom = document.getElementById(cid)
@@ -1442,6 +1495,7 @@ export default {
       }else{//mouse的事件
         tmpe = { x: e.clientX - rchartdom.left, y:e.clientY - rchartdom.top + rootdom.top}
       }
+      e.changedTouches = [];
       e.changedTouches.unshift(tmpe)
       currentIndex=cfu.instance[cid].getCurrentDataIndex(e)
       legendIndex=cfu.instance[cid].getLegendDataIndex(e)
@@ -1457,15 +1511,18 @@ export default {
       let cid = this.rid
       let ontouch = cfu.option[cid].ontouch
       if(ontouch == false) return;
-      cfu.instance[cid].scrollStart(e)
+      if(cfu.option[cid].enableScroll === true && e.touches.length == 1){
+        cfu.instance[cid].scrollStart(e);
+      }
       that[cid].callMethod('emitMsg',{name:"getTouchStart",params:{type:"touchStart",event:e.changedTouches[0],id:cid}})
     },
     touchMove(e) {
       let cid = this.rid
       let ontouch = cfu.option[cid].ontouch
       if(ontouch == false) return;
-      cfu.instance[cid].scroll(e)
-      that[cid].callMethod('emitMsg',{name:"getTouchMove",params:{type:"touchMove",event:e.changedTouches[0],id:cid}})
+      if(cfu.option[cid].enableScroll === true && e.changedTouches.length == 1){
+        cfu.instance[cid].scroll(e);
+      }
       if(cfu.option[cid].ontap === true && cfu.option[cid].enableScroll === false && cfu.option[cid].onmovetip === true){
         let rchartdom = document.getElementById('UC'+cid).getBoundingClientRect()
         let tmpe = { x: e.changedTouches[0].clientX - rchartdom.left, y:e.changedTouches[0].clientY - rchartdom.top + rootdom.top}
@@ -1474,12 +1531,18 @@ export default {
           this.showTooltip(e,cid)
         }
       }
+      if(ontouch === true && cfu.option[cid].enableScroll === true && cfu.option[cid].onzoom === true && e.changedTouches.length == 2){
+        cfu.instance[cid].dobuleZoom(e);
+      }
+      that[cid].callMethod('emitMsg',{name:"getTouchMove",params:{type:"touchMove",event:e.changedTouches[0],id:cid}})
     },
     touchEnd(e) {
       let cid = this.rid
       let ontouch = cfu.option[cid].ontouch
       if(ontouch == false) return;
-      cfu.instance[cid].scrollEnd(e)
+      if(cfu.option[cid].enableScroll === true && e.touches.length == 0){
+        cfu.instance[cid].scrollEnd(e);
+      }
       that[cid].callMethod('emitMsg',{name:"getTouchEnd",params:{type:"touchEnd",event:e.changedTouches[0],id:cid}})
     },
     mouseDown(e) {
@@ -1489,6 +1552,7 @@ export default {
       let rchartdom = document.getElementById('UC'+cid).getBoundingClientRect()
       let tmpe = {}
       tmpe = { x: e.clientX - rchartdom.left, y:e.clientY - rchartdom.top + rootdom.top}
+      e.changedTouches = [];
       e.changedTouches.unshift(tmpe)
       cfu.instance[cid].scrollStart(e)
       cfu.option[cid].mousedown=true;
@@ -1502,6 +1566,7 @@ export default {
       let rchartdom = document.getElementById('UC'+cid).getBoundingClientRect()
       let tmpe = {}
       tmpe = { x: e.clientX - rchartdom.left, y:e.clientY - rchartdom.top + rootdom.top}
+      e.changedTouches = [];
       e.changedTouches.unshift(tmpe)
       if(cfu.option[cid].mousedown){
         cfu.instance[cid].scroll(e)
@@ -1519,6 +1584,7 @@ export default {
       let rchartdom = document.getElementById('UC'+cid).getBoundingClientRect()
       let tmpe = {}
       tmpe = { x: e.clientX - rchartdom.left, y:e.clientY - rchartdom.top + rootdom.top}
+      e.changedTouches = [];
       e.changedTouches.unshift(tmpe)
       cfu.instance[cid].scrollEnd(e)
       cfu.option[cid].mousedown=false;

+ 1 - 1
uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js

@@ -324,7 +324,7 @@ const cfe = {
 			"data": [],
 			"radius": "55%",
 			"center": ['50%', '50%'],
-			"rosetype": 'area',
+			"roseType": 'area',
 		},
 	},
 	"funnel": {

+ 298 - 276
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@@ -20,94 +20,114 @@
 const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
 
 //事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
-const formatDateTime = (timeStamp, returnType)=>{
-  var date = new Date();
-  date.setTime(timeStamp * 1000);
-  var y = date.getFullYear();
-  var m = date.getMonth() + 1;
-  m = m < 10 ? ('0' + m) : m;
-  var d = date.getDate();
-  d = d < 10 ? ('0' + d) : d;
-  var h = date.getHours();
-  h = h < 10 ? ('0' + h) : h;
-  var minute = date.getMinutes();
-  var second = date.getSeconds();
-  minute = minute < 10 ? ('0' + minute) : minute;
-  second = second < 10 ? ('0' + second) : second;
-  if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;}
-  if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;}
-  if(returnType == 'h:m'){return  h +':' + minute;}
-  if(returnType == 'h:m:s'){return  h +':' + minute +':' + second;}
-  return [y, m, d, h, minute, second];
+const formatDateTime = (timeStamp, returnType) => {
+	var date = new Date();
+	date.setTime(timeStamp * 1000);
+	var y = date.getFullYear();
+	var m = date.getMonth() + 1;
+	m = m < 10 ? ('0' + m) : m;
+	var d = date.getDate();
+	d = d < 10 ? ('0' + d) : d;
+	var h = date.getHours();
+	h = h < 10 ? ('0' + h) : h;
+	var minute = date.getMinutes();
+	var second = date.getSeconds();
+	minute = minute < 10 ? ('0' + minute) : minute;
+	second = second < 10 ? ('0' + second) : second;
+	if (returnType == 'full') {
+		return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
+	}
+	if (returnType == 'y-m-d') {
+		return y + '-' + m + '-' + d;
+	}
+	if (returnType == 'h:m') {
+		return h + ':' + minute;
+	}
+	if (returnType == 'h:m:s') {
+		return h + ':' + minute + ':' + second;
+	}
+	return [y, m, d, h, minute, second];
 }
 
 const cfu = {
-  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
-	"type":["pie","ring","rose","word","funnel","map","arcbar","line","column","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"],
-	"range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"],
-  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
-  //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
-	"categories":["line","column","bar","area","radar","gauge","candle","mix","demotype"],
-  //instance为实例变量承载属性,不要删除
-  "instance":{},
-  //option为opts及eopts承载属性,不要删除
-  "option":{},
-  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
-  "formatter":{
-    "yAxisDemo1":function(val){return val+'元'},
-    "yAxisDemo2":function(val){return val.toFixed(2)},
-    "xAxisDemo1":function(val){return val+'年'},
-    "xAxisDemo2":function(val){return formatDateTime(val,'h:m')},
-    "seriesDemo1":function(val){return val+'元'},
-    "tooltipDemo1":function(item, category, index, opts){
-      if(index==0){
-      	return '随便用'+item.data+'年'
-      }else{
-      	return '其他我没改'+item.data+'天'
-      }
-    },
-    "pieDemo":function(val, index, series){
-      if(index !== undefined){
-        return series[index].name+':'+series[index].data+'元'
-      }
-    },
-	// column_1
-	"column_1": function(item, category, index, opts) {
-		return item.name
+	//demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
+	"type": ["pie", "ring", "rose", "word", "funnel", "map", "arcbar", "line", "column", "mount", "bar", "area",
+		"radar", "gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype"
+	],
+	"range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "山峰图", "条状图", "区域图", "雷达图", "仪表盘",
+		"K线图", "混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型"
+	],
+	//增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
+	//自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
+	"categories": ["line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "demotype"],
+	//instance为实例变量承载属性,不要删除
+	"instance": {},
+	//option为opts及eopts承载属性,不要删除
+	"option": {},
+	//下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
+	"formatter": {
+		"yAxisDemo1": function(val, index, opts) {
+			return val + '元'
+		},
+		"yAxisDemo2": function(val, index, opts) {
+			return val.toFixed(2)
+		},
+		"xAxisDemo1": function(val, index, opts) {
+			return val + '年';
+		},
+		"xAxisDemo2": function(val, index, opts) {
+			return formatDateTime(val, 'h:m')
+		},
+		"seriesDemo1": function(val, index, series, opts) {
+			return val + '元'
+		},
+		"tooltipDemo1": function(item, category, index, opts) {
+			if (index == 0) {
+				return '随便用' + item.data + '年'
+			} else {
+				return '其他我没改' + item.data + '天'
+			}
+		},
+		"pieDemo": function(val, index, series, opts) {
+			if (index !== undefined) {
+				return series[index].name + ':' + series[index].data + '元'
+			}
+		},
+		// column_1
+		"column_1": function(item, category, index, opts) {
+			return item.name
+		},
+		// 显示 百分比
+		"column_bfb": function(item, category, index, opts) {
+			return item.name + ':' + item.data + '%'
+		},
 	},
-	// 显示 百分比
-	"column_bfb": function(item, category, index, opts) {
-		return item.name + ':' + item.data + '%'
+	//这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
+	"demotype": {
+		//我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
+		"type": "line",
+		"color": color,
+		"padding": [15, 10, 0, 15],
+		"xAxis": {
+			"disableGrid": true,
+		},
+		"yAxis": {
+			"gridType": "dash",
+			"dashLength": 2,
+		},
+		"legend": {},
+		"extra": {
+			"line": {
+				"type": "curve",
+				"width": 2
+			},
+		}
 	},
-	
-  },
-  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
-  "demotype":{
-    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
-    "type": "line",
-    "color": color,
-    "padding": [15,10,0,15],
-    "xAxis": {
-      "disableGrid": true,
-    },
-    "yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-    },
-    "legend": {
-    },
-    "extra": {
-    	"line": {
-    		"type": "curve",
-    		"width": 2
-    	},
-    }
-  },
-  //下面是自定义配置,请添加项目所需的通用配置
-	"pie":{
+	//下面是自定义配置,请添加项目所需的通用配置
+	"pie": {
 		"type": "pie",
-    "color": color,
-		"padding": [5,5,5,5],
+		"color": color,
+		"padding": [5, 5, 5, 5],
 		"extra": {
 			"pie": {
 				"activeOpacity": 0.5,
@@ -120,16 +140,16 @@ const cfu = {
 			},
 		}
 	},
-	"ring":{
+	"ring": {
 		"type": "ring",
-    "color": color,
-		"padding": [5,5,5,5],
+		"color": color,
+		"padding": [5, 5, 5, 5],
 		"rotate": false,
 		"dataLabel": true,
 		"legend": {
 			"show": true,
 			"position": "right",
-      "lineHeight": 25,
+			"lineHeight": 25,
 		},
 		"title": {
 			"name": "收益率",
@@ -143,7 +163,7 @@ const cfu = {
 		},
 		"extra": {
 			"ring": {
-				"ringWidth":30,
+				"ringWidth": 30,
 				"activeOpacity": 0.5,
 				"activeRadius": 10,
 				"offsetAngle": 0,
@@ -154,14 +174,14 @@ const cfu = {
 			},
 		},
 	},
-	"rose":{
+	"rose": {
 		"type": "rose",
-    "color": color,
-		"padding": [5,5,5,5],
+		"color": color,
+		"padding": [5, 5, 5, 5],
 		"legend": {
 			"show": true,
 			"position": "left",
-      "lineHeight": 25,
+			"lineHeight": 25,
 		},
 		"extra": {
 			"rose": {
@@ -177,9 +197,9 @@ const cfu = {
 			},
 		}
 	},
-	"word":{
+	"word": {
 		"type": "word",
-    "color": color,
+		"color": color,
 		"extra": {
 			"word": {
 				"type": "normal",
@@ -187,10 +207,10 @@ const cfu = {
 			}
 		}
 	},
-	"funnel":{
+	"funnel": {
 		"type": "funnel",
-    "color": color,
-		"padding": [15,15,0,15],
+		"color": color,
+		"padding": [15, 15, 0, 15],
 		"extra": {
 			"funnel": {
 				"activeOpacity": 0.3,
@@ -203,11 +223,11 @@ const cfu = {
 			},
 		}
 	},
-	"map":{
+	"map": {
 		"type": "map",
-    "color": color,
-		"padding": [0,0,0,0],
-    "dataLabel": true,
+		"color": color,
+		"padding": [0, 0, 0, 0],
+		"dataLabel": true,
 		"extra": {
 			"map": {
 				"border": true,
@@ -220,9 +240,9 @@ const cfu = {
 			},
 		}
 	},
-	"arcbar":{
+	"arcbar": {
 		"type": "arcbar",
-    "color": color,
+		"color": color,
 		"title": {
 			"name": "百分比",
 			"fontSize": 25,
@@ -244,19 +264,18 @@ const cfu = {
 			}
 		}
 	},
-	"line":{
+	"line": {
 		"type": "line",
-    "color": color,
-		"padding": [15,10,0,15],
+		"color": color,
+		"padding": [15, 10, 0, 15],
 		"xAxis": {
-      "disableGrid": true,
+			"disableGrid": true,
 		},
 		"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-		},
-		"legend": {
+			"gridType": "dash",
+			"dashLength": 2,
 		},
+		"legend": {},
 		"extra": {
 			"line": {
 				"type": "straight",
@@ -264,79 +283,115 @@ const cfu = {
 			},
 		}
 	},
-  "tline":{
-  	"type": "line",
-    "color": color,
-  	"padding": [15,10,0,15],
-  	"xAxis": {
-      "disableGrid": false,
-      "boundaryGap":"justify",
-  	},
-  	"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-      "data":[
-        {
-          "min":0,
-          "max":80
-        }
-      ]
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"line": {
-  			"type": "curve",
-  			"width": 2
-  		},
-  	}
-  },
-  "tarea":{
-  	"type": "area",
-    "color": color,
-  	"padding": [15,10,0,15],
-  	"xAxis": {
-      "disableGrid": true,
-      "boundaryGap":"justify",
-  	},
-  	"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-      "data":[
-        {
-          "min":0,
-          "max":80
-        }
-      ]
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"area": {
-  			"type": "curve",
-  			"opacity": 0.2,
-  			"addLine": true,
-  			"width": 2,
-  			"gradient": true
-  		},
-  	}
-  },
-	"column":{
-		"type": "column",
-    "color": color,
-		"padding": [15,15,0,5],
+	"tline": {
+		"type": "line",
+		"color": color,
+		"padding": [15, 10, 0, 15],
 		"xAxis": {
-      "disableGrid": true,
+			"disableGrid": false,
+			"boundaryGap": "justify",
 		},
 		"yAxis": {
-      "data":[{"min":0}]
+			"gridType": "dash",
+			"dashLength": 2,
+			"data": [{
+				"min": 0,
+				"max": 80
+			}]
 		},
-		"legend": {
+		"legend": {},
+		"extra": {
+			"line": {
+				"type": "curve",
+				"width": 2
+			},
+		}
+	},
+	"tarea": {
+		"type": "area",
+		"color": color,
+		"padding": [15, 10, 0, 15],
+		"xAxis": {
+			"disableGrid": true,
+			"boundaryGap": "justify",
+		},
+		"yAxis": {
+			"gridType": "dash",
+			"dashLength": 2,
+			"data": [{
+				"min": 0,
+				"max": 80
+			}]
+		},
+		"legend": {},
+		"extra": {
+			"area": {
+				"type": "curve",
+				"opacity": 0.2,
+				"addLine": true,
+				"width": 2,
+				"gradient": true
+			},
+		}
+	},
+	"column": {
+		"type": "column",
+		"color": color,
+		"padding": [15, 15, 0, 5],
+		"xAxis": {
+			"disableGrid": true,
 		},
+		"yAxis": {
+			"data": [{
+				"min": 0
+			}]
+		},
+		"legend": {},
 		"extra": {
 			"column": {
 				"type": "group",
 				"width": 30,
+				"activeBgColor": "#000000",
+				"activeBgOpacity": 0.08
+			},
+		}
+	},
+	"mount": {
+		"type": "mount",
+		"color": color,
+		"padding": [15, 15, 0, 5],
+		"xAxis": {
+			"disableGrid": true,
+		},
+		"yAxis": {
+			"data": [{
+				"min": 0
+			}]
+		},
+		"legend": {},
+		"extra": {
+			"mount": {
+				"type": "mount",
+				"widthRatio": 1.5,
+			},
+		}
+	},
+	"bar": {
+		"type": "bar",
+		"color": color,
+		"padding": [15, 30, 0, 5],
+		"xAxis": {
+			"boundaryGap": "justify",
+			"disableGrid": false,
+			"min": 0,
+			"axisLine": false
+		},
+		"yAxis": {},
+		"legend": {},
+		"extra": {
+			"bar": {
+				"type": "group",
+				"width": 30,
 				"meterBorde": 1,
 				"meterFillColor": "#FFFFFF",
 				"activeBgColor": "#000000",
@@ -344,44 +399,18 @@ const cfu = {
 			},
 		}
 	},
-  "bar":{
-  	"type": "bar",
-    "color": color,
-  	"padding": [15,30,0,5],
-  	"xAxis": {
-      "boundaryGap":"justify",
-      "disableGrid":false,
-      "min":0,
-      "axisLine":false
-  	},
-  	"yAxis": {
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"bar": {
-  			"type": "group",
-  			"width": 30,
-  			"meterBorde": 1,
-  			"meterFillColor": "#FFFFFF",
-  			"activeBgColor": "#000000",
-  			"activeBgOpacity": 0.08
-  		},
-  	}
-  },
-	"area":{
+	"area": {
 		"type": "area",
 		"color": color,
-		"padding": [15,15,0,15],
+		"padding": [15, 15, 0, 15],
 		"xAxis": {
-      "disableGrid": true,
+			"disableGrid": true,
 		},
 		"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-		},
-		"legend": {
+			"gridType": "dash",
+			"dashLength": 2,
 		},
+		"legend": {},
 		"extra": {
 			"area": {
 				"type": "straight",
@@ -392,15 +421,15 @@ const cfu = {
 			},
 		}
 	},
-	"radar":{
+	"radar": {
 		"type": "radar",
 		"color": color,
-		"padding": [5,5,5,5],
-    "dataLabel": false,
+		"padding": [5, 5, 5, 5],
+		"dataLabel": false,
 		"legend": {
 			"show": true,
 			"position": "right",
-      "lineHeight": 25,
+			"lineHeight": 25,
 		},
 		"extra": {
 			"radar": {
@@ -412,7 +441,7 @@ const cfu = {
 			},
 		}
 	},
-	"gauge":{
+	"gauge": {
 		"type": "gauge",
 		"color": color,
 		"title": {
@@ -452,10 +481,10 @@ const cfu = {
 			}
 		}
 	},
-	"candle":{
+	"candle": {
 		"type": "candle",
 		"color": color,
-		"padding": [15,15,0,15],
+		"padding": [15, 15, 0, 15],
 		"enableScroll": true,
 		"enableMarkLine": true,
 		"dataLabel": false,
@@ -471,10 +500,8 @@ const cfu = {
 			"scrollColor": "#A6A6A6",
 			"scrollBackgroundColor": "#EFEBEF"
 		},
-		"yAxis": {
-		},
-		"legend": {
-		},
+		"yAxis": {},
+		"legend": {},
 		"extra": {
 			"candle": {
 				"color": {
@@ -485,16 +512,15 @@ const cfu = {
 				},
 				"average": {
 					"show": true,
-					"name": ["MA5","MA10","MA30"],
-					"day": [5,10,20],
-					"color": ["#1890ff","#2fc25b","#facc14"]
+					"name": ["MA5", "MA10", "MA30"],
+					"day": [5, 10, 20],
+					"color": ["#1890ff", "#2fc25b", "#facc14"]
 				}
 			},
 			"markLine": {
 				"type": "dash",
 				"dashLength": 5,
-				"data": [
-					{
+				"data": [{
 						"value": 2150,
 						"lineColor": "#f04864",
 						"showLabel": true
@@ -508,12 +534,12 @@ const cfu = {
 			}
 		}
 	},
-	"mix":{
+	"mix": {
 		"type": "mix",
 		"color": color,
-		"padding": [15,15,0,15],
+		"padding": [15, 15, 0, 15],
 		"xAxis": {
-      "disableGrid": true,
+			"disableGrid": true,
 		},
 		"yAxis": {
 			"disabled": false,
@@ -526,8 +552,7 @@ const cfu = {
 			"showTitle": true,
 			"data": []
 		},
-		"legend": {
-		},
+		"legend": {},
 		"extra": {
 			"mix": {
 				"column": {
@@ -536,58 +561,55 @@ const cfu = {
 			},
 		}
 	},
-	"scatter":{
+	"scatter": {
 		"type": "scatter",
-		"color":color,
-		"padding":[15,15,0,15],
-    "dataLabel":false,
-    "xAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "splitNumber":5,
-      "boundaryGap":"justify",
-      "min":0
-    },
-    "yAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-    },
-    "legend": {
-    },
-    "extra": {
-    	"scatter": {
-    	},
-    }
+		"color": color,
+		"padding": [15, 15, 0, 15],
+		"dataLabel": false,
+		"xAxis": {
+			"disableGrid": false,
+			"gridType": "dash",
+			"splitNumber": 5,
+			"boundaryGap": "justify",
+			"min": 0
+		},
+		"yAxis": {
+			"disableGrid": false,
+			"gridType": "dash",
+		},
+		"legend": {},
+		"extra": {
+			"scatter": {},
+		}
 	},
-	"bubble":{
+	"bubble": {
 		"type": "bubble",
-		"color":color,
-		"padding":[15,15,0,15],
-    "xAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "splitNumber":5,
-      "boundaryGap":"justify",
-      "min":0,
-      "max":250
-    },
-    "yAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "data":[{
-        "min":0,
-        "max":150
-      }]
-    },
-    "legend": {
-    },
-    "extra": {
-    	"bubble": {
-        "border":2,
-        "opacity": 0.5,
-    	},
-    }
+		"color": color,
+		"padding": [15, 15, 0, 15],
+		"xAxis": {
+			"disableGrid": false,
+			"gridType": "dash",
+			"splitNumber": 5,
+			"boundaryGap": "justify",
+			"min": 0,
+			"max": 250
+		},
+		"yAxis": {
+			"disableGrid": false,
+			"gridType": "dash",
+			"data": [{
+				"min": 0,
+				"max": 150
+			}]
+		},
+		"legend": {},
+		"extra": {
+			"bubble": {
+				"border": 2,
+				"opacity": 0.5,
+			},
+		}
 	}
 }
 
-export default cfu;
+export default cfu;

+ 3 - 10
uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md

@@ -1,12 +1,5 @@
 # uCharts JSSDK说明
-1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`98kb`。
-2、如果100kb的体积仍需压缩,请手动删除u-charts.js内您不需要的图表类型,如k线图candle
+1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`120kb`。
+2、如果120kb的体积仍需压缩,请手到uCharts官网通过在线定制选择您需要的图表
 3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。
-3、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。
-
-# v1.0转v2.0注意事项
-1、opts.colors变更为opts.color
-2、ring圆环图的扩展配置由extra.pie变更为extra.ring
-3、混合图借用的扩展配置由extra.column变更为extra.mix.column
-4、全部涉及到format的格式化属性变更为formatter
-5、不需要再传canvasId及$this参数,如果通过uChats获取context,可能会导致this实例混乱,导致小程序开发者工具报错。如果不使用qiun-data-charts官方组件,需要在new uCharts()实例化之前,自行获取canvas的上下文context(ctx),并传入new中的context(opts.context)。为了能跨更多的端,给您带来的不便敬请谅解。
+4、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。

File diff ditekan karena terlalu besar
+ 777 - 289
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js


File diff ditekan karena terlalu besar
+ 18 - 0
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js


+ 4 - 4
uni_modules/qiun-data-charts/package.json

@@ -1,8 +1,8 @@
 {
   "id": "qiun-data-charts",
   "displayName": "秋云 ucharts echarts 高性能跨全端图表组件",
-  "version": "2.3.6-20211201",
-  "description": "uCharts v2.3上线,支持nvue!全新官方图表组件,支持H5及APP用ECharts渲染图表,uniapp可视化首选组件",
+  "version": "2.4.3-20220505",
+  "description": "uCharts 新增双指缩放、新增山峰图!支持H5及APP用 ucharts echarts 渲染图表,uniapp可视化首选组件",
   "keywords": [
     "ucharts",
     "echarts",
@@ -12,7 +12,7 @@
 ],
   "repository": "https://gitee.com/uCharts/uCharts",
   "engines": {
-    "HBuilderX": "^3.1.0"
+    "HBuilderX": "^3.3.8"
   },
   "dcloudext": {
     "category": [
@@ -35,7 +35,7 @@
       "data": "插件不采集任何数据",
       "permissions": "无"
     },
-    "npmurl": ""
+    "npmurl": "https://www.npmjs.com/~qiun"
   },
   "uni_modules": {
     "dependencies": [],

File diff ditekan karena terlalu besar
+ 74 - 423
uni_modules/qiun-data-charts/readme.md


+ 0 - 0
unpackage/dist/build/.automator/h5/.automator.json


File diff ditekan karena terlalu besar
+ 2 - 2
unpackage/dist/build/app-plus/app-config-service.js


File diff ditekan karena terlalu besar
+ 2 - 2
unpackage/dist/build/app-plus/app-service.js


File diff ditekan karena terlalu besar
+ 1 - 1
unpackage/dist/build/app-plus/app-view.js


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-icon/icon_13.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-icon/icon_14.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/btn.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_1.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_2.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_3.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_4.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_5.png


TEMPAT SAMPAH
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_1_icon_6.png


+ 0 - 0
unpackage/dist/build/app-plus/components/t-p-n-section-1/icon/section_2_icon_1.png


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini