zhengkaixin 1 anno fa
commit
806d8efaa3
100 ha cambiato i file con 2281 aggiunte e 0 eliminazioni
  1. 111 0
      App.vue
  2. 1 0
      README.md
  3. 84 0
      apis/common.js
  4. 5 0
      apis/index.js
  5. 157 0
      apis/pagejs/electricityMeter.js
  6. 136 0
      apis/pagejs/index.js
  7. 88 0
      apis/pagejs/user.js
  8. 71 0
      apis/pagejs/workOrder.js
  9. 20 0
      apis/utils/AMap.js
  10. 31 0
      apis/utils/alipay.js
  11. 420 0
      apis/utils/index.js
  12. 122 0
      apis/utils/init.js
  13. 45 0
      apis/utils/initALI.js
  14. 118 0
      apis/utils/mixin.js
  15. 92 0
      apis/utils/request.js
  16. 70 0
      apis/utils/requestSon.js
  17. 76 0
      apis/utils/requestWhite.js
  18. 241 0
      apis/utils/wxJsApi.js
  19. 52 0
      apis/utils/wxpay.js
  20. 77 0
      apis/weixin.js
  21. 0 0
      assets/css/style.css
  22. 7 0
      assets/font/jptime.css
  23. BIN
      assets/font/jptime.otf
  24. 22 0
      assets/icon/icon.vue
  25. BIN
      assets/img/3chat.png
  26. BIN
      assets/img/AUgyKM0@1x.png
  27. BIN
      assets/img/AUgyKM0@1x2.png
  28. BIN
      assets/img/AUgyKM1@1x.png
  29. BIN
      assets/img/Copy PEokWS2 Copy 1@1x.png
  30. BIN
      assets/img/Image@1.png
  31. BIN
      assets/img/Image@2.png
  32. BIN
      assets/img/Image@3.png
  33. BIN
      assets/img/Image@4.png
  34. BIN
      assets/img/Image@5.png
  35. BIN
      assets/img/Image@6.png
  36. BIN
      assets/img/Image@7(1).png
  37. BIN
      assets/img/Image@7.png
  38. BIN
      assets/img/Image@8(1).png
  39. BIN
      assets/img/Image@8.png
  40. 6 0
      assets/img/Image@9.svg
  41. BIN
      assets/img/PEokWS2@1x.png
  42. BIN
      assets/img/annular.png
  43. 6 0
      assets/img/antFill-account-book(1).svg
  44. 6 0
      assets/img/antFill-account-book.svg
  45. 6 0
      assets/img/antFill-alert Copy 1.svg
  46. 6 0
      assets/img/antFill-alert(1).svg
  47. 6 0
      assets/img/antFill-alert(2).svg
  48. 6 0
      assets/img/antFill-alert.svg
  49. 6 0
      assets/img/antFill-notification(1).svg
  50. 6 0
      assets/img/antFill-notification.svg
  51. 6 0
      assets/img/antOutline-alipay-circle bQiHn7m.svg
  52. BIN
      assets/img/chart@1x.png
  53. BIN
      assets/img/circleCopy1@1x.png
  54. BIN
      assets/img/e-invoice.png
  55. BIN
      assets/img/electricityStatistics@3x.png
  56. 6 0
      assets/img/energy1.svg
  57. 6 0
      assets/img/energyMeter.svg
  58. 6 0
      assets/img/far fa-clock.svg
  59. 6 0
      assets/img/fas fa-bell.svg
  60. 6 0
      assets/img/fas fa-book.svg
  61. 6 0
      assets/img/fas fa-chart-pie(1).svg
  62. 6 0
      assets/img/fas fa-chart-pie.svg
  63. 6 0
      assets/img/fas fa-exclamation-triangle Copy 1.svg
  64. BIN
      assets/img/fas fa-exclamation-triangle Copy 2@3x.png
  65. 6 0
      assets/img/fas fa-exclamation-triangle.svg
  66. 6 0
      assets/img/fas fa-file-alt.svg
  67. BIN
      assets/img/feedbackPic.png
  68. 6 0
      assets/img/iconPark-electric-wave 1.svg
  69. 6 0
      assets/img/iconPark-order.svg
  70. 6 0
      assets/img/iconPark-order2.svg
  71. 6 0
      assets/img/iconPark-thermometer.svg
  72. 6 0
      assets/img/iconPark-wallet.svg
  73. 6 0
      assets/img/if-support.svg
  74. 6 0
      assets/img/if-ui-dial-phone 1.svg
  75. 6 0
      assets/img/invoice.svg
  76. BIN
      assets/img/jVzkNKE@1x(1).png
  77. BIN
      assets/img/jVzkNKE@1x(2).png
  78. BIN
      assets/img/jVzkNKE@1x.png
  79. BIN
      assets/img/logo.png
  80. BIN
      assets/img/map.png
  81. 6 0
      assets/img/md-check_circle vRxbRvD.svg
  82. 6 0
      assets/img/md-watch_later.svg
  83. BIN
      assets/img/meter@3x.png
  84. BIN
      assets/img/meterStatistics@3x.png
  85. 6 0
      assets/img/mineBackground.svg
  86. 3 0
      assets/img/modalIcon.svg
  87. 6 0
      assets/img/outputVoltage.svg
  88. BIN
      assets/img/pImage@1x.png
  89. BIN
      assets/img/photo@x1.png
  90. 6 0
      assets/img/power.svg
  91. 3 0
      assets/img/powerFactor.svg
  92. BIN
      assets/img/qmJEzOi@1x.png
  93. BIN
      assets/img/record-chat.png
  94. BIN
      assets/img/recordChat.png
  95. 1 0
      assets/img/refresh-line.svg
  96. 6 0
      assets/img/riFill-alert-fill.svg
  97. 6 0
      assets/img/riFill-bar-chart-fill.svg
  98. 6 0
      assets/img/riFill-building-fill.svg
  99. 6 0
      assets/img/riFill-building-fill1.svg
  100. 6 0
      assets/img/riFill-clipboard-fill.svg

+ 111 - 0
App.vue

@@ -0,0 +1,111 @@
+<style lang="scss">
+	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
+	@import "@/uni_modules/uview-ui/index.scss";
+	//@import '@/assets/font/font.css';
+	
+</style>
+<script>
+	
+	import './config/.env.js'
+	import './assets/js/font.js'
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+				
+		},
+		 
+		onShow: function() {
+			
+			console.log('App Show ---- App Show')
+		},
+		onHide: function() {
+			console.log('App Hide  -- App Hide  -App Hide')
+		}
+	}
+</script>
+
+<style lang="scss">
+	
+	html, body {
+	  background-color:#F2F4F6;
+	  margin: 0;
+	  padding: 0;
+	}
+	// 导航
+	.navbar-c{
+		background-color: #fff;
+		line-height: 88rpx;
+		padding: 0 24rpx;
+		display: flex;
+		align-items: center;
+		position: sticky;
+		left: 0;
+		right: 0;
+		top: 0;
+		z-index: 99999;
+		.back{
+			.img{
+				width: 48rpx;
+				height: 48rpx;
+				vertical-align: middle;
+			}
+		}
+		
+		.title{
+			color: rgb(16,16,16);
+			font-size: 36rpx;
+			    flex: 1;
+			    position: absolute;
+			    left: 0;
+			    right: 0;
+			    text-align: center;
+			    flex-shrink: 0;
+			
+			.img{
+				width: 32rpx;
+				height: 32rpx;
+				vertical-align: middle;
+				margin-left: 8rpx;
+			}
+		}
+		.right{
+			display: flex;
+			align-items: center;
+			margin-left: auto;
+			font-size: 32rpx;
+			color: rgba(16,16,16,1);
+			.img{
+				width: 32rpx;
+				height: 32rpx;
+				margin-right: 4rpx;
+			}
+		}
+	}
+	// 导航栏标题文字
+	.u-title {
+		font-size: 36rpx !important
+	}
+	/deep/.uicon-nav-back{
+		color: #101010 !important;
+		font-weight: bold !important;
+		font-size: 36rpx !important
+	}
+	#__vconsole{
+		z-index: 99999;
+		position: absolute;
+	}
+	.slot{
+		color: rgba(16,16,16,1);
+		font-size: 32rpx;
+		margin-right: 32rpx;
+	}
+	.uni-icon-success-no-circle:before {
+	    content: "" !important ;
+		display: none;
+	}
+	.uni-toast .uni-toast__content{
+		margin: -10px 1px 10px 1px;
+	}
+	
+	
+</style>

+ 1 - 0
README.md

