hmp 4 tahun lalu
induk
melakukan
d549d70a05

+ 1 - 1
assets/colorui/app.scss

@@ -5,10 +5,10 @@
 	background-color: $base-color;
 	color: #FFFFFF;
 }
+.text-base,
 .base-color{
 	color:$base-color
 }
-
 .base-line{
 	font-weight: 800;
 	color: $base-color;

+ 31 - 0
assets/colorui/uview.theme.scss

@@ -0,0 +1,31 @@
+// 此自定义uView主题生成于2021-12-08 14:07
+// 地址:http://www.uviewui.com/guide/theme.html
+
+$u-type-primary: #5064eb;
+$u-type-error: #fa3534;
+$u-type-warning: #ff9900;
+$u-type-success: #19be6b;
+$u-type-info: #909399;
+$u-type-primary-light: #8692e3;
+$u-type-error-light: #fef0f0;
+$u-type-warning-light: #fdf6ec;
+$u-type-success-light: #dbf1e1;
+$u-type-info-light: #f4f4f5;
+$u-type-primary-dark: #6173e7;
+$u-type-error-dark: #dd6161;
+$u-type-warning-dark: #f29100;
+$u-type-success-dark: #18b566;
+$u-type-info-dark: #82848a;
+$u-type-primary-disabled: #7786ea;
+$u-type-error-disabled: #fab6b6;
+$u-type-warning-disabled: #fcbd71;
+$u-type-success-disabled: #71d5a1;
+$u-type-info-disabled: #c8c9cc;
+$u-main-color: #303133;
+$u-content-color: #606266;
+$u-tips-color: #909399;
+$u-light-color: #c0c4cc;
+$u-border-color: #e4e7ed;
+$u-bg-color: #f3f4f6;
+$u-form-item-border-color: #dcdfe6;
+$u-form-item-height: 70rpx;

+ 290 - 161
assets/http/api.js

@@ -1,63 +1,99 @@
-import {http} from './service.js'
+import {
+	http
+} from './service.js'
+
+const formHeader = {
+	header: {
+		'Content-Type': 'application/x-www-form-urlencoded'
+	}
+}
 
 //文件上传
-const uploadFile={
-	submit:p => http.upload('/blade-resource/oss/endpoint/put-pic-md5', {name:'file',filePath:p}),
+const uploadFile = {
+	submit: p => http.upload('/blade-resource/oss/endpoint/put-pic-md5', {
+		name: 'file',
+		filePath: p
+	}),
 }
 
 //短信api
 const SMSApi = {
-	sendSms:p => http.post('/park-app-service/huawei/sms/sendSms'+p),
-	validCode:p => http.post('/park-app-service/huawei/sms/validCode'+p),
+	sendSms: p => http.post('/park-app-service/huawei/sms/sendSms' + p),
+	validCode: p => http.post('/park-app-service/huawei/sms/validCode' + p),
 }
 
 //字典
-const dict=p => http.get('/blade-system/dict-biz/dictionary',{params:p})
+const dict = p => http.get('/blade-system/dict-biz/dictionary', {
+	params: p
+})
 
 
 //微信基本参数
-let wxData={
+let wxData = {
 	//国信的
 	// appId:'wx988577c5a9061283',
 	// secret:'5013c82bf72e6266dfb2720757433e74',
 	//园区的
-	appId:'wxcfb2b48079ca59e4',
-	secret:'30f9cf566aa57892e55aee0406356b9e',
-	subscribe_grant_type:'client_credential', //订阅消息的grant_type
+	appId: 'wxcfb2b48079ca59e4',
+	secret: '30f9cf566aa57892e55aee0406356b9e',
+	subscribe_grant_type: 'client_credential', //订阅消息的grant_type
 }
 
 //微信api
 const wxApi = {
-	subscribe:p => http.post('/park-app-service/app/msgSend', p),
-	getAccessToken:p => http.get('/park-app-service/app/getAccessToken', {params:p}),
-	getOpenId:p => http.get('/park-app-service/app/getOpenId', {params:p}),
+	subscribe: p => http.post('/park-app-service/app/msgSend', p),
+	getAccessToken: p => http.get('/park-app-service/app/getAccessToken', {
+		params: p
+	}),
+	getOpenId: p => http.get('/park-app-service/app/getOpenId', {
+		params: p
+	}),
 	//获取小程序的audit状态
-	getAppletStatus:p => http.get('/park-app-service/app/wxConf/getById', {params:p}),
+	getAppletStatus: p => http.get('/park-app-service/app/wxConf/getById', {
+		params: p
+	}),
 }
 
 //登录
-const login=p => http.post('/park-app-service/app/login/login', p)
+const login = p => http.post('/park-app-service/app/login/login', p)
 
 //修改密码
-const updatePassword=p => http.post('community/enterprisestaff/app/updatePassword'+p)
+const updatePassword = p => http.post('community/enterprisestaff/app/updatePassword' + p)
 
 //获取管理员的openid集合
-const getManagerOpenList=p => http.get('/cyzh-enterprise/staff/app/getManagerList',{params:p})
+const getManagerOpenList = p => http.get('/cyzh-enterprise/staff/app/getManagerList', {
+	params: p
+})
 
 
 //获取token
-const getToken=p => http.post('blade-auth/oauth/token'+p,{},{header: {"Authorization": "Basic c2FiZXI6c2FiZXJfc2VjcmV0"}})
+const getToken = p => http.post('blade-auth/oauth/token' + p, {}, {
+	header: {
+		"Authorization": "Basic c2FiZXI6c2FiZXJfc2VjcmV0"
+	}
+})
 
 //园区api
 const agency = {
-	getAgencyTenantList:p => http.get('/park-app-service/agency/getAgencyTenantList', {params:p}),
-	page:p => http.get('/cyzh-community/agency/list', {params:p}),
-	submit:p => http.post('/agency/agency/submit', p),
+	getAgencyTenantList: p => http.get('/park-app-service/agency/getAgencyTenantList', {
+		params: p
+	}),
+	getAgency: p => http.get('/park-app-service/agency/getAgency', {
+		params: p
+	}),
+	page: p => http.get('/cyzh-community/agency/list', {
+		params: p
+	}),
+	submit: p => http.post('/agency/agency/submit', p),
 }
 //区域api
 const residential = {
-	page:p => http.get('/cyzh-community/residential/list', {params:p}),
-	selectPage:p => http.get('/community/residential/select', {params:p}),
+	page: p => http.get('/cyzh-community/residential/list', {
+		params: p
+	}),
+	selectPage: p => http.get('/community/residential/select', {
+		params: p
+	}),
 }
 
 
@@ -65,181 +101,274 @@ const residential = {
 
 //楼栋
 const building = {
-	page:p => http.get('/building/building/list', {params:p})
+	page: p => http.get('/building/building/list', {
+		params: p
+	})
 }
 
 
 //企业api
 const enterprise = {
-	page:p => http.get('/cyzh-enterprise/enterprise/list', {params:p}),
-	detail:p => http.get('/cyzh-enterprise/enterprise/detail', {params:p}),
-	submit:p => http.post('/cyzh-enterprise/enterprise/submit', p),
+	page: p => http.get('/cyzh-enterprise/enterprise/list', {
+		params: p
+	}),
+	detail: p => http.get('/cyzh-enterprise/enterprise/detail', {
+		params: p
+	}),
+	submit: p => http.post('/cyzh-enterprise/enterprise/submit', p),
 }
 
 //企业员工
 const enterprisestaff = {
-	page:p => http.get('/cyzh-enterprise/staff/list', {params:p}),
-	detail:p => http.get('/cyzh-enterprise/staff/detail', {params:p}),
-	submit:p => http.post('/cyzh-enterprise/staff/submit', p),
+	page: p => http.get('/cyzh-enterprise/staff/list', {
+		params: p
+	}),
+	detail: p => http.get('/cyzh-enterprise/staff/detail', {
+		params: p
+	}),
+	submit: p => http.post('/cyzh-enterprise/staff/submit', p),
 }
 
 //CMS
-const CMS={
-	page:p => http.get('/cyzh-estate/article/list', {params:p}),
-	detail:p => http.get('/cyzh-estate/article/detail', {params:p}),
-	addReaderCount:p => http.post('/cyzh-estate/article/addReaderCount', p),
+const CMS = {
+	page: p => http.get('/cyzh-estate/article/list', {
+		params: p
+	}),
+	detail: p => http.get('/cyzh-estate/article/detail', {
+		params: p
+	}),
+	addReaderCount: p => http.post('/cyzh-estate/article/addReaderCount', p),
 }
 
 //banner 轮播图
-const banner={
-	page:p => http.get('/cyzh-estate/banners/list', {params:p}),
+const banner = {
+	page: p => http.get('/cyzh-estate/banners/list', {
+		params: p
+	}),
 }
 
 //消防设备
-const fireDevice={
+const fireDevice = {
 	//企业角色的设备列表接口
-	page:p => http.get('/park-app-service/iotdevice/list', {params:p}),
+	page: p => http.get('/park-app-service/iotdevice/list', {
+		params: p
+	}),
 	//园区角色的设备列表接口
-	agencyPage:p => http.get('/park-app-service/iotdevice/list', {params:p}),
+	agencyPage: p => http.get('/park-app-service/iotdevice/list', {
+		params: p
+	}),
 	//报警记录接口
-	alarmRecord:p => http.get('/cyzh-smart-device/iotalarm/list', {params:p}),
+	alarmRecord: p => http.get('/cyzh-smart-device/iotalarm/list', {
+		params: p
+	}),
 	//电表抄表记录
-	electricmeterrecord:p => http.get('/cyzh-smart-device/electricmeterrecord/list', {params:p}),
+	electricmeterrecord: p => http.get('/cyzh-smart-device/electricmeterrecord/list', {
+		params: p
+	}),
 }
 //用户反馈
 const feedback = {
-	submit:p => http.post('/estate/feedback/submit', p),
+	submit: p => http.post('/estate/feedback/submit', p),
 }
 //园区公告
 const notice = {
-	page:p => http.get('/cyzh-estate/noticepushrecord/listReturnNotice', {params:p}),
-	remove:p => http.post('/park-app-service/parknotice/remove?ids='+p),
-	submit:p => http.post('/park-app-service/parknotice/save', p),
+	page: p => http.get('/cyzh-estate/noticepushrecord/listReturnNotice', {
+		params: p
+	}),
+	remove: p => http.post('/park-app-service/parknotice/remove?ids=' + p),
+	submit: p => http.post('/park-app-service/parknotice/save', p),
 }
 
 //测温记录
 const temperatureRecord = {
-	page:p => http.get('/cyzh-smart-device/temperaturerecord/list', {params:p}),
+	page: p => http.get('/cyzh-smart-device/temperaturerecord/list', {
+		params: p
+	}),
 }
 
 //健康码
 const healthCode = {
-	getCode:p => http.post('/health/getCode', p)
+	getCode: p => http.post('/health/getCode', p)
+}
+
+const car = {
+	//出入记录
+	condition: p => http.get('/cyzh-estate/carenterrecord/queryRecord', {
+		params: p
+	}),
+	//入场记录
+	enterPage: p => http.get('/cyzh-estate/carenterrecord/list', {
+		params: p
+	}),
+	//出场记录
+	outPage: p => http.get('/cyzh-estate/caroutrecord/list', {
+		params: p
+	}),
+
+	//车辆列表
+	carList: p => http.get('/cyzh-estate/car/parkapp/list', {
+		params: p
+	}),
+	//添加车辆
+	carAdd: p => http.post('/cyzh-estate/car/submit', p),
+	//删除车辆
+	carRemove: p => http.post('/cyzh-estate/car/remove?ids=' + p),
+	//车辆审核
+	carAudit: p => http.post('/cyzh-estate/car/audit', p),
+}
+
+//开门设备
+const device = {
+	page: p => http.get('/cyzh-smart-device/doordevice/list', {
+		params: p
+	}),
+	open: p => http.post('/park-app-service/doordevice/remoteOpenDoor', p,formHeader)
+}
+
+//园区统计
+const statistical = {
+	//园区信息统计
+	agencyStatistical: p => http.get('/park-app-service/statistics/agency', {
+		params: p
+	}),
+	//当日动态数据
+	todayData: p => http.get('/park-app-service/statistics/todayData', {
+		params: p
+	}),
+	//人员进出记录
+	carTendency: p => http.get('/park-app-service/statistics/carTendency', {
+		params: p
+	}),
+	//三十天内用电量
+	electricMeterStatic: p => http.get('/park-app-service/statistics/electricMeterStatic', {
+		params: p
+	}),
+	//消防设备数据统计
+	getGateStatic: p => http.get('/park-app-service/statistics/getFireStatic', {
+		params: p
+	}),
+	//消防场景告警事件统计
+	getDeviceJobStaticByApp: p => http.get('/park-app-service/statistics/getDeviceJobStaticByApp', {
+		params: p
+	}),
+}
+
+//出入记录
+const accessrecord = {
+	page: p => http.get('/cyzh-estate/accessrecord/list', {
+		params: p
+	}),
 }
 
- const car = {
-	 //出入记录
-	 condition:p => http.get('/cyzh-estate/carenterrecord/queryRecord', {params:p}),
-	 //入场记录
-	 enterPage:p => http.get('/cyzh-estate/carenterrecord/list', {params:p}),
-	 //出场记录
-	 outPage:p => http.get('/cyzh-estate/caroutrecord/list', {params:p}),
-	 
-	 //车辆列表
-	 carList:p => http.get('/cyzh-estate/car/parkapp/list', {params:p}),
-	 //添加车辆
-	 carAdd:p => http.post('/cyzh-estate/car/submit', p),
-	 //删除车辆
-	 carRemove:p => http.post('/cyzh-estate/car/remove?ids='+p),
-	 //车辆审核
-	 carAudit:p => http.post('/cyzh-estate/car/audit', p),
- }
-
- //开门设备
- const device={
-	 page:p => http.get('/cyzh-smart-device/doordevice/list', {params:p}),
-	 open:p => http.post('/park-app-service/doordevice/remoteOpenDoor', p)
- }
- 
- //园区统计
- const statistical={
-	 //园区信息统计
-	 agencyStatistical:p => http.get('/park-app-service/statistics/agency', {params:p}),
-	 //当日动态数据
- 	 todayData:p => http.get('/park-app-service/statistics/todayData', {params:p}),
-	 //人员进出记录
-	 carTendency:p => http.get('/park-app-service/statistics/carTendency', {params:p}),
-	 //三十天内用电量
-	 electricMeterStatic:p => http.get('/park-app-service/statistics/electricMeterStatic', {params:p}),
-	 //消防设备数据统计
-	 getGateStatic:p => http.get('/park-app-service/statistics/getFireStatic', {params:p}),
-	 //消防场景告警事件统计
-	 getDeviceJobStaticByApp:p => http.get('/park-app-service/statistics/getDeviceJobStaticByApp', {params:p}),
- }
- 
- //出入记录
- const accessrecord={
- 	 page:p => http.get('/cyzh-estate/accessrecord/list', {params:p}),
- }
- 
- //访客授权
- const guest={
-	 submit:p => http.post('/cyzh-estate/guest/application', p),
-	 page:p => http.get('/cyzh-estate/guest/list', {params:p}),
-	 getByGuestOpenId:p => http.get('/cyzh-estate/guest/getByGuestOpenId', {params:p}),
-	 check:p => http.post('/cyzh-estate/guest/check', p),
-	 remove:p => http.post('/cyzh-estate/guest/remove?ids='+p),
- }
- 
- //企业项目
- const enterpriseproject={
-	 submit:p => http.post('/cyzh-enterprise/project/submit', p),
-	 page:p => http.get('/cyzh-enterprise/project/list', {params:p}),
-	 remove:p => http.post('/cyzh-enterprise/project/remove?ids='+p),
- }
- 
- //视频监控
- const live={
- 	 page:p => http.get('yc_video_cloud_device/videoclouddevice/getByResidentialAndDeviceName', {params:p}),
- }
- 
- //智慧党建
- const party={
-	 //党支部列表
-	 page:p => http.get('party/branch/app/getListForAgency', {params:p}),
-	 //党支部详情
-	 branchDetail:p => http.get('party/branch/detail', {params:p}),
-	 //查看员工属于哪个党支部 enterpriseStaffId
-	 branch:p => http.get('party/branch/app/list/', {params:p}),
-	 isPartyMember:p => http.get('/park-app-service/party/member/isPartyMember', {params:p}),
-	 //党员认证
-	 apply:p => http.post('party/member/apply',p),
-	 //三会一课
-	 meetinglist:p => http.get('party/meetinglist/list', {params:p}),
-	 //三会一课详情
-	 meetingDetail:p => http.get('party/meetinglist/detail', {params:p}),
-	 //评论
-	 comment:p => http.post('party/comment/save',p),
-	 //评论列表
-	 commentList:p => http.get('party/comment/list', {params:p}),
-	 //党内资讯
-	 partyInfoList:p => http.get('party/newslist/list', {params:p}),
-	 //资讯详情
-	 partyInfoDetail:p => http.get('party/newslist/detail', {params:p}),
-	 //党内活动
-	 activityList:p => http.get('party/activity/list', {params:p}),
-	 //党资讯详情
-	 activityDetail:p => http.get('party/activity/detail', {params:p}),
-	 //活动报名
-	 activityenroll:p => http.post('party/activityenroll/save',p),
-	 //查看是否已报名
-	 checkIsEnroll:p => http.get('party/activityenroll/list',{params:p}),
-	 //取消报名
-	 cancelEnroll:p => http.post('party/activityenroll/cancel',p),
- }
- 
-
- const punch={
-	 getRule:p => http.get('attence/ruleperson/getRule',{params:p}),
-	 save:p => http.post('attence/record/save',p),
-	 getLocation:p => http.get('attence/location/getLocation',{params:p}),
-	 getNecessaryData:p => http.post('attence/rule/getNecessaryData',p),
-	 getMarkDays:p => http.get('attence/record/getMarkDays',{params:p}),
-	 getRecordsByDate:p => http.get('attence/record/getRecordsByDate',{params:p}),
-	 getRuleByDate:p => http.get('attence/rule/getRuleByDate',{params:p}),
- }
- 
-export const api={
+//访客授权
+const guest = {
+	submit: p => http.post('/park-app-service/guestrecord/submit', p),
+	page: p => http.get('/park-app-service/guestrecord/page', {
+		params: p
+	}),
+	getByGuestOpenId: p => http.get('/cyzh-estate/guest/getByGuestOpenId', {
+		params: p
+	}),
+	audit: p => http.post('/park-app-service/guestrecord/audit', p),
+}
+
+//企业项目
+const enterpriseproject = {
+	submit: p => http.post('/cyzh-enterprise/project/submit', p),
+	page: p => http.get('/cyzh-enterprise/project/list', {
+		params: p
+	}),
+	remove: p => http.post('/cyzh-enterprise/project/remove?ids=' + p),
+}
+
+//视频监控
+const live = {
+	page: p => http.get('yc_video_cloud_device/videoclouddevice/getByResidentialAndDeviceName', {
+		params: p
+	}),
+}
+
+//智慧党建
+const party = {
+	//党支部列表
+	page: p => http.get('party/branch/app/getListForAgency', {
+		params: p
+	}),
+	//党支部详情
+	branchDetail: p => http.get('party/branch/detail', {
+		params: p
+	}),
+	//查看员工属于哪个党支部 enterpriseStaffId
+	branch: p => http.get('party/branch/app/list/', {
+		params: p
+	}),
+	isPartyMember: p => http.get('/park-app-service/party/member/isPartyMember', {
+		params: p
+	}),
+	//党员认证
+	apply: p => http.post('party/member/apply', p),
+	//三会一课
+	meetinglist: p => http.get('party/meetinglist/list', {
+		params: p
+	}),
+	//三会一课详情
+	meetingDetail: p => http.get('party/meetinglist/detail', {
+		params: p
+	}),
+	//评论
+	comment: p => http.post('party/comment/save', p),
+	//评论列表
+	commentList: p => http.get('party/comment/list', {
+		params: p
+	}),
+	//党内资讯
+	partyInfoList: p => http.get('party/newslist/list', {
+		params: p
+	}),
+	//资讯详情
+	partyInfoDetail: p => http.get('party/newslist/detail', {
+		params: p
+	}),
+	//党内活动
+	activityList: p => http.get('party/activity/list', {
+		params: p
+	}),
+	//党资讯详情
+	activityDetail: p => http.get('party/activity/detail', {
+		params: p
+	}),
+	//活动报名
+	activityenroll: p => http.post('party/activityenroll/save', p),
+	//查看是否已报名
+	checkIsEnroll: p => http.get('party/activityenroll/list', {
+		params: p
+	}),
+	//取消报名
+	cancelEnroll: p => http.post('party/activityenroll/cancel', p),
+}
+
+
+const punch = {
+	getRule: p => http.get('attence/ruleperson/getRule', {
+		params: p
+	}),
+	save: p => http.post('attence/record/save', p),
+	getLocation: p => http.get('attence/location/getLocation', {
+		params: p
+	}),
+	getNecessaryData: p => http.post('attence/rule/getNecessaryData', p),
+	getMarkDays: p => http.get('attence/record/getMarkDays', {
+		params: p
+	}),
+	getRecordsByDate: p => http.get('attence/record/getRecordsByDate', {
+		params: p
+	}),
+	getRuleByDate: p => http.get('attence/rule/getRuleByDate', {
+		params: p
+	}),
+}
+
+export const api = {
 	//上传文件
 	uploadFile,
 	//短信
@@ -300,4 +429,4 @@ export const api={
 	party,
 	//打卡
 	punch
-}
+}

+ 2 - 0
assets/http/setting.js

@@ -11,4 +11,6 @@ setting.indexBanner = [{
 	'banners': setting.imgBaseURL+"/miniofile/xlyq/banner.jpg"
 }, ]
 
+setting.uploadImg=setting.imgBaseURL+'/miniofile/xlyq/upload.png'
+
 export default setting

+ 48 - 39
components/hot-consult/hot-consult.vue

@@ -1,22 +1,27 @@
 <template>
 	<view>
 		<view class="container">
-			<view class="flex justify-between" >
+			<view class="flex justify-between">
 				<block>
-					<view class="flex flex-direction justify-center align-center text-bold" style="width: 120rpx;padding-left: 20rpx;">
-						<view :style="{color:title1.color}" style="font-family:Arial, Helvetica, sans-serif;font-size: 32rpx;">
+					<view class="flex flex-direction justify-center align-center text-bold"
+						style="width: 120rpx;padding-left: 20rpx;">
+						<view :style="{color:title1.color}"
+							style="font-family:Arial, Helvetica, sans-serif;font-size: 32rpx;">
 							{{title1.text}}
 						</view>
-						<view :style="{color:title2.color}" style="font-family:Arial, Helvetica, sans-serif;font-size: 32rpx;">
+						<view :style="{color:title2.color}"
+							style="font-family:Arial, Helvetica, sans-serif;font-size: 32rpx;">
 							{{title2.text}}
 						</view>
 					</view>
 					<!-- <view class="cu-avatar text-font"  style="background-image:url(http://139.9.103.171:1888/miniofile/app/notice.png);"></view> -->
 					<view class="margin-top-xs" style="width: 680rpx">
-						<swiper :circular="true" class="swiper" autoplay="true" vertical="true" interval="5000" next-margin="46rpx">
+						<swiper :circular="true" class="swiper" autoplay="true" vertical="true" interval="5000"
+							next-margin="46rpx">
 							<swiper-item v-for="(item, index) in swiperTexts" :key="index" @click="detailTap(item)">
-								<view class="swiper-item" > 
-									<text :style="{color:title1.color}" class="text-bold cuIcon-title padding-right-sm"></text>
+								<view class="swiper-item">
+									<text :style="{color:title1.color}"
+										class="text-bold cuIcon-title padding-right-sm"></text>
 									<text>{{item.title}} : {{item.notice | formatHtml}}</text>
 								</view>
 							</swiper-item>
@@ -40,28 +45,29 @@
 					return []
 				}
 			},
-			title1:{
-				type:Object,
+			title1: {
+				type: Object,
 				default: () => {
 					return {
-						text:'园区',
-						color:'#5064eb'
+						text: '园区',
+						color: '#5064eb'
 					}
 				}
 			},
-			title2:{
-				type:Object,
+			title2: {
+				type: Object,
 				default: () => {
 					return {
-						text:'公告',
-						color:''
+						text: '公告',
+						color: ''
 					}
 				}
 			},
-			
+
 		},
 		filters: {
-			formatHtml (str) {
+			formatHtml(str) {
+				str = decodeURIComponent(str)
 				return str.replace(/<[^>]+>/g, "");
 			}
 		},
@@ -70,32 +76,35 @@
 				this.$emit('onTap');
 			},
 			detailTap(item) {
-				this.$emit('detailTap',item);
+				this.$emit('detailTap', item);
 			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-.container {
-	background-color: #ffffff;
-	height: 110rpx;
-}
-.swiper {
-	height: 90rpx;
-}
-.swiper-item {
-	font-size: 24rpx;
-	color: #323232;
-	text-overflow: ellipsis;
-	white-space: nowrap;
-	overflow: hidden;
-	height: 40rpx; 
-	margin: 6rpx 0rpx;
-}
-.text-font {
-	width: 100rpx;
-	height: 100rpx;
-	margin: 10rpx 10rpx 10rpx 20rpx;
-}
+	.container {
+		background-color: #ffffff;
+		height: 110rpx;
+	}
+
+	.swiper {
+		height: 90rpx;
+	}
+
+	.swiper-item {
+		font-size: 24rpx;
+		color: #323232;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		overflow: hidden;
+		height: 40rpx;
+		margin: 6rpx 0rpx;
+	}
+
+	.text-font {
+		width: 100rpx;
+		height: 100rpx;
+		margin: 10rpx 10rpx 10rpx 20rpx;
+	}
 </style>

File diff ditekan karena terlalu besar
+ 41 - 49
components/uploadimg/uploadImg.vue


+ 0 - 24
components/wm-list-add/css/wm-icon.css

@@ -1,24 +0,0 @@
-@font-face {font-family: "wm-icon";
-  src: url('//at.alicdn.com/t/font_2366056_hdrm0876p4j.eot?t=1612429272174'); /* IE9 */
-  src: url('//at.alicdn.com/t/font_2366056_hdrm0876p4j.eot?t=1612429272174#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAALIAAsAAAAABqAAAAJ5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDBgqBFIEXATYCJAMMCwgABCAFhGEHOBvTBcguMRUZ6fQkkDYTIZjWnPn8Dxy4PVEEX3tx++4urVUdl4yvVSU0j9AogtEIhVDd4tBdV/Uv52qPwIi9B0dEipJ203I66R65fydfo7KnHvNh2jyho6UToOY3C7DhPcbGWcr6Dhf//73TN/63b02cFyjHtZcu6iQcUGB7AkVWJAl5w9gFL/A5gUajhmR2do6uoKyw1wXimecIKBdSisKq9UJtw9EiHtSoTy/SJ7yMvh+/bEaZpCazt+7ebduw9tXlp8pwGSBpAjxdg4xloBDXjaVTOcF4OY2mfHdzrSKkpbJVRaQyDLXOHx5JELXszmYwj8qJrwVPlZmnoeapn8qgFgVzwCqb6ybOomFm89PPcjm8+YblrIxvUT3bmJujJTellupnjePGkVcafD3rO3K8g1TtholXtwD77u+5BajOnufWAcgL6UUgeBC9Hyz9LtcK+LLeK0pV5w0v10sw9S9TDxwphtZ256KpPJUVyYZOH0jArkZU7Finr+m2ntuqhDo9GU7sMM7sFC7sItRosgG16mxBoyWbp5t0ieVEacCiZwCh1Wuc2Dc4s29xYT9DjV7/UKvVf2h0HKUrm8zGXXXTkGCyUXbRs3Ss3CJX29Ew7LwgpxkKwzWh5IZM6mVwfGSsUt2lmMz0LWnLmWBWqIyOcAe8yBSGGhOjfbJ4xGVOFkZHVdObRiwdQdU2gwiM2JDUhTwWLaaCXlb1XGQYfu4CcTSFBNM8pKB8gxgpbzo0bsRYN941xUOGHuG2VItjAmMKUgzNQ2gHYjaErKShpHmRj1jYCHdCIbFg1BmnhppGtrVEf3YCGtn35kiRo6i/p9ixm3o8J2wbAAAAAA==') format('woff2'),
-  url('//at.alicdn.com/t/font_2366056_hdrm0876p4j.woff?t=1612429272174') format('woff'),
-  url('//at.alicdn.com/t/font_2366056_hdrm0876p4j.ttf?t=1612429272174') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
-  url('//at.alicdn.com/t/font_2366056_hdrm0876p4j.svg?t=1612429272174#wm-icon') format('svg'); /* iOS 4.1- */
-}
-
-.wm-icon {
-  font-family: "wm-icon" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-.wm-icon-gengduo1:before {
-  content: "\e635";
-}
-
-.wm-icon-add:before {
-  content: "\e605";
-}

+ 20 - 151
components/wm-list-add/wm-list-add.vue

@@ -1,171 +1,40 @@
 <template>
-	<view>
-		<view :animation="animationDataContent" class="animationContent" :style="{'background-color': bgColor }" @click="rotateAndScaleThenTranslate">
-			<label class="wm-icon wm-icon-gengduo1 moreIcon" v-if="moreFlag" :style="{'color': fontColor }"></label>
-			<view :animation="animationData" @tap="clickAdd" class="bottom-float" :style="{'background-color': bgColor }">
-				<label class="wm-icon wm-icon-add addIcon" :style="{'color': fontColor }"></label>
-			</view>
+	<view >
+		<view class="homeBtn" @click="add">
+			<u-icon name="plus-circle-fill" color="#5064eb" size="46"></u-icon>
 		</view>
 	</view>
 </template>
 
 <script>
-	/**
-	 * wm-list-add 带状态的提交按钮
-	 * @description 一个动效的侧面添加按钮,适用于list场景,避免遮挡用户视线。
-	 * @property {String} bgColor 背景颜色(默认:#5094f2)
-	 * @property {String} fontColor 文字颜色(默认:#ffffff)
-	 * @property {Boolean} isOpen 默认是否关闭动画(默认:否)
-	 * @example
-	 * <wm-list-add ref="add"/>
-	 */
 	export default {
-		name: 'wm-list-add',
-		props: {
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: '#5064eb'
-			},
-			// 文字颜色
-			fontColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 是否关闭动画
-			isOpen: {
-				type: Boolean,
-				default: false
-			},
-			//列表滑动关闭动画
-			isClose:{
-				type: Boolean,
-				default: false
-			}
-		},
-		created() {
-			this.init()
-		},
 		data() {
 			return {
-				animationData: {},
-				animationDataContent: {},
-				moreFlag: false,
-			}
+
+			};
 		},
-		methods: {
-			init() {
-				if (!this.isOpen) {
-					this.closeAnimation()
-				}
-			},
-			clickAdd() {
+		methods:{
+			add(){
 				this.$emit('clickAdd');
-			},
-			// 关闭右侧添加
-			closeAnimation() {
-				if (this.moreFlag) return
-
-				const animation1 = uni.createAnimation({
-					duration: 500,
-					timingFunction: 'ease',
-				})
-				const animation = uni.createAnimation({
-					duration: 1000,
-					timingFunction: 'ease',
-				})
-
-				this.animationDataContent = animation1
-				this.animation = animation
-
-				animation1.scale(1, 1).rotate(0).step()
-				animation.scale(1, 1).rotate(90).step()
-
-				this.animationData = animation.export()
-				this.animationDataContent = animation1.export()
-				console.log(this.animationData)
-				setTimeout(function() {
-					animation1.translate(42).step()
-					animation.translate(0, -42).step()
-					this.animationData = animation.export()
-					this.animationDataContent = animation1.export()
-					this.moreFlag = true
-				}.bind(this), 1000)
-			},
-			// 打开右侧添加
-			rotateAndScaleThenTranslate() {
-				var animation1 = uni.createAnimation({
-					duration: 500,
-					timingFunction: 'ease',
-				})
-				this.animation1 = animation1
-				// 先旋转,然后平移
-				this.animation1.rotate(0).scale(1, 1).step()
-				this.animation1.translate(0).step()
-				this.animationDataContent = this.animation1.export()
-
-
-				var animation = uni.createAnimation({
-					duration: 1000,
-					timingFunction: 'ease',
-				})
-				this.animation = animation
-				// 先旋转,然后平移
-				this.animation.rotate(-90).scale(1, 1).step()
-				this.animation.translate(0, 0).step()
-				this.animationData = this.animation.export()
-
-				this.moreFlag = false
-
-				// 5秒自动收回
-				setTimeout(() => {
-					this.closeAnimation()
-				}, 5000)
-			},
+			}
 		}
 	}
 </script>
 
-<style>
-	@import url("./css/wm-icon.css");
-
-	.animationContent {
+<style lang="scss">
+	.homeBtn {
+		width: 80upx;
+		height: 66upx;
+		border-radius: 50upx 0 0 50upx;
 		position: fixed;
-		width: 130rpx;
-		/* background-color: #5094f2; */
-		height: 100rpx;
-		bottom: 25%;
-		right: 0;
-		z-index: 10;
-		border-radius: 50rpx 0 0 50rpx;
-	}
-
-	.bottom-float {
-		position: absolute;
-		left: 0;
-		top: 0;
-		width: 100rpx;
-		height: 100rpx;
-		border-radius: 50rpx;
+		bottom: 260upx;
+		right: -10rpx;
+		z-index: 12;
 		display: flex;
-		align-items: center;
 		justify-content: center;
-		/* background-color: #5094f2; */
-		box-shadow: 0 0 20px 0px rgba(0, 0, 0, 0.1);
-		transition: transform 0.4s;
-		transform: translateX(0) rotate(0deg);
-		color: #FFFFFF;
-	}
-
-	.moreIcon {
-		position: absolute;
-		line-height: 100rpx;
-		left: 8rpx;
-		top: 0;
-		font-size: 40rpx;
-	}
-
-	.addIcon {
-		font-size: 66rpx;
+		align-items: center;
+		background: #ffffff;
+		box-shadow: -4upx -4upx 30upx #888888;
 	}
 </style>
+

+ 15 - 2050
package-lock.json

@@ -1,2071 +1,36 @@
 {
-  "name": "garden-wxapp",
+  "name": "ParkApp",
   "version": "1.0.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
     "@dcloudio/types": {
-      "version": "2.0.23",
-      "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-2.0.23.tgz",
-      "integrity": "sha512-4JHz1vjwxLkVre3Bf6iMaC4V7mLR85f3wdfwgQqYjn0iOmaSrkUfe7GEJcjkpGbCEKvOJAyIJoMe2yKURIB5yw=="
+      "version": "2.5.13",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/types/download/@dcloudio/types-2.5.13.tgz",
+      "integrity": "sha1-VNCLDMplKgiEGLr2sS0864rITHA="
     },
-    "@discoveryjs/json-ext": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
-      "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg=="
-    },
-    "@microsoft/api-extractor": {
-      "version": "7.13.2",
-      "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.13.2.tgz",
-      "integrity": "sha512-2fD0c8OxZW+e6NTaxbtrdNxXVuX7aqil3+cqig3pKsHymvUuRJVCEAcAJmZrJ/ENqYXNiB265EyqOT6VxbMysw==",
-      "requires": {
-        "@microsoft/api-extractor-model": "7.12.2",
-        "@microsoft/tsdoc": "0.12.24",
-        "@rushstack/node-core-library": "3.36.0",
-        "@rushstack/rig-package": "0.2.10",
-        "@rushstack/ts-command-line": "4.7.8",
-        "colors": "~1.2.1",
-        "lodash": "~4.17.15",
-        "resolve": "~1.17.0",
-        "semver": "~7.3.0",
-        "source-map": "~0.6.1",
-        "typescript": "~4.1.3"
-      },
-      "dependencies": {
-        "typescript": {
-          "version": "4.1.5",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz",
-          "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA=="
-        }
-      }
-    },
-    "@microsoft/api-extractor-model": {
-      "version": "7.12.2",
-      "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.12.2.tgz",
-      "integrity": "sha512-EU+U09Mj65zUH0qwPF4PFJiL6Y+PQQE/RRGEHEDGJJzab/mRQDpKOyrzSdb00xvcd/URehIHJqC55cY2Y4jGOA==",
-      "requires": {
-        "@microsoft/tsdoc": "0.12.24",
-        "@rushstack/node-core-library": "3.36.0"
-      }
-    },
-    "@microsoft/tsdoc": {
-      "version": "0.12.24",
-      "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz",
-      "integrity": "sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg=="
-    },
-    "@rushstack/node-core-library": {
-      "version": "3.36.0",
-      "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.36.0.tgz",
-      "integrity": "sha512-bID2vzXpg8zweXdXgQkKToEdZwVrVCN9vE9viTRk58gqzYaTlz4fMId6V3ZfpXN6H0d319uGi2KDlm+lUEeqCg==",
-      "requires": {
-        "@types/node": "10.17.13",
-        "colors": "~1.2.1",
-        "fs-extra": "~7.0.1",
-        "import-lazy": "~4.0.0",
-        "jju": "~1.4.0",
-        "resolve": "~1.17.0",
-        "semver": "~7.3.0",
-        "timsort": "~0.3.0",
-        "z-schema": "~3.18.3"
-      },
-      "dependencies": {
-        "@types/node": {
-          "version": "10.17.13",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz",
-          "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg=="
-        }
-      }
-    },
-    "@rushstack/rig-package": {
-      "version": "0.2.10",
-      "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.2.10.tgz",
-      "integrity": "sha512-WXYerEJEPf8bS3ruqfM57NnwXtA7ehn8VJjLjrjls6eSduE5CRydcob/oBTzlHKsQ7N196XKlqQl9P6qIyYG2A==",
-      "requires": {
-        "resolve": "~1.17.0",
-        "strip-json-comments": "~3.1.1"
-      }
-    },
-    "@rushstack/ts-command-line": {
-      "version": "4.7.8",
-      "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.7.8.tgz",
-      "integrity": "sha512-8ghIWhkph7NnLCMDJtthpsb7TMOsVGXVDvmxjE/CeklTqjbbUFBjGXizJfpbEkRQTELuZQ2+vGn7sGwIWKN2uA==",
-      "requires": {
-        "@types/argparse": "1.0.38",
-        "argparse": "~1.0.9",
-        "colors": "~1.2.1",
-        "string-argv": "~0.3.1"
-      }
-    },
-    "@types/anymatch": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
-      "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA=="
-    },
-    "@types/argparse": {
-      "version": "1.0.38",
-      "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz",
-      "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA=="
-    },
-    "@types/eslint": {
-      "version": "7.2.7",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz",
-      "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==",
-      "requires": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
-      }
-    },
-    "@types/eslint-scope": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz",
-      "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==",
-      "requires": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
-      }
-    },
-    "@types/estree": {
-      "version": "0.0.46",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
-      "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg=="
-    },
-    "@types/json-schema": {
-      "version": "7.0.7",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA=="
-    },
-    "@types/node": {
-      "version": "14.14.34",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.34.tgz",
-      "integrity": "sha512-dBPaxocOK6UVyvhbnpFIj2W+S+1cBTkHQbFQfeeJhoKFbzYcVUGHvddeWPSucKATb3F0+pgDq0i6ghEaZjsugA=="
-    },
-    "@types/source-list-map": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
-      "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA=="
-    },
-    "@types/tapable": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
-      "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA=="
-    },
-    "@types/uglify-js": {
-      "version": "3.13.0",
-      "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz",
-      "integrity": "sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==",
-      "requires": {
-        "source-map": "^0.6.1"
-      }
-    },
-    "@types/webpack": {
-      "version": "4.41.26",
-      "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
-      "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==",
-      "requires": {
-        "@types/anymatch": "*",
-        "@types/node": "*",
-        "@types/tapable": "*",
-        "@types/uglify-js": "*",
-        "@types/webpack-sources": "*",
-        "source-map": "^0.6.0"
-      }
-    },
-    "@types/webpack-env": {
-      "version": "1.16.0",
-      "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.0.tgz",
-      "integrity": "sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw=="
-    },
-    "@types/webpack-sources": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz",
-      "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==",
-      "requires": {
-        "@types/node": "*",
-        "@types/source-list-map": "*",
-        "source-map": "^0.7.3"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
-        }
-      }
-    },
-    "@webassemblyjs/ast": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz",
-      "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==",
-      "requires": {
-        "@webassemblyjs/helper-numbers": "1.11.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.0"
-      }
-    },
-    "@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz",
-      "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA=="
-    },
-    "@webassemblyjs/helper-api-error": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz",
-      "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w=="
-    },
-    "@webassemblyjs/helper-buffer": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz",
-      "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA=="
-    },
-    "@webassemblyjs/helper-numbers": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz",
-      "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==",
-      "requires": {
-        "@webassemblyjs/floating-point-hex-parser": "1.11.0",
-        "@webassemblyjs/helper-api-error": "1.11.0",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz",
-      "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA=="
-    },
-    "@webassemblyjs/helper-wasm-section": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz",
-      "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/helper-buffer": "1.11.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
-        "@webassemblyjs/wasm-gen": "1.11.0"
-      }
-    },
-    "@webassemblyjs/ieee754": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz",
-      "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==",
-      "requires": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "@webassemblyjs/leb128": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz",
-      "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==",
-      "requires": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/utf8": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz",
-      "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw=="
-    },
-    "@webassemblyjs/wasm-edit": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz",
-      "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/helper-buffer": "1.11.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
-        "@webassemblyjs/helper-wasm-section": "1.11.0",
-        "@webassemblyjs/wasm-gen": "1.11.0",
-        "@webassemblyjs/wasm-opt": "1.11.0",
-        "@webassemblyjs/wasm-parser": "1.11.0",
-        "@webassemblyjs/wast-printer": "1.11.0"
-      }
-    },
-    "@webassemblyjs/wasm-gen": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz",
-      "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
-        "@webassemblyjs/ieee754": "1.11.0",
-        "@webassemblyjs/leb128": "1.11.0",
-        "@webassemblyjs/utf8": "1.11.0"
-      }
-    },
-    "@webassemblyjs/wasm-opt": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz",
-      "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/helper-buffer": "1.11.0",
-        "@webassemblyjs/wasm-gen": "1.11.0",
-        "@webassemblyjs/wasm-parser": "1.11.0"
-      }
-    },
-    "@webassemblyjs/wasm-parser": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz",
-      "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/helper-api-error": "1.11.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
-        "@webassemblyjs/ieee754": "1.11.0",
-        "@webassemblyjs/leb128": "1.11.0",
-        "@webassemblyjs/utf8": "1.11.0"
-      }
-    },
-    "@webassemblyjs/wast-printer": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz",
-      "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.0",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webpack-cli/configtest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz",
-      "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ=="
-    },
-    "@webpack-cli/info": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz",
-      "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==",
-      "requires": {
-        "envinfo": "^7.7.3"
-      }
-    },
-    "@webpack-cli/serve": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz",
-      "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw=="
-    },
-    "@xtuc/ieee754": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
-    },
-    "@xtuc/long": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
-    },
-    "acorn": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
-      "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA=="
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "ajv-errors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
-    },
-    "ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
-    },
-    "ansi-colors": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "requires": {
-        "color-convert": "^2.0.1"
-      }
-    },
-    "aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "requires": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "requires": {
-        "array-uniq": "^1.0.1"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
-    },
-    "balanced-match": {
+    "base-64": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-    },
-    "big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
-    },
-    "bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "browserslist": {
-      "version": "4.16.3",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
-      "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
-      "requires": {
-        "caniuse-lite": "^1.0.30001181",
-        "colorette": "^1.2.1",
-        "electron-to-chromium": "^1.3.649",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.70"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-    },
-    "cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "requires": {
-        "bluebird": "^3.5.5",
-        "chownr": "^1.1.1",
-        "figgy-pudding": "^3.5.1",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.1.15",
-        "infer-owner": "^1.0.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.6.3",
-        "ssri": "^6.0.1",
-        "unique-filename": "^1.1.1",
-        "y18n": "^4.0.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-          "requires": {
-            "yallist": "^3.0.2"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
-        }
-      }
-    },
-    "caniuse-lite": {
-      "version": "1.0.30001200",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001200.tgz",
-      "integrity": "sha512-ic/jXfa6tgiPBAISWk16jRI2q8YfjxHnSG7ddSL1ptrIP8Uy11SayFrjXRAk3NumHpDb21fdTkbTxb/hOrFrnQ=="
-    },
-    "chalk": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
-      "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
-      "requires": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      }
-    },
-    "chownr": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
-    },
-    "chrome-trace-event": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
-      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
-      "requires": {
-        "tslib": "^1.9.0"
-      }
-    },
-    "clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "requires": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      }
-    },
-    "color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "requires": {
-        "color-name": "~1.1.4"
-      }
-    },
-    "color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "colorette": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
-      "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
-    },
-    "colors": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
-      "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg=="
-    },
-    "commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "copy-concurrently": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-      "requires": {
-        "aproba": "^1.1.1",
-        "fs-write-stream-atomic": "^1.0.8",
-        "iferr": "^0.1.5",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.0"
-      }
-    },
-    "copy-webpack-plugin": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
-      "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
-      "requires": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "webpack-log": "^2.0.0"
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-    },
-    "cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "requires": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      }
-    },
-    "cyclist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk="
-    },
-    "dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-      "requires": {
-        "path-type": "^3.0.0"
-      }
-    },
-    "duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
-      "requires": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "electron-to-chromium": {
-      "version": "1.3.687",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.687.tgz",
-      "integrity": "sha512-IpzksdQNl3wdgkzf7dnA7/v10w0Utf1dF2L+B4+gKrloBrxCut+au+kky3PYvle3RMdSxZP+UiCZtLbcYRxSNQ=="
-    },
-    "emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
-    },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "enhanced-resolve": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
-      "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.5.0",
-        "tapable": "^1.0.0"
-      }
-    },
-    "enquirer": {
-      "version": "2.3.6",
-      "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
-      "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
-      "requires": {
-        "ansi-colors": "^4.1.1"
-      },
-      "dependencies": {
-        "ansi-colors": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-          "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
-        }
-      }
-    },
-    "envinfo": {
-      "version": "7.7.4",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz",
-      "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ=="
-    },
-    "errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
-    "es-module-lexer": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
-      "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA=="
-    },
-    "escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
-    },
-    "eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
-        }
-      }
-    },
-    "estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
-    },
-    "events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
-    },
-    "execa": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
-      "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
-      "requires": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.0",
-        "human-signals": "^2.1.0",
-        "is-stream": "^2.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^4.0.1",
-        "onetime": "^5.1.2",
-        "signal-exit": "^3.0.3",
-        "strip-final-newline": "^2.0.0"
-      }
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
-    },
-    "fastest-levenshtein": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
-      "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
-    },
-    "figgy-pudding": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw=="
-    },
-    "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      }
-    },
-    "find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "requires": {
-        "locate-path": "^3.0.0"
-      }
-    },
-    "flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-      "requires": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "iferr": "^0.1.5",
-        "imurmurhash": "^0.1.4",
-        "readable-stream": "1 || 2"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "get-stream": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz",
-      "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg=="
-    },
-    "glob": {
-      "version": "7.1.6",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-      "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
-    },
-    "glob-to-regexp": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
-    },
-    "globby": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
-      "requires": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
-        }
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.6",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
-      "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
-    },
-    "has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-    },
-    "human-signals": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
-      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
-    },
-    "iferr": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
-    },
-    "ignore": {
-      "version": "3.3.10",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
-    },
-    "import-lazy": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
-      "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw=="
-    },
-    "import-local": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
-      "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
-      "requires": {
-        "pkg-dir": "^4.2.0",
-        "resolve-cwd": "^3.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-        },
-        "pkg-dir": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-          "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-          "requires": {
-            "find-up": "^4.0.0"
-          }
-        }
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
-    },
-    "infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "interpret": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
-      "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
-    },
-    "is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-    },
-    "jest-worker": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
-      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
-      "requires": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      }
-    },
-    "jju": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
-      "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo="
-    },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
-    },
-    "json5": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "requires": {
-        "minimist": "^1.2.0"
-      }
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
-    },
-    "loader-runner": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
-      "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw=="
-    },
-    "loader-utils": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-      "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
-      "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      }
-    },
-    "locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "requires": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-    },
-    "lodash.get": {
-      "version": "4.4.2",
-      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
-      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
-    },
-    "lodash.isequal": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
-    },
-    "lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-    },
-    "lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "requires": {
-        "yallist": "^4.0.0"
-      }
+      "resolved": "https://registry.nlark.com/base-64/download/base-64-1.0.0.tgz",
+      "integrity": "sha1-CdDyCE4yo/0IwkdblzeI7uauj0o="
     },
     "luch-request": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/luch-request/-/luch-request-3.0.5.tgz",
-      "integrity": "sha512-IpIET4O2BWtTsKw2Cjane0jppGbomQkoOAq5pIRbusqbEoqM968d0OI1jCzLKywgpmqfwx3/IPnH7Rnuv0TVtw==",
+      "version": "3.0.7",
+      "resolved": "https://registry.nlark.com/luch-request/download/luch-request-3.0.7.tgz",
+      "integrity": "sha1-WJT8PT/2JiKwQshJU8EZLM3q+qU=",
       "requires": {
         "@dcloudio/types": "^2.0.16"
       }
     },
-    "make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "requires": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        }
-      }
-    },
-    "memory-fs": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-      "requires": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
-    },
-    "micromatch": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-      "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
-      "requires": {
-        "braces": "^3.0.1",
-        "picomatch": "^2.0.5"
-      }
-    },
-    "mime-db": {
-      "version": "1.46.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
-      "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
-    },
-    "mime-types": {
-      "version": "2.1.29",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
-      "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
-      "requires": {
-        "mime-db": "1.46.0"
-      }
-    },
-    "mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
-    "mississippi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-      "requires": {
-        "concat-stream": "^1.5.0",
-        "duplexify": "^3.4.2",
-        "end-of-stream": "^1.1.0",
-        "flush-write-stream": "^1.0.0",
-        "from2": "^2.1.0",
-        "parallel-transform": "^1.1.0",
-        "pump": "^3.0.0",
-        "pumpify": "^1.3.3",
-        "stream-each": "^1.1.0",
-        "through2": "^2.0.0"
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "move-concurrently": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
-      "requires": {
-        "aproba": "^1.1.1",
-        "copy-concurrently": "^1.0.0",
-        "fs-write-stream-atomic": "^1.0.8",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.3"
-      }
-    },
-    "neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
-    },
-    "node-releases": {
-      "version": "1.1.71",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
-      "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
-    },
-    "npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "requires": {
-        "path-key": "^3.0.0"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "onetime": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "requires": {
-        "mimic-fn": "^2.1.0"
-      }
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "requires": {
-        "p-limit": "^2.0.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-    },
-    "parallel-transform": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-      "requires": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
-    },
-    "path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-    },
-    "path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
-    },
-    "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
-    },
-    "path-to-regexp": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-      "requires": {
-        "isarray": "0.0.1"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-        }
-      }
-    },
-    "path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "requires": {
-        "pify": "^3.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
-        }
-      }
-    },
-    "picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
-      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
-    },
-    "pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
-    },
-    "pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "requires": {
-        "find-up": "^3.0.0"
-      }
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-    },
-    "promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
-    },
-    "prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
-    },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
-      "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      },
-      "dependencies": {
-        "pump": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
-        }
-      }
-    },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-    },
-    "randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "rechoir": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
-      "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
-      "requires": {
-        "resolve": "^1.9.0"
-      }
-    },
-    "resolve": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
-      "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
-      "requires": {
-        "path-parse": "^1.0.6"
-      }
-    },
-    "resolve-cwd": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
-      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
-      "requires": {
-        "resolve-from": "^5.0.0"
-      }
-    },
-    "resolve-from": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "run-queue": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
-      "requires": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "requires": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      }
-    },
-    "semver": {
-      "version": "7.3.4",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-      "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
-      "requires": {
-        "lru-cache": "^6.0.0"
-      }
-    },
-    "serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-      "requires": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
-    "shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "requires": {
-        "shebang-regex": "^3.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
-    },
-    "signal-exit": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
-    },
-    "slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
-    },
-    "source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
-    },
-    "source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-    },
-    "source-map-support": {
-      "version": "0.5.19",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
-    },
-    "ssri": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-      "requires": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "stream-each": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "stream-shift": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
-    },
-    "string-argv": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
-      "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg=="
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "strip-final-newline": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
-    },
-    "strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
-    },
-    "supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "requires": {
-        "has-flag": "^4.0.0"
-      }
-    },
-    "tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
-    },
-    "terser": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz",
-      "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==",
-      "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.7.2",
-        "source-map-support": "~0.5.19"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
-        }
-      }
-    },
-    "terser-webpack-plugin": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz",
-      "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==",
-      "requires": {
-        "jest-worker": "^26.6.2",
-        "p-limit": "^3.1.0",
-        "schema-utils": "^3.0.0",
-        "serialize-javascript": "^5.0.1",
-        "source-map": "^0.6.1",
-        "terser": "^5.5.1"
-      },
-      "dependencies": {
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-          "requires": {
-            "yocto-queue": "^0.1.0"
-          }
-        },
-        "schema-utils": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
-          "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
-          "requires": {
-            "@types/json-schema": "^7.0.6",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        },
-        "serialize-javascript": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
-          "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
-          "requires": {
-            "randombytes": "^2.1.0"
-          }
-        }
-      }
-    },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "ts-loader": {
-      "version": "8.0.18",
-      "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.18.tgz",
-      "integrity": "sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==",
-      "requires": {
-        "chalk": "^4.1.0",
-        "enhanced-resolve": "^4.0.0",
-        "loader-utils": "^2.0.0",
-        "micromatch": "^4.0.0",
-        "semver": "^7.3.4"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
-          "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
-          "requires": {
-            "minimist": "^1.2.5"
-          }
-        },
-        "loader-utils": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
-          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        }
-      }
-    },
-    "tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
-    },
-    "typescript": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz",
-      "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw=="
-    },
     "uni-read-pages": {
       "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz",
-      "integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA=="
+      "resolved": "https://registry.npm.taobao.org/uni-read-pages/download/uni-read-pages-1.0.5.tgz",
+      "integrity": "sha1-RSyNyqiXe7rvYAkJvpJsjZcEOHw="
     },
     "uni-simple-router": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.0.tgz",