@@ -0,0 +1 @@
+[](https://modao.cc/proto/s1QFMhkss7n1emgHHRAr0E/sharing?view_mode=read_only)

+ 84 - 0
apis/common.js

@@ -0,0 +1,84 @@
+import request from '@/apis/utils/request'
+ 
+import Qs from 'qs';
+
+export function uploadPicture(formData) {
+	return request({
+		url: '/uploadPicture',
+		header:{
+			   'Content-Type': 'application/x-www-form-urlencoded'
+
+		},
+		data: formData,
+		method: 'post',
+		
+	})
+}
+
+
+export function getBannerInfo(formData) {
+	return request({
+		url: '/mobile/bannerInfo/getBannerInfo',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+export function readMessageNum() {
+	return request({
+		url: '/mobile/messageApi/readMessageNum',
+		//data: formData,
+		method: 'post',
+		
+	})
+}
+
+export function getScreenList(formData) {
+	return request({
+		url: '/mobile/recruitmentApi/getScreenList',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+
+//字典表
+export function getData(id) {
+	return request({
+		url: '/sys/dataDictionary/queryChildrenApi',
+		data: {
+			parentId:id
+		},
+		method: 'post',
+		timeout: 60000,
+	})
+}
+//上传图片
+export function upload(formData) {
+	return request({
+		url: '/mobile/jobUserApi/upload',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+
+//上传图片
+export function uploadBase64(formData) {
+	var localData = formData.photoFile?formData.photoFile:formData.photoBase64Data;
+	
+	if (localData.indexOf('data:image') != 0) {
+	    //判断是否有这样的头部
+	    localData = 'data:image/jpeg;base64,' + localData
+	}
+	formData.photoBase64Data = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+	
+	
+	return request({
+		url: '/mobile/jobUserApi/uploadBase64',
+		data: formData,
+		method: 'post',
+		timeout: 60000,
+	})
+}
+

+ 5 - 0
apis/index.js

@@ -0,0 +1,5 @@
+import request from '@/apis/utils/request.js';
+import requestWhite from '@/apis/utils/requestWhite.js';
+import Qs from 'qs';
+ import  carhelp from '@/apis/utils/mixin.js'
+ 

+ 157 - 0
apis/pagejs/electricityMeter.js

@@ -0,0 +1,157 @@
+import request from '@/apis/utils/request'
+
+//用电详细-计费规则
+export function electricityStatisticsDetails(data) {
+	var url='mobile/ElectricityMeter/electricityStatisticsDetails';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//用电详细-计费规则
+export function billingRules(data) {
+	var url='/mobile/ElectricityMeter/billingRules';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//用电详细
+export function electricityConsumptionDetails(data) {
+	var url='/mobile/ElectricityMeter/electricityConsumptionDetails';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//用电统计
+export function electricityConsumptionStatistics(data) {
+	var url='/mobile/ElectricityMeter/electricityConsumptionStatistics';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//能源中心电表修改信息
+export function updateMeter(data) {
+	var url='/mobile/employeeElectricityMeter/updateMeter';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//能源中心换绑电表
+export function charngeMeter(data) {
+	var url='/mobile/employeeElectricityMeter/charngeMeter';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//查-查询设备list-传‘设备类型’
+export function findByName(data) {
+	var url='/mobile/dataDictionary/findByName';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//能源中心绑定电表
+export function bindMeter(data) {
+	var url='/mobile/employeeElectricityMeter/bindMeter';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//能源中心扫电表码
+export function findByMeterNo(data) {
+	var url='/mobile/employeeElectricityMeter/findByMeterNo';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//设备信息list
+export function materList(data) {
+	var url='/mobile/employeeElectricityMeter/materList';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+//表信息
+export function meterDetails(data) {
+	var url='/mobile/ElectricityMeter/meterDetails';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function powerDetection(data) {
+	var url='/mobile/ElectricityMeter/powerDetection';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function electricityMonthTB(data) {
+	var url='/mobile/ElectricityMeter/electricityMonthTB';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function electricityMonthHB(data) {
+	var url='/mobile/ElectricityMeter/electricityMonthHB';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+
+export function electricityHourByYear(data) {
+	var url='/mobile/ElectricityMeter/electricityHourByYear';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function electricityHourByDay(data) {
+	var url='/mobile/ElectricityMeter/electricityHourByDay';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}

+ 136 - 0
apis/pagejs/index.js

@@ -0,0 +1,136 @@
+import request from '@/apis/utils/request'
+
+export function companyKwhList(data) {
+	var url='/mobile/employee/companyKwhList';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function deviceStatusMonitoring(data) {
+	var url='mobile/employee/deviceStatusMonitoring';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 异常报警记录-详细
+export function alarmRecordDetails(id) {
+	var url='/mobile/employee/alarmRecordDetails';
+	return request({
+		method: 'post',
+		data: {id: id},
+		url: url
+	})
+}
+
+// 异常报警记录-异常查询条件
+export function alarmConfiguration() {
+	var url='/mobile/employee/alarmConfiguration';
+	return request({
+		method: 'post',
+		url: url
+	})
+}
+
+// 主页-异常告警记录
+export function alarmRecord(data) {
+	var url='/mobile/employee/alarmRecord';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 主页-设备状态
+export function homePageDeviceStatus(data) {
+	var url='/mobile/employee/homePageDeviceStatus';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function homePage(data) {
+	var url='/mobile/tenant/homePage';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function findByOpenId(data) {
+	var url='/mobile/employeeUser/findByOpenId';
+	return request({
+		method: 'get',
+		data: data,
+		url: url
+	})
+}
+
+// 主页-用电量(设备远程抄表)
+export function homePageKwh(data) {
+	var url='/mobile/employee/homePageKwh';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 主页-设备数据检测(设备巡检)
+export function homePageDeviceData(data) {
+	var url='/mobile/employee/homePageDeviceData';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 主页-拥有的设备的单位
+export function deviceCompanyList() {
+	var url='/mobile/employee/deviceCompanyList';
+	return request({
+		method: 'post',
+		url: url
+	})
+}
+
+// 主页-累计报警
+export function deviceStatus(data) {
+	var url='/mobile/employee/deviceStatus';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 电量统计
+export function electricityStatistics(data) {
+	var url='/mobile/ElectricityMeter/electricityStatistics';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 时间段统计
+export function timeSlotStatistics(data) {
+	var url='/mobile/ElectricityMeter/timeSlotStatistics';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+ 

+ 88 - 0
apis/pagejs/user.js

@@ -0,0 +1,88 @@
+import request from '@/apis/utils/request'
+import requestWhite from '@/apis/utils/requestWhite'
+
+export function changePassword(data) {
+	var url = '/mobile/employeeUser/changePassword';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+
+export function changePhone(data) {
+	var url = '/mobile/employeeUser/changePhone';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+export function getVerifyCode(data) {
+	var url = '/mobile/employeeUser/getVerifyCode';
+	return requestWhite({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+export function logout(data) {
+	var url = '/mobile/employeeUser/logout';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function validateCode(data) {
+	var url = '/mobile/employeeUser/validateCode';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function personalCenter(data) {
+	var url = '/mobile/employee/personalCenter';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+
+
+export function findByOpenId(data) {
+	var url = '/mobile/employeeUser/findByOpenId';
+	return requestWhite({
+		method: 'get',
+		data: data,
+		url: url
+	})
+}
+
+
+
+export function login(data) {
+	var url = '/mobile/employeeUser/login';
+	return requestWhite({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+
+
+export function retrievePassword(data) {
+	var url = '/mobile/employeeUser/retrievePassword';
+	return requestWhite({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}

+ 71 - 0
apis/pagejs/workOrder.js

@@ -0,0 +1,71 @@
+import request from '@/apis/utils/request'
+
+// 工单统计-按状态统计我的工单
+export function rptByStatus(data) {
+	var url='/mobile/workOrder/rptByStatus';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 工单-用户取消工单
+export function usClose(data) {
+	var url='/mobile/workOrder/usClose';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 工单-加载工单明细
+export function workOrderDetail(id) {
+	var url='/mobile/workOrder/get';
+	return request({
+		method: 'post',
+		data: {id: id},
+		url: url
+	})
+}
+
+// 工单-根据目录名称查询数据列表-'故障类型'
+export function findByCatalogName(data) {
+	var url='/sys/dataDictionary/findByCatalogName';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 工单-查询当前用户单位的设备信息
+export function loadMyDevices(data) {
+	var url='/mobile/workOrder/loadMyDevices';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 工单-分页查询我的工单
+export function queryMy(data) {
+	var url='/mobile/workOrder/queryMy';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+// 工单-用户故障上报(用户创建工单)
+export function usCreate(data) {
+	var url='/mobile/workOrder/usCreate';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}

+ 20 - 0
apis/utils/AMap.js

@@ -0,0 +1,20 @@
+export default function MapLoader() {
+
+	return new Promise((resolve, reject) => {
+		 
+		if (window.AMap) {
+			resolve(window.AMap)
+		} else {
+//			console.log("map")
+			var script = document.createElement('script')
+			script.type = 'text/javascript'
+			script.async = true
+			script.src = 'https://webapi.amap.com/maps?v=1.4.15&callback=initAMap&key=de735ff06aec63f6bc109c9fb805fc3d'
+			script.onerror = reject
+			document.head.appendChild(script)
+		}
+		window.initAMap = () => {
+			resolve(window.AMap)
+		}
+	})
+}

+ 31 - 0
apis/utils/alipay.js

@@ -0,0 +1,31 @@
+function onBridgeReady(params) {
+	AlipayJSBridge.call("tradePay", {
+		tradeNO: params.tradeNo,
+	}, function(result) {
+		if (result.resultCode == '9000') {
+			location.href = params.succUrl
+		} else {
+			location.href = params.cancelUrl;
+		}
+		//alert(JSON.stringify(result));
+	});
+}
+
+export const aliPayJs = (params) => {
+	if (typeof window.WeixinJSBridge === 'undefined') {
+		if (document.addEventListener) {
+			document.addEventListener('AlipayJSBridgeReady', function() {
+				onBridgeReady(params)
+			}, false)
+		} else if (document.attachEvent) {
+			document.attachEvent('AlipayJSBridgeReady', function() {
+				onBridgeReady(params)
+			})
+			document.attachEvent('AlipayJSBridgeReady', function() {
+				onBridgeReady(params)
+			})
+		}
+	} else {
+		onBridgeReady(params)
+	}
+}

+ 420 - 0
apis/utils/index.js

@@ -0,0 +1,420 @@
+export const currentTimeStamp = () => new Date().getTime()
+
+export const unixTimeStamp = (val) => new Date(val).getTime()
+
+export const nextMonth=(year,month,day,bl)=>{
+	if(day){
+		
+	}else{
+		day="01"
+	}
+	var str=""
+	if(month==12){
+		str= (parseInt(year) +1)+"-01-"+day
+	}else{
+		str= year+"-"+(parseInt(month) +1)+"-"+day
+	}
+	if(bl){
+		var now= new Date(str);
+		return parseUnixTime(new Date(now.getTime()-1000*60*60*24),'{y}-{m}-{d}')	
+	}
+}
+
+// export const nextDay=(year,month,day)=>{
+// 	var now= new Date(year+"-"+month+"-"+day);
+// 	return parseUnixTime(new Date(now.getTime()+1000*60*60*24),'{y}-{m}-{d}')
+	
+// }
+
+// 苹果手机时间显示bug 
+export const newDate = (date) => {
+	var time=null;
+	if (date) {
+		var reg=new RegExp('-','gi')
+		time=new Date(date.replace(reg,'/'));	
+	}
+	return time
+}
+
+//今天多少天之前的时间
+export const beforeTimeStamp = (dayCount,date) => {
+	
+	if (date) {
+		var dd = new Date(date);
+	} else {
+		var dd = new Date();
+	}
+	dd.setDate(dd.getDate() - dayCount)
+	let time = dd.getTime()
+	return time
+}
+
+//今天多少天之后的时间
+export const afterTimeStamp = (dayCount, date) => {
+	if (date) {
+		var dd = new Date(date);
+	} else {
+		var dd = new Date();
+	}
+	dd.setDate(dd.getDate() + dayCount)
+	let time = dd.getTime()
+	return time
+}
+
+//今天多少年之后的时间
+export const afterYearTimeStamp = (yearCount, date) => {
+	if (date) {
+		var dd = new Date(date);
+	} else {
+		var dd = new Date();
+	}
+	dd.setFullYear(dd.getFullYear() + yearCount)
+	let time = dd.getTime()
+	return time
+}
+
+//计算某日期距当前的时间秒数
+export const secondsDistance = (date) => {
+	var now = new Date().getTime();
+	date = new Date(date).getTime();
+	var seconds = parseInt((now - date) / 1000);
+	return seconds;
+}
+
+//计算两个时间的相差天数
+export const daysDistance = (date1, date2) => {
+	date1 = Date.parse(date1);
+	date2 = Date.parse(date2);
+	var ms = date2 - date1;
+	ms = ms < 0 ? 0 : ms;
+	var days = parseInt(Math.floor(ms / (24 * 3600 * 1000)));
+	return days;
+}
+//计算两个时间的相差小时数
+export const hourDistanceArr = (date1, date2) => {
+	if (!date1 || !date2) {
+		return '-';
+	}
+	date1 = Date.parse(date1);
+	date2 = Date.parse(date2);
+	var ms = date2 - date1;
+	ms = ms < 0 ? 0 : ms;
+	ms = ms / 1000; //s
+	var Hour = parseInt(Math.floor(ms / (60 * 60)));
+	var Fen = parseInt(Math.floor(ms % (60 * 60) / 60));
+	var s = parseInt(Math.floor(ms % (60)));
+	//600000
+	return [Hour, Fen, s]
+}
+//计算两个时间的相差小时数
+export const hourDistance = (date1, date2) => {
+	if (!date1 || !date2) {
+		return '-';
+	}
+	date1 = Date.parse(date1);
+	date2 = Date.parse(date2);
+	var ms = date2 - date1;
+	ms = ms < 0 ? 0 : ms;
+	ms = ms / 1000; //s
+	var Hour = parseInt(Math.floor(ms / (60 * 60)));
+	var Fen = parseInt(Math.floor(ms % (60 * 60) / 60));
+	var s = parseInt(Math.floor(ms % (60)));
+	//600000
+	return Hour + '小时' + Fen + '分钟' + s + '秒';
+}
+
+export const parseUnixTime = (time, cFormat) => {
+	if (arguments.length === 0) {
+		return null
+	}
+	const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+	let date
+	if (typeof time === 'object') {
+		date = time
+	} else {
+		if (('' + time).length === 10) time = parseInt(time) * 1000
+		date = new Date(time)
+	}
+	const formatObj = {
+		y: date.getFullYear(),
+		m: date.getMonth() + 1,
+		d: date.getDate(),
+		h: date.getHours(),
+		i: date.getMinutes(),
+		s: date.getSeconds(),
+		a: date.getDay()
+	}
+	const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+		let value = formatObj[key]
+		if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
+		if (result.length > 0 && value < 10) {
+			value = '0' + value
+		}
+		return value || 0
+	})
+
+	return time_str
+}
+
+//微信获取code
+export const getWeixinRedirectURI = (appid, url) =>
+	`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(url)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
+
+ 
+//支付宝获取code
+export const getAlipayRedirectURI = (appid, url) =>
+	`https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=${appid}&scope=auth_base&redirect_uri=${encodeURIComponent(url)}`
+
+
+//获取链接的?参数
+export const getUrlParam = (name) => {
+	var k =window.location.href.indexOf("?"+name+"=");
+	if(k==-1){
+		 k =window.location.href.indexOf("&"+name+"=");
+		 if(k==-1){
+			 return  ""
+		 }
+	}
+	var reg = new RegExp(name + "=([^&]*)(&|$)");
+	var r = window.location.href.match(reg);
+	var strValue = "";
+	if (r != null) {
+		strValue = unescape(r[1]);
+	}
+	return strValue;
+}
+
+
+//将base64图片码转file
+export const dataUrlToFile = (dataurl, filename) => {
+	var arr = dataurl.split(','),
+		mime = arr[0].match(/:(.*?);/)[1],
+		bstr = atob(arr[1]),
+		n = bstr.length,
+		u8arr = new Uint8Array(n);
+	while (n--) {
+		u8arr[n] = bstr.charCodeAt(n);
+	}
+	return new File([u8arr], filename, {
+		type: mime
+	});
+}
+
+//将canvas转换为image的src
+export const convertCanvasToImage = (canvas) => {
+	return canvas.toDataURL("image/png");;
+}
+
+//验证身份证
+export const checkIdCard = (value) => {
+	var identNumber = value;
+
+	if (identNumber != null) {
+		identNumber = (identNumber + "").toUpperCase();
+	}
+
+	if (!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(identNumber))) {
+		return '身份证格式错误';
+	}
+	//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。  
+	if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(identNumber))) {
+		return '身份证格式错误';
+	}
+	//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+	//下面分别分析出生日期和校验位
+	var len, re;
+	len = identNumber.length;
+	//判断18位身份证号码,现在在国家统一身份证为18位。
+	if (len == 18) {
+		re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
+		var arrSplit = identNumber.match(re);
+
+
+		//检查生日日期是否正确
+		var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
+		var bGoodDay;
+		bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) &&
+			(dtmBirth.getDate() == Number(arrSplit[4]));
+		if (!bGoodDay) {
+			return '身份证号码日期不匹配';
+		} else {
+			//检验18位身份证的校验码是否正确。
+			//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+			var valnum;
+			var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
+			var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
+			var nTemp = 0,
+				i;
+			for (i = 0; i < 17; i++) {
+				nTemp += identNumber.substr(i, 1) * arrInt[i];
+			}
+			valnum = arrCh[nTemp % 11];
+			if (valnum != identNumber.substr(17, 1)) {
+				return '身份证号码校验位不正确';
+			}
+			return true;
+		}
+	} else {
+		return '身份证号码位数不足';
+	}
+}
+
+// 字符串截取 包含对中文处理,str需截取字符串,start开始截取位置,n截取长度
+export const substrMb = (str, start, n) => {
+	if (str.replace(/[\u4e00-\u9fa5]/g, '**').length <= n) {
+		return str;
+	}
+	let len = 0;
+	let tmpStr = '';
+	for (let i = start; i < str.length; i++) { // 遍历字符串
+		if (/[\u4e00-\u9fa5]/.test(str[i])) { // 中文 长度为两字节
+			len += 2;
+		} else {
+			len += 1;
+		}
+		if (len > n) {
+			break;
+		} else {
+			tmpStr += str[i];
+		}
+	}
+	return tmpStr;
+}
+
+//验证手机号
+export const checkPhone = (value) => {
+	if (!value) {
+		return '手机号不能为空';
+	} else {
+		const reg = /^1[3-9]\d{9}$/
+		var result = reg.test(value);
+
+		if (result) {
+			return true;
+		} else {
+			return '请输入正确的手机号';
+		}
+	}
+};
+
+//验证社会信用代码
+export const checkCreditCode = (value) => {
+	if (!value) {
+		return '社会信用代码不能为空';
+	} else {
+		const reg = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
+		var result = reg.test(value);
+
+		if (result) {
+			return true;
+		} else {
+			return '不是有效的统一社会信用编码';
+		}
+	}
+};
+
+//是否为微信浏览器
+export const isWeiXin = () => {
+	return /MicroMessenger/.test(window.navigator.userAgent)
+}
+
+//获取当前根链接
+export const getBaseUrl = () => {
+	return window.location.href.split("#")[0]
+}
+
+//获取指定日期是否在指定时间之间
+export const inDateBetwen = (d, d1, d2) => {
+	//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
+	var dateBegin = new Date(d1.replace(/-/g, "/")); //将-转化为/,使用new Date
+	var dateEnd = new Date(d2.replace(/-/g, "/")); //将-转化为/,使用new Date
+	//var dateBegin = new Date(d1);//将-转化为/,使用new Date
+	//var dateEnd = new Date(d2);//将-转化为/,使用new Date
+	var dateNow = new Date(d.replace(/-/g, "/")); //获取当前时间
+
+	var beginDiff = dateNow.getTime() - dateBegin.getTime(); //时间差的毫秒数       
+	var beginDayDiff = Math.floor(beginDiff / (24 * 3600 * 1000)); //计算出相差天数
+
+	var endDiff = dateEnd.getTime() - dateNow.getTime(); //时间差的毫秒数
+	var endDayDiff = Math.floor(endDiff / (24 * 3600 * 1000)); //计算出相差天数       
+	if (endDayDiff < 0) {
+		//已过期
+		return false
+	}
+	if (beginDayDiff < 0) {
+		//没到开始时间
+		return false;
+	}
+	return true;
+}
+
+//type为字符串类型,有两种选择,"s"代表开始,"e"代表结束,dates为数字类型,不传或0代表本周,-1代表上周,1代表下周
+export const getWeekTime = (type, dates) => {
+	var now = new Date();
+	var nowTime = now.getTime();
+	var day = now.getDay();
+	var longTime = 24 * 60 * 60 * 1000;
+	var n = longTime * 7 * (dates || 0);
+	if (type == "s") {
+		var dd = nowTime - (day) * longTime + n;
+	};
+	if (type == "e") {
+		var dd = nowTime + (7 - day - 1) * longTime + n;
+	};
+	dd = new Date(dd);
+	var y = dd.getFullYear();
+	var m = dd.getMonth() + 1;
+	var d = dd.getDate();
+	m = m < 10 ? "0" + m : m;
+	d = d < 10 ? "0" + d : d;
+	var day = y + "-" + m + "-" + d;
+	return day;
+}
+
+export const getDiffDate = (stime, etime) => {
+	//初始化日期列表,数组
+	var diffdate = new Array();
+	var i = 0;
+	//开始日期小于等于结束日期,并循环
+	while (stime <= etime) {
+		diffdate[i] = stime;
+
+		//获取开始日期时间戳
+		var stime_ts = new Date(stime).getTime();
+ 
+		//增加一天时间戳后的日期
+		var next_date = stime_ts + (24 * 60 * 60 * 1000);
+
+		//拼接年月日,这里的月份会返回(0-11),所以要+1
+		var next_dates_y = new Date(next_date).getFullYear() + '-';
+		var next_dates_m = (new Date(next_date).getMonth() + 1 < 10) ? '0' + (new Date(next_date).getMonth() + 1) + '-' : (
+			new Date(next_date).getMonth() + 1) + '-';
+		var next_dates_d = (new Date(next_date).getDate() < 10) ? '0' + new Date(next_date).getDate() : new Date(next_date).getDate();
+
+		stime = next_dates_y + next_dates_m + next_dates_d;
+
+		//增加数组key
+		i++;
+	}
+	return diffdate;
+}
+
+export const isJSON = (str) => {
+	if (typeof str == 'string') {
+		try {
+			var obj = JSON.parse(str);
+			if (typeof obj == 'object' && obj) {
+				return true;
+			} else {
+				return false;
+			}
+		} catch (e) {
+			console.log('error:' + str + '!!!' + e);
+			return false;
+		}
+	}
+}
+
+
+
+

+ 122 - 0
apis/utils/init.js

@@ -0,0 +1,122 @@
+import carhelp from '@/apis/utils/mixin.js'
+
+import * as API_WeiXin from '@/apis/weixin.js'
+
+import {
+	getUrlParam,
+	getWeixinRedirectURI,
+	isWeiXin
+} from '@/apis/utils'
+var checkOpenId = true; //是否需要获取openId
+var openId = carhelp.getOpenId();
+
+var app = {
+	initTest: function() {
+		// isWeiXin()|| 
+		if(isWeiXin() ){
+			console.log("?/////////")
+			if (!openId) {
+				this.getOpenId();
+			} else {
+				this.getPersion(openId)
+			}
+			
+		}else{
+			alert("请使用微信打开本页面")
+			
+		}
+		
+		
+	},
+	init: function() {
+		// isWeiXin()|| 
+		if(!(process.env.NODE_ENV === "development") ){
+			if (isWeiXin()) {
+				if (checkOpenId) {
+					if (!openId) {
+						this.getOpenId();
+					} else {
+						this.getPersion(openId)
+					}
+				}
+			} else{
+				var NODE_NAME=  process.env['NODE_NAME']
+				if(NODE_NAME=="production"){
+					alert("请使用微信打开本页面")
+				}
+			}
+		}else{
+			carhelp.setOpenId(process.car.openId)
+			this.getPersion(process.car.openId)
+		}
+		
+		
+	},
+	 getPersion(thisopenId){
+		 console.log("init")
+		 var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
+		 var token_tdate=carhelp.get("token_tdate");//每10分钟存储一次token
+		 
+		  if(token_tdate&&token_tdate==tdate){
+			return
+		  }
+		  
+		 var loginurl="/mobile/employeeUser/findByOpenId"
+		  
+		 uni.request({
+		 	method:'get',
+		 	url: process.car.BASE_URL + loginurl,
+		 	data: {
+		 		openId:thisopenId,
+		 	},
+		 	header: {
+		 		'Content-Type': 'application/x-www-form-urlencoded',
+		 		'X-Requested-With': 'XMLHttpRequest',
+		 		//'Authorization':token
+		 	}
+		 }).then((response) => {
+		 	let [error, res] = response;
+		 	
+		 	if (res.data.code == 200&&res.data.result) {
+		 		
+		 		var token = res ? res.data.data.token : '';
+		 		carhelp.setPersonInfo(res.data.data.regUser );
+		 		carhelp.setPersonInfoPlus(res.data.data );
+		 		
+		 		carhelp.setToken(token);
+		 	 
+		 	}else{
+				carhelp.logoff();
+			}
+		 }).catch(error => {
+		 	
+		 	
+		 })
+	 },
+	getOpenId() {
+		
+		const code = getUrlParam('code');
+		var openId = carhelp.getOpenId()
+		if (!openId) {
+			if (!code) {
+				var url = document.URL;
+				var getUrl= getWeixinRedirectURI(process.car.VUE_APP_WXAPPID, url);
+				 
+				window.location.href = getUrl;
+			} else {
+				
+				API_WeiXin.getDataByCode(code).then(response => {
+					
+					carhelp.setOpenId(response.data.openid)
+					openId = response.data.openid;
+					carhelp.set("xpgj_wx_user_info",response.data)
+					
+					 location.reload();
+				}).catch(error => {
+					console.log(error);
+				});
+			}
+		}
+	}
+}
+module.exports = app

+ 45 - 0
apis/utils/initALI.js

@@ -0,0 +1,45 @@
+import carhelp from '@/apis/utils/mixin.js'
+import * as API_WeiXin from '@/apis/weixin.js'
+
+import {
+	getUrlParam,
+	getAlipayRedirectURI,
+ 
+} from '@/apis/utils'
+var checkOpenId = true; //是否需要获取openId
+var openId = carhelp.getOpenIdALI();
+
+var app = {
+	init: function() {
+		 
+		if (!openId) {
+			this.getOpenId();
+		} 
+		
+		
+	},
+	
+	getOpenId() {
+		
+		const code = getUrlParam('auth_code');
+		var openId= carhelp.getOpenIdALI()
+		
+		if (!openId) {
+			if (!code) {
+				
+				var authUrl = document.URL//.replace('pages/parking/search', 'pages/parking/auth');
+				window.location.href = getAlipayRedirectURI(process.car.VUE_APP_ALIAPPID, authUrl );
+			} else {
+				
+				API_WeiXin.getDataByCodeALI(code).then(response => {
+					
+					carhelp.setOpenIdALI(response.data.openid)
+					 location.reload();
+				}).catch(error => {
+					console.log(error);
+				});
+			}
+		}
+	}
+}
+module.exports = app

+ 118 - 0
apis/utils/mixin.js

@@ -0,0 +1,118 @@
+
+var prefix = 'jp-housekeep-electric-' + process.car.NODE_ENV + '_';
+
+var app = {
+ 
+	getGzDate : (key) => {
+		var tdate=new Date( ).toJSON().substr(0,10).replace("T"," ")
+		var date= uni.getStorageSync( prefix + "is_gz_date")
+		
+		if(tdate==date){
+			return false
+		}else{
+			return  true;
+		}
+		
+	},
+	
+	setGzDate : () => uni.setStorageSync(prefix + "is_gz_date", new Date( ).toJSON().substr(0,10).replace("T"," ") ),
+	
+	getGunIdCharge :()=>{
+
+		var date= uni.getStorageSync( prefix + "GunId_Date_charge")
+		var now=new Date().getTime()
+		if(date+5*60*1000>now){
+			return  uni.getStorageSync(prefix +  "GunId_Date_Show_charge")
+		}else{
+			return "";
+		}
+	},
+	
+	setGunIdCharge : ( value) => {
+		uni.setStorageSync(prefix + "GunId_Date_Show_charge", value)
+		uni.setStorageSync(prefix + "GunId_Date_charge", new Date().getTime())
+		
+	},
+	
+	
+	getPrefix:()=> prefix,
+	get : key =>  uni.getStorageSync(prefix + key),
+
+	set : (key, value) => uni.setStorageSync(prefix + key, value),
+	remove: key =>  uni.removeStorageSync(prefix + key),
+	setConfig : (value) => uni.setStorageSync(prefix + '_config_$', value),
+	getConfig : () => {
+		var config = uni.getStorageSync(prefix + '_config_$')
+		var configure={}
+		if(config){
+			for(var  i in config){
+				var con=config[i];
+				configure[con.key]=con.value
+			}
+		}
+		 return configure;
+	},
+	
+	setConfigMessage : (value) => uni.setStorageSync(prefix + '_config_tips_$', value),
+	getConfigMessage : () => {
+		var config = uni.getStorageSync(prefix + '_config_tips_$')
+		if(!config){
+			config=[]
+		}
+		 return config;
+	},
+	
+	logoff:()=>{
+		uni.removeStorageSync(prefix + 'token_tdate')
+		uni.removeStorageSync(prefix + 'token')
+		uni.removeStorageSync(prefix  + 'personInfo');
+		uni.removeStorageSync(prefix + 'personInfoPlus');
+	//	uni.removeStorageSync(prefix + 'getElderModeClass');
+		//uni.removeStorageSync(prefix+'wx_openId');
+		
+	},
+	
+	getPersonInfo : () => {
+		 return uni.getStorageSync(prefix + 'personInfo')
+	},
+	getPersonInfoPlus : () => {
+		 return uni.getStorageSync(prefix + 'personInfoPlus')
+	},
+	signOut:()=>  uni.removeStorageSync(prefix  + 'personInfo'),
+	getOpenId : () =>   uni.getStorageSync(prefix + 'wx_openId'+process.car.VUE_APP_WXAPPID),
+	setOpenId : (value) => uni.setStorageSync(prefix + 'wx_openId'+process.car.VUE_APP_WXAPPID, value),
+	
+	getOpenIdALI : () =>   uni.getStorageSync(prefix + 'ali_openId'+process.car.VUE_APP_WXAPPID),
+	setOpenIdALI : (value) => uni.setStorageSync(prefix + 'ali_openId'+process.car.VUE_APP_WXAPPID, value),
+	
+	getUserInfo : () => {
+		 return uni.getStorageSync(prefix + 'xpgj_wx_user_info')
+	},
+
+	setPersonInfo : (value) => uni.setStorageSync(prefix + 'personInfo', value),
+	setPersonInfoPlus : (value) => uni.setStorageSync(prefix + 'personInfoPlus', value),
+	
+	setUserInfo : (value) => uni.setStorageSync(prefix + 'xpgj_wx_user_info', value),
+	
+	getToken : (options) => {
+		//不同权限 ,不同token
+	
+		return uni.getStorageSync(prefix + 'token')
+	},
+	setToken : (value) => {
+		uni.setStorageSync(prefix + 'token', value)
+		
+		if(value){
+			var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
+			uni.setStorageSync(prefix + 'token_tdate', tdate)
+		}
+	}
+	,
+	getGetElderModeClass : () => {
+		 return uni.getStorageSync(prefix + 'getElderModeClass')
+	},
+	setGetElderModeClass : (value) => uni.setStorageSync(prefix + 'getElderModeClass', value),
+	
+}
+
+module.exports = app

+ 92 - 0
apis/utils/request.js

@@ -0,0 +1,92 @@
+import  carhelp from '@/apis/utils/mixin.js'
+import requestSon from './requestSon.js';
+
+
+const request = (options) => {
+	//记录请求次数和响应次数
+	var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
+	var token_tdate=carhelp.get("token_tdate");//每10分钟存储一次token
+	
+	var token=carhelp.getToken(options);
+	
+	 if(token_tdate&&token_tdate==tdate){
+	 	return requestSon(options);
+	 }
+	 var openId=carhelp.getOpenId()
+	 
+	var  urlindex="/wechat/findUserInfo"
+	var k=options.url.indexOf(urlindex)==-1;
+	
+	 if(!openId&&k){
+		 return
+	 }
+	if(!k){
+		return requestSon(options);
+	}
+	
+	return new Promise((resolve, reject) => {
+		 var loginurl="/mobile/employeeUser/findByOpenId"
+		 
+		uni.request({
+			method:'get',
+			url: process.car.BASE_URL + loginurl,
+			data: {
+				openId:openId,
+			
+			},
+			
+			header: {
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				//'Authorization':token
+			}
+		}).then((response) => {
+ 			let [error, res] = response;
+			
+			
+			if (res.data.code == 200&&res.data.result) {
+				
+				var token = res ? res.data.data.token : '';
+				carhelp.setPersonInfo(res.data.data.regUser );
+				
+				carhelp.setToken(token);
+				carhelp.setPersonInfoPlus(res.data.data);
+				
+				options.token=token
+				
+				var isson= requestSon(options)
+				
+				resolve(isson);
+				 
+			} else  if(res.data.code == 415||(res.data.code == 200&&!res.data.result)||res.data.code == 400){
+				
+				//var url=window.location.href.split("#")[1]
+			
+				console.log("没有免登陆 ----------------"+options.url)
+				//var url="/pages/login/index?message=请登录&back="+ url+"&phone="+options.data.phone
+				var thisurl='/pages/login/login';
+				
+				if(options&&options.data&&options.data.jpcode){
+					thisurl+="?jpcode="+options.data.jpcode
+				}
+				carhelp.signOut()
+				uni.redirectTo({
+					url: thisurl
+				})
+				
+				
+				
+			 
+				
+			}else{
+		
+				reject(res.data.message)
+			}
+		}).catch(error => {
+			
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request

+ 70 - 0
apis/utils/requestSon.js

@@ -0,0 +1,70 @@
+import  carhelp from '@/apis/utils/mixin.js'
+
+//记录请求次数和响应次数
+let reqCount = 0,
+	resCount = 0;
+var baseUrl=process.car.BASE_URL;
+
+if (process.env.NODE_ENV === "development") {
+	//baseUrl="http://192.168.33.230:8086/jp-employment-server";
+}
+const request = (options) => {
+	var token=carhelp.getToken(options);
+	
+	reqCount++;
+	 
+	return new Promise((resolve, reject) => {
+		//如果特殊链接需要传入token
+		if(options&&options.token){
+			token=options.token;
+		}
+		uni.request({
+			method: options.method?options.method:'get',
+			url: baseUrl + options.url,
+			data: options.data?options.data:{},
+			
+			header: options.header?{
+				...options.header,
+				'Authorization':token
+			}:{
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				'Authorization':token
+			}
+		}).then((response) => {
+			//for(var t = Date.now(); Date.now() - t <= 2000;);
+			
+			resCount++
+			//防止连续请求多个接口时loading闪现
+			let [error, res] = response;
+			
+			
+			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				console.log("请先注册信息请先注册信息")
+				carhelp.signOut()
+				// uni.redirectTo({
+				// 	url: 'pages/login/index'
+				// })
+				return;
+			}
+			
+			if (res.data.code != 200) {
+				reject(res.data.message)
+			} else {
+				if(!res.data.result){
+					
+					reject(res.data.message);
+				}else{
+					resolve(res.data);
+				}
+			
+			}
+		}).catch(error => {
+			resCount++
+		
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request

+ 76 - 0
apis/utils/requestWhite.js

@@ -0,0 +1,76 @@
+import  carhelp from '@/apis/utils/mixin.js'
+
+//记录请求次数和响应次数
+let reqCount = 0,
+	resCount = 0;
+//var token=carhelp.getToken();
+var baseUrl=process.car.BASE_URL;
+
+if (process.env.NODE_ENV === "development") {
+	//baseUrl="http://192.168.33.90:8086/jp-employment-server";
+}
+const request = (options) => {
+	var token=carhelp.getToken(options);
+	
+	reqCount++;
+	 
+	return new Promise((resolve, reject) => {
+		//如果特殊链接需要传入token
+		if(options&&options.token){
+			token=options.token;
+		}
+		uni.request({
+			method: options.method?options.method:'get',
+			url: baseUrl + options.url,
+			data: options.data?options.data:{},
+			
+			header: options.header?{
+				...options.header,
+				'Authorization':token
+			}:{
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				'Authorization':token
+			}
+		}).then((response) => {
+			//for(var t = Date.now(); Date.now() - t <= 2000;);
+			
+			resCount++
+			//防止连续请求多个接口时loading闪现
+			let [error, res] = response;
+			
+			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				carhelp.signOut()
+				uni.redirectTo({
+					url: '/pages/login/login'
+				})
+				return;
+			}
+			
+			if (res.data.code != 200) {
+				reject(res.data.message)
+			} else {
+				
+				if(options.data&&options.data.noerror){
+					resolve(res.data);
+				}else{
+					if(!res.data.result){
+						uni.showToast({
+							title: res.data.message,
+							position:'bottom'
+						})
+					}
+					resolve(res.data);
+				}
+				
+			
+			}
+		}).catch(error => {
+			resCount++
+		
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request

+ 241 - 0
apis/utils/wxJsApi.js

@@ -0,0 +1,241 @@
+import wx from 'weixin-js-sdk'
+import * as API_WeiXin from '@/apis/weixin.js'
+import * as API_Common from '@/apis/common.js'
+
+import Qs from 'qs';
+import request from './request.js'
+export function addSysLog(message) {
+
+	return request({
+		url: '/mobile/sysLogApi/submit',
+		data: Qs.stringify({
+			message: JSON.stringify(message)
+		}),
+		method: 'post',
+	})
+}
+//获取微信配置
+export function getWxConfig(jsApiList) {
+	var jsApiList = jsApiList || ['chooseImage', 'getLocalImgData', 'scanQRCode','openLocation'];
+	 
+	let promise = (jsApiList => {
+		return new Promise((resolve, reject) => {
+//			console.log(jsApiList);
+			API_WeiXin.getConfig().then(response => {
+				var wxconfig = response.data.wxConfig;
+			
+				wx.config({
+					debug: false, // 开启调试模式,
+					appId: wxconfig.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
+					timestamp: wxconfig.timestamp, // 必填,生成签名的时间戳
+					nonceStr: wxconfig.nonceStr, // 必填,生成签名的随机串
+					signature: wxconfig.signature, // 必填,签名,见附录1
+					jsApiList: jsApiList, // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+					openTagList:['wx-open-subscribe']
+				});
+				wx.ready(function() {
+					resolve(response.data);
+				})
+				wx.error(function(res) {
+					reject('微信api配置出错');
+				});
+			}).catch(error => {
+				//mui.toast(error);
+				reject(error);
+			})
+		})
+	})(jsApiList)
+
+	return promise;
+}
+
+//选择图片,多图上传和单图上传的回调处理不一样
+export function chooseImage(count,islocalId) {
+	var count = count || 1;
+	let promise = new Promise((resolve, reject) => {
+		wx.chooseImage({
+			count: count,
+			sizeType: ['compressed'],
+			sourceType: ['album', 'camera'],
+			success: function(res) {
+				 
+				var localIds = res.localIds;
+				
+				if(islocalId){
+					
+					resolve(localIds);
+				}else{
+					if (count == 1) {
+						wx.getLocalImgData({
+							localId: localIds[0],
+							success: function(res) {
+								resolve(res);
+							}
+						});
+					} else {
+						resolve(localIds);
+					}
+				}
+				
+			}
+		});
+	});
+	return promise;
+}
+
+
+
+
+//获取图片,用于多图上传时的递归处理
+export function getLocalImgData(localId, fun) {
+	wx.getLocalImgData({
+		localId: localId,
+		success: function(res) {
+			fun(res);
+		}
+	});
+}
+
+//上传图片
+export function uploadPic(imgBase64) {
+	let promise = new Promise((resolve, reject) => {
+		var formData = new FormData();
+		formData.append('photoName', '1.jpg');
+		formData.append('photoBase64Data', imgBase64);
+
+	
+		API_Common.uploadBase64(formData).then(response => {
+			resolve(response);
+		}).catch(error => {
+			//mui.toast(error);
+			reject(error);
+		})
+	});
+	return promise;
+}
+
+//获取坐标
+export function getLocation() {
+	if(process.env.NODE_ENV === "development" && process.car.SIMPLE_RUN){
+		
+		let promise =new Promise((resolve, reject) => {
+			var obj= {
+			longitude:112.28541,
+			latitude:30.308354,
+			errMsg:"getLocation:ok"
+			}
+			resolve(obj);
+		})
+		return promise
+	}
+	let promise = new Promise((resolve, reject) => {
+		
+		wx.ready(function() {
+			wx.getLocation({
+				type: 'gcj02', // 默认为wgs84的gps坐标,可传入'gcj02'
+				success: function(res) {
+					resolve(res);
+				},
+				faile: function(res) {
+					reject(res);
+				},
+				fail: function(res) {
+					if (res.errMsg == 'getLocation:timeout') {
+						
+						res="定位超时,请检查是否开启'定位'"
+					} else if (res.errMsg == 'getLocation:ERROR_NETWORK') {
+						//mui.alert("网络异常");
+						res="定位超时,请检查是否开启'定位'"
+					} else if (res.errMsg == 'getLocation:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
+						res="没开启系统定位"
+						//mui.alert("没开启系统定位");
+					} else if (res.errMsg == 'getLocation:system permission denied') {
+						res="未给微信位置授权"
+						//mui.alert("未给微信位置授权");
+					} else if (res.errMsg == 'getLocation:location permission') {
+						res="未给微信位置授权"
+						//mui.alert("未给微信位置授权");
+					} else if (res.errMsg == 'getLocation:auth denied') {
+						res="用户在小程序中未授权"
+						//mui.alert("用户在小程序中未授权");
+					} else if (res.errMsg == 'getLocation:fail authorize no response') {
+						res="用户在小程序中未授权"
+						//mui.alert("用户在小程序中未授权");
+					} else if (res.errMsg == 'getLocation:gps closed') {
+						res="用户已取消定位"
+						//mui.alert("用户已取消定位");
+					}
+					reject(res);
+				},
+				complete() {}
+			})
+		})
+	})
+	return promise;
+}
+
+//扫描二维码
+//扫描二维码
+export function scanQRCode(needResult,obj,sz) {
+	var scanTypeList=["qrCode"];
+	
+	if(sz){
+		scanTypeList=sz
+	}
+	let promise = new Promise((resolve, reject) => {
+		wx.scanQRCode({
+			needResult: needResult,
+			scanType: scanTypeList,
+			success: function(res) {
+				var url = res.resultStr;
+				resolve(url);
+			},
+			faile: function(res) {
+				reject(res);
+			},
+			
+			fail: function(res) {
+
+				reject(res);
+			},
+			complete() {
+				if(obj){
+					obj.showLoading(false)	
+				}
+			}
+		})
+	});
+	return promise;
+}
+
+export function requestSubscribeMessage(sz) {
+	 
+	let promise = new Promise((resolve, reject) => {
+		wx.ready(function() {
+			wx.requestSubscribeMessage({
+			
+			tmplIds: sz,
+			
+				success(res) { 
+						resolve(res);
+				}
+				
+			})
+		})
+		
+
+	});
+	return promise;
+}
+
+
+
+
+//扫描二维码
+export function openLocation(obj) {
+ 
+	let promise = new Promise((resolve, reject) => {
+		wx.openLocation(obj)
+	});
+	return promise;
+}

+ 52 - 0
apis/utils/wxpay.js

@@ -0,0 +1,52 @@
+ 
+function onBridgeReady(params) {
+	console.log("onBridgeReady+"+new Date().getTime())
+	
+	uni.showLoading({
+		mask:true,title:'加载中...'
+	})
+	//记录要回跳的url
+	window.WeixinJSBridge.invoke(
+		'getBrandWCPayRequest', {
+			'appId': params.appId, // 公众号名称,由商户传入
+			'timeStamp': params.timeStamp, // 时间戳,自1970年以来的秒数
+			'nonceStr': params.nonceStr, // 随机串
+			'package': params.package,
+			'signType': params.signType, // 微信签名方式:
+			'paySign': params.paySign // 微信签名
+		},
+		(res) => {
+			//alert(JSON.stringify(res)); // 支付取消会执行 支付成功不会
+			if (res.err_msg == 'get_brand_wcpay_request:ok') {
+				//alert("支付成功") // 不会执行
+				//window.location.href = params.url
+			} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
+				//alert("支付取消") // 会执行
+				 uni.hideLoading();
+			} else {
+				 uni.hideLoading();
+			}
+		}
+	)
+}
+
+export const wxPayJs = (params) => {
+	console.log("wxPayJs+"+new Date().getTime())
+	
+	if (typeof window.WeixinJSBridge === 'undefined') {
+		if (document.addEventListener) {
+			document.addEventListener('WeixinJSBridgeReady', function() {
+				onBridgeReady(params)
+			}, false)
+		} else if (document.attachEvent) {
+			document.attachEvent('WeixinJSBridgeReady', function() {
+				onBridgeReady(params)
+			})
+			document.attachEvent('onWeixinJSBridgeReady', function() {
+				onBridgeReady(params)
+			})
+		}
+	} else {
+		onBridgeReady(params)
+	}
+}

+ 77 - 0
apis/weixin.js

@@ -0,0 +1,77 @@
+import request from '@/apis/utils/request'
+import requestWhite from '@/apis/utils/requestWhite.js';
+// import requestAli from '../utils/requestParking.js';
+ 
+import Qs from 'qs';
+
+//微信支付
+export function wxpay(data) {
+	if(data){
+		data.type="E"
+	}
+	if(data&&!data.recordId){
+		data.recordId=''
+	}
+	return request({
+		url: '/wxPay/wxJsapiPay',
+		data: data,
+		method: 'post',
+	})
+}
+
+
+export function alpay(data) {
+	if(data&&!data.recordId){
+		data.recordId=''
+	}
+	return request({
+		url: '/aliPay/tradePrecreatePay',
+		data: data,
+		method: 'post',
+	})
+}
+
+//根据code换取openid
+export function getDataByCode(code) {
+	return request({
+		url: '/wechat/findUserInfo/' + code,
+		params: {},
+		method: 'get',
+	})
+}
+
+// export function getDataByCodeALI(code) {
+// 	return requestAli({
+// 		url: '/aliPay/findUserInfo/' + code,
+// 		params: {},
+// 		method: 'get',
+// 	})
+// }
+
+
+//获得配置
+export function getConfig() {
+	return requestWhite({
+		url: '/wechat/getConfig',
+		data: {
+			url: window.location.href.split('#')[0]
+		},
+		method: 'get',
+	})
+}
+
+export function checkSubscribe(data) {
+	return requestWhite({
+		url: '/wechat/checkSubscribe',
+		data: data,
+		method: 'post',
+	})
+}
+
+export function addPoint(data) {
+	return request({
+		url: '/mobile/points/addPoint',
+		data: data,
+		method: 'post',
+	})
+}

+ 0 - 0
assets/css/style.css


+ 7 - 0
assets/font/jptime.css

@@ -0,0 +1,7 @@
+@font-face {
+	font-family: "JPTIME";
+	src:url("@/assets/font/jptime.otf");
+}
+.JPTIME {
+    font-family: JPTIME
+}

BIN
assets/font/jptime.otf


+ 22 - 0
assets/icon/icon.vue

@@ -0,0 +1,22 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

BIN
assets/img/3chat.png


BIN
assets/img/AUgyKM0@1x.png


BIN
assets/img/AUgyKM0@1x2.png


BIN
assets/img/AUgyKM1@1x.png


BIN
assets/img/Copy PEokWS2 Copy 1@1x.png


BIN
assets/img/Image@1.png


BIN
assets/img/Image@2.png


BIN
assets/img/Image@3.png


BIN
assets/img/Image@4.png


BIN
assets/img/Image@5.png


BIN
assets/img/Image@6.png


BIN
assets/img/Image@7(1).png


BIN
assets/img/Image@7.png


BIN
assets/img/Image@8(1).png


BIN
assets/img/Image@8.png


+ 6 - 0
assets/img/Image@9.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1165 1024" width="40" height="35.19" style="" filter="none">
+    
+    <g>
+    <path d="M768 943.304348h-584.347826c-16.695652 0-30.608696 16.695652-30.608696 38.956522s13.913043 38.956522 30.608696 38.956521h584.347826c16.695652 0 30.608696-16.695652 30.608696-38.956521s-13.913043-38.956522-30.608696-38.956522zM620.521739 692.869565H114.086957c-22.26087 0-38.956522-19.478261-38.956522-41.73913V119.652174c0-22.26087 16.695652-41.73913 38.956522-41.739131h865.391304c22.26087 0 38.956522 19.478261 38.956522 41.739131v267.130435c27.826087 8.347826 52.869565 22.26087 75.130434 38.956521v-306.086956c0-66.782609-50.086957-119.652174-114.086956-119.652174H114.086957C50.086957 0 0 52.869565 0 119.652174v531.478261c0 66.782609 50.086957 119.652174 114.086957 119.652174h517.565217c-8.347826-25.043478-11.130435-50.086957-11.130435-77.913044z" fill="rgba(255,255,255,1)" p-id="4227" stroke="none"></path><path d="M667.826087 320h-114.086957l64-147.478261h-94.608695l-100.173913 228.173913h94.608695l-64 197.565218zM923.826087 431.304348c-133.565217 0-242.086957 108.521739-242.086957 242.086956s108.521739 242.086957 242.086957 242.086957 242.086957-108.521739 242.086956-242.086957-108.521739-242.086957-242.086956-242.086956z m0 406.260869c-89.043478 0-164.173913-72.347826-164.173913-164.173913s72.347826-164.173913 164.173913-164.173913c89.043478 0 164.173913 72.347826 164.173913 164.173913s-75.130435 164.173913-164.173913 164.173913z" fill="rgba(255,255,255,1)" p-id="4228" stroke="none"></path>
+    </g>
+  </svg>

BIN
assets/img/PEokWS2@1x.png


BIN
assets/img/annular.png


+ 6 - 0
assets/img/antFill-account-book(1).svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(24,90,198,1))">
+    <defs><linearGradient id="ik4s6tsjU2GQ8hr344UzQJ1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 448, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z" fill="url(#ik4s6tsjU2GQ8hr344UzQJ1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-account-book.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(24,90,198,1))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQn7XCn9I1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 448, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z" fill="url(#ik4s6tsjU23UVPQn7XCn9I1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-alert Copy 1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="20" height="20" style="" filter="none">
+    
+    <g>
+    <path d="M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z" fill="rgba(255,61,0,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-alert(1).svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="20" height="20" style="" filter="none">
+    
+    <g>
+    <path d="M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z" fill="rgba(39,177,72,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-alert(2).svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="12" height="12" style="" filter="none">
+    
+    <g>
+    <path d="M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z" fill="rgba(255,255,255,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-alert.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="16" height="16" style="" filter="none">
+    
+    <g>
+    <path d="M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z" fill="rgba(42,186,72,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-notification(1).svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,75,23,0.67))">
+    <defs><linearGradient id="ik9jjnunU2GKmWhPegPOpa1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 448, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.43"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z" fill="url(#ik9jjnunU2GKmWhPegPOpa1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antFill-notification.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,75,23,0.67))">
+    <defs><linearGradient id="ik9jjnunU2GQS6NGKz4tjG1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 448, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.43"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z" fill="url(#ik9jjnunU2GQS6NGKz4tjG1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/antOutline-alipay-circle bQiHn7m.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="20" height="20" style="" filter="none">
+    
+    <g>
+    <path d="M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z" fill="rgba(22,119,255,1)"></path>
+    </g>
+  </svg>

BIN
assets/img/chart@1x.png


BIN
assets/img/circleCopy1@1x.png


BIN
assets/img/e-invoice.png


BIN
assets/img/electricityStatistics@3x.png


+ 6 - 0
assets/img/energy1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M883.541333 106.666667c18.688 0 33.792 15.104 33.792 33.792v743.082666a33.792 33.792 0 0 1-33.792 33.792H140.458667a33.792 33.792 0 0 1-33.792-33.792V140.458667c0-18.688 15.104-33.792 33.792-33.792h743.082666z m-298.965333 327.424a11.52 11.52 0 0 0-15.914667 0.085333l-215.552 211.2a10.709333 10.709333 0 0 0-3.2 8.533333l-0.042666 0.853334a11.093333 11.093333 0 0 0 11.264 10.922666h113.664l-37.845334 153.6a10.666667 10.666667 0 0 0-0.298666 2.645334 10.666667 10.666667 0 0 0 2.773333 11.178666 11.434667 11.434667 0 0 0 15.914667-0.085333l215.552-211.2a10.666667 10.666667 0 0 0-2.901334-17.365333 11.434667 11.434667 0 0 0-6.997333-2.389334H550.826667l36.992-155.989333a10.581333 10.581333 0 0 0 0.042666-4.608 10.752 10.752 0 0 0-3.328-7.381333z m231.424-259.84H208c-17.109333 0-31.573333 12.8-33.536 29.781333l-0.256 3.968v135.125333c0 17.109333 12.8 31.530667 29.866667 33.536l3.925333 0.213334h608c17.109333 0 31.573333-12.8 33.536-29.824l0.256-3.925334V208a33.792 33.792 0 0 0-33.792-33.792zM512 207.957333c18.645333 0 33.792 15.104 33.792 33.792V309.333333a33.792 33.792 0 0 1-67.584 0V241.792c0-18.688 15.146667-33.792 33.792-33.792z m168.874667 0c18.688 0 33.792 15.104 33.792 33.792V309.333333a33.792 33.792 0 0 1-67.541334 0V241.792c0-18.688 15.104-33.792 33.749334-33.792z m-337.749334 0c18.645333 0 33.749333 15.104 33.749334 33.792V309.333333a33.792 33.792 0 1 1-67.541334 0V241.792c0-18.688 15.104-33.792 33.792-33.792z" fill="rgba(22,119,255,1)" p-id="4467" stroke="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/energyMeter.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M883.541333 106.666667c18.688 0 33.792 15.104 33.792 33.792v743.082666a33.792 33.792 0 0 1-33.792 33.792H140.458667a33.792 33.792 0 0 1-33.792-33.792V140.458667c0-18.688 15.104-33.792 33.792-33.792h743.082666z m-298.965333 327.424a11.52 11.52 0 0 0-15.914667 0.085333l-215.552 211.2a10.709333 10.709333 0 0 0-3.2 8.533333l-0.042666 0.853334a11.093333 11.093333 0 0 0 11.264 10.922666h113.664l-37.845334 153.6a10.666667 10.666667 0 0 0-0.298666 2.645334 10.666667 10.666667 0 0 0 2.773333 11.178666 11.434667 11.434667 0 0 0 15.914667-0.085333l215.552-211.2a10.666667 10.666667 0 0 0-2.901334-17.365333 11.434667 11.434667 0 0 0-6.997333-2.389334H550.826667l36.992-155.989333a10.581333 10.581333 0 0 0 0.042666-4.608 10.752 10.752 0 0 0-3.328-7.381333z m231.424-259.84H208c-17.109333 0-31.573333 12.8-33.536 29.781333l-0.256 3.968v135.125333c0 17.109333 12.8 31.530667 29.866667 33.536l3.925333 0.213334h608c17.109333 0 31.573333-12.8 33.536-29.824l0.256-3.925334V208a33.792 33.792 0 0 0-33.792-33.792zM512 207.957333c18.645333 0 33.792 15.104 33.792 33.792V309.333333a33.792 33.792 0 0 1-67.584 0V241.792c0-18.688 15.146667-33.792 33.792-33.792z m168.874667 0c18.688 0 33.792 15.104 33.792 33.792V309.333333a33.792 33.792 0 0 1-67.541334 0V241.792c0-18.688 15.104-33.792 33.749334-33.792z m-337.749334 0c18.645333 0 33.749333 15.104 33.749334 33.792V309.333333a33.792 33.792 0 1 1-67.541334 0V241.792c0-18.688 15.104-33.792 33.792-33.792z" fill="rgba(22,119,255,1)" p-id="4467" stroke="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/far fa-clock.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,0,0,0.5))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQhjfMKog1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 256, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z" fill="url(#ik4s6tsjU23UVPQhjfMKog1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-bell.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 448 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(182,77,0,1))">
+    <defs><linearGradient id="ik4s6tsjU2GQ0kwGd7QnhI1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 224, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z" fill="url(#ik4s6tsjU2GQ0kwGd7QnhI1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-book.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 448 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,132,70,1))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQqWmeej01" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 224, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z" fill="url(#ik4s6tsjU23UVPQqWmeej01)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-chart-pie(1).svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 544 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,130,118,1))">
+    <defs><linearGradient id="ik4s6tsjU4h0KD89gbi3M61" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 272, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z" fill="url(#ik4s6tsjU4h0KD89gbi3M61)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-chart-pie.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 544 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(0,130,118,1))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQvByGT4s1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 272, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z" fill="url(#ik4s6tsjU23UVPQvByGT4s1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-exclamation-triangle Copy 1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 576 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(182,77,0,1))">
+    <defs><linearGradient id="ik4s6tsjU2GQ0kwGd7QnhI1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 288, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" fill="url(#ik4s6tsjU2GQ0kwGd7QnhI1)"></path>
+    </g>
+  </svg>

BIN
assets/img/fas fa-exclamation-triangle Copy 2@3x.png


+ 6 - 0
assets/img/fas fa-exclamation-triangle.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 576 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(182,77,0,1))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQqVBCLZ31" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 288, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" fill="url(#ik4s6tsjU23UVPQqVBCLZ31)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/fas fa-file-alt.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 384 512" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(52,0,255,0.75))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQfOJymt11" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 192, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z" fill="url(#ik4s6tsjU23UVPQfOJymt11)"></path>
+    </g>
+  </svg>

BIN
assets/img/feedbackPic.png


+ 6 - 0
assets/img/iconPark-electric-wave 1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="12" height="12" style="" filter="none">
+    
+    <g>
+    <rect x="6" y="6" width="36" height="36" rx="3" fill="none" stroke="rgba(35,186,178,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></rect><path d="M12 25H15L19 14L22 36L27 23L31 29L34 25H37" stroke="rgba(35,186,178,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/iconPark-order.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="32" height="32" style="border-color: rgba(187,187,187,1);border-width: 0;border-style: solid" filter="drop-shadow(0px 2px 4px rgba(0,59,18,0.67))">
+    
+    <g>
+    <rect width="48" height="48" fill="rgba(255,255,255,1)" fill-opacity="0.01" stroke="none"></rect><path d="M33.0499 7H38C39.1046 7 40 7.89543 40 9V42C40 43.1046 39.1046 44 38 44H10C8.89543 44 8 43.1046 8 42L8 9C8 7.89543 8.89543 7 10 7H16H17V10H31V7H33.0499Z" fill="none" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linejoin="round"></path><rect x="17" y="4" width="14" height="6" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></rect><path d="M26.9996 19L19 27.0012H29.004L21.0003 35.0018" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/iconPark-order2.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="20" height="20" style="border-color: rgba(187,187,187,1);border-width: 0;border-style: solid" filter="none">
+    
+    <g>
+    <rect width="48" height="48" fill="rgba(51,51,51,1)" fill-opacity="0.01" stroke="none"></rect><path d="M33.0499 7H38C39.1046 7 40 7.89543 40 9V42C40 43.1046 39.1046 44 38 44H10C8.89543 44 8 43.1046 8 42L8 9C8 7.89543 8.89543 7 10 7H16H17V10H31V7H33.0499Z" fill="none" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linejoin="round"></path><rect x="17" y="4" width="14" height="6" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></rect><path d="M26.9996 19L19 27.0012H29.004L21.0003 35.0018" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/iconPark-thermometer.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="12" height="12" style="" filter="none">
+    
+    <g>
+    <g fill="rgba(78,96,246,1)"><rect width="48" height="48" fill="rgba(78,96,246,1)" fill-opacity="0.01" stroke-linejoin="round" stroke-width="4" stroke="none" fill-rule="evenodd"></rect><g transform="translate(14.000000, 6.000000)" fill="rgba(78,96,246,1)"><path d="M4,19.9992676 L4,4 C4,0.686291501 6.6862915,-2 10,-2 C13.3137085,-2 16,0.686291501 16,4 L16,19.9992676 C18.4288934,21.8236803 20,24.7283643 20,28 C20,33.5228475 15.5228475,38 10,38 C4.4771525,38 0,33.5228475 0,28 C0,24.7283643 1.5711066,21.8236803 4,19.9992676 Z" stroke="rgba(78,96,246,1)" fill="none" fill-rule="nonzero" stroke-linejoin="round" stroke-width="4"></path><path d="M10,11 L10,24" stroke="rgba(78,96,246,1)" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" fill="none" fill-rule="evenodd"></path><circle stroke="rgba(78,96,246,1)" fill="none" fill-rule="nonzero" cx="10" cy="28" r="4" stroke-linejoin="round" stroke-width="4"></circle></g></g>
+    </g>
+  </svg>

+ 6 - 0
assets/img/iconPark-wallet.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="32" height="32" style="border-color: rgba(187,187,187,1);border-width: 0;border-style: solid" filter="drop-shadow(0px 2px 4px rgba(0,7,142,0.78))">
+    
+    <g>
+    <rect width="48" height="48" fill="rgba(255,255,255,1)" fill-opacity="0.01" stroke="none"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M17.9821 11.9689L31.7847 4L36.3971 11.9889L17.9821 11.9689Z" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></path><path d="M4 14C4 12.8954 4.89543 12 6 12H42C43.1046 12 44 12.8954 44 14V42C44 43.1046 43.1046 44 42 44H6C4.89543 44 4 43.1046 4 42V14Z" fill="none" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linejoin="round"></path><path d="M35.25 33H44V23H35.25C32.3505 23 30 25.2386 30 28C30 30.7614 32.3505 33 35.25 33Z" fill="none" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linejoin="round"></path><path d="M44 16.5V40.5" stroke="rgba(255,255,255,1)" stroke-width="4" stroke-linecap="round" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/if-support.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(255,0,54,0.5))">
+    <defs><linearGradient id="ik4s6tsjU23UVPQd5riU3Z1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 16, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M10.624 24.192l-4.16 1.92c-0.608 0.256-1.248 0.672-1.504 1.312 0 0-0.48 1.088-1.024 2.592h11.232l0.672-4.32-3.232-3.168-1.984 1.664zM27.072 27.424c-0.256-0.672-0.896-1.056-1.536-1.312l-4.128-1.92-2.016-1.664-3.2 3.168 0.64 4.32h11.232c-0.512-1.504-0.992-2.592-0.992-2.592zM5.888 16.736h1.184c0.004 0 0.009 0 0.014 0 0.558 0 1.010-0.452 1.010-1.010 0-0.005-0-0.010-0-0.015v0.001-3.968c0-0.002 0-0.004 0-0.006 0-0.446-0.293-0.825-0.697-0.953l-0.007-0.002c0.48-4.384 3.552-6.944 8.544-7.104h0.16c4.992 0.16 8.032 2.72 8.544 7.104-0.411 0.13-0.704 0.508-0.704 0.954 0 0.002 0 0.004 0 0.006v-0 3.968c-0 0.004-0 0.009-0 0.014 0 0.558 0.452 1.010 1.010 1.010 0.005 0 0.010-0 0.015-0h1.183c0.004 0 0.009 0 0.014 0 0.558 0 1.010-0.452 1.010-1.010 0-0.005-0-0.010-0-0.015v0.001-3.968c0-0.48-0.352-0.896-0.832-0.992-0.224-2.432-1.152-4.48-2.688-5.984-1.632-1.6-3.968-2.528-6.752-2.752 0 0-0.288-0.032-0.864-0.032-0.608 0-0.896 0.032-0.896 0.032-2.784 0.224-5.12 1.152-6.752 2.752-1.536 1.504-2.464 3.552-2.688 5.984-0.48 0.096-0.832 0.512-0.832 0.992v3.968c0 0.544 0.448 1.024 1.024 1.024zM23.488 12.16c0.064-4.608-2.144-7.36-7.488-7.36s-7.52 2.752-7.488 7.36c0.096 6.656 3.264 10.592 7.488 10.592s7.424-3.936 7.488-10.592z" fill="url(#ik4s6tsjU23UVPQd5riU3Z1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/if-ui-dial-phone 1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M32 6.88c0-1.12-2.176-2.592-4.864-3.040-3.338-0.58-7.182-0.912-11.104-0.912s-7.766 0.332-11.506 0.969l0.402-0.057c-2.72 0.448-4.896 1.92-4.896 3.040 0 0.032 0.032 0.064 0.032 0.096-0.038 0.104-0.061 0.225-0.064 0.351l-0 0.001v3.776c0 0.512 0.448 0.96 0.992 0.96h4.928c0.544 0 0.992-0.448 0.992-0.96v-3.456c6.016-0.8 12.16-0.8 18.176 0v3.68c0 0.544 0.448 0.96 0.992 0.96h4.928c0.544 0 0.992-0.416 0.992-0.96v-3.936c0-0.096-0.032-0.192-0.064-0.288 0.032-0.064 0.064-0.128 0.064-0.224zM29.472 18.464l-5.408-1.824c-0.416-0.128-0.992-0.256-1.568-0.384v-5.984h-2.272v3.52h-8.384v-3.52h-2.304v6.016c-0.512 0.128-0.992 0.224-1.376 0.352l-5.28 1.792c-1.024 0.352-1.856 1.536-1.856 2.624v6.048c-0 0.004-0 0.008-0 0.012 0 1.071 0.869 1.94 1.94 1.94 0.004 0 0.008 0 0.013-0h26.399c0.004 0 0.008 0 0.012 0 1.071 0 1.94-0.869 1.94-1.94 0-0.004 0-0.008-0-0.013v0.001-6.048c0-1.088-0.832-2.272-1.856-2.592zM15.872 26.88c-2.944 0-5.312-2.4-5.312-5.344s2.368-5.344 5.312-5.344c2.976 0 5.344 2.4 5.344 5.344s-2.368 5.344-5.344 5.344zM15.872 18.688c-1.568 0-2.848 1.28-2.848 2.848s1.28 2.848 2.848 2.848c1.6 0 2.88-1.28 2.88-2.848s-1.28-2.848-2.88-2.848z" fill="rgba(255,255,255,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/invoice.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="88" height="88" style="" filter="none">
+    <defs><linearGradient id="U4cXjIfYEWS4gv1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 512, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="0.2" offset="0.08"></stop><stop stop-color="#ffffff" stop-opacity="0" offset="0.91"></stop></linearGradient></defs>
+    <g>
+    <path d="M775.1168 100.9664H272.4352c-70.4512 0-127.5392 57.088-127.5392 127.5392v610.048c0 35.8912 38.8608 58.368 69.9904 40.4992l108.544-62.3616a46.7456 46.7456 0 0 1 54.3744 5.632L493.056 925.184a46.67904 46.67904 0 0 0 62.1056 0.0512l116.3776-103.5264a46.72512 46.72512 0 0 1 54.5792-5.4272l106.24 62.0032c31.1296 18.176 70.2464-4.3008 70.2464-40.3456V228.5056c0.0512-70.4-57.0368-127.5392-127.488-127.5392z m-133.9392 448.0512a29.8496 29.8496 0 1 1 0 59.6992h-87.5008v53.8624a29.8496 29.8496 0 1 1-59.6992 0V608.768h-87.552a29.8496 29.8496 0 1 1 0-59.6992h87.5008v-36.4544H406.4256a29.8496 29.8496 0 1 1 0-59.6992h58.9312l-77.312-122.5216a29.9008 29.9008 0 0 1 9.3184-41.216 29.9008 29.9008 0 0 1 41.216 9.3184l84.736 134.2464L609.024 296.96c8.8064-13.9264 27.2896-18.1248 41.216-9.3184 13.9264 8.8064 18.1248 27.2896 9.3184 41.216l-78.336 123.9552h59.9552a29.8496 29.8496 0 1 1 0 59.6992h-87.5008v36.4544h87.5008z" fill="url(#U4cXjIfYEWS4gv1)" p-id="5440" stroke="none"></path>
+    </g>
+  </svg>

BIN
assets/img/jVzkNKE@1x(1).png


BIN
assets/img/jVzkNKE@1x(2).png


BIN
assets/img/jVzkNKE@1x.png


BIN
assets/img/logo.png


BIN
assets/img/map.png


+ 6 - 0
assets/img/md-check_circle vRxbRvD.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" width="66" height="66" style="" filter="none">
+    
+    <g>
+    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" fill="rgba(51,133,255,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/md-watch_later.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(52,0,255,0.75))">
+    <defs><linearGradient id="ik4s6tsjU4nxOU4Qybx1eu1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 12, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z" fill="url(#ik4s6tsjU4nxOU4Qybx1eu1)"></path>
+    </g>
+  </svg>

BIN
assets/img/meter@3x.png


BIN
assets/img/meterStatistics@3x.png


+ 6 - 0
assets/img/mineBackground.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="87" height="87" style="" filter="none">
+    <defs><linearGradient id="U2i4DeXxU3N318W7gSpJjg1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 512, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="0.18" offset="0"></stop><stop stop-color="#ffffff" stop-opacity="0" offset="0.87"></stop></linearGradient></defs>
+    <g>
+    <path d="M842.24 848.896V73.6L733.632 0.96 337.344 177.792v136.896L118.336 390.912v457.984H96v54.4h71.488v-480.64l290.496-95.168v575.872h201.088v-58.944h-44.736v-526.08l-105.408-63.488-118.016 41.088v-86.4L676.928 82.56v820.736h201.152v-54.4h-35.84z" fill="url(#U2i4DeXxU3N318W7gSpJjg1)" p-id="17864" stroke="none"></path><path d="M203.264 545.088l209.984-68.032V386.432L203.264 458.88v86.144zM203.264 663.04l209.984-45.44V527.04l-209.984 54.4v81.6zM203.264 785.408l209.984-27.2V667.52l-209.984 31.744zM203.264 903.296l209.984-4.48v-90.752l-209.984 9.088v86.144z" fill="url(#U2i4DeXxU3N318W7gSpJjg1)" p-id="17865" stroke="none"></path>
+    </g>
+  </svg>

File diff suppressed because it is too large
+ 3 - 0
assets/img/modalIcon.svg


+ 6 - 0
assets/img/outputVoltage.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M512 992C248 992 32 776 32 512S248 32 512 32c56 0 112 12 168 28 20 8 32 32 24 52s-32 32-52 24C608 120 560 112 512 112 292 112 112 292 112 512S292 912 512 912 912 732 912 512c0-72-20-140-56-200-12-20-4-44 16-56s44-4 56 16c40 72 64 156 64 240 0 264-216 480-480 480z" fill="rgba(42,186,72,1)" p-id="11115" stroke="none"></path><path d="M512 756c-16 0-28-8-36-24L312 388c-8-20 0-44 20-52s44 0 52 20l128 272L640 352c8-20 32-28 52-20s28 32 20 52l-164 344c-8 20-20 28-36 28z" fill="rgba(42,186,72,1)" p-id="11116" stroke="none"></path>
+    </g>
+  </svg>

BIN
assets/img/pImage@1x.png


BIN
assets/img/photo@x1.png


+ 6 - 0
assets/img/power.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024" width="10" height="10" style="" filter="none">
+    
+    <g>
+    <path d="M800 544h-102.4L640 313.6c-6.4-12.8-19.2-25.6-32-25.6s-25.6 6.4-32 19.2L486.4 588.8 448 441.6c-6.4-12.8-19.2-25.6-32-25.6s-25.6 6.4-32 19.2l-51.2 108.8H224c-19.2 0-32 19.2-32 32 0 19.2 12.8 32 32 32h128c12.8 0 25.6-6.4 25.6-19.2l25.6-51.2 44.8 172.8c6.4 12.8 12.8 25.6 32 25.6 12.8 0 25.6-6.4 32-19.2l89.6-281.6 38.4 147.2c6.4 12.8 19.2 25.6 32 25.6h128c19.2 0 32-19.2 32-32 0-19.2-12.8-32-32-32z" p-id="6255" fill="rgba(22,119,255,1)"></path><path d="M512 1024c-281.6 0-512-230.4-512-512s230.4-512 512-512c108.8 0 211.2 32 300.8 96 12.8 12.8 19.2 32 6.4 44.8s-32 19.2-44.8 6.4C697.6 89.6 608 64 512 64 262.4 64 64 262.4 64 512s198.4 448 448 448 448-198.4 448-448c0-76.8-19.2-153.6-57.6-224-6.4-12.8-6.4-32 12.8-44.8 12.8-6.4 32-6.4 44.8 12.8 38.4 76.8 64 166.4 64 256 0 281.6-230.4 512-512 512z" p-id="6256" fill="rgba(22,119,255,1)"></path>
+    </g>
+  </svg>

File diff suppressed because it is too large
+ 3 - 0
assets/img/powerFactor.svg


BIN
assets/img/qmJEzOi@1x.png


BIN
assets/img/record-chat.png


BIN
assets/img/recordChat.png


+ 1 - 0
assets/img/refresh-line.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="rgba(131,131,131,1)"><path d="M5.46257 4.43262C7.21556 2.91688 9.5007 2 12 2C17.5228 2 22 6.47715 22 12C22 14.1361 21.3302 16.1158 20.1892 17.7406L17 12H20C20 7.58172 16.4183 4 12 4C9.84982 4 7.89777 4.84827 6.46023 6.22842L5.46257 4.43262ZM18.5374 19.5674C16.7844 21.0831 14.4993 22 12 22C6.47715 22 2 17.5228 2 12C2 9.86386 2.66979 7.88416 3.8108 6.25944L7 12H4C4 16.4183 7.58172 20 12 20C14.1502 20 16.1022 19.1517 17.5398 17.7716L18.5374 19.5674Z"></path></svg>

+ 6 - 0
assets/img/riFill-alert-fill.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="20" height="20" style="" filter="none">
+    
+    <g>
+    <path d="M17.155 4l12.701 22c0.112 0.191 0.179 0.421 0.179 0.667 0 0.736-0.597 1.333-1.333 1.333h-25.403c-0.736-0-1.333-0.597-1.333-1.333 0-0.245 0.066-0.475 0.182-0.673l-0.003 0.006 12.701-22c0.235-0.401 0.664-0.667 1.155-0.667s0.92 0.265 1.151 0.66l0.003 0.006zM14.667 21.333v2.667h2.667v-2.667h-2.667zM14.667 12v6.667h2.667v-6.667h-2.667z" fill="rgba(126,147,176,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/riFill-bar-chart-fill.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="14" height="14" style="" filter="none">
+    
+    <g>
+    <path d="M4 16h5.333v12h-5.333v-12zM22.667 10.667h5.333v17.333h-5.333v-17.333zM13.333 2.667h5.333v25.333h-5.333v-25.333z" fill="rgba(255,255,255,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/riFill-building-fill.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="48" height="48" style="" filter="none">
+    <defs><linearGradient id="U4cXjIfYU4cl2DKt2lRhOf1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 16, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="0.2" offset="0.21"></stop><stop stop-color="#ffffff" stop-opacity="0" offset="0.91"></stop></linearGradient></defs>
+    <g>
+    <path d="M28 25.333h2.667v2.667h-29.333v-2.667h2.667v-20c0-0.736 0.597-1.333 1.333-1.333v0h13.333c0.736 0 1.333 0.597 1.333 1.333v0 20h2.667v-13.333h4c0.736 0 1.333 0.597 1.333 1.333v0 12zM9.333 14.667v2.667h5.333v-2.667h-5.333zM9.333 9.333v2.667h5.333v-2.667h-5.333z" fill="url(#U4cXjIfYU4cl2DKt2lRhOf1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/riFill-building-fill1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="20" height="20" style="" filter="none">
+    
+    <g>
+    <path d="M28 25.333h2.667v2.667h-29.333v-2.667h2.667v-20c0-0.736 0.597-1.333 1.333-1.333v0h13.333c0.736 0 1.333 0.597 1.333 1.333v0 20h2.667v-13.333h4c0.736 0 1.333 0.597 1.333 1.333v0 12zM9.333 14.667v2.667h5.333v-2.667h-5.333zM9.333 9.333v2.667h5.333v-2.667h-5.333z" fill="rgba(126,147,176,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/riFill-clipboard-fill.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="28" height="28" style="" filter="drop-shadow(0px 2px 4px rgba(182,77,0,1))">
+    <defs><linearGradient id="ik4s6tsjU5pAVmNhPSYuSK1" x1="0" x2="100%" y1="0" y2="0" gradientTransform="matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 16, 0)" gradientUnits="userSpaceOnUse"><stop stop-color="#ffffff" stop-opacity="1" offset="0.4"></stop><stop stop-color="#ffffff" stop-opacity="0.6" offset="1"></stop></linearGradient></defs>
+    <g>
+    <path d="M8 5.333v5.333h16v-5.333h2.676c0.731 0 1.324 0.593 1.324 1.324v21.352c-0.001 0.731-0.593 1.323-1.324 1.324h-21.352c-0.731-0.001-1.323-0.593-1.324-1.324v-21.352c0-0.731 0.593-1.324 1.324-1.324h2.676zM10.667 2.667h10.667v5.333h-10.667v-5.333z" fill="url(#ik4s6tsjU5pAVmNhPSYuSK1)"></path>
+    </g>
+  </svg>

Some files were not shown because too many files changed in this diff