-      "integrity": "sha512-+R2c3WFfCSiraUBC8nG+sCjd9NeSXug3wzelTcU+PIY8JT0xgzQJ/Y0MIC1aWhCoCPPzz3RqUzFphp0TnE/r8g==",
-      "requires": {
-        "@microsoft/api-extractor": "^7.11.2",
-        "@types/node": "^14.14.2",
-        "@types/webpack": "^4.41.23",
-        "@types/webpack-env": "^1.15.3",
-        "copy-webpack-plugin": "^5.1.2",
-        "lodash.merge": "^4.6.2",
-        "path-to-regexp": "^1.8.0",
-        "ts-loader": "^8.0.5",
-        "typescript": "^4.0.3",
-        "webpack": "^5.1.0",
-        "webpack-cli": "^4.0.0"
-      }
-    },
-    "unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "requires": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "requires": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
-    },
-    "v8-compile-cache": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
-      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
-    },
-    "validator": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz",
-      "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA=="
-    },
-    "watchpack": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
-      "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
-      "requires": {
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.1.2"
-      }
-    },
-    "webpack": {
-      "version": "5.25.1",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.25.1.tgz",
-      "integrity": "sha512-dzFTJwehoLZkeHUkvMSwAgVdGL+PerfX0mke9tOWjJs4OzFctkxCqD8Zj5J387jLkC4gNqSin0/EurhH28boCg==",
-      "requires": {
-        "@types/eslint-scope": "^3.7.0",
-        "@types/estree": "^0.0.46",
-        "@webassemblyjs/ast": "1.11.0",
-        "@webassemblyjs/wasm-edit": "1.11.0",
-        "@webassemblyjs/wasm-parser": "1.11.0",
-        "acorn": "^8.0.4",
-        "browserslist": "^4.14.5",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.7.0",
-        "es-module-lexer": "^0.4.0",
-        "eslint-scope": "^5.1.1",
-        "events": "^3.2.0",
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.2.4",
-        "json-parse-better-errors": "^1.0.2",
-        "loader-runner": "^4.2.0",
-        "mime-types": "^2.1.27",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.0.0",
-        "tapable": "^2.1.1",
-        "terser-webpack-plugin": "^5.1.1",
-        "watchpack": "^2.0.0",
-        "webpack-sources": "^2.1.1"
-      },
-      "dependencies": {
-        "enhanced-resolve": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz",
-          "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==",
-          "requires": {
-            "graceful-fs": "^4.2.4",
-            "tapable": "^2.2.0"
-          }
-        },
-        "schema-utils": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
-          "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
-          "requires": {
-            "@types/json-schema": "^7.0.6",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        },
-        "tapable": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
-          "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw=="
-        }
-      }
-    },
-    "webpack-cli": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz",
-      "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==",
-      "requires": {
-        "@discoveryjs/json-ext": "^0.5.0",
-        "@webpack-cli/configtest": "^1.0.1",
-        "@webpack-cli/info": "^1.2.2",
-        "@webpack-cli/serve": "^1.3.0",
-        "colorette": "^1.2.1",
-        "commander": "^7.0.0",
-        "enquirer": "^2.3.6",
-        "execa": "^5.0.0",
-        "fastest-levenshtein": "^1.0.12",
-        "import-local": "^3.0.2",
-        "interpret": "^2.2.0",
-        "rechoir": "^0.7.0",
-        "v8-compile-cache": "^2.2.0",
-        "webpack-merge": "^5.7.3"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz",
-          "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg=="
-        }
-      }
-    },
-    "webpack-log": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-      "requires": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "webpack-merge": {
-      "version": "5.7.3",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz",
-      "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==",
-      "requires": {
-        "clone-deep": "^4.0.1",
-        "wildcard": "^2.0.0"
-      }
-    },
-    "webpack-sources": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz",
-      "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==",
-      "requires": {
-        "source-list-map": "^2.0.1",
-        "source-map": "^0.6.1"
-      }
-    },
-    "which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "wildcard": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
-      "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw=="
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-    },
-    "y18n": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
-      "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
-    },
-    "yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-    },
-    "yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
-    },
-    "z-schema": {
-      "version": "3.18.4",
-      "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz",
-      "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==",
-      "requires": {
-        "commander": "^2.7.1",
-        "lodash.get": "^4.0.0",
-        "lodash.isequal": "^4.0.0",
-        "validator": "^8.0.0"
-      }
+      "version": "2.0.7",
+      "resolved": "https://registry.nlark.com/uni-simple-router/download/uni-simple-router-2.0.7.tgz",
+      "integrity": "sha1-BOC1vmzXM6HsudNaPb6C8n9IIE4="
     }
   }
 }

+ 6 - 5
package.json

@@ -1,21 +1,22 @@
 {
-  "name": "garden-wxapp",
+  "name": "ParkApp",
   "version": "1.0.0",
-  "description": "npm install uni-simple-router\r npm install uni-read-pages",
+  "description": "",
   "main": "main.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
   "repository": {
     "type": "git",
-    "url": "https://gitee.com/pslsteins/garden-wxapp.git"
+    "url": "http://192.168.1.218:3000/xuanyan/ParkApp.git"
   },
   "keywords": [],
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "luch-request": "^3.0.5",
+    "base-64": "^1.0.0",
+    "luch-request": "^3.0.7",
     "uni-read-pages": "^1.0.5",
-    "uni-simple-router": "^2.0.0"
+    "uni-simple-router": "^2.0.7"
   }
 }

+ 9 - 0
pages.json

@@ -545,6 +545,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/index/access-record/access-record-staff",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "通行记录",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"subPackages": [{
 		"root": "party",

+ 1 - 1
pages/agency/agency.vue

@@ -71,7 +71,7 @@ export default {
 	
 	.checked{
 		font-weight: 800;
-		font-size: 42rpx;
+		font-size: 36rpx;
 	}
 	
 	.top{

+ 4 - 407
pages/agency/comps/agency-info.vue

@@ -1,23 +1,9 @@
 <template>
 	<view>
-		<view class="container" style="z-index: 999999;">
-			<view class="meteor"></view>
-			<view class="meteor"></view>
-			<view class="meteor"></view>
-			<view class="meteor"></view>
-			<view class="meteor"></view>
-		</view>
-		
-		<swiper   class="screen-swiper square-dot "  :indicator-dots="true" :circular="true"
-		 :autoplay="true" interval="5000" duration="500">
-			<swiper-item v-for="(item,index) in bannerList" :key="index">
-				<image   :src="item.banners" mode="aspectFill" ></image>
-			</swiper-item>
-		</swiper>
-		
+		<u-swiper :list="bannerList" mode="rect" name="banners" height="380" border-radius="0"></u-swiper>
 		<view class="card">
 			<view class="flex flex-direction justify-center padding-left-20">
-				<text class="text-bold agency-name  text-lg" style="padding-bottom: 12rpx;">{{detailData.agencyName}}</text>
+				<text class="text-bold agency-name  text-lg" style="padding-bottom: 12rpx;">{{detailData.name}}</text>
 			</view>
 		</view>
 		<view class="bg-white text-black">
@@ -61,11 +47,12 @@
 </template>
 
 <script>
+	import setting from "@/assets/http/setting.js"
 	export default {
 		data() {
 			return {
 				detailData:{},
-				bannerList:[]
+				bannerList:setting.indexBanner
 			}
 		},
 		created() {
@@ -196,394 +183,4 @@
 			color: rgb(200, 200, 200);
 			font-size: 26rpx;
 		}
-		
-	// 流星
-	.container {
-		position: relative;
-		width: 100%;
-		height: 100%;
-		-webkit-transform: rotate(45deg);
-		transform: rotateZ(45deg);
-		-webkit-animation: sky 200000ms linear infinite;
-		animation: sky 200000ms linear infinite;
-	}
-	
-	.meteor {
-		position: absolute;
-		left: 50%;
-		top: 50%;
-		height: 2px;
-		background: linear-gradient(-45deg, #5f91ff, rgba(0, 0, 255, 0));
-		border-radius: 999px;
-		-webkit-filter: drop-shadow(0 0 6px #699bff);
-		filter: drop-shadow(0 0 6px #699bff);
-		-webkit-animation: tail 3000ms ease-in-out infinite, shooting 3000ms ease-in-out infinite;
-		animation: tail 3000ms ease-in-out infinite, shooting 3000ms ease-in-out infinite;
-	}
-	
-	.meteor::before,
-	.meteor::after {
-		content: '';
-		position: absolute;
-		top: calc(50% - 1px);
-		right: 0;
-		height: 2px;
-		background: linear-gradient(-45deg, rgba(0, 0, 255, 0), #5f91ff, rgba(0, 0, 255, 0));
-		-webkit-transform: translateX(50%) rotateZ(45deg);
-		transform: translateX(50%) rotateZ(45deg);
-		border-radius: 100%;
-		-webkit-animation: shining 3000ms ease-in-out infinite;
-		animation: shining 3000ms ease-in-out infinite;
-	}
-	
-	.meteor::after {
-		-webkit-transform: translateX(50%) rotateZ(-45deg);
-		transform: translateX(50%) rotateZ(-45deg);
-	}
-	
-	/* 1 */
-	.meteor:nth-child(1) {
-		top: calc(50% - 185px);
-		left: calc(50% - 150px);
-		-webkit-animation-delay: 8888ms;
-		animation-delay: 8888ms;
-	}
-	
-	.meteor:nth-child(1)::before,
-	.meteor:nth-child(1)::after,
-	.meteor:nth-child(1)::after {
-		-webkit-animation-delay: 8888ms;
-		animation-delay: 8888ms;
-	}
-	
-	/* 2 */
-	.meteor:nth-child(2) {
-		top: calc(50% - 50px);
-		left: calc(50% - 180px);
-		-webkit-animation-delay: 9288ms;
-		animation-delay: 9288ms;
-	}
-	
-	.meteor:nth-child(2)::before,
-	.meteor:nth-child(2)::after,
-	.meteor:nth-child(2)::after {
-		-webkit-animation-delay: 9288ms;
-		animation-delay: 9288ms;
-	}
-	
-	.meteor:nth-child(3) {
-		top: calc(50% - 145px);
-		left: calc(50% - 135px);
-		-webkit-animation-delay: 8600ms;
-		animation-delay: 8600ms;
-	}
-	
-	.meteor:nth-child(3)::before,
-	.meteor:nth-child(3)::after,
-	.meteor:nth-child(3)::after {
-		-webkit-animation-delay: 8600ms;
-		animation-delay: 8600ms;
-	}
-	
-	.meteor:nth-child(4) {
-		top: calc(50% - 78px);
-		left: calc(50% - 155px);
-		-webkit-animation-delay: 3288ms;
-		animation-delay: 3288ms;
-	}
-	
-	.meteor:nth-child(4)::before,
-	.meteor:nth-child(4)::after,
-	.meteor:nth-child(4)::after {
-		-webkit-animation-delay: 3288ms;
-		animation-delay: 3288ms;
-	}
-	
-	.meteor:nth-child(5) {
-		top: calc(50% - 183px);
-		left: calc(50% - 8px);
-		-webkit-animation-delay: 5588ms;
-		animation-delay: 5588ms;
-	}
-	
-	.meteor:nth-child(5)::before,
-	.meteor:nth-child(5)::after,
-	.meteor:nth-child(5)::after {
-		-webkit-animation-delay: 5588ms;
-		animation-delay: 5588ms;
-	}
-	
-	.meteor:nth-child(6) {
-		top: calc(50% - 30px);
-		left: calc(50% - 195px);
-		-webkit-animation-delay: 9388ms;
-		animation-delay: 9388ms;
-	}
-	
-	.meteor:nth-child(6)::before,
-	.meteor:nth-child(6)::after,
-	.meteor:nth-child(6)::after {
-		-webkit-animation-delay: 9388ms;
-		animation-delay: 9388ms;
-	}
-	
-	.meteor:nth-child(7) {
-		top: calc(50% - 95px);
-		left: calc(50% - 70px);
-		-webkit-animation-delay: 2588ms;
-		animation-delay: 2588ms;
-	}
-	
-	.meteor:nth-child(7)::before,
-	.meteor:nth-child(7)::after,
-	.meteor:nth-child(7)::after {
-		-webkit-animation-delay: 2588ms;
-		animation-delay: 2588ms;
-	}
-	
-	.meteor:nth-child(8) {
-		top: calc(50% - 60px);
-		left: calc(50% - 70px);
-		-webkit-animation-delay: 5288ms;
-		animation-delay: 5288ms;
-	}
-	
-	.meteor:nth-child(8)::before,
-	.meteor:nth-child(8)::after,
-	.meteor:nth-child(8)::after {
-		-webkit-animation-delay: 5288ms;
-		animation-delay: 5288ms;
-	}
-	
-	.meteor:nth-child(9) {
-		top: calc(50% - 75px);
-		left: calc(50% - 250px);
-		-webkit-animation-delay: 888ms;
-		animation-delay: 888ms;
-	}
-	
-	.meteor:nth-child(9)::before,
-	.meteor:nth-child(9)::after,
-	.meteor:nth-child(9)::after {
-		-webkit-animation-delay: 888ms;
-		animation-delay: 888ms;
-	}
-	
-	.meteor:nth-child(9) {
-		top: calc(50% - 76px);
-		left: calc(50% - 240px);
-		-webkit-animation-delay: 2388ms;
-		animation-delay: 2388ms;
-	}
-	
-	.meteor:nth-child(9)::before,
-	.meteor:nth-child(9)::after,
-	.meteor:nth-child(9)::after {
-		-webkit-animation-delay: 2388ms;
-		animation-delay: 2388ms;
-	}
-	
-	.meteor:nth-child(10) {
-		top: calc(50% - 85px);
-		left: calc(50% - 6px);
-		-webkit-animation-delay: 3588ms;
-		animation-delay: 3588ms;
-	}
-	
-	.meteor:nth-child(10)::before,
-	.meteor:nth-child(10)::after,
-	.meteor:nth-child(10)::after {
-		-webkit-animation-delay: 3588ms;
-		animation-delay: 3588ms;
-	}
-	
-	.meteor:nth-child(11) {
-		top: calc(50% - 135px);
-		left: calc(50% - 260px);
-		-webkit-animation-delay: 2888ms;
-		animation-delay: 2888ms;
-	}
-	
-	.meteor:nth-child(11)::before,
-	.meteor:nth-child(11)::after,
-	.meteor:nth-child(11)::after {
-		-webkit-animation-delay: 2888ms;
-		animation-delay: 2888ms;
-	}
-	
-	.meteor:nth-child(12) {
-		top: calc(50% - 15px);
-		left: calc(50% - 8px);
-		-webkit-animation-delay: 388ms;
-		animation-delay: 388ms;
-	}
-	
-	.meteor:nth-child(12)::before,
-	.meteor:nth-child(12)::after,
-	.meteor:nth-child(12)::after {
-		-webkit-animation-delay: 388ms;
-		animation-delay: 388ms;
-	}
-	
-	.meteor:nth-child(13) {
-		top: calc(50% - 155px);
-		left: calc(50% - 50px);
-		-webkit-animation-delay: 7288ms;
-		animation-delay: 7288ms;
-	}
-	
-	.meteor:nth-child(13)::before,
-	.meteor:nth-child(13)::after,
-	.meteor:nth-child(13)::after {
-		-webkit-animation-delay: 7288ms;
-		animation-delay: 7288ms;
-	}
-	
-	.meteor:nth-child(14) {
-		top: calc(50% - 28px);
-		left: calc(50% - 80px);
-		-webkit-animation-delay: 8888ms;
-		animation-delay: 8888ms;
-	}
-	
-	.meteor:nth-child(14)::before,
-	.meteor:nth-child(14)::after,
-	.meteor:nth-child(14)::after {
-		-webkit-animation-delay: 8888ms;
-		animation-delay: 8888ms;
-	}
-	
-	.meteor:nth-child(15) {
-		top: calc(50% - 35px);
-		left: calc(50% - 200px);
-		-webkit-animation-delay: 7588ms;
-		animation-delay: 7588ms;
-	}
-	
-	.meteor:nth-child(15)::before,
-	.meteor:nth-child(15)::after,
-	.meteor:nth-child(15)::after {
-		-webkit-animation-delay: 7588ms;
-		animation-delay: 7588ms;
-	}
-	
-	.meteor:nth-child(16) {
-		top: calc(50% - 40px);
-		left: calc(50% - 250px);
-		-webkit-animation-delay: 1888ms;
-		animation-delay: 1888ms;
-	}
-	
-	.meteor:nth-child(16)::before,
-	.meteor:nth-child(16)::after,
-	.meteor:nth-child(16)::after {
-		-webkit-animation-delay: 1888ms;
-		animation-delay: 1888ms;
-	}
-	
-	
-	@-webkit-keyframes tail {
-		0% {
-			width: 0;
-		}
-	
-		30% {
-			width: 100px;
-		}
-	
-		100% {
-			width: 0;
-		}
-	}
-	
-	@keyframes tail {
-		0% {
-			width: 0;
-		}
-	
-		30% {
-			width: 100px;
-		}
-	
-		100% {
-			width: 0;
-		}
-	}
-	
-	@-webkit-keyframes shining {
-		0% {
-			width: 0;
-		}
-	
-		50% {
-			width: 30px;
-		}
-	
-		1000% {
-			width: 0;
-		}
-	}
-	
-	@keyframes shining {
-		0% {
-			width: 0;
-		}
-	
-		50% {
-			width: 30px;
-		}
-	
-		1000% {
-			width: 0;
-		}
-	}
-	
-	@-webkit-keyframes shooting {
-		0% {
-			-webkit-transform: translateX(0);
-			transform: translateX(0);
-		}
-	
-		100% {
-			-webkit-transform: translateX(300px);
-			transform: translateX(300px);
-		}
-	}
-	
-	@keyframes shooting {
-		0% {
-			-webkit-transform: translateX(0);
-			transform: translateX(0);
-		}
-	
-		100% {
-			-webkit-transform: translateX(300px);
-			transform: translateX(300px);
-		}
-	}
-	
-	@-webkit-keyframes sky {
-		0% {
-			-webkit-transform: rotate(45deg);
-			transform: rotate(45deg);
-		}
-	
-		100% {
-			-webkit-transform: rotate(405deg);
-			transform: rotate(405deg);
-		}
-	}
-	
-	@keyframes sky {
-		0% {
-			-webkit-transform: rotate(45deg);
-			transform: rotate(45deg);
-		}
-	
-		100% {
-			-webkit-transform: rotate(405deg);
-			transform: rotate(405deg);
-		}
-	}
-		
 </style>

+ 199 - 188
pages/agency/comps/data-service.vue

@@ -3,11 +3,11 @@
 		<!-- 园区数据统计 -->
 		<view class="">
 			<view class="title">
-				<image  src="../../../static/icon/tag1.png" mode=""></image>
-				<text >园区数据统计</text>
+				<image src="../../../static/icon/tag1.png" mode=""></image>
+				<text>园区数据统计</text>
 			</view>
 			<view class="data-statistics" v-if="loading">
-				<view class="item"  v-for="(item,index) in agencyStatistical" :key="index">
+				<view class="item" v-for="(item,index) in agencyStatistical" :key="index">
 					<view class="data">
 						<text>{{item.num}}</text>
 						<text>{{item.title}}</text>
@@ -18,15 +18,15 @@
 				<u-loading mode="flower" size="150"></u-loading>
 			</view>
 		</view>
-		
+
 		<!-- 分割线 -->
 		<view class="" style="background-color: #F1F1F1;height: 20rpx;"></view>
-		
-		
+
+
 		<!-- 园区当日动态  begin-->
-		<!-- <view class="title">
-			<image  src="../../../static/icon/tag1.png" mode=""></image>
-			<text >园区当日动态</text>
+<!-- 		<view class="title">
+			<image src="../../../static/icon/tag1.png" mode=""></image>
+			<text>园区当日动态</text>
 		</view>
 		<view class="desc">
 			<view class="flex">
@@ -40,278 +40,289 @@
 				<text class="padding-left-10">外部(人)</text>
 			</view>
 		</view>
-		
+
 		<view class="today-statistics margin-top-20">
-			<view  style="width: 30%;margin-top: 5rpx;">
-				<text >驶入车辆:</text>
+			<view style="width: 30%;margin-top: 5rpx;">
+				<text>驶入车辆:</text>
 			</view>
-			<view  class="cu-progress radius striped active margin-top-10">
-				<view class="bg-green" :style="[{ width:loading?todayData.enterCarOfInsidePercen+'%':''}]">{{todayData.enterCarOfInside}}</view>
-				<view v-if="todayData.enterCarOfOutside!=0"  class="bg-red" :style="[{ width:loading?todayData.enterCarOfOutsidePercen+'%':''}]">{{todayData.enterCarOfOutside}}</view>
+			<view class="cu-progress radius striped active margin-top-10">
+				<view class="bg-green" :style="[{ width:loading?todayData.enterCarOfInsidePercen+'%':''}]">
+					{{todayData.enterCarOfInside}}</view>
+				<view v-if="todayData.enterCarOfOutside!=0" class="bg-red"
+					:style="[{ width:loading?todayData.enterCarOfOutsidePercen+'%':''}]">{{todayData.enterCarOfOutside}}
+				</view>
 			</view>
 		</view>
 		<view class="today-statistics">
-			<view  style="width: 30%;margin-top: 5rpx;">
-				<text >驶出车辆:</text>
+			<view style="width: 30%;margin-top: 5rpx;">
+				<text>驶出车辆:</text>
 			</view>
-			<view  class="cu-progress radius striped active margin-top-10">
-				<view class="bg-green" :style="[{ width:loading?todayData.departCarOfInsidePercen+'%':''}]">{{todayData.departCarOfInside}}</view>
-				<view v-if="todayData.departCarOfOutside!=0"  class="bg-red" :style="[{ width:loading?todayData.departCarOfOutsidePercen+'%':''}]">{{todayData.departCarOfOutside}}</view>
+			<view class="cu-progress radius striped active margin-top-10">
+				<view class="bg-green" :style="[{ width:loading?todayData.departCarOfInsidePercen+'%':''}]">
+					{{todayData.departCarOfInside}}</view>
+				<view v-if="todayData.departCarOfOutside!=0" class="bg-red"
+					:style="[{ width:loading?todayData.departCarOfOutsidePercen+'%':''}]">
+					{{todayData.departCarOfOutside}}</view>
 			</view>
 		</view>
 		<view class="today-statistics">
-			<view  style="width: 30%;margin-top: 5rpx;">
-				<text >人员统计:</text>
+			<view style="width: 30%;margin-top: 5rpx;">
+				<text>人员统计:</text>
 			</view>
-			<view  class="cu-progress radius striped active margin-top-10">
+			<view class="cu-progress radius striped active margin-top-10">
 				<view class="bg-green" :style="[{ width:loading?'100%':''}]">{{todayData.peopleNum}}</view>
 			</view>
 		</view>
 		<pie :pieData="pieData" v-if="!$isEmpty(pieData)"></pie> -->
 		<!-- 园区当日动态  begin-->
-		
+
 		<!-- 分割线 -->
 		<!-- <view class="" style="background-color: #F1F1F1;height: 20rpx;"></view> -->
 		<view class="title">
-			<image  src="../../../static/icon/tag1.png" mode=""></image>
-			<text >近10天用电量</text>
+			<image src="../../../static/icon/tag1.png" mode=""></image>
+			<text>近10天用电量</text>
 		</view>
-		<line :lineJson="lineJson" v-if="!$isEmpty(lineJson)" ></line>
-		
+		<line :lineJson="lineJson" v-if="!$isEmpty(lineJson)"></line>
+
 		<!-- 分割线 -->
 		<view class="" style="background-color: #F1F1F1;height: 20rpx;"></view>
-		
+
 		<view class="title">
-			<image  src="../../../static/icon/tag1.png" mode=""></image>
-			<text >人员进出记录</text>
+			<image src="../../../static/icon/tag1.png" mode=""></image>
+			<text>人员进出记录</text>
 		</view>
 		<in-out-records></in-out-records>
-		
-		
-		
 	</view>
 </template>
 <script>
-import pie from "./canvas/pie.vue"
-import inOutRecords from "./canvas/in-out-records.vue"
-import line from "./canvas/Line.vue"
-var that;
-export default {
-	components:{
-		pie,inOutRecords,line
-	},
-	data() {
-		return {
-			//园区
-			agencyId:'',
-			tenantId:'',
-			
-			loading:false,
-			
-			//园区数据统计
-			agencyStatistical:[],
-			//园区当日动态
-			todayData:{},
-			
-			lineJson:{},
-			pieData:{}
-		};
-	},
-	created() {
-		that = this;
-		this.agencyId=this.$cache.get('agencyId')
-		this.tenantId=this.$cache.get('agencyTenantId')
-		//园区数据统计
-		this.fetchAgencyData()
-		this.fetchTodayData()
-		this.fetchElectricMeter()
-		
-		
-		setTimeout(function() {
-			that.loading = true
-		}, 500)
-	},
-	methods: {
-		async fetchElectricMeter(){
-			let aelectricMeterStaticgencyId=this.$cache.get('agencyId')
-			let res=await this.$api.statistical.electricMeterStatic({agencyId:'1338406098847293442'})
-			this.lineJson= {
-			   "categories": res.data.dates.slice(0,10),
-				series: [{
-					name: '电表用量(Kwh)',
-					data: res.data.values.slice(0,10),
-					color: '#5064eb'
-				}]
-			}
+	import pie from "./canvas/pie.vue"
+	import inOutRecords from "./canvas/in-out-records.vue"
+	import line from "./canvas/Line.vue"
+	var that;
+	export default {
+		components: {
+			pie,
+			inOutRecords,
+			line
 		},
-		// 园区数据统计
-		fetchAgencyData(){
-			this.$api.statistical.agencyStatistical({id:this.agencyId}).then(res=>{
-				this.agencyStatistical=[
-					{
-						 title:'园区分区',
-						 num:res.residentials.length
-					},
-					{
-						 title:'楼宇总数',
-						 num:res.buildingCount
-					},
-					{
-						 title:'企业总数',
-						 num:res.enterpriseCount
-					},
-					{
-						 title:'员工总数',
-						 num:res.staffCount
-					},
-					{
-						 title:'正常设备',
-						 num:res.safetyDeviceCount
-					},
-					{
-						 title:'告警总数',
-						 num:res.warningDeviceCount
-					},
-				]
-			})
+		data() {
+			return {
+				//园区
+				agencyId: '',
+				tenantId: '',
+
+				loading: false,
+
+				//园区数据统计
+				agencyStatistical: [],
+				//园区当日动态
+				todayData: {},
+
+				lineJson: {},
+				pieData: {}
+			};
 		},
-		//今日动态
-		fetchTodayData(){
-			let params={
-				agencyId:this.agencyId,
-				tenantId:this.tenantId
-			}
-			this.$api.statistical.todayData(params).then(res=>{
-				this.todayData=res.data
-				
-				//驶入车辆总数
-				let enterTotal=this.todayData.enterCarOfInside+this.todayData.enterCarOfOutside
-				//内部驶入车辆百分比
-				this.todayData.enterCarOfInsidePercen=this.$util.keepTwoDecimalFull(this.todayData.enterCarOfInside/enterTotal)*100
-				//外部驶入车辆百分比
-				this.todayData.enterCarOfOutsidePercen=100-this.todayData.enterCarOfInsidePercen
-				
-				//驶出车辆总数
-				let departTotal=this.todayData.departCarOfOutside+this.todayData.departCarOfInside
-				//内部驶出车辆百分比
-				this.todayData.departCarOfInsidePercen=this.$util.keepTwoDecimalFull(this.todayData.departCarOfInside/departTotal)*100
-				//外部驶出车辆百分比
-				this.todayData.departCarOfOutsidePercen=100-this.todayData.departCarOfInsidePercen
-
-				//内部与外部人车辆进出的比例
-				
-				let insideTotal=this.todayData.departCarOfInside+this.todayData.enterCarOfInside
-				let outsideTotal=this.todayData.departCarOfOutside+this.todayData.enterCarOfOutside
-				
-				let carTotal=this.todayData.departCarOfInside+this.todayData.departCarOfOutside+
-							 this.todayData.enterCarOfInside+this.todayData.enterCarOfOutside
-							 
-				this.pieData={
-					insideTotal,
-					outsideTotal,
-					carTotal,
-					peopleNum:this.todayData.peopleNum
-				}
-				console.log(this.pieData);
-			})
+		created() {
+			that = this;
+			this.agencyId = this.$cache.get('agencyId')
+			this.tenantId = this.$cache.get('agencyTenantId')
+			//园区数据统计
+			this.fetchAgencyData()
+			this.fetchTodayData()
+			this.fetchElectricMeter()
+
+
+			setTimeout(function() {
+				that.loading = true
+			}, 500)
 		},
-	}
-};
+		methods: {
+			async fetchElectricMeter() {
+				let aelectricMeterStaticgencyId = this.$cache.get('agencyId')
+				let res = await this.$api.statistical.electricMeterStatic({
+					agencyId: this.agencyId
+				})
+				this.lineJson = {
+					"categories": res.data.dates.slice(0, 10),
+					series: [{
+						name: '电表用量(Kwh)',
+						data: res.data.values.slice(0, 10),
+						color: '#5064eb'
+					}]
+				}
+			},
+			// 园区数据统计
+			fetchAgencyData() {
+				this.$api.statistical.agencyStatistical({
+					id: this.agencyId
+				}).then(res => {
+					this.agencyStatistical = [{
+							title: '园区分区',
+							num: res.residentials.length
+						},
+						{
+							title: '楼宇总数',
+							num: res.buildingCount
+						},
+						{
+							title: '企业总数',
+							num: res.enterpriseCount
+						},
+						{
+							title: '员工总数',
+							num: res.staffCount
+						},
+						{
+							title: '正常设备',
+							num: res.safetyDeviceCount
+						},
+						{
+							title: '告警总数',
+							num: res.warningDeviceCount
+						},
+					]
+				})
+			},
+			//今日动态
+			fetchTodayData() {
+				let params = {
+					agencyId: this.agencyId,
+					tenantId: this.tenantId
+				}
+				this.$api.statistical.todayData(params).then(res => {
+					this.todayData = res.data
+
+					//驶入车辆总数
+					let enterTotal = this.todayData.enterCarOfInside + this.todayData.enterCarOfOutside
+					//内部驶入车辆百分比
+					this.todayData.enterCarOfInsidePercen = this.$util.keepTwoDecimalFull(this.todayData
+						.enterCarOfInside / enterTotal) * 100
+					//外部驶入车辆百分比
+					this.todayData.enterCarOfOutsidePercen = 100 - this.todayData.enterCarOfInsidePercen
+
+					//驶出车辆总数
+					let departTotal = this.todayData.departCarOfOutside + this.todayData.departCarOfInside
+					//内部驶出车辆百分比
+					this.todayData.departCarOfInsidePercen = this.$util.keepTwoDecimalFull(this.todayData
+						.departCarOfInside / departTotal) * 100
+					//外部驶出车辆百分比
+					this.todayData.departCarOfOutsidePercen = 100 - this.todayData.departCarOfInsidePercen
+
+					//内部与外部人车辆进出的比例
+
+					let insideTotal = this.todayData.departCarOfInside + this.todayData.enterCarOfInside
+					let outsideTotal = this.todayData.departCarOfOutside + this.todayData.enterCarOfOutside
+
+					let carTotal = this.todayData.departCarOfInside + this.todayData.departCarOfOutside +
+						this.todayData.enterCarOfInside + this.todayData.enterCarOfOutside
+
+					this.pieData = {
+						insideTotal,
+						outsideTotal,
+						carTotal,
+						peopleNum: this.todayData.peopleNum
+					}
+					console.log(this.pieData);
+				})
+			},
+		}
+	};
 </script>
 
 <style lang="scss">
-	.bg-red{
+	.bg-red {
 		background-color: #d10000;
 		color: #FFFFFF;
 	}
-	
-	.bg-green{
+
+	.bg-green {
 		background-color: #11914d;
 		color: #FFFFFF;
 	}
-	
+
 	//描述
-	.desc{
+	.desc {
 		display: flex;
 		justify-content: flex-end;
 		align-items: center;
-		padding:0 30rpx 0 50rpx;
-		
-		.progress{
+		padding: 0 30rpx 0 50rpx;
+
+		.progress {
 			margin-top: 15rpx;
 			margin-right: 10rpx;
 			width: 40rpx;
 			height: 10rpx;
 		}
 	}
-	
+
 	//当日统计
-	.today-statistics{
+	.today-statistics {
 		padding: 20rpx 40rpx;
 		display: flex;
 	}
-	
-	
+
+
 	//描述
-	.title{
+	.title {
 		padding: 30rpx;
 		display: flex;
-		
-		image{
+
+		image {
 			width: 45rpx;
 			height: 45rpx;
 			display: block;
 			padding-top: 10rpx;
 			padding-right: 10rpx;
 		}
-		
-		text{
+
+		text {
 			font-size: 36rpx;
 			font-weight: 800;
 		}
 	}
-	
-	
-	
+
+
+
 	//园区数据统计
-	
-	.data-statistics{
+
+	.data-statistics {
 		display: flex;
 		flex-wrap: wrap;
 		justify-content: space-around;
-		.item{
+
+		.item {
 			box-shadow: 10rpx 10rpx 10rpx #d1d1d1;
 			width: 28%;
 			height: 140rpx;
 			margin: 20rpx 15rpx;
-			background-image: linear-gradient(to top right,#55aaff,#4759d0);
+			background-image: linear-gradient(to top right, #55aaff, #4759d0);
 			border-radius: 10rpx;
 			color: #FFFFFF;
-			
-			.data{
+
+			.data {
 				display: flex;
 				justify-content: center;
 				align-items: center;
 				flex-direction: column;
 				font-size: 28rpx;
 				height: 100%;
-				
-				text:first-child{
+
+				text:first-child {
 					margin-bottom: 10rpx;
 					font-size: 45rpx;
 				}
 			}
 		}
-		.item:hover{
+
+		.item:hover {
 			box-shadow: 0rpx 0rpx 0rpx #d1d1d1;
 			background-color: $base-color;
 		}
-		
+
 		.item:active {
-			background-image: linear-gradient(to top right,#55aaff,#4759d0);
+			background-image: linear-gradient(to top right, #55aaff, #4759d0);
 			box-shadow: 10rpx 10rpx 10rpx #d1d1d1;
 			transform: translateY(4px);
 		}
 	}
-	
 </style>

+ 2 - 3
pages/device/device.vue

@@ -29,11 +29,10 @@
 			</view>
 			
 			<view class="" style="position: fixed;bottom: 15%;left: calc( 50% - 90rpx);">
-				<view @click="openDoor(door_value)" class="btn-open text-center flex justify-center align-center" style="border-radius: 50%;height: 180rpx;width: 180rpx;font-size: 34rpx;">
+				<button @click="openDoor(door_value)" class="cu-btn u-reset-button btn-open text-center flex justify-center align-center" style="border-radius: 50%;height: 180rpx;width: 180rpx;font-size: 34rpx;">
 					<text>开门</text>
-				</view>
+				</button>
 			</view>
-			
 			<u-action-sheet :list="actionList" v-model="actionShow" @click="actionClick"></u-action-sheet>
 		</view>
 		<u-tabbar

+ 93 - 99
pages/enterprise/add.vue

@@ -15,7 +15,9 @@
 								v-model="model.residentialName" placeholder="请选择所属区域"></u-input>
 						</u-form-item>
 						<u-form-item label="企业位置">
-							<u-input disabled v-model="location" placeholder="请选择企业位置" @click="chooseLocation"></u-input>
+							<u-input disabled v-model="location" placeholder="请选择企业位置" @click="chooseLocation">
+							</u-input>
+							<u-icon name="map-fill" slot="right"></u-icon>
 						</u-form-item>
 						<u-form-item :required="true" label="详细地址" prop="region">
 							<u-input type="text" v-model="model.region" placeholder="请输入详细地址"></u-input>
@@ -25,13 +27,13 @@
 						</u-form-item>
 						<u-form-item label="企业类型">
 							<u-input type="select" @click="enterpriseTypeShow=true" :select-open="enterpriseTypeShow"
-								v-model="model.enterpriseType" placeholder="请选择企业类型"></u-input>
+								v-model="model.enterpriseTypeName" placeholder="请选择企业类型"></u-input>
 						</u-form-item>
-						
+
 						<u-form-item label="组织机构代码">
 							<u-input type="text" v-model="model.organizationCode" placeholder="请输入组织机构代码"></u-input>
 						</u-form-item>
-			
+
 						<u-form-item label="注册资金">
 							<u-input type="text" v-model="model.registeredCapital" placeholder="请输入注册资金"></u-input>
 						</u-form-item>
@@ -39,21 +41,21 @@
 							<u-input type="text" v-model="model.registeredAddress" placeholder="请输入注册地址"></u-input>
 						</u-form-item>
 						<u-form-item label="成立日期">
-							<u-input v-model="model.registeredDate" placeholder="请输入成立日期"></u-input>
+							<u-input v-model="model.registeredDate" type="select" @click="registeredDateShow=true" :select-open="registeredDateShow" placeholder="请输入成立日期"></u-input>
 						</u-form-item>
 						<u-form-item label="办公电话">
 							<u-input v-model="model.officeNum" placeholder="请输入办公电话"></u-input>
 						</u-form-item>
 						<u-form-item label="企业简介">
-							<u-input type="textarea" height="200" v-model="model.enterpriseIntroduce" placeholder="请输入企业简介">
+							<u-input type="textarea" height="200" v-model="model.enterpriseIntroduce"
+								placeholder="请输入企业简介">
 							</u-input>
 						</u-form-item>
-			
-						<u-form-item class=""  label="请上传营业执照" label-position="top">
+
+						<u-form-item class="" label="请上传营业执照" label-position="top">
 							<view class="upload-img">
 								<view class="" @click="chooseImage">
-									<upload-img :width="width" :height="height" :currentImage="model.businessLicense"
-										bgsrc="http://139.9.103.171:1888/miniofile/xlyq/upload.png">
+									<upload-img :width="width" :height="height" :currentImage="model.businessLicense">
 									</upload-img>
 									<view class="text-center  padding-top-20 base-color">
 										<text class="cuIcon-camera padding-right-sm" style="font-size: 30rpx;"></text>
@@ -63,12 +65,11 @@
 								</view>
 							</view>
 						</u-form-item>
-			
-						<u-form-item class=""  label="请上传公司logo" label-position="top">
+
+						<u-form-item class="" label="请上传公司logo" label-position="top">
 							<view class="upload-img">
 								<view class="" @click="chooseImage('logo')">
-									<upload-img :width="width" :height="height" :currentImage="model.logo"
-										bgsrc="http://139.9.103.171:1888/miniofile/xlyq/upload.png">
+									<upload-img :width="width" :height="height" :currentImage="model.logo">
 									</upload-img>
 									<view class="text-center  padding-top-20 base-color">
 										<text class="cuIcon-camera padding-right-sm" style="font-size: 30rpx;"></text>
@@ -78,7 +79,7 @@
 								</view>
 							</view>
 						</u-form-item>
-			
+
 					</u-form>
 				</view>
 			</view>
@@ -86,14 +87,15 @@
 				<view class="bg-white" style="height: 80rpx;"></view>
 				<view class="" @click="submit" style="width: 90%;margin: 0 auto ;margin-bottom: 10%;">
 					<view class="cu-btn round base-bg-color" style="padding: 40rpx;width: 100%;">
-						<text class="cuIcon-add"></text>
+						<text class="cuIcon-add margin-right-10"></text>
 						<text>确认提交</text>
 					</view>
 				</view>
 			</view>
 		</scroll-view>
 		<!-- 区域 -->
-		<u-select @confirm="residentialConfirm" label-name="name" value-name="id" v-model="residentialShow" :list="residentialList"></u-select>
+		<u-select @confirm="residentialConfirm" label-name="name" value-name="id" v-model="residentialShow"
+			:list="residentialList"></u-select>
 		<!-- 企业类型 -->
 		<u-select @confirm="enterpriseTypeConfirm" v-model="enterpriseTypeShow" :list="enterpriseTypeList"></u-select>
 		<!-- 成立日期 -->
@@ -113,20 +115,20 @@
 				height: 320,
 
 				model: {
-					enterpriseName:'',
-					representative:'',
-					region:'',
-					creditCode:'',
-					businessLicense:'',
-					logo:''
+					enterpriseName: '',
+					representative: '',
+					region: '',
+					creditCode: '',
+					businessLicense: '',
+					logo: ''
 				},
-				
+
 				//区域
-				residentialList:[],
-				residentialShow:false,
-				
+				residentialList: [],
+				residentialShow: false,
+
 				//企业位置
-				location:'',
+				location: '',
 				//企业类型
 				enterpriseTypeShow: false,
 				enterpriseTypeList: [],
@@ -140,43 +142,33 @@
 					minute: false,
 					second: false
 				},
-				
+
 				rules: {
-					enterpriseName: [
-						{ 
-							required: true, 
-							message: '请输入企业名称', 
-							trigger: ['change','blur'],
-						}
-					],
-					representative:[
-						{
-							required: true, 
-							message: '请输入法定代表人', 
-							trigger: ['change','blur'],
-						}
-					],
-					region:[
-						{
-							required: true, 
-							message: '请输入详细地址', 
-							trigger: ['change','blur'],
-						}
-					],
-					creditCode:[
-						{
-							required: true, 
-							message: '请输入统一信用代码', 
-							trigger: ['change','blur'],
-						}
-					],
-					residentialName:[
-						{
-							required: true, 
-							message: '请选择所属区域', 
-							trigger: ['change','blur'],
-						}
-					]
+					enterpriseName: [{
+						required: true,
+						message: '请输入企业名称',
+						trigger: ['change', 'blur'],
+					}],
+					representative: [{
+						required: true,
+						message: '请输入法定代表人',
+						trigger: ['change', 'blur'],
+					}],
+					region: [{
+						required: true,
+						message: '请输入详细地址',
+						trigger: ['change', 'blur'],
+					}],
+					creditCode: [{
+						required: true,
+						message: '请输入统一信用代码',
+						trigger: ['change', 'blur'],
+					}],
+					residentialName: [{
+						required: true,
+						message: '请选择所属区域',
+						trigger: ['change', 'blur'],
+					}]
 				}
 			}
 		},
@@ -189,33 +181,35 @@
 		},
 		methods: {
 			//区域列表
-			fetchResidentialList(){
-				let params={
-					agencyId:this.$cache.get('agencyId'),
-					size:300,
+			fetchResidentialList() {
+				let params = {
+					agencyId: this.$cache.get('agencyId'),
+					size: 300,
 				}
-				this.$api.residential.page(params).then(res=>{
-					this.residentialList=res.data.records
+				this.$api.residential.page(params).then(res => {
+					this.residentialList = res.data.records
 				})
 			},
-			residentialConfirm(e){
-				console.log(e);
-				this.model.residentialId=e[0].value
-				this.model.residentialName=e[0].label
+			residentialConfirm(e) {
+				this.model.residentialId = e[0].value
+				this.model.residentialName = e[0].label
 			},
 			//企业类型
-			enterpriseTypeConfirm(e){
-				this.model.enterpriseType=e[0].value
+			enterpriseTypeConfirm(e) {
+				this.model.enterpriseType = e[0].value
+				this.model.enterpriseTypeName= e[0].label
 			},
-			fetchEnterpriseList(){
-				this.enterpriseTypeList=[]
-				this.$api.dict({code:'enterprise_type'}).then(res=>{
-					res.data.forEach(item=>{
-						let obj={
-							label:item.dictValue,
-							value:item.dictValue
+			fetchEnterpriseList() {
+				this.enterpriseTypeList = []
+				this.$api.dict({
+					code: 'enterprise_type'
+				}).then(res => {
+					res.data.forEach(item => {
+						let obj = {
+							label: item.dictValue,
+							value: item.dictKey
 						}
-						 this.enterpriseTypeList.push(obj)
+						this.enterpriseTypeList.push(obj)
 					})
 				})
 			},
@@ -223,15 +217,15 @@
 			registeredDateConfirm(e) {
 				this.model.registeredDate = e.year + '-' + e.month + '-' + e.day
 			},
-			chooseLocation(){
-				let that=this
+			chooseLocation() {
+				let that = this
 				uni.chooseLocation({
-				    success: function (res) {
-						that.location=`经纬度:(${res.longitude},${res.latitude})`
-						that.model.latitude=res.latitude
-						that.model.longitude=res.longitude
-						that.model.region=res.address
-				    }
+					success: function(res) {
+						that.location = `经纬度:(${res.longitude},${res.latitude})`
+						that.model.latitude = res.latitude
+						that.model.longitude = res.longitude
+						that.model.region = res.address
+					}
 				});
 			},
 			//上传照片
@@ -239,23 +233,23 @@
 				let tempFilePaths = await this.$mpi.chooseImage()
 				let res = await this.$api.uploadFile.submit(tempFilePaths[0])
 				if (type == 'logo') {
-					this.model.logo = res.data
+					this.model.logo = res.data.link
 				} else {
-					this.model.businessLicense = res.data
+					this.model.businessLicense = res.data.link
 				}
 			},
 			//提交
-		    submit() {
+			submit() {
 				this.$refs.uForm.validate(valid => {
 					if (valid) {
 						this.save()
 					}
 				});
 			},
-			async save(){
-				let res=await this.$api.enterprise.submit(this.model)
-				if (res.success==true) {
-					this.$dialog.showModal('添加成功',false).then(()=>{
+			async save() {
+				let res = await this.$api.enterprise.submit(this.model)
+				if (res.success == true) {
+					this.$dialog.showModal('添加成功', false).then(() => {
 						this.$util.isReloadAndBack()
 					})
 				}

+ 2 - 2
pages/enterprise/comps/card.vue

@@ -8,11 +8,11 @@
 					</view>
 					<view class="content">
 						<text class="text-cut-1">{{item.enterpriseName}}</text>
-						<text class="text-cut-1">{{item.residentialName}}</text>
+						<text class="text-cut-1">{{item.enterpriseTypeName}}</text>
 					</view>
 				</view>
 				<view class="right">
-					<image @click.stop="callPhone(item.officeNum)" src="../../../static/index/call.png" mode=""></image>
+					<image @click.stop="$util.callPhone(item.officeNum)" src="../../../static/index/call.png" mode=""></image>
 				</view>
 			</view>
 		</navigator>

+ 3 - 5
pages/enterprise/detail.vue

@@ -5,7 +5,7 @@
 				<image src="../../static/icon/qiyegl.png" mode=""></image>
 				<view class="flex flex-direction">
 					<text class="text-bold  " style="padding-bottom: 12rpx;font-size: 36rpx;">{{detail.enterpriseName}}</text>
-					<text class="text-df">{{detail.enterpriseType}}</text>
+					<text class="text-df">{{detail.enterpriseTypeName}}</text>
 				</view>
 			</view>
 		</view>
@@ -14,10 +14,8 @@
 				<image style="width: 35rpx;height: 35rpx;display: block;padding-top: 6rpx;padding-right: 10rpx;" src="../../static/icon/tag1.png" mode=""></image>
 				<text class="text-lg text-bold">公司简介</text>
 			</view>
-			<view class="sub-title">
-				<text style="padding-left: 60rpx;">
-					{{detail.enterpriseIntroduce}}
-				</text>
+			<view class="sub-title bg-blue" >
+				{{detail.enterpriseIntroduce}}
 			</view>
 		</view>
 		<view class="bg-white text-black">

+ 63 - 0
pages/index/access-record/access-record-staff.vue

@@ -0,0 +1,63 @@
+<template>
+	<view>
+	   <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+			<card :list="dataList"></card>
+		</mescroll-body>
+	</view>
+</template>
+<script>
+	import card from "./comps/card.vue"
+	import MescrollMixin from "@/components/mescroll-body/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin],
+		components:{
+			card
+		},
+		data() {
+			return {
+				loginType:'',
+				downOption: { 
+					auto:false
+				},
+				dataList:[],
+			}
+		},
+		onLoad() {
+			this.loginType=this.$cache.get('loginType')
+		},
+		methods: {
+			downCallback(){
+				setTimeout(()=>{
+					uni.showToast({title:"刷新成功",icon:"none"})
+					this.mescroll.resetUpScroll();
+				},1500)
+			},
+			upCallback(mescroll){
+				let params={
+					current:mescroll.num,
+					size:mescroll.size,
+					userId:this.$cache.get('userId')
+				}
+				try{
+					this.$api.accessrecord.page(params).then(res=>{
+						let data=res.data.records
+						this.mescroll.endBySize(data.length, res.total)
+						if (mescroll.num==1) this.dataList=[]
+						this.dataList=this.dataList.concat(data)
+						setTimeout(()=>{
+							this.mescroll.endBySize(data.length, res.total)
+						},20)
+					})
+				}catch(e){
+					this.mescroll.endErr();
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+page{
+	background-color: #FFFFFF;
+}
+</style>

+ 110 - 0
pages/index/access-record/comps/item.vue

@@ -0,0 +1,110 @@
+<template>
+	<MeScroll :up="up" :down="down" @up="upFn" :fixed="false" @down="downFn" @init="initMeScroll">
+		<card :list="list"></card>
+	</MeScroll>
+</template>
+<script>
+	import MeScroll from '@/components/mescroll-body/mescroll-uni.vue'
+	import card from './card.vue'
+	var app = getApp()
+	export default {
+		components: {
+			MeScroll,
+			card
+		},
+		props: {
+			type: Number,
+			i: Number,
+			item: Object
+		},
+		data() {
+			return {
+				loginType: '',
+
+				isInit: false, // 是否初始化
+				list: [], // 列表数据
+				mescroll: null, // mescroll 对象
+				// 上拉配置参数
+				up: {
+					noMoreSize: 5,
+					auto: false,
+					page: {
+						page: 0,
+						size: 10
+					}
+				},
+				// 下拉配置参数
+				down: {
+					use: true,
+					auto: false
+				}
+			}
+		},
+		watch: {
+			type(val) {
+				if (!this.isInit && val === this.i) {
+					this.mescroll.resetUpScroll()
+				}
+			}
+		},
+		mounted() {
+			if (!this.isInit && this.i === 0) {
+				this.mescroll.resetUpScroll()
+			}
+		},
+		created() {
+			this.loginType = this.$cache.get('loginType')
+		},
+		methods: {
+			/**
+			 * @param {Object} mescroll 初始化组件
+			 */
+			initMeScroll(mescroll) {
+				this.mescroll = mescroll
+			},
+			/**
+			 * @param {Object} mescroll 上拉回调
+			 */
+			upFn(mescroll) {
+				let params = {
+					current: mescroll.num,
+					size: mescroll.size,
+					userType: this.item.value
+				}
+				if (this.loginType == this.$loginType.AGENCY) {
+					//园区登陆
+					params.tenantId=this.$cache.get('agencyTenantId')
+				} else if (this.loginType == this.$loginType.ENTERPRISE) {
+					//企业
+					params.enterpriseId=this.$cache.get('enterpriseId')
+				}
+				try {
+					this.$api.accessrecord.page(params).then(res => {
+						let data = res.data.records
+						let length = data.length
+						let total = res.data.total
+						mescroll.endBySize(length, total);
+						if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
+						this.list = this.list.concat(data); //追加新数据
+					})
+				} catch (e) {
+					mescroll.endErr();
+				}
+			},
+			/**
+			 * 下拉回调
+			 * */
+			downFn(mescroll) {
+				setTimeout(() => {
+					this.mescroll.resetUpScroll()
+				}, 1500)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	view {
+		box-sizing: border-box;
+	}
+</style>

+ 1 - 7
pages/index/agency/agency.vue

@@ -1,12 +1,6 @@
 <template>
 	<view>
-		<swiper   class="screen-swiper square-dot "  :indicator-dots="true" :circular="true"
-		 :autoplay="true" interval="5000" duration="500">
-			<swiper-item v-for="(item,index) in bannerList" :key="index">
-				<image   :src="item.banners" mode="aspectFill" ></image>
-			</swiper-item>
-		</swiper>
-		
+		<u-swiper :list="bannerList" mode="rect" name="banners" height="380" border-radius="0"></u-swiper>
 		<view class="card">
 			<view class="flex flex-direction justify-center padding-left-20">
 				<text class="text-bold  text-lg" style="padding-bottom: 12rpx;">{{detail.agencyName}}</text>

+ 110 - 100
pages/index/fire/alarm-record.vue

@@ -1,17 +1,21 @@
 <template>
-	<view  :class="$isEmpty(list)?'bg-white':'container'">
-		<u-calendar v-model="dateShow" mode="date" @change="change"></u-calendar>
-		<view  class="top bg-white " style="position: fixed;top: 0;z-index: 999;width: 100%;">
+	<view :class="$isEmpty(list)?'bg-white':'container'">
+		<u-calendar v-model="dateShow" mode="date" @change="change" borderRadius="8" active-bg-color="#5064eb"></u-calendar>
+		<view class="top bg-white " style="position: fixed;top: 0;z-index: 999;width: 100%;">
 			<view class="flex justify-between">
 				<view class="flex">
 					<view class="flex justify-center align-center">
-						<image v-if="fireType==0" style="width: 80rpx;height: 80rpx;" src="../../../static/icon/yangan.png"></image>
-						<image v-if="fireType==1" style="width: 80rpx;height: 80rpx;" src="../../../static/icon/ranqi.png"></image>
-						<image v-if="fireType==2" style="width: 80rpx;height: 80rpx;" src="../../../static/icon/xiaofang.png"></image>
-						<image v-if="fireType==3" style="width: 80rpx;height: 80rpx;" src="../../../static/icon/dianbiao.png"></image>
+						<image v-if="fireType==0" style="width: 80rpx;height: 80rpx;"
+							src="../../../static/icon/yangan.png"></image>
+						<image v-if="fireType==1" style="width: 80rpx;height: 80rpx;"
+							src="../../../static/icon/ranqi.png"></image>
+						<image v-if="fireType==2" style="width: 80rpx;height: 80rpx;"
+							src="../../../static/icon/xiaofang.png"></image>
+						<image v-if="fireType==3" style="width: 80rpx;height: 80rpx;"
+							src="../../../static/icon/dianbiao.png"></image>
 					</view>
 					<view class="padding-left-40">
-						<view >
+						<view>
 							<text class="text-bold">设备类型:</text>
 							<text v-if="fireType==0">烟感报警器</text>
 							<text v-if="fireType==1">燃气报警器</text>
@@ -29,16 +33,18 @@
 						<text class="cuIcon-filter padding-right-20"></text>
 						<text class="">筛选</text>
 					</view>
-					<u-tag :text="filterDate" @close="tagClick" :show="!$isEmpty(filterDate)"  size="mini" :closeable="true" mode="plain" type="error"/>
+					<u-tag :text="filterDate" @close="tagClick" :show="!$isEmpty(filterDate)" size="mini"
+						:closeable="true" mode="plain" type="error" />
 				</view>
 			</view>
 		</view>
-		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
-			<view v-if="!$isEmpty(list)"  class="history">
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+			:up="upOption">
+			<view v-if="!$isEmpty(list)" class="history">
 				<u-time-line>
 					<u-time-line-item nodeTop="2" v-for="(item,index) in list" :key="index">
 						<template v-slot:node>
-							<view class="u-node bg-white" >
+							<view class="u-node bg-white">
 								<u-icon name="clock-fill" color="#5064eb" :size="28"></u-icon>
 							</view>
 						</template>
@@ -48,7 +54,7 @@
 								<view class="content" style="width: 636rpx;">
 									<view class="nav-title">
 										<text class="">设备厂家:</text>
-										<text >{{item.deviceFactory}}</text>
+										<text>{{item.deviceFactory}}</text>
 									</view>
 									<view class="nav-title">
 										<text class="">安装位置:</text>
@@ -75,11 +81,11 @@
 							<view v-else>
 								<view class="u-order-title">{{item.recordTime}}</view>
 								<view class="content" style="width: 636rpx;">
-									<view >
-										<text >告警等级:</text>
+									<view>
+										<text>告警等级:</text>
 										<text v-if="item.level==1" class="text-red">严重告警</text>
 										<text v-else-if="item.level==2" class="text-orange">警告告警</text>
-										<text v-else >提示告警</text>
+										<text v-else>提示告警</text>
 									</view>
 									<view class="nav-title">
 										<text class="">告警类型:</text>
@@ -110,21 +116,21 @@
 <script>
 	import MescrollMixin from "@/components/mescroll-body/mescroll-mixins.js";
 	export default {
-		mixins:[MescrollMixin],
+		mixins: [MescrollMixin],
 		data() {
 			return {
 				//设备类型
-				fireType:0,
-				deviceId:'' ,//设备列表的imei等于设备告警记录的deviceId
-				
+				fireType: 0,
+				deviceId: '', //设备列表的imei等于设备告警记录的deviceId
+
 				//日期筛选
-				dateShow:false,
-				filterDate:'',
-				filterTagShow:false,
-				
-				list:[],
-				total:'',
-				
+				dateShow: false,
+				filterDate: '',
+				filterTagShow: false,
+
+				list: [],
+				total: '',
+
 				downOption: {
 					use: false,
 					auto: false
@@ -134,7 +140,7 @@
 						page: 0,
 						size: 10
 					},
-					noMoreSize: 3, 
+					noMoreSize: 3,
 					empty: {
 						tip: '暂无相关数据'
 					}
@@ -142,68 +148,70 @@
 			}
 		},
 		onLoad(options) {
-			this.deviceId=options.imei || ''
+			this.deviceId = options.imei || ''
 		},
 		onShow() {
-			this.fireType=getApp().globalData.fireType || 0
-			if (this.fireType==0) {
+			this.fireType = getApp().globalData.fireType || 0
+			if (this.fireType == 0) {
 				uni.setNavigationBarTitle({
-					title:"烟感报警记录"
+					title: "烟感报警记录"
 				})
-			}else if (this.fireType==1) {
+			} else if (this.fireType == 1) {
 				uni.setNavigationBarTitle({
-					title:"气感报警记录"
+					title: "气感报警记录"
 				})
-			}else if (this.fireType==2) {
+			} else if (this.fireType == 2) {
 				uni.setNavigationBarTitle({
-					title:"消防水压报警记录"
+					title: "消防水压报警记录"
 				})
 			}
-			
+
 		},
 		methods: {
 			change(e) {
-				this.filterDate=e.result
+				this.filterDate = e.result
 				this.mescroll.resetUpScroll()
 			},
-			tagClick(){
-				this.filterDate=''
+			tagClick() {
+				this.filterDate = ''
 				this.mescroll.resetUpScroll()
 			},
-			
-			downCallback(){
-				setTimeout(()=>{
-					this.list=[]
+
+			downCallback() {
+				setTimeout(() => {
+					this.list = []
 					this.mescroll.resetUpScroll()
-				},1500)
+				}, 1500)
 			},
 			async upCallback(mescroll) {
-				let params={
-					current:mescroll.num,
-					size:mescroll.size,
-					deviceId:this.deviceId
+				let params = {
+					current: mescroll.num,
+					size: mescroll.size,
+					deviceId: this.deviceId
 				}
 				if (!this.$isEmpty(this.filterDate)) {
-					params.recordTime=this.filterDate
+					params.recordTime = this.filterDate
 				}
-				try{
-					
-					let res=null
-					if (this.fireType==3) {
+				try {
+
+					let res = null
+					if (this.fireType == 3) {
 						//抄表记录
-						 res=await this.$api.fireDevice.electricmeterrecord({imei:this.deviceId})
-					}else{
+						res = await this.$api.fireDevice.electricmeterrecord({
+							imei: this.deviceId
+						})
+					} else {
 						//设备报警记录
-						res=await this.$api.fireDevice.alarmRecord(params)
+						res = await this.$api.fireDevice.alarmRecord(params)
 					}
-					let data=res.data.records
-					let length=data.length
-					this.total=res.data.total
+					let data = res.data.records
+					let length = data.length
+					this.total = res.data.total
 					mescroll.endBySize(length, this.total);
-					if(mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
-					this.list=this.list.concat(data); //追加新数据
-					
-				}catch(e){
+					if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
+					this.list = this.list.concat(data); //追加新数据
+
+				} catch (e) {
 					console.log(e);
 					mescroll.endErr();
 				}
@@ -213,45 +221,47 @@
 </script>
 
 <style lang="scss">
-.container {
-  height: calc(100vh );
-  padding: 140rpx 0rpx 0rpx;
- .fixed {
-	position: fixed;
-	top: 0rpx;
-	left: 0;
-	width: 100%;
-	background-color: #FFFFFF;
-	box-sizing: border-box;
-	z-index: 999;
-  }
-}
+	.container {
+		height: calc(100vh);
+		padding: 140rpx 0rpx 0rpx;
+
+		.fixed {
+			position: fixed;
+			top: 0rpx;
+			left: 0;
+			width: 100%;
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			z-index: 999;
+		}
+	}
 
-.text-red{
-	color: #ca0000;
-}
+	.text-red {
+		color: #ca0000;
+	}
 
-.nav-title {
-	font-size: 28upx;
-	font-weight: 300;
-	padding-top: 20rpx;
-}
-	
-.top{
-	padding: 30rpx;
-	box-shadow: 0 4rpx 6rpx rgba(204, 204, 204,.2);
-	// border-bottom: 1rpx solid #efefef;
-}
-	
-.history{
+	.nav-title {
+		font-size: 28upx;
+		font-weight: 300;
+		padding-top: 20rpx;
+	}
+
+	.top {
+		padding: 30rpx;
+		box-shadow: 0 4rpx 6rpx rgba(204, 204, 204, .2);
+		// border-bottom: 1rpx solid #efefef;
+	}
+
+	.history {
 		background-color: #FFFFFF;
 		padding: 40rpx 20rpx 20rpx 50rpx;
 	}
-.content{
-	box-shadow: 0 8rpx 2rpx rgba(204, 204, 204,.2),0 -8rpx 6rpx rgba(204, 204, 204,.1),8rpx 0rpx 6rpx rgba(204, 204, 204,.1),-8rpx 0rpx 6rpx rgba(204, 204, 204,.1);
-	background-color: #FFFFFF;
-	padding: 20rpx;
-	border-radius: 10rpx;
-	margin-top: 20rpx;
-}
+
+	.content {
+		box-shadow: 0 8rpx 2rpx rgba(204, 204, 204, .2), 0 -8rpx 6rpx rgba(204, 204, 204, .1), 8rpx 0rpx 6rpx rgba(204, 204, 204, .1), -8rpx 0rpx 6rpx rgba(204, 204, 204, .1);
+		background-color: #FFFFFF;
+		padding: 20rpx;
+		border-radius: 10rpx;
+		margin-top: 20rpx;
+	}
 </style>

+ 3 - 36
pages/index/fire/detail.vue

@@ -5,7 +5,7 @@
 				<view class="left">
 					
 					<view class="title flex " style="padding:0  24rpx;">
-						<u-icon color="#3895e1" size="36" name="http://139.9.103.171:1888/miniofile/xlyq/sn.png"></u-icon>
+						<u-icon size="32" name="pushpin-fill" color="#5064eb"></u-icon>
 						<text class="padding-left-10 text-lg text-bold">IEMI:{{dataDetail.imei}}</text>
 						<text @click.stop="copy(dataDetail.imei)" style="text-decoration: underline;" class="base-color padding-left-20">复制</text>
 					</view>
@@ -23,43 +23,10 @@
 				<view class="left">
 					<view style="padding: 0 30rpx;">
 						<view class="content flex">
-							<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/name.png"></u-icon>
+							<u-icon size="32" name="bookmark-fill" color="#5064eb"></u-icon>
 							<text class="text-bold padding-left-10">设备名称:</text>
 							<text>{{dataDetail.deviceName}}</text>
 						</view>
-						<view class="content flex">
-							<view class="flex">
-								<u-icon  size="36" name="/static/icon/dianchi.png"></u-icon>
-								<text class="text-bold padding-left-10">电池电量:</text>
-							</view>
-							<view class="striped active cu-progress round margin-top-sm " style="width: 60%;">
-								<view :style="[{ width:loading?dataDetail.battery+'%':''}]" style="background-color: #16c60c;color: #FFFFFF;">
-									{{dataDetail.battery?dataDetail.battery:0}}%
-								</view>
-							</view>
-						</view>
-						<!-- 电表没有这个字段 -->
-						<view class="content flex"  v-if="dataDetail.deviceType!=100030">
-							<view class="flex">
-								<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/wifi.png"></u-icon>
-								<text class="text-bold padding-left-10">信号强弱:</text>
-							</view>
-							<view class="striped active cu-progress round margin-top-sm " style="width: 60%;">
-								<view :style="[{ width:loading?dataDetail.signalIntensity+'%':''}]" style="width: 58%;background-color: #fc5f44;color: #FFFFFF;">
-									{{dataDetail.signalIntensity?dataDetail.signalIntensity:0}}%
-								</view>
-							</view>
-						</view>
-<!-- 						<view  class="content flex">
-							<view class="flex justify-start " style="width: 200rpx;">
-								<u-icon  size="36" name="map" color="#fd9510"></u-icon>
-								<text class="text-bold padding-left-10" >安装位置:</text>
-							</view>
-							<view class="">
-								<text  v-text="dataDetail.deviceInstallAddress?dataDetail.deviceInstallAddress:'未知'" class="text-unknow" style="padding-top: 8rpx;" ></text>
-							</view>
-						</view> -->
-						
 						<view class="content flex align-center justify-start">
 							<u-icon  size="36" name="map" color="#5064eb"></u-icon>
 							<text class="text-bold padding-left-10" >安装位置:</text>
@@ -74,7 +41,7 @@
 						
 						
 						<view  class="content flex">
-							<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/updateTime2.png"></u-icon>
+							<u-icon size="32" name="clock-fill" color="#5064eb"></u-icon>
 							<text class="text-bold padding-left-10">更新时间:</text>
 							<text class="text-unknow" style="padding-top: 8rpx;"  v-text="dataDetail.updateTime?dataDetail.updateTime:'未知'"></text>
 						</view>

+ 103 - 110
pages/index/fire/list/comps/card.vue

@@ -1,11 +1,12 @@
 <template>
 	<view class="">
-		<view @click="goDetail(item)"  class="data" v-for="(item, index) in list" :key="index">
+		<view @click="goDetail(item)" class="data" v-for="(item, index) in list" :key="index">
 			<view class="top">
 				<view class="left">
 					<view class="title">
 						<text>IMEI:{{item.imei}}</text>
-						<text @click.stop="copy(item.imei)" style="text-decoration: underline;" class="base-color padding-left-20">复制</text>
+						<text @click.stop="copy(item.imei)" style="text-decoration: underline;"
+							class="base-color padding-left-20">复制</text>
 					</view>
 				</view>
 				<view class="right">
@@ -21,51 +22,36 @@
 				<view class="left">
 					<view style="padding: 0 30rpx;">
 						<view class="content flex">
-							<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/xiaofangshuang.png"></u-icon>
+							<u-icon size="32" name="bookmark-fill" color="#5064eb"></u-icon>
 							<text class="text-bold padding-left-10">设备名称:</text>
 							<text>{{item.deviceName}}</text>
 						</view>
+						<view class="content flex">
+							<u-icon size="36" name="map-fill" color="#5064eb"></u-icon>
+							<text class="text-bold padding-left-10">安装位置:</text>
+							<text>{{item.deviceInstallAddress || '未知'}}</text>
+						</view>
 						<view v-if="item.deviceType==100030" class="content flex align-center justify-start">
-							<u-icon  size="36" name="home" color="#fd9510"></u-icon>
+							<u-icon size="36" name="home" color="#fd9510"></u-icon>
 							<text class="text-bold padding-left-10">所属企业:</text>
-							<text  v-text="item.enterpriseNames?item.enterpriseNames:'未知'"  style="padding-top: 8rpx;" ></text>
+							<text v-text="item.enterpriseNames?item.enterpriseNames:'未知'"
+								style="padding-top: 8rpx;"></text>
 						</view>
 						<view class="content flex">
-							<view class="flex">
-								<u-icon  size="36" name="/static/icon/dianchi.png"></u-icon>
-								<text class="text-bold padding-left-10">电池电量:</text>
-							</view>
-							<view class="striped active cu-progress round margin-top-sm " style="width: 60%;">
-								<view :style="[{ width:loading?item.battery+'%':''}]" style="background-color: #16c60c;color: #FFFFFF;">
-									{{item.battery?item.battery:0}}%
-								</view>
-							</view>
-						</view>
-						<!-- 电表没有这个字段 -->
-						<view class="content flex" v-if="item.deviceType!=100030">
-							<view class="flex">
-								<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/wifi.png"></u-icon>
-								<text class="text-bold padding-left-10">信号强弱:</text>
-							</view>
-							<view class="striped active cu-progress round margin-top-sm " style="width: 60%;">
-								<view :style="[{ width:loading?item.signalIntensity+'%':''}]" style="background-color: #fc5f44;color: #FFFFFF;">
-									{{item.signalIntensity?item.signalIntensity:0}}%
-								</view>
-							</view>
-						</view>
-						<view  class="content flex">
-							<u-icon  size="36" name="http://139.9.103.171:1888/miniofile/xlyq/updateTime2.png"></u-icon>
+							<u-icon size="32" name="clock-fill" color="#5064eb"></u-icon>
 							<text class="text-bold padding-left-10">更新时间:</text>
 							<text style="padding-top: 8rpx;" v-text="item.updateTime?item.updateTime:'未知'"></text>
 						</view>
 					</view>
 				</view>
 			</view>
-			<view class="bottom flex" >
-				<view @click.stop="goDetail(item)" style="font-size: 22rpx;font-weight: 800;" class="cu-btn  sm round  base-line" >
+			<view class="bottom flex">
+				<view @click.stop="goDetail(item)" style="font-size: 22rpx;font-weight: 800;"
+					class="cu-btn  sm round  base-line">
 					查看详情
 				</view>
-				<view @click.stop="goAlarm(item)"  class="cu-btn  sm round base-line" style="margin: 0 20rpx;font-size: 22rpx;font-weight: 800;">
+				<view @click.stop="goAlarm(item)" class="cu-btn  sm round base-line"
+					style="margin: 0 20rpx;font-size: 22rpx;font-weight: 800;">
 					<text v-if="item.deviceType==100030">抄表记录</text>
 					<text v-else>告警记录</text>
 				</view>
@@ -75,96 +61,103 @@
 </template>
 
 <script>
-export default {
-	name: 'card',
-	props:{
-		list:{
-			type:Array,
-			default:()=>{
-				[]
+	export default {
+		name: 'card',
+		props: {
+			list: {
+				type: Array,
+				default: () => {
+					[]
+				}
 			}
-		}
-	},
-	data() {
-		return {
-			loading:false
-		};
-	},
-	created() {
-		let that = this;
-		setTimeout(function() {
-			that.loading = true
-		}, 500)
-	},
-	methods:{
-		copy(data){
-			uni.setClipboardData({
-				data:data
-			})
 		},
-		goDetail(item){
-			getApp().globalData.fireHydrantDetail=item
-			uni.navigateTo({
-				url:'/pages/index/fire/detail'
-			})
+		data() {
+			return {
+				loading: false
+			};
+		},
+		created() {
+			let that = this;
+			setTimeout(function() {
+				that.loading = true
+			}, 500)
 		},
-		goAlarm(item){
-			uni.navigateTo({
-				url:"/pages/index/fire/alarm-record?imei="+item.imei
-			})
+		methods: {
+			copy(data) {
+				uni.setClipboardData({
+					data: data
+				})
+			},
+			goDetail(item) {
+				getApp().globalData.fireHydrantDetail = item
+				uni.navigateTo({
+					url: '/pages/index/fire/detail'
+				})
+			},
+			goAlarm(item) {
+				uni.navigateTo({
+					url: "/pages/index/fire/alarm-record?imei=" + item.imei
+				})
+			}
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-.line-green{
-	border-color: #16aa5d;
-	color: #16aa5d;
-}
+	.line-green {
+		border-color: #16aa5d;
+		color: #16aa5d;
+	}
 
-.line-red{
-	border-color: #cf0000;
-	color: #cf0000;
-}
+	.line-red {
+		border-color: #cf0000;
+		color: #cf0000;
+	}
+
+	.data {
+		width: 710rpx;
+		background-color: #ffffff;
+		margin: 20rpx auto;
+		border-radius: 6rpx;
+		box-sizing: border-box;
+		padding: 20rpx 10rpx;
+		font-size: 28rpx;
 
-.data {
-	width: 710rpx;
-	background-color: #ffffff;
-	margin: 20rpx auto;
-	border-radius: 6rpx;
-	box-sizing: border-box;
-	padding: 20rpx 10rpx;
-	font-size: 28rpx;
-	.top {
-		display: flex;
-		justify-content: space-between;
-		padding-bottom: 20rpx;
-		border-bottom: 1rpx solid $dt-border-color-sm;
-		.left {
+		.top {
 			display: flex;
-			align-items: center;
-			.title {
-				margin: 0 10rpx;
-				font-size: 30rpx;
+			justify-content: space-between;
+			padding-bottom: 20rpx;
+			border-bottom: 1rpx solid $dt-border-color-sm;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.title {
+					margin: 0 10rpx;
+					font-size: 30rpx;
+				}
+			}
+
+			.right {
+				margin-right: 20rpx;
 			}
 		}
-		.right{
-			margin-right: 20rpx;
+
+		.item {
+			margin: 5rpx 0 20rpx 0;
+
+			.content {
+				border-bottom: 1rpx dashed #DDDDDD;
+				padding: 30rpx 0;
+			}
 		}
-	}
-	.item {
-		margin: 5rpx 0 20rpx 0;
-		.content {
-			border-bottom: 1rpx dashed #DDDDDD;
-			padding: 30rpx 0;
+
+		.bottom {
+			display: flex;
+			margin-top: 30rpx;
+			justify-content: flex-end;
+			align-items: center;
 		}
 	}
-	.bottom {
-		display: flex;
-		margin-top: 30rpx;
-		justify-content: flex-end;
-		align-items: center;
-	}
-}
-</style>
+</style>

+ 1 - 1
pages/index/fire/list/list.vue

@@ -3,7 +3,7 @@
 		<view class="tabs">
 			<scroll-view scroll-x class="bg-white nav">
 				<view class="flex text-center">
-					<view class="cu-item flex-sub" :class="index==current?'base-color text-xl text-bold ':'text-lg'" v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)" >
+					<view class="cu-item flex-sub" :class="index==current?'base-color text-xl text-bold cur':'text-lg'" v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)" >
 						{{item.name}}
 					</view>
 				</view>

+ 2 - 7
pages/index/index.vue

@@ -12,12 +12,7 @@
 				</view>
 			</u-navbar>
 			<!-- banner -->
-			<swiper   class="screen-swiper square-dot "  :indicator-dots="true" :circular="true"
-			 :autoplay="true" interval="5000" duration="500">
-				<swiper-item v-for="(item,index) in bannerList" :key="index">
-					<image   :src="item.banners" mode="aspectFill" ></image>
-				</swiper-item>
-			</swiper>
+			<u-swiper :list="bannerList" mode="rect" name="banners" height="380" border-radius="0"></u-swiper>
 			<!-- 公告 -->
 			<view v-if="!$isEmpty(noticeList)" class="">
 				<view class="bg-white" style="height: 10rpx;"></view>
@@ -568,7 +563,7 @@ export default {
 					name: 'Access records',
 					color: '#e9f9f3',
 					icon:'../../static/icon/jilu.png',
-					url:'/pages/index/access-record/access-record',
+					url:this.loginType==this.$loginType.STAFF?'/pages/index/access-record/access-record-staff':'/pages/index/access-record/access-record',
 					count:0,
 					show:true
 				},

+ 1 - 0
pages/index/notice/add.vue

@@ -42,6 +42,7 @@
 					return
 				}
 				this.model.agencyId=agencyId
+				this.model.notice=encodeURIComponent(this.model.notice)
 				this.$api.notice.submit(this.model).then(res=>{
 					if (res.success) {
 						this.$showModel('发布成功',false).then(res=>{

+ 6 - 4
pages/index/notice/list.vue

@@ -33,6 +33,7 @@
 	</view>
 </template>
 <script>
+	var base64 = require('base-64');
 	import wmListAdd from '@/components/wm-list-add/wm-list-add';
 	import MescrollMixin from "@/components/mescroll-body/mescroll-mixins.js";
 	export default {
@@ -65,6 +66,7 @@
 		},
 		filters: {
 			formatHtml (str) {
+				str=decodeURIComponent(str)
 				return str.replace(/<[^>]+>/g, "");
 			}
 		},
@@ -72,6 +74,9 @@
 			this.mescroll.resetUpScroll()
 		},
 		onLoad() {
+			var encoded = 'Zm9vIMKpIGJhciDwnYyGIGJheg==';
+			var bytes = base64.decode(encoded);
+			console.log(bytes);
 		},
 		methods: {
 			goDetail(item){
@@ -84,10 +89,7 @@
 				this.$showModel('确定要删除该公告吗?').then(res=>{
 					this.$api.notice.remove(item.id).then(res=>{
 						if (res.success) {
-							this.$showToast('删除成功')
-							setTimeout(()=>{
-								this.mescroll.resetUpScroll()
-							},500)
+							this.mescroll.resetUpScroll()
 						}
 					})
 				})

+ 36 - 33
pages/index/staff-temperature/list.vue

@@ -1,22 +1,21 @@
 <template>
 	<view class="container">
 		<view class="tabs" style="width: 420rpx;margin: 0rpx  auto;padding-top: 20rpx;">
-			<scroll-view scroll-x class="nav" >
+			<scroll-view scroll-x class="nav">
 				<view class="flex text-center">
-					<view  style="border: 1rpx solid #5064eb;padding:15rpx 20rpx;" class="flex-sub" 
-					:class="index==current?'nav-checked':'nav-unchecked'" 
-					v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)" >
+					<view style="border: 1rpx solid #5064eb;padding:15rpx 20rpx;" class="flex-sub"
+						:class="index==current?'nav-checked':'nav-unchecked'" v-for="(item,index) in tabs" :key="index"
+						@tap="tabChange(index)">
 						{{item.name}}
 					</view>
 				</view>
 			</scroll-view>
 		</view>
 		<view style="height: 100%;">
-			<swiper style="height: 100%;" :current="current"  @change="swiperChange"
-				@animationfinish="animationfinish">
+			<swiper style="height: 100%;" :current="current" @change="swiperChange" @animationfinish="animationfinish">
 				<swiper-item v-for="(item,index) in tabs" :key="index">
 					<scroll-view scroll-y style="height: 100%;">
-						<item @showDetail="showDetail"  :i="index" :item="item" :type="current"></item>
+						<item @showDetail="showDetail" :i="index" :item="item" :type="current"></item>
 					</scroll-view>
 				</swiper-item>
 			</swiper>
@@ -31,33 +30,36 @@
 		},
 		data() {
 			return {
-				scrollLeft:0,
+				scrollLeft: 0,
 				current: 0,
-				swiperCurrent:0,
-				tabs: [
-					{
+				swiperCurrent: 0,
+				tabs: [{
 						name: '全部记录',
-						value:''
+						value: ''
 					},
 					{
 						name: '异常记录',
-						value:1
+						value: 1
 					}
 				],
 			}
 		},
-		methods:{
+		methods: {
 			tabChange(index) {
 				this.current = index
 			},
 			swiperChange(e) {
-			  uni.pageScrollTo({
-			      scrollTop: 0,
-			      duration: 0
-			  });
-			  this.current = e.detail.current
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 0
+				});
+				this.current = e.detail.current
 			},
-			animationfinish({detail: { current }}) {
+			animationfinish({
+				detail: {
+					current
+				}
+			}) {
 				this.swiperCurrent = current;
 				this.current = current;
 			},
@@ -67,28 +69,29 @@
 
 <style lang="scss" scoped>
 	.container {
-		  height: calc(100vh);
-		  background-color: #F6F6F6;
-		  padding: 100rpx 0rpx 0rpx;
-		 .tabs {
-			 height: 100rpx;
-		    position: fixed;
-		    top: 0rpx;
+		height: calc(100vh);
+		background-color: #F6F6F6;
+		padding: 100rpx 0rpx 0rpx;
+
+		.tabs {
+			height: 100rpx;
+			position: fixed;
+			top: 0rpx;
 			left: 0;
 			right: 0;
 			width: 100%;
 			z-index: 3;
-		  }
+		}
 	}
-	
-	.nav-checked{
+
+	.nav-checked {
 		background-color: $base-color;
 		color: #FFFFFF;
 		font-weight: 800;
 	}
-	
-	.nav-unchecked{
+
+	.nav-unchecked {
 		background-color: #FFFFFF;
 		color: $base-color;
 	}
-</style>
+</style>

+ 2 - 2
pages/index/staffAudit/detail.vue

@@ -53,11 +53,11 @@
 						</view>
 						<view class="content">
 							<text class="padding-right-10">所属园区:</text>
-							<text >{{dataDetail.agencyName}}</text>
+							<text >{{dataDetail.agencyName  || '暂无'}}</text>
 						</view>
 						<view class="content">
 							<text class="padding-right-10">所在区域:</text>
-							<text >{{dataDetail.residentialName}}</text>
+							<text >{{dataDetail.residentialName || '暂无'}}</text>
 						</view>
 						<view class="content">
 							<text class="padding-right-10">所属企业:</text>

+ 3 - 3
pages/index/staffAudit/list.vue

@@ -22,7 +22,7 @@
 			<view class="flex">
 				<scroll-view scroll-x class="bg-white nav" style="width: 90%;">
 					<view class="flex text-center">
-						<view class="cu-item flex-sub" :class="index==current?'text-blue text-xl text-bold ':'text-lg'" v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)" >
+						<view class="cu-item flex-sub" :class="index==current?'text-blue text-xl text-bold cur':'text-lg'" v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)" >
 							{{item.name}}
 						</view>
 					</view>
@@ -250,10 +250,10 @@
 	.container {
 	  height: calc(100vh);
 	  background-color: #F6F6F6;
-	  padding: 78rpx 0rpx 0rpx;
+	  padding: 88rpx 0rpx 0rpx;
 	 .tabs {
 	    position: fixed;
-	    top: -10rpx;
+	    top: 0rpx;
 		left: 0;
 		width: 100%;
 		background-color: #FFFFFF;

+ 35 - 22
pages/login/login.vue

@@ -19,16 +19,19 @@
 							<image style="width: 120rpx;height: 120rpx;" src="../../static/login/yuangong.png"></image>
 						</view>
 						<view class="input">
-							<image src="../../static/login/yuanqu.png" mode=""></image>
+							<text class="cuIcon-discoverfill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="agencyName" @click="agencyShow = true" placeholder="请选择您所在的园区"
 								type="text" value="" />
 						</view>
 						<view class="input">
-							<image class="phone" src="../../static/login/phone.png" mode=""></image>
+							<text class="cuIcon-mobilefill text-base text-bold"
+								style="font-size: 38rpx;margin-right: 22rpx;"></text>
 							<input v-model="phone" placeholder="请输入您的手机号码" type="text" value="" />
 						</view>
 						<view class="input" style="position: relative;">
-							<image src="../../static/login/code.png" mode=""></image>
+							<text class="cuIcon-safe text-base text-bold"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input v-model="yzm" style="width: 60%;" placeholder="请输入验证码" type="text" value="" />
 							<view :style="showText?'':'background-color: #A7A7A7;'" class="code" @click="getCode()">
 								{{tips}}
@@ -40,22 +43,26 @@
 							<image style="width: 90rpx;height: 90rpx;" src="../../static/login/qiye.png"></image>
 						</view>
 						<view class="input">
-							<image src="../../static/login/yuanqu.png" mode=""></image>
+							<text class="cuIcon-discoverfill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="agencyName" @click="agencyShow = true" placeholder="请选择您所在的园区"
 								type="text" value="" />
 						</view>
 						<view class="input">
-							<image class="qiye" src="../../static/login/qiye.png" mode=""></image>
+							<text class="cuIcon-homefill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="enterpriseName" @click="enterpriseShow = true"
 								placeholder="请选择您所在的企业" type="text" value="" />
 						</view>
 						<view class="input">
-							<image src="../../static/login/account.png" mode=""></image>
+							<image src="../../static/login/account.png"
+								style="width: 32rpx;height: 34rpx;margin-right: 22rpx;"></image>
 							<input v-model="enterpriseAccount" style="width: 60%;" placeholder="请输入您的登录账号" type="text"
 								value="" />
 						</view>
 						<view class="input">
-							<image src="../../static/login/password.png" mode=""></image>
+							<image src="../../static/login/password.png"
+								style="width: 32rpx;height: 34rpx;margin-right: 22rpx;"></image>
 							<input v-model="enterprisePassword" style="width: 60%;" placeholder="请输入您的登录密码"
 								type="password" value="" />
 						</view>
@@ -66,17 +73,20 @@
 							</image>
 						</view>
 						<view class="input">
-							<image src="../../static/login/yuanqu.png" mode=""></image>
+							<text class="cuIcon-discoverfill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="agencyName" @click="agencyShow = true" placeholder="请选择您所在的园区"
 								type="text" value="" />
 						</view>
 						<view class="input">
-							<image src="../../static/login/account.png" mode=""></image>
+							<image src="../../static/login/account.png" mode=""
+								style="width: 32rpx;height: 34rpx;margin-right: 22rpx;"></image>
 							<input v-model="agencyAccount" style="width: 60%;" placeholder="请输入您的登录账号" type="text"
 								value="" />
 						</view>
 						<view class="input">
-							<image src="../../static/login/password.png" mode=""></image>
+							<image src="../../static/login/password.png"
+								style="width: 32rpx;height: 34rpx;margin-right: 22rpx;"></image>
 							<input type="password" v-model="agencyPassword" style="width: 60%;" placeholder="请输入您的登录密码"
 								value="" />
 						</view>
@@ -86,23 +96,26 @@
 							<image style="width: 100rpx;height: 100rpx;" src="../../static/login/fangke.png"></image>
 						</view>
 						<view class="input">
-							<image class="qiye" src="../../static/login/time.png" mode=""></image>
+							<text class="cuIcon-timefill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="interviewTime" @click="interviewTimeShow = true"
-								placeholder="请选择访问时间" type="text" value="" />
+								placeholder="请选择您要访问的日期" type="text" value="" />
 						</view>
 						<view class="input">
-							<image src="../../static/login/yuanqu.png" mode=""></image>
+							<text class="cuIcon-discoverfill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="agencyName" @click="agencyShow = true" placeholder="请选择您要访问的园区"
 								type="text" value="" />
 						</view>
 						<view class="input">
-							<image class="qiye" src="../../static/login/qiye.png" mode=""></image>
+							<text class="cuIcon-homefill text-base"
+								style="font-size: 34rpx;margin-right: 22rpx;"></text>
 							<input disabled v-model="enterpriseName" @click="enterpriseShow = true"
 								placeholder="请选择您要访问的企业 (选填)" type="text" value="" />
 						</view>
-						<view @click="jump('/pages/guest/records/records')"
-							class="text-center base-color padding-top-50 text-lg">
-							<text style="text-decoration: underline;">申请记录</text>
+						<view class="text-center base-color padding-top-50 text-lg">
+							<text @click="jump('/pages/guest/records/records')"
+								style="text-decoration: underline;">申请记录</text>
 						</view>
 					</swiper-item>
 				</swiper>
@@ -146,6 +159,7 @@
 			</scroll-view>
 			<u-empty v-else name="search"></u-empty>
 		</u-popup>
+
 		<!-- 访问时间 -->
 		<u-picker @confirm="interviewTimeConfirm" :params="params" v-model="interviewTimeShow" mode="time"></u-picker>
 		<!-- 验证码 -->
@@ -221,7 +235,6 @@
 		onLoad(options) {
 			this.contentHeight = this.$u.sys().windowHeight + 'px'
 			that = this
-
 			if (!this.$isEmpty(options.backpath)) {
 				this.backpath = options.backpath
 			}
@@ -631,7 +644,7 @@
 			},
 			async applyOpenDoor() {
 				if (this.$isEmpty(this.interviewTime)) {
-					this.$u.toast('请选择访问时间')
+					this.$u.toast('请选择访问日期')
 					return
 				}
 				if (this.$isEmpty(this.agencyId)) {
@@ -770,10 +783,10 @@
 				padding: 20rpx 30rpx;
 
 				image {
-					width: 30rpx;
-					height: 36rpx;
+					width: 32rpx;
+					height: 34rpx;
+					margin-right: 22rpx;
 					margin-top: 4rpx;
-					margin-right: 20rpx;
 				}
 
 				.phone {

+ 1 - 1
uni.scss

@@ -1,4 +1,4 @@
-@import "uview-ui/theme.scss";
+@import "assets/colorui/uview.theme.scss";
 $base-color:#5064eb;
 $party-color:#DE2910;
 $dt-border-color-sm:#dedede;

+ 9 - 1
utils/dateTime.js

@@ -6,7 +6,7 @@
 let dateTime = {}
 
 /**
- * this.$dateTime.format(new Date())
+ * this.$dateTime.dateFormat(new Date())
  * 2021-01-26 11:48:52
  */
 dateTime.format=(date= new Date(),fmt="YYYY-mm-dd HH:MM:SS")=> {
@@ -34,4 +34,12 @@ dateTime.createDate = (value)=>{
   return new Date(date)
 } 
 
+dateTime.getExpireTime=(value)=>{
+	let now=new Date()
+	let min=now.getMinutes()
+	now.setMinutes(min + value)
+	let expireTime=dateTime.format(now)
+	return expireTime
+}
+
 export default dateTime

+ 178 - 79
utils/util.js

@@ -1,5 +1,5 @@
-import simpleCache from './cache.js'
-import dateTime from './dateTime.js'
+import verify from "./verify.js"
+
 //工具类
 let util = {}
 
@@ -7,78 +7,112 @@ let util = {}
 // this.$util.preview('http://....png')
 // this.$util.preview('../../test.png')
 // this.$util.preview(['http://....png', '../../test.png'])
-util.preview=async (src)=> {
-	const urls = typeof src === 'string' ? [src] : src
-	const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({ src, quality: 100 }))[1].tempFilePath
-	for (let i = 0; i < urls.length; i++) {
-		urls[i] = await filePath(urls[i])
+util.preview = async (src) => {
+		const urls = typeof src === 'string' ? [src] : src
+		const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({
+			src,
+			quality: 100
+		}))[1].tempFilePath
+		for (let i = 0; i < urls.length; i++) {
+			urls[i] = await filePath(urls[i])
+		}
+		uni.previewImage({
+			urls
+		})
+	},
+
+	//复制
+	util.copy = content => {
+		uni.setClipboardData({
+			data: content
+		});
 	}
-	uni.previewImage({ urls })
-},
 
-//复制
-util.copy=content=>{
-	uni.setClipboardData({ data: content });
-}
 
-util.calculateDistance=(lat1, lng1, lat2, lng2)=> {
-	  console.log(lat1, lng1, lat2, lng2)
-	  var radLat1 = lat1 * Math.PI / 180.0;
-	  var radLat2 = lat2 * Math.PI / 180.0;
-	  var a = radLat1 - radLat2;
-	  var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
-	  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
-			 Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
-	  s = s * 6378.137;
-	  s = Math.round(s * 10000) / 10;//单位米
-	  return s  
-},
-
-
-util.showModal=(content,title='提示')=>{
-    return new Promise((resolve,reject)=>{
-        uni.showModal({
-            title: title,
-            content: content,
-            success: (res)=>{
-                resolve(res)
-            }
-        });
-    })
+util.formatHtml = (str) => {
+	return decodeURIComponent(str).replace(/<[^>]+>/g, "");
 }
 
+
+util.dealAccountNo = account => {
+		if (account.startsWith('1')) {
+			if (account.length >= 17) {
+				account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
+			}
+		}
+		if (account.startsWith('6')) {
+			if (account.length >= 16) {
+				account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
+			}
+		}
+		return account
+	},
+
+	util.calculateDistance = (lat1, lng1, lat2, lng2) => {
+		console.log(lat1, lng1, lat2, lng2)
+		var radLat1 = lat1 * Math.PI / 180.0;
+		var radLat2 = lat2 * Math.PI / 180.0;
+		var a = radLat1 - radLat2;
+		var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
+		var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
+			Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+		s = s * 6378.137;
+		s = Math.round(s * 10000) / 10; //单位米
+		return s
+	},
+
+
+	util.showModal = (content, title = '提示') => {
+		return new Promise((resolve, reject) => {
+			uni.showModal({
+				title: title,
+				content: content,
+				success: (res) => {
+					resolve(res)
+				}
+			});
+		})
+	}
+
 //拨打电话
-util.callPhone=(phone)=>{
+util.callPhone = (phone) => {
+	if (!verify.isLandline(phone) || !verify.isMobile(phone)) {
+		uni.showToast({
+			title:"联系方式不正确",
+			icon:"none"
+		})
+		return
+	}
 	uni.showModal({
-	    title: '提示',
-	    content: `确定要拨打电话:${phone}吗?`,
-	    success: function (res) {
-	        if (res.confirm) {
+		title: '提示',
+		content: `确定要拨打电话:${phone}吗?`,
+		success: function(res) {
+			if (res.confirm) {
 				uni.makePhoneCall({
-				    phoneNumber: phone //仅为示例
+					phoneNumber: phone //仅为示例
 				});
-	        } 
-	    }
+			}
+		}
 	});
 }
 
 //四舍五入保留2位小数(不够位数,则用0替补)
 util.keepTwoDecimalFull = num => {
-  var result = parseFloat(num)
-  if (isNaN(result)) {
-    return false
-  }
-  result = Math.round(num * 100) / 100
-  var s_x = result.toString()
-  var pos_decimal = s_x.indexOf('.')
-  if (pos_decimal < 0) {
-    pos_decimal = s_x.length
-    s_x += '.'
-  }
-  while (s_x.length <= pos_decimal + 2) {
-    s_x += '0'
-  }
-  return s_x
+	var result = parseFloat(num)
+	if (isNaN(result)) {
+		return false
+	}
+	result = Math.round(num * 100) / 100
+	var s_x = result.toString()
+	var pos_decimal = s_x.indexOf('.')
+	if (pos_decimal < 0) {
+		pos_decimal = s_x.length
+		s_x += '.'
+	}
+	while (s_x.length <= pos_decimal + 2) {
+		s_x += '0'
+	}
+	return s_x
 }
 
 /**
@@ -87,48 +121,113 @@ util.keepTwoDecimalFull = num => {
  * 
  * @return {Array} newArr 去重后的数组
  */
-util.uniqueArray = (arr)=>{
+util.uniqueArray = (arr) => {
 	return [...new Set(arr)]
 }
 
+/**
+ * 获取url参数
+ */
+util.getUrlParams = (p) => {
+	let url = decodeURIComponent(p);
+	let param = {};
+	// 把参数按&拆分成数组
+	let index = url.indexOf("?");
+	let query = url.substring(index + 1, index.length);
+	var param_arr = query.split("&");
+	for (var i = 0; i < param_arr.length; i++) {
+		var pair = param_arr[i].split("=");
+		param[pair[0]] = pair[1];
+	}
+	return param
+}
+
+/**
+ * 对象键复制
+ */
+util.objectCopy = (target, source) => {
+	Object.keys(target).forEach(key => {
+		target[key] = source[key]
+	})
+}
+
+
+util.objectKeyIsEmpty = (obj) => {
+	let empty = false;
+	for (const key in obj) {
+		if (obj.hasOwnProperty(key)) {
+			if (obj[key] === null || obj[key] === '') {
+				empty = true;
+			} else {
+				empty = false;
+				break;
+			}
+		}
+	}
+	return empty;
+}
 
 
 
 //获取某一个页面上下文 context
 util.getPageCtx = (idx = 0) => {
-  let pages = getCurrentPages()
-  if (pages.length > 0) {
-    return pages[pages.length - 1 - idx] || {}
-  }
-  return {}
+	let pages = getCurrentPages()
+	if (pages.length > 0) {
+		return pages[pages.length - 1 - idx] || {}
+	}
+	return {}
 }
 
 //获取当前页面路由
 util.getCurrentRoute = () => {
-  let page = util.getPageCtx()
-  if (page.route) {
-    return page.route
-  }
-  return ''
+	let page = util.getPageCtx()
+	if (page.route) {
+		return page.route
+	}
+	return ''
 }
 
 //回到上一页刷新页面
 util.isReloadAndBack = () => {
-    let prePage=util.getPageCtx(1)
+	let prePage = util.getPageCtx(1)
 	prePage.setData({
-		"reload":true
+		"reload": true
 	})
 	uni.navigateBack({
-		delta:1
+		delta: 1
 	})
 }
 //onshow方法通过刷新mescroll数据
 util.reload = (mescroll) => {
-    let page= util.getPageCtx()
-    if (page.data.reload) {
-    	mescroll.resetUpScroll();
-    	page.data.reload=false  
-    }
+	let page = util.getPageCtx()
+	if (page.data.reload) {
+		mescroll.resetUpScroll();
+		page.data.reload = false
+	}
+}
+
+/**
+ * vue中加载script
+ */
+util.loadScriptFunc = (url, callback) => {
+	callback = typeof callback === 'function' ? callback : function() {};
+	var head = document.getElementsByTagName('head')[0];
+	var script = document.createElement('script');
+	script.type = 'text/javascript';
+	script.src = url;
+	script.onreadystatechange = function() {
+		if (this.readyState == "loaded" || this.readyState == "complete") {
+			callback();
+		}
+	}
+	script.onload = callback;
+	head.appendChild(script);
+}
+
+util.loadScript = (src) => {
+	var script = document.createElement('script');
+	script.src = src;
+	document.body.appendChild(script);
 }
 
 

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