浏览代码

v0.7.2/v0.7.3相关更新

xieyunhui 3 年之前
父节点
当前提交
f9176962b5

+ 4 - 0
.hbuilderx/launch.json

@@ -2,6 +2,10 @@
   // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
   // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
     "version": "0.0",
     "version": "0.0",
     "configurations": [{
     "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "local"
+     	},
      	"default" : 
      	"default" : 
      	{
      	{
      		"launchtype" : "local"
      		"launchtype" : "local"

+ 1 - 1
components/app-update/app-update.vue

@@ -190,7 +190,7 @@
 						plus.runtime.quit(); //五秒后关闭app
 						plus.runtime.quit(); //五秒后关闭app
 					}, 5000)
 					}, 5000)
 				} else if (vm.update_info.type == 2) {
 				} else if (vm.update_info.type == 2) {
-					// 安装包/升级包更新
+					//升级包更新
 					vm.download_wgt()
 					vm.download_wgt()
 				}else if (vm.update_info.type == 1) {
 				}else if (vm.update_info.type == 1) {
 					// 安装包app市场分发
 					// 安装包app市场分发

+ 4 - 1
components/tm-callback-listpage/tm-callback-listpage.vue

@@ -17,7 +17,10 @@
 		},
 		},
 		methods: {
 		methods: {
 			callback: function() {
 			callback: function() {
-				uni.navigateTo({url: `/pages/situationsCenter/situationsCenter`});
+				// uni.redirectTo({url: `/pages/situationsCenter/situationsCenter`});
+				uni.reLaunch({
+				    url: '/pages/situationsCenter/situationsCenter'
+				});
 			}
 			}
 		}
 		}
 	}
 	}

+ 1 - 1
manifest.json

@@ -2,7 +2,7 @@
     "name" : "追踪方法学",
     "name" : "追踪方法学",
     "appid" : "__UNI__03C4C69",
     "appid" : "__UNI__03C4C69",
     "description" : "",
     "description" : "",
-    "versionName" : "0.6.8",
+    "versionName" : "0.7.3",
     "versionCode" : 100,
     "versionCode" : 100,
     "transformPx" : false,
     "transformPx" : false,
     "app-plus" : {
     "app-plus" : {

文件差异内容过多而无法显示
+ 2274 - 1
package-lock.json


+ 7 - 2
pages.json

@@ -226,8 +226,13 @@
 	"easycom": {
 	"easycom": {
 			"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
 			"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
 	},
 	},
-	"globalStyle": {
-		"navigationStyle": "default",
+	"globalStyle": {
+		 // #ifdef APP-PLUS
+		"navigationStyle": "default",
+		// #endif
+		// #ifdef H5
+		"navigationStyle": "custom",
+		// #endif
 		"autoBackButton": true,
 		"autoBackButton": true,
 		// "homeButton": true,
 		// "homeButton": true,
 		"navigationBarTextStyle": "black",
 		"navigationBarTextStyle": "black",

+ 5 - 4
pages/checkList/checkList.vue

@@ -176,11 +176,12 @@
 			gotoCheckMainPointsPage({
 			gotoCheckMainPointsPage({
 				checkId,
 				checkId,
 				deptId,
 				deptId,
-				finishedStatus
+				finishedStatus,
+				pageTemplateId,
 			}) {
 			}) {
 				//跳转到查核要点
 				//跳转到查核要点
 				uni.navigateTo({
 				uni.navigateTo({
-					url: `/pages/checkMainPoints/checkMainPoints?checkId=${checkId}&deptId=${deptId}&finishedStatus=${finishedStatus}&situationType=${this.situationType}`
+					url: `/pages/checkMainPoints/checkMainPoints?checkId=${checkId}&deptId=${deptId}&finishedStatus=${finishedStatus}&situationType=${this.situationType}&pageTemplateId=${pageTemplateId}`
 				});
 				});
 			},
 			},
 			dispatch: function(key, data) {
 			dispatch: function(key, data) {
@@ -202,7 +203,7 @@
 
 
 	.check-map-list {
 	.check-map-list {
 		padding: 25rpx;
 		padding: 25rpx;
-		padding-top: 75rpx;
+		padding-top:20rpx;
 		height: 100%;
 		height: 100%;
 
 
 		.top-menu {
 		.top-menu {
@@ -212,7 +213,7 @@
 			justify-content: center;
 			justify-content: center;
 			align-items: center;
 			align-items: center;
 			height: 50rpx;
 			height: 50rpx;
-
+            margin-bottom: 20rpx;
 			image {
 			image {
 				margin-left: 9.37rpx;
 				margin-left: 9.37rpx;
 				width: 12.5rpx;
 				width: 12.5rpx;

+ 1 - 1
pages/checkList/server.js

@@ -24,7 +24,7 @@ const requestList = {
 	// 获取查核任务正确答案(小灯泡)
 	// 获取查核任务正确答案(小灯泡)
 	getArticle: {
 	getArticle: {
 	  method: 'GET',
 	  method: 'GET',
-	  url: 'article/getArticle',
+	  url: 'syscheckpointreviewrules/getCheckPointReviewRules',
 	}, 
 	}, 
 };
 };
 
 

+ 23 - 14
pages/checkMainPoints/checkMainPoints.vue

@@ -41,7 +41,7 @@
 									class="completePeopleIcon" src="../../static/completePeopleIcon.png" mode="">
 									class="completePeopleIcon" src="../../static/completePeopleIcon.png" mode="">
 								</image>
 								</image>
 								<text
 								<text
-									class="peopleName">{{currentSelectedInvestigationUser?currentSelectedInvestigationUser['investigationUserName']:''}}</text>
+									class="peopleName">{{currentSelectedInvestigationUser?currentSelectedInvestigationUser['contentVOs'][0].value:''}}</text>
 								<image class="fullArrow" src="../../static/close-icon.png" mode=""></image>
 								<image class="fullArrow" src="../../static/close-icon.png" mode=""></image>
 							</template>
 							</template>
 							<template v-if="investigationUsers.length==0">
 							<template v-if="investigationUsers.length==0">
@@ -267,14 +267,15 @@
 			checkId,
 			checkId,
 			deptId,
 			deptId,
 			finishedStatus,
 			finishedStatus,
-			situationType
+			situationType,
+			pageTemplateId
 		}) {
 		}) {
 
 
 			this.deptId = deptId;
 			this.deptId = deptId;
 			this.checkId = checkId;
 			this.checkId = checkId;
 			this.finishedStatus = finishedStatus;
 			this.finishedStatus = finishedStatus;
 			this.situationType = situationType;
 			this.situationType = situationType;
-
+            this.pageTemplateId = pageTemplateId;
 			if (situationType == 2) {
 			if (situationType == 2) {
 				this.getInvestigationUsers();
 				this.getInvestigationUsers();
 			}
 			}
@@ -327,9 +328,9 @@
  
  
 				if (!notNowBindPeopledeptIds.includes(this.deptId) || bool) {
 				if (!notNowBindPeopledeptIds.includes(this.deptId) || bool) {
 					const nowPermission = JSON.parse(uni.getStorageSync('nowPermission'));
 					const nowPermission = JSON.parse(uni.getStorageSync('nowPermission'));
-					// console.log(!this.isBindResponsible,this.checkDetailMapResponses.length,nowPermission)
+					// console.log(this.isBindResponsible,this.checkDetailMapResponses.length,nowPermission)
 					if (!this.isBindResponsible && this.checkDetailMapResponses.length > 0 && nowPermission == 3) {
 					if (!this.isBindResponsible && this.checkDetailMapResponses.length > 0 && nowPermission == 3) {
-						//当绑定当事人状态为false,可查核项大于0且当前角色是查核组员时
+						//当是否已绑定当事人状态为false,可查核项大于0且当前角色是查核组员时
 						//只有从查核列表进来才提示
 						//只有从查核列表进来才提示
 						uni.showModal({
 						uni.showModal({
 							title: '提示',
 							title: '提示',
@@ -364,8 +365,8 @@
 					'deptId': this.deptId,
 					'deptId': this.deptId,
 					'checkId': this.checkId,
 					'checkId': this.checkId,
 					'situationType': this.situationType,
 					'situationType': this.situationType,
-					'investigationUserName': this.currentSelectedInvestigationUser && this
-						.currentSelectedInvestigationUser.investigationUserName
+					'investigationId': this.currentSelectedInvestigationUser && this
+						.currentSelectedInvestigationUser.investigationId
 				})
 				})
 			},
 			},
 			//不适用回调
 			//不适用回调
@@ -397,16 +398,15 @@
 				}).then(data => {
 				}).then(data => {
 					this.$store.commit('checkMainPoints/comChangeState', {
 					this.$store.commit('checkMainPoints/comChangeState', {
 						key: 'investigationUsers',
 						key: 'investigationUsers',
-						data: data
+						data: data.map((t,index)=>({...t,id:t.investigationId}))
 					});
 					});
 
 
 					uni.navigateTo({
 					uni.navigateTo({
-						url: `/pages/selectVisitPerson/selectVisitPerson?checkId=${this.checkId}&situationType=${this.situationType}&deptId=${this.deptId}`
+						url: `/pages/selectVisitPerson/selectVisitPerson?checkId=${this.checkId}&situationType=${this.situationType}&deptId=${this.deptId}&pageTemplateId=${this.pageTemplateId}`
 					});
 					});
 				});
 				});
 			},
 			},
-			toSearch() {
-				console.log('toSearch')
+			toSearch() {
 				this.ifSearchMod = true;
 				this.ifSearchMod = true;
 				this.detailList = [];
 				this.detailList = [];
 			},
 			},
@@ -442,7 +442,16 @@
 				this.currentScrollHeight = e.detail.scrollTop;
 				this.currentScrollHeight = e.detail.scrollTop;
 			},
 			},
 			//一键查核
 			//一键查核
-			onkeyCheckHandle() {
+			onkeyCheckHandle() {
+				if(this.situationType == 2&&!this.currentSelectedInvestigationUser){
+					//当分页模式且未添加/选择受访对象时
+					uni.showToast({
+					    title: '请先选择或添加受访对象!',
+					    duration: 2000,
+						icon:'none'
+					});
+					return;
+				}
 				uni.showModal({
 				uni.showModal({
 					title: '注意',
 					title: '注意',
 					content: '确定所有未填写查核结果项默认无缺失结果吗?',
 					content: '确定所有未填写查核结果项默认无缺失结果吗?',
@@ -518,7 +527,7 @@
 				checkId,
 				checkId,
 				deptId,
 				deptId,
 				situationType,
 				situationType,
-				investigationUserName
+				investigationId
 			}) {
 			}) {
 				const params = {
 				const params = {
 					checkId,
 					checkId,
@@ -527,7 +536,7 @@
 				}
 				}
 
 
 				//增加受访人
 				//增加受访人
-				if (situationType == 2) params['investigationUser'] = investigationUserName;
+				if (situationType == 2) params['investigationId'] = investigationId;
 
 
 				this.dispatch('checkTaskDetailList', {
 				this.dispatch('checkTaskDetailList', {
 					...params
 					...params

+ 1 - 4
pages/checkMainPoints/model.js

@@ -8,10 +8,7 @@ export default {
 	 detailList:[],//查核项集合
 	 detailList:[],//查核项集合
 	 ifReloadPageData:false, //刷新当前页数据
 	 ifReloadPageData:false, //刷新当前页数据
 	 investigationUsers:[],//受访者集合
 	 investigationUsers:[],//受访者集合
-	 currentSelectedInvestigationUser:{
-		 investigationUserName:'',
-		 investigationStatus:''
-	 },//当前受访者
+	 currentSelectedInvestigationUser:null,//当前受访者
 	 ifShowBindPeopleDialog:true,//是否展示批量分配当事人,主要用于调节不适用按钮
 	 ifShowBindPeopleDialog:true,//是否展示批量分配当事人,主要用于调节不适用按钮
   },
   },
   mutations: {
   mutations: {

+ 8 - 3
pages/creatingSituations/components/checkMapAdd.vue

@@ -12,7 +12,7 @@
 								:key="n"
 								:key="n"
 								:class="{active: checkedIds.includes(child.id)}"
 								:class="{active: checkedIds.includes(child.id)}"
 								@click="changeChecked(child.id)">
 								@click="changeChecked(child.id)">
-								<text>{{child.name}}</text>
+								<text class="text">{{child.name}}</text>
 								<image v-if="checkedIds.includes(child.id)" 
 								<image v-if="checkedIds.includes(child.id)" 
 									src="../../../static/bottom-img.png"></image>
 									src="../../../static/bottom-img.png"></image>
 							</view>
 							</view>
@@ -20,9 +20,9 @@
 					</view>
 					</view>
 				</view>
 				</view>
 			</view>
 			</view>
-			<tm-simple-btn-group :options="botmBtnGroup"
-				v-on:callback="btnClick" ></tm-simple-btn-group>
 		</scroll-view>
 		</scroll-view>
+		<tm-simple-btn-group :options="botmBtnGroup"
+			v-on:callback="btnClick" ></tm-simple-btn-group>
 	</tm-modal>
 	</tm-modal>
 </template>
 </template>
 
 
@@ -180,6 +180,11 @@
 						height: 50rpx;
 						height: 50rpx;
 						font-weight: 500;
 						font-weight: 500;
 						background-color: #EBEDF2;
 						background-color: #EBEDF2;
+						.text {
+							overflow:hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
 						image {
 						image {
 							position: absolute;
 							position: absolute;
 							right: 0;
 							right: 0;

+ 32 - 29
pages/creatingSituations/components/checkMapDetail.vue

@@ -1,32 +1,34 @@
 <template>
 <template>
-	<scroll-view scroll-y="true" class="check-map-detail">
-		<view class="item" v-for="(item, index) in checkMap.actionItem.pointList" :key="index">
-			<view class="icon-wrap" @click="openChildren(item.id)">
-				<image :src="`../../static/list-${openItems.includes(item.id)
-					?'close':'open'}.png`"></image>
-			</view>
-			<view class="content">
-				<view class="content-title" @click="openChildren(item.id)">{{item.name}}</view>
-				<view class="children" v-if="openItems.includes(item.id)">
-					<view class="child" v-for="(child, n) in item.itemList" :key="n">
-						<view class="child-text">{{child.name}}</view>
-						<view class="check-icon-wrap" 
-							@click="changeChecked(index, n, child.selectFlag)">
-							<image :src="`../../static/check-${child.selectFlag
-								?'checkbox':'no'}.png`"></image>
-						</view>
-					</view>
-				</view>
-				<view class="checkAllBtn"
-					@click.stop="cancelAllChildHandle(index,item.selectFlag)">
-					<image :src="`../../static/check-${item.selectFlag
-						?'checkbox':'no'}.png`"></image>
-				</view>
-			</view>
-		</view>
-		<tm-simple-btn-group :options="botmBtnGroup"
-			v-on:callback="btnClick" ></tm-simple-btn-group>
-	</scroll-view>
+	<view class="pageContainer">
+		  <scroll-view scroll-y="true" class="check-map-detail">
+		  	<view class="item" v-for="(item, index) in checkMap.actionItem.pointList" :key="index">
+		  		<view class="icon-wrap" @click="openChildren(item.id)">
+		  			<image :src="`../../static/list-${openItems.includes(item.id)
+		  				?'close':'open'}.png`"></image>
+		  		</view>
+		  		<view class="content">
+		  			<view class="content-title" @click="openChildren(item.id)">{{item.name}}</view>
+		  			<view class="children" v-if="openItems.includes(item.id)">
+		  				<view class="child" v-for="(child, n) in item.itemList" :key="n">
+		  					<view class="child-text">{{child.name}}</view>
+		  					<view class="check-icon-wrap" 
+		  						@click="changeChecked(index, n, child.selectFlag)">
+		  						<image :src="`../../static/check-${child.selectFlag
+		  							?'checkbox':'no'}.png`"></image>
+		  					</view>
+		  				</view>
+		  			</view>
+		  			<view class="checkAllBtn"
+		  				@click.stop="cancelAllChildHandle(index,item.selectFlag)">
+		  				<image :src="`../../static/check-${item.selectFlag
+		  					?'checkbox':'no'}.png`"></image>
+		  			</view>
+		  		</view>
+		  	</view>
+		  </scroll-view>
+		  <tm-simple-btn-group :options="botmBtnGroup"
+		  	v-on:callback="btnClick" ></tm-simple-btn-group>
+	</view>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -152,6 +154,7 @@
 					min-height: 87.5rpx;
 					min-height: 87.5rpx;
 					font-size: 22.5rpx;
 					font-size: 22.5rpx;
 					font-weight: 500;
 					font-weight: 500;
+					
 				}
 				}
 				.children {
 				.children {
 					width: 100%;
 					width: 100%;
@@ -184,7 +187,7 @@
 					justify-content: center;
 					justify-content: center;
 					align-items: center;
 					align-items: center;
 					position: absolute;
 					position: absolute;
-					right:25rpx;
+					right:20rpx;
 					top:25rpx;
 					top:25rpx;
 					width: 37.5rpx;
 					width: 37.5rpx;
 					height: 37.5rpx;
 					height: 37.5rpx;

+ 31 - 2
pages/creatingSituations/components/situationPreview.vue

@@ -76,6 +76,11 @@
 					:src="`/static/${situationPreview.showCountNum == 1 ? 'check-checkbox' : 'check-no'}.png`">
 					:src="`/static/${situationPreview.showCountNum == 1 ? 'check-checkbox' : 'check-no'}.png`">
 				</image>
 				</image>
 			</view>
 			</view>
+			<view v-if="ifShowTemplateSelector" class="situationType" @click="selectTemplateHandle">
+				<text>分页模板</text>
+				<text class="typeValue">{{situationPreview.templateName}}</text>
+				<image class="arrowRight" src="../../../static/incon-more.png" ></image>
+			</view>
 		</view>
 		</view>
 	</view>
 	</view>
 </template>
 </template>
@@ -83,6 +88,11 @@
 <script>
 <script>
 	import { mapState,mapMutations } from "vuex";
 	import { mapState,mapMutations } from "vuex";
 	export default {
 	export default {
+		data(){
+			return {
+				 ifShowTemplateSelector:false,//是否展示选择模版的选项
+			}
+		},
 		computed: {
 		computed: {
 			...mapState({
 			...mapState({
 				theme: state => state.creatingSituations.theme,
 				theme: state => state.creatingSituations.theme,
@@ -105,11 +115,27 @@
 				return list;
 				return list;
 			}
 			}
 		},
 		},
+		watch:{
+			situationPreview(newVal){
+				if(newVal.situationType == 2){
+					//情境类型为分页时
+					this.ifShowTemplateSelector = true;
+					this.dispatch('getTemplates').then(res=>{
+						  this.$store.commit('creatingSituations/comChangeState',{key:'templateList',data:res});
+					})
+				}
+			}
+		},
 		methods: {
 		methods: {
 			...mapMutations(['comChangeState']),
 			...mapMutations(['comChangeState']),
 			selectSituationType(){
 			selectSituationType(){
 				// this.$refs.popup.open();
 				// this.$refs.popup.open();
-				this.$store.commit('creatingSituations/comChangeState',{key:'showSelectableSituationTypeList',data:true});
+				this.$store.commit('creatingSituations/comChangeState',{key:'popupType',data:1});
+				this.$store.commit('creatingSituations/comChangeState',{key:'showPopupSelectorList',data:true});
+			},
+			selectTemplateHandle(){
+				this.$store.commit('creatingSituations/comChangeState',{key:'popupType',data:2});
+				this.$store.commit('creatingSituations/comChangeState',{key:'showPopupSelectorList',data:true});
 			},
 			},
 			loopOptions: function(arr, conditionIds, list) {
 			loopOptions: function(arr, conditionIds, list) {
 				arr.map((item)=>{
 				arr.map((item)=>{
@@ -133,7 +159,10 @@
 			setIfCountNum(){
 			setIfCountNum(){
 				const showCountNum = this.situationPreview.showCountNum;
 				const showCountNum = this.situationPreview.showCountNum;
 				this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,showCountNum:showCountNum?0:1}});
 				this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,showCountNum:showCountNum?0:1}});
-			}
+			},
+			dispatch: function(key, data) {
+				return this.$store.dispatch({type: 'creatingSituations/commActions', key, data});
+			},
 		}
 		}
 	}
 	}
 </script>
 </script>

+ 21 - 7
pages/creatingSituations/creatingSituations.vue

@@ -1,11 +1,19 @@
 <template>
 <template>
 	<view class="creatingSituations">
 	<view class="creatingSituations">
+		
 		<uni-popup ref="popup" type="bottom" :maskClick="true" @change="popupChangehandle">
 		<uni-popup ref="popup" type="bottom" :maskClick="true" @change="popupChangehandle">
-			<tm-radio-group :list="situationTypeList" :defaultValue='situationPreview.situationType' :setting="{
+			<tm-radio-group v-if="popupType==1" :list="situationTypeList" :defaultValue='situationPreview.situationType' :setting="{
 			  value: 'situationType',
 			  value: 'situationType',
 			  name: 'situationTypeName'
 			  name: 'situationTypeName'
 			}" :openkeys="[0]" @change="situationTypeChanged" />
 			}" :openkeys="[0]" @change="situationTypeChanged" />
+			
+			<tm-radio-group v-if="popupType==2" :list="templateList" :defaultValue='situationPreview.pageTemplateId' :setting="{
+			  value: 'id',
+			  name: 'name'
+			}" :openkeys="[0]" @change="templateTypeChanged" />
+			
 		</uni-popup>
 		</uni-popup>
+		
 		<check-map-detail v-if="showCheckMapDetail"></check-map-detail>
 		<check-map-detail v-if="showCheckMapDetail"></check-map-detail>
 		<view v-else class="page-wrap" 
 		<view v-else class="page-wrap" 
 			:style="{paddingBottom: stepActive !== 0 ? '75rpx' : 0}">
 			:style="{paddingBottom: stepActive !== 0 ? '75rpx' : 0}">
@@ -74,6 +82,7 @@
 		},
 		},
 		computed: {
 		computed: {
 			...mapState({
 			...mapState({
+				popupType:state => state.creatingSituations.popupType,
 				showCheckMapDetail: state => state.creatingSituations.showCheckMapDetail,
 				showCheckMapDetail: state => state.creatingSituations.showCheckMapDetail,
 				showCheckMapAdd: state => state.creatingSituations.showCheckMapAdd,
 				showCheckMapAdd: state => state.creatingSituations.showCheckMapAdd,
 				showCheckPlan1: state => state.creatingSituations.showCheckPlan1,
 				showCheckPlan1: state => state.creatingSituations.showCheckPlan1,
@@ -84,8 +93,9 @@
 				checkMap: state => state.creatingSituations.checkMap,
 				checkMap: state => state.creatingSituations.checkMap,
 				checkPlan: state => state.creatingSituations.checkPlan,
 				checkPlan: state => state.creatingSituations.checkPlan,
 				situationPreview: state => state.creatingSituations.situationPreview,
 				situationPreview: state => state.creatingSituations.situationPreview,
+				templateList:state => state.creatingSituations.templateList,
 				situationTypeList:state => state.creatingSituations.situationTypeList,
 				situationTypeList:state => state.creatingSituations.situationTypeList,
-				showSelectableSituationTypeList:state => state.creatingSituations.showSelectableSituationTypeList,
+				showPopupSelectorList:state => state.creatingSituations.showPopupSelectorList,
 			}),
 			}),
 			situationTypeName(){
 			situationTypeName(){
 				const temp  = this.situationTypeList.filter(item=>item.situationType == this.situationPreview.situationType);
 				const temp  = this.situationTypeList.filter(item=>item.situationType == this.situationPreview.situationType);
@@ -114,7 +124,7 @@
 			 * @param {Boolen} newVal
 			 * @param {Boolen} newVal
 			 * @param {Boolen} oldVal
 			 * @param {Boolen} oldVal
 			 */
 			 */
-			showSelectableSituationTypeList:function(newVal, oldVal){
+			showPopupSelectorList:function(newVal, oldVal){
 				if(newVal){
 				if(newVal){
 					this.$refs.popup.open();
 					this.$refs.popup.open();
 				}else{
 				}else{
@@ -170,10 +180,13 @@
 			situationTypeChanged(type,name){
 			situationTypeChanged(type,name){
 				// console.log({type,name});
 				// console.log({type,name});
 			    this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,situationType:type}});
 			    this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,situationType:type}});
-				// this.$store.commit('creatingSituations/comChangeState',{key:'showSelectableSituationTypeList',data:false});
+			},
+			templateTypeChanged(type,item){
+				console.log({type,name})
+				this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,pageTemplateId:type,templateName:item.name}});
 			},
 			},
 			save: function() {
 			save: function() {
-				const {sitName,preDay,preH,startDay, description,situationType,showNotApplicable,showCountNum} = this.situationPreview;
+				const {sitName,preDay,preH,startDay, description,situationType,showNotApplicable,showCountNum,pageTemplateId} = this.situationPreview;
 				const {dateObj,checkedItem,checkList} = this.checkPlan;
 				const {dateObj,checkedItem,checkList} = this.checkPlan;
 				const {depType, options, conditionIds} = this.condition;
 				const {depType, options, conditionIds} = this.condition;
 
 
@@ -230,6 +243,7 @@
 					showNotApplicable:showNotApplicable,
 					showNotApplicable:showNotApplicable,
 					subtotal:showCountNum,
 					subtotal:showCountNum,
 					situationType:situationType,
 					situationType:situationType,
+					pageTemplateId:pageTemplateId,
 					filterCondition: optionsHandle(options, conditionIds),
 					filterCondition: optionsHandle(options, conditionIds),
 					checkGroup: checkGroup(this.checkRent),
 					checkGroup: checkGroup(this.checkRent),
 					checkDep: checkDep(this.checkMap.list),
 					checkDep: checkDep(this.checkMap.list),
@@ -354,7 +368,7 @@
 			},
 			},
 			popupChangehandle:function(data){
 			popupChangehandle:function(data){
 				const {show} = data;
 				const {show} = data;
-				this.$store.commit('creatingSituations/comChangeState',{key:'showSelectableSituationTypeList',data:show});
+				this.$store.commit('creatingSituations/comChangeState',{key:'showPopupSelectorList',data:show});
 			},
 			},
 		},
 		},
 		destroyed() {
 		destroyed() {
@@ -376,7 +390,7 @@
 <style lang="less">
 <style lang="less">
 	.creatingSituations {
 	.creatingSituations {
 		width: 100%;
 		width: 100%;
-		height: 100vh;
+		height: 100%;
 		background-color: #F5F6FA;
 		background-color: #F5F6FA;
 		.page-wrap {
 		.page-wrap {
 			padding-bottom: 75rpx;
 			padding-bottom: 75rpx;

+ 6 - 2
pages/creatingSituations/model.js

@@ -6,9 +6,10 @@ const initState = {
 	showCheckMapDetail: false,
 	showCheckMapDetail: false,
 	showCheckMapAdd: false,
 	showCheckMapAdd: false,
 	showCheckPlan1: true,
 	showCheckPlan1: true,
+	popupType:1, //可选值 1:情境类型 2:模板类型
 	needReload: true, // 切换页面是否需要获取新数据
 	needReload: true, // 切换页面是否需要获取新数据
 	stepActive: 0, // 步骤进度
 	stepActive: 0, // 步骤进度
-	showSelectableSituationTypeList:false, //是否打开类型选择弹窗
+	showPopupSelectorList:false, //是否打开选择弹窗
 	theme: {id: null, title: null, des: null}, // 主题选中数据(id: 0个案 1系统)
 	theme: {id: null, title: null, des: null}, // 主题选中数据(id: 0个案 1系统)
 	condition: { // 条件页面数据
 	condition: { // 条件页面数据
 		options: [], // 树形节点数据
 		options: [], // 树形节点数据
@@ -41,9 +42,12 @@ const initState = {
 		preH: null,
 		preH: null,
 		startDay: null,
 		startDay: null,
 		situationType:1,
 		situationType:1,
+		templateName:null,//分页模板名
+		pageTemplateId:null,//分页模板Id
 		showNotApplicable:0, //情境是否需要展示不适用快捷按钮 0 展示 1不展示
 		showNotApplicable:0, //情境是否需要展示不适用快捷按钮 0 展示 1不展示
 		showCountNum:0,//查核组员查核列表是否统计小计
 		showCountNum:0,//查核组员查核列表是否统计小计
 	},
 	},
+	templateList:[],//分页模板
 	situationTypeList:[],//情境类型列表
 	situationTypeList:[],//情境类型列表
 	editConfig: null // 编辑时候的原始数据
 	editConfig: null // 编辑时候的原始数据
 };
 };
@@ -65,7 +69,7 @@ export default {
   },
   },
   actions: {
   actions: {
 		commActions({ commit, state }, { key, data }) {
 		commActions({ commit, state }, { key, data }) {
-      return commServer(key, data);
+             return commServer(key, data);
 		},
 		},
   }
   }
 }
 }

+ 5 - 0
pages/creatingSituations/server.js

@@ -50,6 +50,11 @@ const requestList = {
     method: 'GET',
     method: 'GET',
     url: 'common/getSituationTypes',
     url: 'common/getSituationTypes',
   },
   },
+  //获取分页模板数据
+  getTemplates:{
+	method: 'GET',
+	url: 'situation/getPageTemplateList',  
+  }
 };
 };
 
 
 export const commServer = (key, data) => {
 export const commServer = (key, data) => {

+ 1 - 1
pages/home/home.vue

@@ -99,7 +99,7 @@
 			return {
 			return {
 				ifshowVersionInfo:false,
 				ifshowVersionInfo:false,
 				showJournal: false,
 				showJournal: false,
-				version: '0.7.0',
+				version: '0.7.3',
 				versionData: {
 				versionData: {
 					versionNo: '',
 					versionNo: '',
 					versionId: '',
 					versionId: '',

+ 25 - 6
pages/mainPointsDetail/mainPointsDetail.vue

@@ -8,7 +8,7 @@
 						<view v-for="item in checkItemResultList"
 						<view v-for="item in checkItemResultList"
 							:class="[checkedSelectResultListIds.includes(item.id)?'list on':'list']" :key="item.id"
 							:class="[checkedSelectResultListIds.includes(item.id)?'list on':'list']" :key="item.id"
 							@click.stop="selectResultHandle(item)">
 							@click.stop="selectResultHandle(item)">
-							<image class="checkIcon" src="../../static/check-checkbox.png" mode=""></image>
+							<image class="checkIcon" :src="`../../static/${!moreDeduction?'check-radio.png':'check-checkbox.png'}`" mode=""></image>
 							{{item.resultName}}
 							{{item.resultName}}
 						</view>
 						</view>
 					</scroll-view>
 					</scroll-view>
@@ -17,7 +17,7 @@
 						<view v-for="item in checkItemResultList"
 						<view v-for="item in checkItemResultList"
 							:class="[checkedSelectResultListIds[currentEditTextAreaIndex]&&checkedSelectResultListIds[currentEditTextAreaIndex].includes(item.id)?'list on':'list']"
 							:class="[checkedSelectResultListIds[currentEditTextAreaIndex]&&checkedSelectResultListIds[currentEditTextAreaIndex].includes(item.id)?'list on':'list']"
 							:key="item.id" @click.stop="selectResultHandle(item)">
 							:key="item.id" @click.stop="selectResultHandle(item)">
-							<image class="checkIcon" src="../../static/check-checkbox.png" mode=""></image>
+							<image class="checkIcon" :src="`../../static/${!moreDeduction?'check-radio.png':'check-checkbox.png'}`" mode=""></image>
 							{{item.resultName}}
 							{{item.resultName}}
 						</view>
 						</view>
 					</scroll-view>
 					</scroll-view>
@@ -214,7 +214,8 @@
 				checkedSelectResultListData: [],
 				checkedSelectResultListData: [],
 				multiSelectScore: [],
 				multiSelectScore: [],
 				deductPoint: 0, //本次扣分
 				deductPoint: 0, //本次扣分
-				currentCheckedTab: null, //当前选中的查核tab
+				currentCheckedTab: null, //当前选中的查核tab
+				moreDeduction:false,
 			};
 			};
 		},
 		},
 		onShow() {
 		onShow() {
@@ -292,7 +293,17 @@
 			selectResultHandle(item) {
 			selectResultHandle(item) {
 
 
 				if (this.data.checkModelName == '访谈') {
 				if (this.data.checkModelName == '访谈') {
-					const currentIndex = this.currentEditTextAreaIndex;
+					const currentIndex = this.currentEditTextAreaIndex;
+					
+					if(!this.moreDeduction){
+						 //缺陷项单选
+						 this.checkedSelectResultListIds.splice(currentIndex, 1,[item.id]);
+						 this.checkedSelectResultList.splice(currentIndex, 1, [item.resultName]);
+						 this.checkedSelectResultListData.splice(currentIndex, 1, [item]);
+						 
+						 return ;
+					} 
+					
 					if (this.checkedSelectResultListIds[currentIndex] && this.checkedSelectResultListIds[currentIndex]
 					if (this.checkedSelectResultListIds[currentIndex] && this.checkedSelectResultListIds[currentIndex]
 						.includes(item.id)) {
 						.includes(item.id)) {
 						console.log('减去');
 						console.log('减去');
@@ -326,7 +337,15 @@
 						this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
 						this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
 						// console.log(this.checkedSelectResultListIds[currentIndex],`index:${currentIndex}`);
 						// console.log(this.checkedSelectResultListIds[currentIndex],`index:${currentIndex}`);
 					}
 					}
-				} else {
+				} else {
+					if(!this.moreDeduction){
+						 //缺陷项单选
+						 this.checkedSelectResultListIds = [item.id];
+						 this.checkedSelectResultList = [item.resultName];
+						 this.checkedSelectResultListData = [item];
+						 return ;
+					} 
+					//缺陷项多选
 					if (this.checkedSelectResultListIds.includes(item.id)) {
 					if (this.checkedSelectResultListIds.includes(item.id)) {
 						const tempIdsArr = JSON.parse(JSON.stringify(this.checkedSelectResultListIds));
 						const tempIdsArr = JSON.parse(JSON.stringify(this.checkedSelectResultListIds));
 						const tempArr = JSON.parse(JSON.stringify(this.checkedSelectResultList));
 						const tempArr = JSON.parse(JSON.stringify(this.checkedSelectResultList));
@@ -402,7 +421,7 @@
 					this.totalScore = res.totalScore;
 					this.totalScore = res.totalScore;
 					this.deductPoint = res.deductPoint;
 					this.deductPoint = res.deductPoint;
 					this.currentScore = res.score;
 					this.currentScore = res.score;
-					
+					this.moreDeduction = res.moreDeduction;
 					if (res.checkResultRequestList && res.checkResultRequestList.length > 0) {
 					if (res.checkResultRequestList && res.checkResultRequestList.length > 0) {
 						if (res.checkModelName == '访谈') {
 						if (res.checkModelName == '访谈') {
 							this.talkList = res.checkResultRequestList.map((item, currentIndex) => {
 							this.talkList = res.checkResultRequestList.map((item, currentIndex) => {

+ 1 - 3
pages/responsibleList/responsibleList.vue

@@ -104,10 +104,8 @@
 				// console.log('selectAllHandle',this.checkedResponsibleList);
 				// console.log('selectAllHandle',this.checkedResponsibleList);
 			},
 			},
 			keywordsHandle(e){
 			keywordsHandle(e){
-				if(e.target.value.length==0){
-					this.getResponsibleList();
-				}
 				this.keywords = e.target.value;
 				this.keywords = e.target.value;
+				this.getResponsibleList();
 			},
 			},
 			searchHandle(){
 			searchHandle(){
 				this.getResponsibleList();
 				this.getResponsibleList();

+ 1 - 1
pages/selectVisitPerson/model.js

@@ -3,7 +3,7 @@ import { commServer } from './server.js';
 export default {
 export default {
   namespaced: true,
   namespaced: true,
   state: {
   state: {
-   
+      templateData:null,//新增访查对象模板
   },
   },
   mutations: {
   mutations: {
 		comChangeState(state, {key, data}) {
 		comChangeState(state, {key, data}) {

+ 568 - 317
pages/selectVisitPerson/selectVisitPerson.vue

@@ -1,326 +1,577 @@
-<template>
-	<view class="container">
-		<uni-popup ref="popup" type="bottom" :maskClick="true">
-			  <view class="content">
-			  	   <text class="contentTitle">新增访查对象</text>
-				   <input class="input" type="text" focus="true" v-model="visiterInfo" placeholder-class="placeholder" placeholder="请填写访查对象信息" />
-				   <view class="bottomBtnGroup">
-				   	<view class="cancel" @click="cancelAdd">取消</view>
-				    <view class="comfirm" @click="commitAdd">确定</view>
-				   </view>
-			  </view>
-		</uni-popup>
-		 <view class="pageTitle">
-		 	  <text class="pageTitleLeft">访查对象</text>
-			  <text class="pageTitleRight" @click="manageHandle">{{edit?'完成':'管理'}}</text>
-		 </view>
-		 <view class="listWrap">
-		 	<view class="list" v-for="(item,index) in investigationUsers" :key="index" @click="selectPersonHandle({...item,index})">
-		 		<text class="name">{{item.investigationUserName}}</text>
-				<view v-if="item.investigationStatus==1||item.investigationStatus==2" :class="[item.investigationStatus==1||item.investigationStatus==2?item.investigationStatus==1?'status done':'status checking':'status']">{{item.investigationStatus==1?'已完成':'进行中'}}</view>
-				<text v-if="!edit&&current.investigationUserName ==item.investigationUserName " class="checked">当前选中</text>
-				<text v-if="edit" class="delBtn" @click="delInvestigationUser(item,index)">删除</text>
-		 	</view>
-		 </view>
-		 <view class="bottom" @click="addVisiter">
-			 + 新增访查对象
-		 	 <!-- <image src="" mode=""></image> -->
-		 </view>
-	</view>
-</template>
-
-<script>
-	import {mapState} from 'vuex';
-	export default {
-		data() {
-			return {
-				// status:1,
-				edit:false,//是否编辑状态
-				visiterInfo:'',
-				current:null,//当前选中对象
-				index:null,//当前选中的对象在列表中的下标
-			};
-		},
-		computed:{
-			...mapState({
-				investigationUsers:state=>state.checkMainPoints.investigationUsers,
-				currentSelectedInvestigationUser:state=>state.checkMainPoints.currentSelectedInvestigationUser,
-			}),
-		},
-		watch:{
-		     currentSelectedInvestigationUser:function (newVal,oldVal){
-				 const index = this.investigationUsers.findIndex(item=>item.investigationUserName == newVal.investigationUserName);
-				 this.current = newVal;
-				 this.index = index;
-			 },
-		},
-		onLoad({checkId,situationType,deptId}) {
-			this.checkId = Number(checkId);
-			this.situationType = situationType;
-			this.deptId = deptId;
-			this.current = this.currentSelectedInvestigationUser;
-			const index = this.investigationUsers.findIndex(item=>item.investigationUserName == this.current.investigationUserName);
-			if(index>=0){
-				this.index = index;
-			}else {
-				this.index = 0
-			}
-		},
-		onUnload(){
-			console.log('页面卸载');
-			this.$store.commit('checkMainPoints/comChangeState',{key:'currentSelectedInvestigationUser',data:this.current})
-		},
-		methods:{
-			manageHandle(){
+<template>
+	<view class="container">
+		<uni-popup ref="popup" type="bottom" :maskClick="true">
+			<view class="content">
+				<form @submit="formSubmit" @reset="formReset">
+					<text class="contentTitle">新增访查对象</text>
+					<!-- <input class="input" type="text" focus="true" v-model="visiterInfo" placeholder-class="placeholder" placeholder="请填写访查对象信息" /> -->
+					<scroll-view scroll-y="true" class="scroll-Y">
+						<view v-for="(item,index) in templateData" class="formItem">
+							<text :class="[item.required?'label requred':'label']">{{item.title}}:</text>
+							<input class="value" :name="`${index}`" type="text" placeholder-class="placeholder"
+							:value="formDefaultData&&formDefaultData[index].value"	placeholder="请输入相应内容" />
+						</view>
+					</scroll-view>
+					<view class="bottomBtnGroup">
+						<button class="cancel" @click="cancelAdd">取消</button>
+						<button class="comfirm" formType='submit'>确定</button>
+					</view>
+				</form>
+			</view>
+		</uni-popup>
+		<view class="pageTitle">
+			<text class="pageTitleLeft">访查对象</text>
+			<text class="pageTitleRight" @click="manageHandle">{{edit?'完成':'管理'}}</text>
+		</view>
+		<view class="listWrap">
+			<view class="list" v-for="(item,index) in investigationUsers" :key="index"
+				@click="selectPersonHandle({...item,index})">
+				<view class="infoWrap">
+					 <text v-if="t.showFiled" v-for="(t,i) in item.contentVOs" class="infoTag">{{t.value}}</text>
+				</view>
+				<view v-if="item.investigationStatus==1||item.investigationStatus==2"
+					:class="[item.investigationStatus==1||item.investigationStatus==2?item.investigationStatus==1?'status done':'status checking':'status']">
+					{{item.investigationStatus==1?'已完成':'进行中'}}
+				</view>
+				<text v-if="!edit&&current.investigationId ==item.investigationId "
+					class="checked">当前选中</text>
+				<text v-if="edit" class="editBtn" @click="editInvestigationUser(item,index)">编辑</text>
+				<text v-if="edit" class="delBtn" @click="delInvestigationUser(item,index)">删除</text>
+			</view>
+		</view>
+		<view class="bottom" @click="addVisiter">
+			+ 新增访查对象
+			<!-- <image src="" mode=""></image> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				// status:1,
+				edit: false, //是否编辑状态
+				visiterInfo: '',
+				current: null, //当前选中对象
+				index: null, //当前选中的对象在列表中的下标
+				formDefaultData:null, //受访者表单默认数据
+				currentEditInvestigationUsers:null,
+			};
+		},
+		computed: {
+			...mapState({
+				investigationUsers: state => {
+					return JSON.parse(JSON.stringify(state.checkMainPoints.investigationUsers));
+				},
+				currentSelectedInvestigationUser: state => state.checkMainPoints.currentSelectedInvestigationUser,
+				templateData: state => state.selectVisitPerson.templateData,
+			}),
+		},
+		watch: {
+			currentSelectedInvestigationUser: function(newVal, oldVal) {
+				const index = this.investigationUsers.findIndex(item => item.id == newVal.id);
+				this.current = newVal;
+				this.index = index;
+			},
+		},
+		onLoad({
+			checkId,
+			situationType,
+			deptId,
+			pageTemplateId
+		}) {
+			// console.log('this.investigationUsers', this.investigationUsers);
+			this.checkId = Number(checkId);
+			this.situationType = situationType;
+			this.deptId = deptId;
+			this.pageTemplateId = pageTemplateId;
+			this.current = this.currentSelectedInvestigationUser;
+			const index = this.investigationUsers.findIndex(item => item.investigationId == this.currentSelectedInvestigationUser.investigationId);
+			if (index >= 0) {
+				this.index = index;
+			} else {
+				this.index = 0
+			}
+		},
+		onUnload() {
+			this.$store.commit('checkMainPoints/comChangeState', {
+				key: 'currentSelectedInvestigationUser',
+				data: this.current
+			});
+			this.$store.commit('checkMainPoints/comChangeState', {
+				key: 'ifReloadPageData',
+				data: true
+			})
+		},
+		methods: {
+			formSubmit: function(e) {
+				try{
+					 const formdata = e.detail.value;
+					 const contentVOs = Object.keys(formdata).map(t => {
+					 	if(this.templateData[Number(t)].required&&formdata[t].length==0){
+					 		   throw '有必填项未填写!'
+					 	}else{
+							return {
+								title: this.templateData[Number(t)].title,
+								value: formdata[t],
+								filedType: 'Text',
+								required:this.templateData[Number(t)].required,
+								showFiled:this.templateData[Number(t)].showFiled
+							}
+						}
+					 });
+					 this.commitInvestigationUser(contentVOs);
+				}catch(err){
+	                 console.log({err})
+					 uni.showModal({
+					     title: '提示',
+					     content: '请完整填写表单必填项!',
+						 showCancel:false,
+					 });
+				}
+			},
+			formReset: function(e) {
+				console.log('清空数据')
+			},
+			manageHandle() {
+				if (!this.edit) {
+					this.edit = true;
+				} else {
+					this.edit = false;
+				}
+			},
+			addVisiter() {
+				this.$store.dispatch({
+					type: 'selectVisitPerson/commActions',
+					key: 'getTemplateData',
+					data: {
+						pageTemplateId: this.pageTemplateId
+					}
+				}).then(data => {
+					this.$store.commit('selectVisitPerson/comChangeState', {
+						key: 'templateData',
+						data: data
+					});
+				})
+				this.$refs.popup.open();
+			},
+			cancelAdd() {
+				this.$refs.popup.close();
+				this.visiterInfo = '';
+			},
+			//提交受访者信息
+			commitInvestigationUser(data) {
 				if(!this.edit){
 				if(!this.edit){
-					this.edit = true;
-				}else {
-					this.edit = false;
-				}
+					  this.$store.dispatch({
+					  	type: 'selectVisitPerson/commActions',
+					  	key: 'addInvestigationUser',
+					  	data: {
+					  		checkId: this.checkId,
+					  		contentVOs: data,
+					  		deptId: Number(this.deptId)
+					  	}
+					  }).then(data => {
+					  	if (data) {
+					  		uni.showModal({
+					  			title: '提示',
+					  			content: '添加成功,是否立即返回?',
+					  			success: (res) => {
+					  				if (res.confirm) {
+					  					this.cancelAdd();
+					  					uni.navigateBack({
+					  						delta: 1
+					  					});
+					  					this.reloadData(true);
+					  				}
+					  				if (res.cancel) {
+					  					this.cancelAdd();
+					  					this.reloadData();
+					  				}
+					  			}
+					  		});
+					  	}
+					  })
+				}else{
+					  this.$store.dispatch({
+					  	type: 'selectVisitPerson/commActions',
+					  	key: 'editInvestigationUser',
+					  	data: {
+					  		id: this.currentEditInvestigationUsers.investigationId,
+					  		contentVOs: data,
+					  	}
+					  }).then(data => {
+					  	if (data) {
+					  		uni.showModal({
+					  			title: '提示',
+					  			content: '编辑成功,是否立即返回?',
+					  			success: (res) => {
+					  				if (res.confirm) {
+					  					this.cancelAdd();
+					  					uni.navigateBack({
+					  						delta: 1
+					  					});
+					  					this.reloadData(true);
+					  				}
+					  				if (res.cancel) {
+					  					this.cancelAdd();
+					  					this.reloadData();
+					  				}
+					  			}
+					  		});
+					  	}
+					  })
+				}
+				
 			},
 			},
-			addVisiter(){
-				this.$refs.popup.open();
-			},
-			cancelAdd(){
-				this.$refs.popup.close();
-				this.visiterInfo ='';
-			},
-			//添加受访者
-			commitAdd(){
-				this.$store.dispatch({
-					type: 'selectVisitPerson/commActions',
-					key: 'addInvestigationUser',						
-					data:{
-						checkId:this.checkId,
-						investigationUser:this.visiterInfo,
-						deptId:Number(this.deptId)
-					}
-				}).then(data=>{
-					if(data){
-						uni.showModal({
-						    title: '提示',
-						    content: '添加成功,是否立即返回?',
-						    success:(res)=>{
-						        if (res.confirm) {
-									 this.cancelAdd();
-									 uni.navigateBack({
-									     delta: 1
-									 });
-						             this.reloadData(true);
-						        }
-								if (res.cancel) {
-									 this.cancelAdd();
-								     this.reloadData();
-								}
-						    }
-						});
-					}
-				})
-			},
-			//删除受访者
+			//编辑受访者
 			/**
 			/**
 			 * @param {Object} item
 			 * @param {Object} item
 			 * @param {Number} index
 			 * @param {Number} index
 			 */
 			 */
-			delInvestigationUser(item,index){
-				const {investigationUserName} = item;
-				this.$store.dispatch({
-					type: 'selectVisitPerson/commActions',
-					key: 'delInvestigationUser',						
-					data:{checkId:this.checkId,investigationUser:investigationUserName}
-				}).then(data=>{
-				// console.log(index,this.index);
-				   if(index==this.index){
-					   //当删除的是当前选中的对象
-					   const prevInvestigationUser = this.index>0?this.investigationUsers[this.index-1]:{investigationUserName:'',investigationStatus:''};
-					   this.current = prevInvestigationUser;
-				   }
-				   this.reloadData();
-				});
-			},
-			//操作后重新获取数据
-			/**
-			 * @param {Boolean} bool 判断是否直接将最新添加设置当前选中
-			 */
-			reloadData(bool){
-				this.$store.dispatch({
-					type: 'checkMainPoints/commActions',
-					key: 'getInvestigationUsers',						
-					data:{checkId:this.checkId,situationType:this.situationType,deptId:this.deptId}
-				}).then(data=>{
-				   this.$store.commit('checkMainPoints/comChangeState',{key:'investigationUsers',data:data});
-	
-				   if(bool){
-					   this.$store.commit('checkMainPoints/comChangeState',{key:'currentSelectedInvestigationUser',data:data[data.length-1]})
-				   }
-                   //还未设置默认受访对象时
-				   if(!this.currentSelectedInvestigationUser||!this.currentSelectedInvestigationUser.investigationUserName){
-					   this.$store.commit('checkMainPoints/comChangeState',{key:'currentSelectedInvestigationUser',data:data[0]})
-				   }
-				   
-				});
-			},
-			selectPersonHandle(item){
-				this.current = item;
+			editInvestigationUser(item, index){
+				  this.$store.dispatch({
+				  	type: 'selectVisitPerson/commActions',
+				  	key: 'getTemplateData',
+				  	data: {
+				  		pageTemplateId: this.pageTemplateId
+				  	}
+				  }).then(data => {
+				  	this.$store.commit('selectVisitPerson/comChangeState', {
+				  		key: 'templateData',
+				  		data: data
+				  	});
+				  });
+				  this.currentEditInvestigationUsers = item;
+				  this.formDefaultData = this.investigationUsers[index].contentVOs;
+				  this.$refs.popup.open();
+			},
+			//删除受访者
+			/**
+			 * @param {Object} item
+			 * @param {Number} index
+			 */
+			delInvestigationUser(item, index) {
+				const {
+					investigationId
+				} = item;
+				this.$store.dispatch({
+					type: 'selectVisitPerson/commActions',
+					key: 'delInvestigationUser',
+					data: {
+						checkId: this.checkId,
+						investigationId: investigationId
+					}
+				}).then(data => {
+					// console.log(index,this.index);
+					if (index == this.index) {
+						//当删除的是当前选中的对象
+						const prevInvestigationUser = this.index > 0 ? this.investigationUsers[this.index - 1] :
+							null;
+						this.current = prevInvestigationUser;
+					}
+					this.reloadData();
+				});
+			},
+			//操作后重新获取数据
+			/**
+			 * @param {Boolean} bool 判断是否直接将最新添加设置当前选中
+			 */
+			reloadData(bool) {
+				this.$store.dispatch({
+					type: 'checkMainPoints/commActions',
+					key: 'getInvestigationUsers',
+					data: {
+						checkId: this.checkId,
+						situationType: this.situationType,
+						deptId: this.deptId
+					}
+				}).then(data => {
+					this.$store.commit('checkMainPoints/comChangeState', {
+						key: 'investigationUsers',
+						data: data
+					});
+
+					if (bool) {
+						this.$store.commit('checkMainPoints/comChangeState', {
+							key: 'currentSelectedInvestigationUser',
+							data: data[data.length - 1]
+						})
+					}
+					//还未设置默认受访对象时
+					if (!this.currentSelectedInvestigationUser) {
+						this.$store.commit('checkMainPoints/comChangeState', {
+							key: 'currentSelectedInvestigationUser',
+							data: data[0]
+						})
+					}
+
+				});
+			},
+			selectPersonHandle(item) {
+				this.current = item;
 				this.index = item.index;
 				this.index = item.index;
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-    .container {
-		.content {
-			position: relative;
-			height:45vh;
-			padding: 0 40rpx;
-			padding-top: 35rpx;
-			border-radius: 25rpx 25rpx 0px 0px;
-			background-color: #FFFFFF;
-			.contentTitle {
-				font-size: 30rpx;
-				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-				font-weight: 400;
-				color: #292C33;
-			}
-			.input {
-				color:#292C33;
-				height: 87.5rpx;
-				margin-top: 35rpx;
-				border-bottom: 0.62rpx solid #DADEE6;
-			}
-			.placeholder {
-				font-size: 22.5rpx;
-				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-				font-weight: 400;
-				color: #A1A7B3;
-			}
-			.bottomBtnGroup {
-				position: absolute;
-				bottom: 0;
-				left: 0;
-				width: 100%;
-				display: flex;
-				flex-direction: row;
-				.cancel {
-					flex: 1;
-					height:75rpx;
-					text-align: center;
-					line-height: 75rpx;
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #3377FF;
-					border-top:0.62rpx solid #DADEE6;
-				}
-				.comfirm {
-					flex: 1;
-					height:75rpx;
-					text-align: center;
-					line-height: 75rpx;
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #FFFFFF;
-					background-color:#3377FF;
-				}
-			}
-		}
-		.pageTitle {
-			display: flex;
-			width: 100%;
-			flex-direction: row;
-			justify-content:space-between;
-			box-sizing: border-box;
-			padding: 0 25rpx;
-			padding-top:25rpx;
-			padding-bottom:15rpx;
-			.pageTitleLeft {
-				font-size: 22.5rpx;
-				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-				font-weight: 400;
-				color: #666F80;
-
-			}
-			.pageTitleRight {
-				font-size: 20rpx;
-				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-				font-weight: 400;
-				color: #3377FF;
-			}
-		}
-		.listWrap {
-			padding-left: 25rpx;
-			margin-bottom: 15rpx;
-			background-color: #FFFFFF;
-			.list {
-				position: relative;
-				display: flex;
-				height: 87.5rpx;
-				flex-direction: row;
-				justify-content: flex-start;
-				align-items: center;
-				border-bottom: 1px solid #DADEE6;
-				.checked {
-					position: absolute;
-					top:32.5rpx;
-					right: 25rpx;
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #7A8599;
-				}
-				.delBtn {
-					position: absolute;
-					top:32.5rpx;
-					right: 25rpx;
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #FF3355;
-				}
-				.name {
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #292C33;
-				}
-				.status {
-					width: 75rpx;
-					height: 31.25rpx;
-					border-radius: 5rpx;
-					font-size: 17.5rpx;
-					font-family: SourceHanSansCN-Medium, SourceHanSansCN;
-					font-weight: 500;
-					text-align: center;
-					line-height: 31.25rpx;
-					margin-left: 15rpx;
-					&.done {
-						color: #29CC96;
-						background-color: rgba(41, 204, 150,0.1);
-					}
-					
-					&.checking {
-						color: #FFAA00;
-						background:rgba(255, 204, 102,0.1);
+				this.$store.commit('checkMainPoints/comChangeState', {
+					key: 'currentSelectedInvestigationUser',
+					data: item
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	.container {
+		.content {
+			position: relative;
+			height: 60vh;
+			padding: 0 40rpx;
+			padding-top: 35rpx;
+			border-radius: 25rpx 25rpx 0px 0px;
+			background-color: #FFFFFF;
+
+			.contentTitle {
+				font-size: 30rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #292C33;
+			}
+
+			.input {
+				color: #292C33;
+				height: 87.5rpx;
+				margin-top: 35rpx;
+				border-bottom: 0.62rpx solid #DADEE6;
+			}
+
+			.placeholder {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #A1A7B3;
+			}
+
+			.scroll-Y {
+				padding-top: 40rpx;
+				height: 100%;
+
+				.formItem {
+					display: flex;
+					height: 75rpx;
+					flex-direction: row;
+					justify-content: flex-start;
+					align-items: center;
+					margin-bottom: 10rpx;
+
+					.label {
+						position: relative;
+						display: flex;
+						width: 25%;
+						height: 100%;
+						justify-content: flex-start;
+						align-items: center;
+						font-size: 22.5rpx;
+						color: #000000;
+						padding-left: 15rpx;
+
+						&.requred {
+							&::before {
+								position: absolute;
+								left: 0;
+								display: inline-block;
+								content: '*';
+								font-size: 22rpx;
+								color: red;
+							}
+						}
+					}
+
+					.value {
+						width: 75%;
+						height: 100%;
+						font-size: 22.5rpx;
+						color: #000000;
+						border-bottom: 1rpx solid #82848A;
+					}
+
+					.placeholder {
+						font-size: 22.5rpx;
+						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+						font-weight: 400;
+						color: #A1A7B3;
+					}
+				}
+			}
+
+			.bottomBtnGroup {
+				position: absolute;
+				bottom: 0;
+				left: 0;
+				width: 100%;
+				display: flex;
+				flex-direction: row;
+
+				.cancel {
+					flex: 1;
+					height: 75rpx;
+					text-align: center;
+					line-height: 75rpx;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #3377FF;
+					border-radius: 0;
+					border: none;
+
+					&::after {
+						border-radius: 0;
+					}
+
+					// border-top: 0.62rpx solid #DADEE6;
+				}
+
+				.comfirm {
+					flex: 1;
+					height: 75rpx;
+					text-align: center;
+					line-height: 75rpx;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #FFFFFF;
+					border-radius: 0;
+					background-color: #3377FF;
+				}
+			}
+		}
+
+		.pageTitle {
+			display: flex;
+			width: 100%;
+			flex-direction: row;
+			justify-content: space-between;
+			box-sizing: border-box;
+			padding: 0 25rpx;
+			padding-top: 25rpx;
+			padding-bottom: 15rpx;
+
+			.pageTitleLeft {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #666F80;
+
+			}
+
+			.pageTitleRight {
+				font-size: 20rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #3377FF;
+			}
+		}
+
+		.listWrap {
+			padding-left: 25rpx;
+			margin-bottom: 15rpx;
+			background-color: #FFFFFF;
+
+			.list {
+				position: relative;
+				display: flex;
+				height: 87.5rpx;
+				flex-direction: row;
+				justify-content: flex-start;
+				align-items: center;
+				border-bottom: 1px solid #DADEE6;
+
+				.checked {
+					position: absolute;
+					top: 32.5rpx;
+					right: 25rpx;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #7A8599;
+				}
+                .editBtn {
+                	position: absolute;
+                	top: 32.5rpx;
+                	right: 90rpx;
+                	font-size: 22.5rpx;
+                	font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+                	font-weight: 400;
+                	color: #3377FF;
+                }
+				.delBtn {
+					position: absolute;
+					top: 32.5rpx;
+					right: 25rpx;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #FF3355;
+				}
+                .infoWrap {
+					.infoTag {
+						font-size: 22.5rpx;
+						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+						font-weight: 400;
+						color: #292C33;
+						
+						&::after {
+							display: inline-block;
+							content: '/';
+						}
+						&:last-child {
+							&::after {
+								display: inline-block;
+								content: '';
+							}
+						}
 					}
 					}
-				}
-				
-				&:last-child {
-					border: none;
-				}
-			}
-		}
-		.bottom {
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			height: 75rpx;
-			font-size: 22.5rpx;
-			font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-			font-weight: 400;
-			color: #3377FF;
-			background: #FFFFFF;
-		}
-	}
+				}
+				.status {
+					width: 75rpx;
+					height: 31.25rpx;
+					border-radius: 5rpx;
+					font-size: 17.5rpx;
+					font-family: SourceHanSansCN-Medium, SourceHanSansCN;
+					font-weight: 500;
+					text-align: center;
+					line-height: 31.25rpx;
+					margin-left: 15rpx;
+
+					&.done {
+						color: #29CC96;
+						background-color: rgba(41, 204, 150, 0.1);
+					}
+
+					&.checking {
+						color: #FFAA00;
+						background: rgba(255, 204, 102, 0.1);
+					}
+				}
+
+				&:last-child {
+					border: none;
+				}
+			}
+		}
+
+		.bottom {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 75rpx;
+			font-size: 22.5rpx;
+			font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+			font-weight: 400;
+			color: #3377FF;
+			background: #FFFFFF;
+		}
+	}
 </style>
 </style>

+ 21 - 2
pages/selectVisitPerson/server.js

@@ -6,21 +6,40 @@ const requestList = {
     method: 'POST',
     method: 'POST',
     url: 'checkTask/saveInvestigationUser'
     url: 'checkTask/saveInvestigationUser'
   },
   },
+  // 编辑受访对象
+  editInvestigationUser: {
+    method: 'POST',
+    url: 'checkTask/editInvestigationUsers'
+  },
   // 删除受访对象
   // 删除受访对象
   delInvestigationUser: {
   delInvestigationUser: {
     method: 'POST',
     method: 'POST',
     url: 'checkTask/delInvestigationUsers'
     url: 'checkTask/delInvestigationUsers'
+  },
+  // 获取模板对象
+  getTemplateData: {
+    method: 'GET',
+    url: 'situation/getPageTemplateContent'
   }
   }
 };
 };
 
 
 export const commServer = (key, data) => {
 export const commServer = (key, data) => {
   let obj = requestList[key];
   let obj = requestList[key];
   if(key == 'delInvestigationUser'){
   if(key == 'delInvestigationUser'){
-	  const {checkId,investigationUser} = data;
+	  const {checkId,investigationId} = data;
 	  return creatRequest({
 	  return creatRequest({
 		  ...obj,
 		  ...obj,
-		  url: `checkTask/delInvestigationUsers?checkId=${checkId}&investigationUser=${investigationUser}`
+		  url: `checkTask/delInvestigationUsers?checkId=${checkId}&investigationId=${investigationId}`
 	  });
 	  });
   }
   }
+  
+  if(key == 'getTemplateData'){
+  	  const {pageTemplateId} = data;
+  	  return creatRequest({
+  		  ...obj,
+  		  url: `situation/getPageTemplateContent?pageTemplateId=${pageTemplateId}`
+  	  });
+  }
+  
   return creatRequest(obj, data);
   return creatRequest(obj, data);
 }
 }

+ 1 - 0
pages/situationDetail/situationDetail.vue

@@ -455,6 +455,7 @@
 			}
 			}
 			.info-box{
 			.info-box{
 				overflow: hidden;
 				overflow: hidden;
+				padding-top: 20rpx;
 				padding-bottom: 20rpx;
 				padding-bottom: 20rpx;
 				.text-box{
 				.text-box{
 					width: 687.5rpx;
 					width: 687.5rpx;

+ 7 - 3
pages/situationsCenter/situationsCenter.vue

@@ -1,4 +1,5 @@
 <template>
 <template>
+	<!-- <page-meta :root-font-size="getRootFontSize()"></page-meta> -->
   <view class="situationsCenter-page">
   <view class="situationsCenter-page">
 	<!-- <app-update url="123"  ref="appUpdate" ></app-update> -->
 	<!-- <app-update url="123"  ref="appUpdate" ></app-update> -->
     <view class="calender-remind" @click="toMessagePage">
     <view class="calender-remind" @click="toMessagePage">
@@ -41,7 +42,7 @@
         @scrolltolower="toLower"
         @scrolltolower="toLower"
         lower-threshold="184"
         lower-threshold="184"
       >
       >
-        <view class="content" :style="{height: situationList.length === 0 ? '100%' : 'auto'}">
+        <view class="content" :style="[situationList.length === 0 ?{height:'100%'}:{}]">
           <view
           <view
             class="situation"
             class="situation"
             v-for="(item, index) in situationList"
             v-for="(item, index) in situationList"
@@ -315,12 +316,14 @@ export default {
 </script>
 </script>
 
 
 <style lang="less">
 <style lang="less">
+
 .situationsCenter-page {
 .situationsCenter-page {
   height: 100%;
   height: 100%;
   .calender-remind {
   .calender-remind {
     width: 62.5rpx;
     width: 62.5rpx;
     height: 62.5rpx;
     height: 62.5rpx;
     position: fixed;
     position: fixed;
+	top:20rpx;
     right: 25rpx;
     right: 25rpx;
     background: rgba(255, 255, 255, 0.95);
     background: rgba(255, 255, 255, 0.95);
     border-radius: 50%;
     border-radius: 50%;
@@ -334,6 +337,7 @@ export default {
   }
   }
   .search-box {
   .search-box {
     position: fixed;
     position: fixed;
+	top:20rpx;
     left: 25rpx;
     left: 25rpx;
     z-index: 2;
     z-index: 2;
     .search-model {
     .search-model {
@@ -355,7 +359,7 @@ export default {
       background-color: #ffffff;
       background-color: #ffffff;
       width: 700rpx;
       width: 700rpx;
       height: 62.5rpx;
       height: 62.5rpx;
-      top: 31.25rpx;
+      top:0rpx;
       position: absolute;
       position: absolute;
       z-index: 2;
       z-index: 2;
       .search-item {
       .search-item {
@@ -408,7 +412,7 @@ export default {
       .content {
       .content {
         display: flex;
         display: flex;
         flex-flow: row wrap;
         flex-flow: row wrap;
-        padding-bottom: 25rpx;
+        padding-bottom: 100rpx;
         .situation {
         .situation {
           height: 187.5rpx;
           height: 187.5rpx;
           width: 337.5rpx;
           width: 337.5rpx;

+ 2 - 2
utils/requestUrl.js

@@ -9,12 +9,12 @@
 // const base = '192.168.51.80:8801/imed/pfm/';
 // const base = '192.168.51.80:8801/imed/pfm/';
 
 
 // export const URL = '192.168.51.80:8801/imed/pfm/'; // 本地
 // export const URL = '192.168.51.80:8801/imed/pfm/'; // 本地
-// export const URL = '112.124.59.133:8802/imed/pfm/'; //线上测试
+export const URL = '112.124.59.133:8802/imed/pfm/'; //线上测试
 // export const URL = '118.31.245.65:8802/imed/pfm/';
 // export const URL = '118.31.245.65:8802/imed/pfm/';
 // export const URL = '192.168.38.174:8088/imed/pfm/';
 // export const URL = '192.168.38.174:8088/imed/pfm/';
 // export const URL = '192.168.1.45:8088/imed/pfm/'; //内网
 // export const URL = '192.168.1.45:8088/imed/pfm/'; //内网
 // export const URL = 's1.nsloop.com:5137/imed/pfm/';  // 外网
 // export const URL = 's1.nsloop.com:5137/imed/pfm/';  // 外网
-export const URL = '121.43.139.179:8801/imed/pfm/';  // 云端服务1
+// export const URL = '121.43.139.179:8801/imed/pfm/';  // 云端服务1
 // export const URL = '172.18.116.20:8801/imed/pfm/';  // 云端服务2
 // export const URL = '172.18.116.20:8801/imed/pfm/';  // 云端服务2
 
 
 // export const URL = '172.18.116.20:9002/imed/pfm/';  // 云端服务2
 // export const URL = '172.18.116.20:9002/imed/pfm/';  // 云端服务2

+ 1415 - 31
yarn.lock

@@ -2,34 +2,1418 @@
 # yarn lockfile v1
 # yarn lockfile v1
 
 
 
 
-crypto-js@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/crypto-js/download/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
-  integrity sha1-KQSrJnep0EKFai6i74DekuSjbcw=
-
-moment@^2.29.1:
-  version "2.29.1"
-  resolved "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
-  integrity sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=
-
-ometa@0.2.2:
-  version "0.2.2"
-  resolved "https://registry.npm.taobao.org/ometa/download/ometa-0.2.2.tgz#f53c4735ba6d56af5a46b04dfb7c4334c596d44e"
-  integrity sha1-9TxHNbptVq9aRrBN+3xDNMWW1E4=
-
-qs@^6.9.6:
-  version "6.9.6"
-  resolved "https://registry.npm.taobao.org/qs/download/qs-6.9.6.tgz?cache=0&sync_timestamp=1610598111557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
-  integrity sha1-Ju08gkOkMbKSSsqEzJBHHzXVoO4=
-
-scss@^0.2.4:
-  version "0.2.4"
-  resolved "https://registry.npm.taobao.org/scss/download/scss-0.2.4.tgz#040d903ed37c5d4fa4ad33ae1fd389ac12a4e065"
-  integrity sha1-BA2QPtN8XU+krTOuH9OJrBKk4GU=
-  dependencies:
-    ometa "0.2.2"
-
-vuex@^3.6.0:
-  version "3.6.2"
-  resolved "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz?cache=0&sync_timestamp=1611672210051&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
-  integrity sha1-I2vAhqhww655lG8QfxbeWdWJXnE=
+"@babel/code-frame@^7.0.0":
+  "integrity" "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw=="
+  "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz"
+  "version" "7.14.5"
+  dependencies:
+    "@babel/highlight" "^7.14.5"
+
+"@babel/helper-validator-identifier@^7.14.5":
+  "integrity" "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg=="
+  "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz"
+  "version" "7.14.5"
+
+"@babel/highlight@^7.14.5":
+  "integrity" "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg=="
+  "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz"
+  "version" "7.14.5"
+  dependencies:
+    "@babel/helper-validator-identifier" "^7.14.5"
+    "chalk" "^2.0.0"
+    "js-tokens" "^4.0.0"
+
+"@types/minimist@^1.2.0":
+  "integrity" "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg=="
+  "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz"
+  "version" "1.2.1"
+
+"@types/normalize-package-data@^2.4.0":
+  "integrity" "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA=="
+  "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz"
+  "version" "2.4.0"
+
+"abbrev@1":
+  "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+  "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
+  "version" "1.1.1"
+
+"ajv@^6.12.3":
+  "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
+  "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+  "version" "6.12.6"
+  dependencies:
+    "fast-deep-equal" "^3.1.1"
+    "fast-json-stable-stringify" "^2.0.0"
+    "json-schema-traverse" "^0.4.1"
+    "uri-js" "^4.2.2"
+
+"amdefine@>=0.0.4":
+  "integrity" "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+  "resolved" "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
+  "version" "1.0.1"
+
+"ansi-regex@^2.0.0":
+  "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+  "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
+  "version" "2.1.1"
+
+"ansi-regex@^4.1.0":
+  "integrity" "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+  "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
+  "version" "4.1.0"
+
+"ansi-styles@^2.2.1":
+  "integrity" "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+  "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
+  "version" "2.2.1"
+
+"ansi-styles@^3.2.0":
+  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+  "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  "version" "3.2.1"
+  dependencies:
+    "color-convert" "^1.9.0"
+
+"ansi-styles@^3.2.1":
+  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+  "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  "version" "3.2.1"
+  dependencies:
+    "color-convert" "^1.9.0"
+
+"aproba@^1.0.3":
+  "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+  "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"
+  "version" "1.2.0"
+
+"are-we-there-yet@~1.1.2":
+  "integrity" "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w=="
+  "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"
+  "version" "1.1.5"
+  dependencies:
+    "delegates" "^1.0.0"
+    "readable-stream" "^2.0.6"
+
+"arrify@^1.0.1":
+  "integrity" "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+  "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
+  "version" "1.0.1"
+
+"asn1@~0.2.3":
+  "integrity" "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg=="
+  "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz"
+  "version" "0.2.4"
+  dependencies:
+    "safer-buffer" "~2.1.0"
+
+"assert-plus@^1.0.0", "assert-plus@1.0.0":
+  "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+  "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
+  "version" "1.0.0"
+
+"async-foreach@^0.1.3":
+  "integrity" "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
+  "resolved" "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
+  "version" "0.1.3"
+
+"asynckit@^0.4.0":
+  "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+  "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
+  "version" "0.4.0"
+
+"aws-sign2@~0.7.0":
+  "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+  "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz"
+  "version" "0.7.0"
+
+"aws4@^1.8.0":
+  "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
+  "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz"
+  "version" "1.11.0"
+
+"balanced-match@^1.0.0":
+  "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+  "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+  "version" "1.0.2"
+
+"bcrypt-pbkdf@^1.0.0":
+  "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4="
+  "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
+  "version" "1.0.2"
+  dependencies:
+    "tweetnacl" "^0.14.3"
+
+"brace-expansion@^1.1.7":
+  "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
+  "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+  "version" "1.1.11"
+  dependencies:
+    "balanced-match" "^1.0.0"
+    "concat-map" "0.0.1"
+
+"camelcase-keys@^6.2.2":
+  "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg=="
+  "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz"
+  "version" "6.2.2"
+  dependencies:
+    "camelcase" "^5.3.1"
+    "map-obj" "^4.0.0"
+    "quick-lru" "^4.0.1"
+
+"camelcase@^5.0.0", "camelcase@^5.3.1":
+  "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+  "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
+  "version" "5.3.1"
+
+"caseless@~0.12.0":
+  "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+  "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"
+  "version" "0.12.0"
+
+"chalk@^1.1.1":
+  "integrity" "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg="
+  "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
+  "version" "1.1.3"
+  dependencies:
+    "ansi-styles" "^2.2.1"
+    "escape-string-regexp" "^1.0.2"
+    "has-ansi" "^2.0.0"
+    "strip-ansi" "^3.0.0"
+    "supports-color" "^2.0.0"
+
+"chalk@^2.0.0":
+  "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
+  "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
+  "version" "2.4.2"
+  dependencies:
+    "ansi-styles" "^3.2.1"
+    "escape-string-regexp" "^1.0.5"
+    "supports-color" "^5.3.0"
+
+"chownr@^2.0.0":
+  "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
+  "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
+  "version" "2.0.0"
+
+"cliui@^5.0.0":
+  "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA=="
+  "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz"
+  "version" "5.0.0"
+  dependencies:
+    "string-width" "^3.1.0"
+    "strip-ansi" "^5.2.0"
+    "wrap-ansi" "^5.1.0"
+
+"code-point-at@^1.0.0":
+  "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+  "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+  "version" "1.1.0"
+
+"color-convert@^1.9.0":
+  "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
+  "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
+  "version" "1.9.3"
+  dependencies:
+    "color-name" "1.1.3"
+
+"color-name@1.1.3":
+  "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+  "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+  "version" "1.1.3"
+
+"combined-stream@^1.0.6", "combined-stream@~1.0.6":
+  "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
+  "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
+  "version" "1.0.8"
+  dependencies:
+    "delayed-stream" "~1.0.0"
+
+"concat-map@0.0.1":
+  "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+  "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+  "version" "0.0.1"
+
+"console-control-strings@^1.0.0", "console-control-strings@~1.1.0":
+  "integrity" "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+  "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
+  "version" "1.1.0"
+
+"core-util-is@~1.0.0", "core-util-is@1.0.2":
+  "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+  "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
+  "version" "1.0.2"
+
+"cross-spawn@^7.0.3":
+  "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
+  "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+  "version" "7.0.3"
+  dependencies:
+    "path-key" "^3.1.0"
+    "shebang-command" "^2.0.0"
+    "which" "^2.0.1"
+
+"crypto-js@^4.0.0":
+  "integrity" "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg=="
+  "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz"
+  "version" "4.0.0"
+
+"dashdash@^1.12.0":
+  "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA="
+  "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"
+  "version" "1.14.1"
+  dependencies:
+    "assert-plus" "^1.0.0"
+
+"decamelize-keys@^1.1.0":
+  "integrity" "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk="
+  "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz"
+  "version" "1.1.0"
+  dependencies:
+    "decamelize" "^1.1.0"
+    "map-obj" "^1.0.0"
+
+"decamelize@^1.1.0", "decamelize@^1.2.0":
+  "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+  "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
+  "version" "1.2.0"
+
+"delayed-stream@~1.0.0":
+  "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+  "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
+  "version" "1.0.0"
+
+"delegates@^1.0.0":
+  "integrity" "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+  "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
+  "version" "1.0.0"
+
+"ecc-jsbn@~0.1.1":
+  "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk="
+  "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
+  "version" "0.1.2"
+  dependencies:
+    "jsbn" "~0.1.0"
+    "safer-buffer" "^2.1.0"
+
+"emoji-regex@^7.0.1":
+  "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+  "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"
+  "version" "7.0.3"
+
+"env-paths@^2.2.0":
+  "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
+  "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
+  "version" "2.2.1"
+
+"error-ex@^1.3.1":
+  "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
+  "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "is-arrayish" "^0.2.1"
+
+"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5":
+  "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+  "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  "version" "1.0.5"
+
+"extend@~3.0.2":
+  "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+  "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
+  "version" "3.0.2"
+
+"extsprintf@^1.2.0", "extsprintf@1.3.0":
+  "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+  "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"
+  "version" "1.3.0"
+
+"fast-deep-equal@^3.1.1":
+  "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+  "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+  "version" "3.1.3"
+
+"fast-json-stable-stringify@^2.0.0":
+  "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+  "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+  "version" "2.1.0"
+
+"find-up@^3.0.0":
+  "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="
+  "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
+  "version" "3.0.0"
+  dependencies:
+    "locate-path" "^3.0.0"
+
+"find-up@^4.1.0":
+  "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
+  "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
+  "version" "4.1.0"
+  dependencies:
+    "locate-path" "^5.0.0"
+    "path-exists" "^4.0.0"
+
+"forever-agent@~0.6.1":
+  "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+  "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
+  "version" "0.6.1"
+
+"form-data@~2.3.2":
+  "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ=="
+  "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz"
+  "version" "2.3.3"
+  dependencies:
+    "asynckit" "^0.4.0"
+    "combined-stream" "^1.0.6"
+    "mime-types" "^2.1.12"
+
+"fs-minipass@^2.0.0":
+  "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="
+  "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "minipass" "^3.0.0"
+
+"fs.realpath@^1.0.0":
+  "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+  "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+  "version" "1.0.0"
+
+"function-bind@^1.1.1":
+  "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+  "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+  "version" "1.1.1"
+
+"gauge@~2.7.3":
+  "integrity" "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c="
+  "resolved" "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
+  "version" "2.7.4"
+  dependencies:
+    "aproba" "^1.0.3"
+    "console-control-strings" "^1.0.0"
+    "has-unicode" "^2.0.0"
+    "object-assign" "^4.1.0"
+    "signal-exit" "^3.0.0"
+    "string-width" "^1.0.1"
+    "strip-ansi" "^3.0.1"
+    "wide-align" "^1.1.0"
+
+"gaze@^1.0.0":
+  "integrity" "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g=="
+  "resolved" "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz"
+  "version" "1.1.3"
+  dependencies:
+    "globule" "^1.0.0"
+
+"get-caller-file@^2.0.1":
+  "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+  "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
+  "version" "2.0.5"
+
+"get-stdin@^4.0.1":
+  "integrity" "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+  "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
+  "version" "4.0.1"
+
+"getpass@^0.1.1":
+  "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo="
+  "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"
+  "version" "0.1.7"
+  dependencies:
+    "assert-plus" "^1.0.0"
+
+"glob@^7.0.0", "glob@^7.0.3", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@~7.1.1":
+  "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ=="
+  "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz"
+  "version" "7.1.7"
+  dependencies:
+    "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"
+
+"globule@^1.0.0":
+  "integrity" "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA=="
+  "resolved" "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "glob" "~7.1.1"
+    "lodash" "~4.17.10"
+    "minimatch" "~3.0.2"
+
+"graceful-fs@^4.2.3":
+  "integrity" "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
+  "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz"
+  "version" "4.2.6"
+
+"har-schema@^2.0.0":
+  "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+  "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz"
+  "version" "2.0.0"
+
+"har-validator@~5.1.3":
+  "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w=="
+  "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz"
+  "version" "5.1.5"
+  dependencies:
+    "ajv" "^6.12.3"
+    "har-schema" "^2.0.0"
+
+"hard-rejection@^2.1.0":
+  "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA=="
+  "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz"
+  "version" "2.1.0"
+
+"has-ansi@^2.0.0":
+  "integrity" "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE="
+  "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
+  "version" "2.0.0"
+  dependencies:
+    "ansi-regex" "^2.0.0"
+
+"has-flag@^3.0.0":
+  "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+  "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
+  "version" "3.0.0"
+
+"has-unicode@^2.0.0":
+  "integrity" "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+  "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
+  "version" "2.0.1"
+
+"has@^1.0.3":
+  "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
+  "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+  "version" "1.0.3"
+  dependencies:
+    "function-bind" "^1.1.1"
+
+"hosted-git-info@^2.1.4":
+  "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+  "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
+  "version" "2.8.9"
+
+"hosted-git-info@^4.0.1":
+  "integrity" "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg=="
+  "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz"
+  "version" "4.0.2"
+  dependencies:
+    "lru-cache" "^6.0.0"
+
+"http-signature@~1.2.0":
+  "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE="
+  "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz"
+  "version" "1.2.0"
+  dependencies:
+    "assert-plus" "^1.0.0"
+    "jsprim" "^1.2.2"
+    "sshpk" "^1.7.0"
+
+"indent-string@^4.0.0":
+  "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
+  "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
+  "version" "4.0.0"
+
+"inflight@^1.0.4":
+  "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
+  "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "once" "^1.3.0"
+    "wrappy" "1"
+
+"inherits@~2.0.3", "inherits@2":
+  "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+  "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+  "version" "2.0.4"
+
+"is-arrayish@^0.2.1":
+  "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+  "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
+  "version" "0.2.1"
+
+"is-core-module@^2.2.0":
+  "integrity" "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A=="
+  "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz"
+  "version" "2.4.0"
+  dependencies:
+    "has" "^1.0.3"
+
+"is-fullwidth-code-point@^1.0.0":
+  "integrity" "sha1-754xOG8DGn8NZDr4L95QxFfvAMs="
+  "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
+  "version" "1.0.0"
+  dependencies:
+    "number-is-nan" "^1.0.0"
+
+"is-fullwidth-code-point@^2.0.0":
+  "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+  "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+  "version" "2.0.0"
+
+"is-plain-obj@^1.1.0":
+  "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
+  "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
+  "version" "1.1.0"
+
+"is-typedarray@~1.0.0":
+  "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+  "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isarray@~1.0.0":
+  "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+  "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isexe@^2.0.0":
+  "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+  "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+  "version" "2.0.0"
+
+"isstream@~0.1.2":
+  "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+  "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
+  "version" "0.1.2"
+
+"js-base64@^2.1.8":
+  "integrity" "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+  "resolved" "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz"
+  "version" "2.6.4"
+
+"js-tokens@^4.0.0":
+  "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+  "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
+  "version" "4.0.0"
+
+"jsbn@~0.1.0":
+  "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+  "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
+  "version" "0.1.1"
+
+"json-parse-even-better-errors@^2.3.0":
+  "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+  "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+  "version" "2.3.1"
+
+"json-schema-traverse@^0.4.1":
+  "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+  "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+  "version" "0.4.1"
+
+"json-schema@0.2.3":
+  "integrity" "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+  "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"
+  "version" "0.2.3"
+
+"json-stringify-safe@~5.0.1":
+  "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+  "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
+  "version" "5.0.1"
+
+"jsprim@^1.2.2":
+  "integrity" "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI="
+  "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"
+  "version" "1.4.1"
+  dependencies:
+    "assert-plus" "1.0.0"
+    "extsprintf" "1.3.0"
+    "json-schema" "0.2.3"
+    "verror" "1.10.0"
+
+"kind-of@^6.0.3":
+  "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+  "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
+  "version" "6.0.3"
+
+"klona@^2.0.4":
+  "integrity" "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA=="
+  "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz"
+  "version" "2.0.4"
+
+"lines-and-columns@^1.1.6":
+  "integrity" "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
+  "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz"
+  "version" "1.1.6"
+
+"locate-path@^3.0.0":
+  "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="
+  "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
+  "version" "3.0.0"
+  dependencies:
+    "p-locate" "^3.0.0"
+    "path-exists" "^3.0.0"
+
+"locate-path@^5.0.0":
+  "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="
+  "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
+  "version" "5.0.0"
+  dependencies:
+    "p-locate" "^4.1.0"
+
+"lodash@^4.0.0", "lodash@^4.17.15", "lodash@~4.17.10":
+  "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+  "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+  "version" "4.17.21"
+
+"lru-cache@^6.0.0":
+  "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
+  "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+  "version" "6.0.0"
+  dependencies:
+    "yallist" "^4.0.0"
+
+"map-obj@^1.0.0":
+  "integrity" "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+  "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
+  "version" "1.0.1"
+
+"map-obj@^4.0.0":
+  "integrity" "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ=="
+  "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz"
+  "version" "4.2.1"
+
+"meow@^9.0.0":
+  "integrity" "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ=="
+  "resolved" "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz"
+  "version" "9.0.0"
+  dependencies:
+    "@types/minimist" "^1.2.0"
+    "camelcase-keys" "^6.2.2"
+    "decamelize" "^1.2.0"
+    "decamelize-keys" "^1.1.0"
+    "hard-rejection" "^2.1.0"
+    "minimist-options" "4.1.0"
+    "normalize-package-data" "^3.0.0"
+    "read-pkg-up" "^7.0.1"
+    "redent" "^3.0.0"
+    "trim-newlines" "^3.0.0"
+    "type-fest" "^0.18.0"
+    "yargs-parser" "^20.2.3"
+
+"mime-db@1.48.0":
+  "integrity" "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
+  "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz"
+  "version" "1.48.0"
+
+"mime-types@^2.1.12", "mime-types@~2.1.19":
+  "integrity" "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg=="
+  "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz"
+  "version" "2.1.31"
+  dependencies:
+    "mime-db" "1.48.0"
+
+"min-indent@^1.0.0":
+  "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+  "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
+  "version" "1.0.1"
+
+"minimatch@^3.0.4", "minimatch@~3.0.2":
+  "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
+  "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
+  "version" "3.0.4"
+  dependencies:
+    "brace-expansion" "^1.1.7"
+
+"minimist-options@4.1.0":
+  "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A=="
+  "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz"
+  "version" "4.1.0"
+  dependencies:
+    "arrify" "^1.0.1"
+    "is-plain-obj" "^1.1.0"
+    "kind-of" "^6.0.3"
+
+"minipass@^3.0.0":
+  "integrity" "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg=="
+  "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz"
+  "version" "3.1.3"
+  dependencies:
+    "yallist" "^4.0.0"
+
+"minizlib@^2.1.1":
+  "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="
+  "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
+  "version" "2.1.2"
+  dependencies:
+    "minipass" "^3.0.0"
+    "yallist" "^4.0.0"
+
+"mkdirp@^1.0.3":
+  "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+  "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
+  "version" "1.0.4"
+
+"moment@^2.29.1":
+  "integrity" "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M="
+  "resolved" "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz"
+  "version" "2.29.1"
+
+"nan@^2.13.2":
+  "integrity" "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
+  "resolved" "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz"
+  "version" "2.14.2"
+
+"neo-async@^2.6.2":
+  "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+  "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
+  "version" "2.6.2"
+
+"node-gyp@^7.1.0":
+  "integrity" "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ=="
+  "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz"
+  "version" "7.1.2"
+  dependencies:
+    "env-paths" "^2.2.0"
+    "glob" "^7.1.4"
+    "graceful-fs" "^4.2.3"
+    "nopt" "^5.0.0"
+    "npmlog" "^4.1.2"
+    "request" "^2.88.2"
+    "rimraf" "^3.0.2"
+    "semver" "^7.3.2"
+    "tar" "^6.0.2"
+    "which" "^2.0.2"
+
+"node-sass@^4.0.0 || ^5.0.0 || ^6.0.0", "node-sass@^6.0.1":
+  "integrity" "sha512-f+Rbqt92Ful9gX0cGtdYwjTrWAaGURgaK5rZCWOgCNyGWusFYHhbqCCBoFBeat+HKETOU02AyTxNhJV0YZf2jQ=="
+  "resolved" "https://registry.npmjs.org/node-sass/-/node-sass-6.0.1.tgz"
+  "version" "6.0.1"
+  dependencies:
+    "async-foreach" "^0.1.3"
+    "chalk" "^1.1.1"
+    "cross-spawn" "^7.0.3"
+    "gaze" "^1.0.0"
+    "get-stdin" "^4.0.1"
+    "glob" "^7.0.3"
+    "lodash" "^4.17.15"
+    "meow" "^9.0.0"
+    "nan" "^2.13.2"
+    "node-gyp" "^7.1.0"
+    "npmlog" "^4.0.0"
+    "request" "^2.88.0"
+    "sass-graph" "2.2.5"
+    "stdout-stream" "^1.4.0"
+    "true-case-path" "^1.0.2"
+
+"nopt@^5.0.0":
+  "integrity" "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ=="
+  "resolved" "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz"
+  "version" "5.0.0"
+  dependencies:
+    "abbrev" "1"
+
+"normalize-package-data@^2.5.0":
+  "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA=="
+  "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
+  "version" "2.5.0"
+  dependencies:
+    "hosted-git-info" "^2.1.4"
+    "resolve" "^1.10.0"
+    "semver" "2 || 3 || 4 || 5"
+    "validate-npm-package-license" "^3.0.1"
+
+"normalize-package-data@^3.0.0":
+  "integrity" "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg=="
+  "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz"
+  "version" "3.0.2"
+  dependencies:
+    "hosted-git-info" "^4.0.1"
+    "resolve" "^1.20.0"
+    "semver" "^7.3.4"
+    "validate-npm-package-license" "^3.0.1"
+
+"npmlog@^4.0.0", "npmlog@^4.1.2":
+  "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="
+  "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"
+  "version" "4.1.2"
+  dependencies:
+    "are-we-there-yet" "~1.1.2"
+    "console-control-strings" "~1.1.0"
+    "gauge" "~2.7.3"
+    "set-blocking" "~2.0.0"
+
+"number-is-nan@^1.0.0":
+  "integrity" "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+  "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+  "version" "1.0.1"
+
+"oauth-sign@~0.9.0":
+  "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+  "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz"
+  "version" "0.9.0"
+
+"object-assign@^4.1.0":
+  "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+  "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+  "version" "4.1.1"
+
+"ometa@0.2.2":
+  "integrity" "sha1-9TxHNbptVq9aRrBN+3xDNMWW1E4="
+  "resolved" "https://registry.npm.taobao.org/ometa/download/ometa-0.2.2.tgz"
+  "version" "0.2.2"
+
+"once@^1.3.0":
+  "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
+  "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+  "version" "1.4.0"
+  dependencies:
+    "wrappy" "1"
+
+"p-limit@^2.0.0", "p-limit@^2.2.0":
+  "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
+  "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
+  "version" "2.3.0"
+  dependencies:
+    "p-try" "^2.0.0"
+
+"p-locate@^3.0.0":
+  "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="
+  "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
+  "version" "3.0.0"
+  dependencies:
+    "p-limit" "^2.0.0"
+
+"p-locate@^4.1.0":
+  "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
+  "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
+  "version" "4.1.0"
+  dependencies:
+    "p-limit" "^2.2.0"
+
+"p-try@^2.0.0":
+  "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+  "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
+  "version" "2.2.0"
+
+"parse-json@^5.0.0":
+  "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="
+  "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
+  "version" "5.2.0"
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    "error-ex" "^1.3.1"
+    "json-parse-even-better-errors" "^2.3.0"
+    "lines-and-columns" "^1.1.6"
+
+"path-exists@^3.0.0":
+  "integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+  "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
+  "version" "3.0.0"
+
+"path-exists@^4.0.0":
+  "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+  "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+  "version" "4.0.0"
+
+"path-is-absolute@^1.0.0":
+  "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+  "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+  "version" "1.0.1"
+
+"path-key@^3.1.0":
+  "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+  "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+  "version" "3.1.1"
+
+"path-parse@^1.0.6":
+  "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+  "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+  "version" "1.0.7"
+
+"performance-now@^2.1.0":
+  "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+  "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"
+  "version" "2.1.0"
+
+"process-nextick-args@~2.0.0":
+  "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+  "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+  "version" "2.0.1"
+
+"psl@^1.1.28":
+  "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+  "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz"
+  "version" "1.8.0"
+
+"punycode@^2.1.0", "punycode@^2.1.1":
+  "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+  "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
+  "version" "2.1.1"
+
+"qs@^6.9.6":
+  "integrity" "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
+  "resolved" "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz"
+  "version" "6.9.6"
+
+"qs@~6.5.2":
+  "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+  "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz"
+  "version" "6.5.2"
+
+"quick-lru@^4.0.1":
+  "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g=="
+  "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz"
+  "version" "4.0.1"
+
+"read-pkg-up@^7.0.1":
+  "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg=="
+  "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz"
+  "version" "7.0.1"
+  dependencies:
+    "find-up" "^4.1.0"
+    "read-pkg" "^5.2.0"
+    "type-fest" "^0.8.1"
+
+"read-pkg@^5.2.0":
+  "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg=="
+  "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz"
+  "version" "5.2.0"
+  dependencies:
+    "@types/normalize-package-data" "^2.4.0"
+    "normalize-package-data" "^2.5.0"
+    "parse-json" "^5.0.0"
+    "type-fest" "^0.6.0"
+
+"readable-stream@^2.0.1", "readable-stream@^2.0.6":
+  "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
+  "version" "2.3.7"
+  dependencies:
+    "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"
+
+"redent@^3.0.0":
+  "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg=="
+  "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz"
+  "version" "3.0.0"
+  dependencies:
+    "indent-string" "^4.0.0"
+    "strip-indent" "^3.0.0"
+
+"request@^2.88.0", "request@^2.88.2":
+  "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw=="
+  "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz"
+  "version" "2.88.2"
+  dependencies:
+    "aws-sign2" "~0.7.0"
+    "aws4" "^1.8.0"
+    "caseless" "~0.12.0"
+    "combined-stream" "~1.0.6"
+    "extend" "~3.0.2"
+    "forever-agent" "~0.6.1"
+    "form-data" "~2.3.2"
+    "har-validator" "~5.1.3"
+    "http-signature" "~1.2.0"
+    "is-typedarray" "~1.0.0"
+    "isstream" "~0.1.2"
+    "json-stringify-safe" "~5.0.1"
+    "mime-types" "~2.1.19"
+    "oauth-sign" "~0.9.0"
+    "performance-now" "^2.1.0"
+    "qs" "~6.5.2"
+    "safe-buffer" "^5.1.2"
+    "tough-cookie" "~2.5.0"
+    "tunnel-agent" "^0.6.0"
+    "uuid" "^3.3.2"
+
+"require-directory@^2.1.1":
+  "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+  "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
+  "version" "2.1.1"
+
+"require-main-filename@^2.0.0":
+  "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+  "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
+  "version" "2.0.0"
+
+"resolve@^1.10.0", "resolve@^1.20.0":
+  "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A=="
+  "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz"
+  "version" "1.20.0"
+  dependencies:
+    "is-core-module" "^2.2.0"
+    "path-parse" "^1.0.6"
+
+"rimraf@^3.0.2":
+  "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
+  "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+  "version" "3.0.2"
+  dependencies:
+    "glob" "^7.1.3"
+
+"safe-buffer@^5.0.1", "safe-buffer@^5.1.2", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1":
+  "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+  "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  "version" "5.1.2"
+
+"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@~2.1.0":
+  "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+  "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
+  "version" "2.1.2"
+
+"sass-graph@2.2.5":
+  "integrity" "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag=="
+  "resolved" "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz"
+  "version" "2.2.5"
+  dependencies:
+    "glob" "^7.0.0"
+    "lodash" "^4.0.0"
+    "scss-tokenizer" "^0.2.3"
+    "yargs" "^13.3.2"
+
+"sass-loader@^12.1.0":
+  "integrity" "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg=="
+  "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz"
+  "version" "12.1.0"
+  dependencies:
+    "klona" "^2.0.4"
+    "neo-async" "^2.6.2"
+
+"scss-tokenizer@^0.2.3":
+  "integrity" "sha1-jrBtualyMzOCTT9VMGQRSYR85dE="
+  "resolved" "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz"
+  "version" "0.2.3"
+  dependencies:
+    "js-base64" "^2.1.8"
+    "source-map" "^0.4.2"
+
+"scss@^0.2.4":
+  "integrity" "sha1-BA2QPtN8XU+krTOuH9OJrBKk4GU="
+  "resolved" "https://registry.npm.taobao.org/scss/download/scss-0.2.4.tgz"
+  "version" "0.2.4"
+  dependencies:
+    "ometa" "0.2.2"
+
+"semver@^7.3.2", "semver@^7.3.4":
+  "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ=="
+  "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz"
+  "version" "7.3.5"
+  dependencies:
+    "lru-cache" "^6.0.0"
+
+"semver@2 || 3 || 4 || 5":
+  "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+  "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
+  "version" "5.7.1"
+
+"set-blocking@^2.0.0", "set-blocking@~2.0.0":
+  "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+  "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
+  "version" "2.0.0"
+
+"shebang-command@^2.0.0":
+  "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
+  "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+  "version" "2.0.0"
+  dependencies:
+    "shebang-regex" "^3.0.0"
+
+"shebang-regex@^3.0.0":
+  "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+  "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+  "version" "3.0.0"
+
+"signal-exit@^3.0.0":
+  "integrity" "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+  "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz"
+  "version" "3.0.3"
+
+"source-map@^0.4.2":
+  "integrity" "sha1-66T12pwNyZneaAMti092FzZSA2s="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz"
+  "version" "0.4.4"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"spdx-correct@^3.0.0":
+  "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w=="
+  "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz"
+  "version" "3.1.1"
+  dependencies:
+    "spdx-expression-parse" "^3.0.0"
+    "spdx-license-ids" "^3.0.0"
+
+"spdx-exceptions@^2.1.0":
+  "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+  "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz"
+  "version" "2.3.0"
+
+"spdx-expression-parse@^3.0.0":
+  "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="
+  "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
+  "version" "3.0.1"
+  dependencies:
+    "spdx-exceptions" "^2.1.0"
+    "spdx-license-ids" "^3.0.0"
+
+"spdx-license-ids@^3.0.0":
+  "integrity" "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ=="
+  "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz"
+  "version" "3.0.9"
+
+"sshpk@^1.7.0":
+  "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg=="
+  "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz"
+  "version" "1.16.1"
+  dependencies:
+    "asn1" "~0.2.3"
+    "assert-plus" "^1.0.0"
+    "bcrypt-pbkdf" "^1.0.0"
+    "dashdash" "^1.12.0"
+    "ecc-jsbn" "~0.1.1"
+    "getpass" "^0.1.1"
+    "jsbn" "~0.1.0"
+    "safer-buffer" "^2.0.2"
+    "tweetnacl" "~0.14.0"
+
+"stdout-stream@^1.4.0":
+  "integrity" "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA=="
+  "resolved" "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz"
+  "version" "1.4.1"
+  dependencies:
+    "readable-stream" "^2.0.1"
+
+"string_decoder@~1.1.1":
+  "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
+  "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+  "version" "1.1.1"
+  dependencies:
+    "safe-buffer" "~5.1.0"
+
+"string-width@^1.0.1", "string-width@^1.0.2 || 2":
+  "integrity" "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M="
+  "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
+  "version" "1.0.2"
+  dependencies:
+    "code-point-at" "^1.0.0"
+    "is-fullwidth-code-point" "^1.0.0"
+    "strip-ansi" "^3.0.0"
+
+"string-width@^3.0.0":
+  "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w=="
+  "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
+  "version" "3.1.0"
+  dependencies:
+    "emoji-regex" "^7.0.1"
+    "is-fullwidth-code-point" "^2.0.0"
+    "strip-ansi" "^5.1.0"
+
+"string-width@^3.1.0":
+  "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w=="
+  "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
+  "version" "3.1.0"
+  dependencies:
+    "emoji-regex" "^7.0.1"
+    "is-fullwidth-code-point" "^2.0.0"
+    "strip-ansi" "^5.1.0"
+
+"strip-ansi@^3.0.0", "strip-ansi@^3.0.1":
+  "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
+  "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
+  "version" "3.0.1"
+  dependencies:
+    "ansi-regex" "^2.0.0"
+
+"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0":
+  "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
+  "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
+  "version" "5.2.0"
+  dependencies:
+    "ansi-regex" "^4.1.0"
+
+"strip-indent@^3.0.0":
+  "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ=="
+  "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz"
+  "version" "3.0.0"
+  dependencies:
+    "min-indent" "^1.0.0"
+
+"supports-color@^2.0.0":
+  "integrity" "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+  "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
+  "version" "2.0.0"
+
+"supports-color@^5.3.0":
+  "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
+  "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
+  "version" "5.5.0"
+  dependencies:
+    "has-flag" "^3.0.0"
+
+"tar@^6.0.2":
+  "integrity" "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA=="
+  "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz"
+  "version" "6.1.0"
+  dependencies:
+    "chownr" "^2.0.0"
+    "fs-minipass" "^2.0.0"
+    "minipass" "^3.0.0"
+    "minizlib" "^2.1.1"
+    "mkdirp" "^1.0.3"
+    "yallist" "^4.0.0"
+
+"tough-cookie@~2.5.0":
+  "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g=="
+  "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz"
+  "version" "2.5.0"
+  dependencies:
+    "psl" "^1.1.28"
+    "punycode" "^2.1.1"
+
+"trim-newlines@^3.0.0":
+  "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw=="
+  "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz"
+  "version" "3.0.1"
+
+"true-case-path@^1.0.2":
+  "integrity" "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew=="
+  "resolved" "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz"
+  "version" "1.0.3"
+  dependencies:
+    "glob" "^7.1.2"
+
+"tunnel-agent@^0.6.0":
+  "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0="
+  "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
+  "version" "0.6.0"
+  dependencies:
+    "safe-buffer" "^5.0.1"
+
+"tweetnacl@^0.14.3", "tweetnacl@~0.14.0":
+  "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+  "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
+  "version" "0.14.5"
+
+"type-fest@^0.18.0":
+  "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw=="
+  "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz"
+  "version" "0.18.1"
+
+"type-fest@^0.6.0":
+  "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="
+  "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz"
+  "version" "0.6.0"
+
+"type-fest@^0.8.1":
+  "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
+  "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
+  "version" "0.8.1"
+
+"uri-js@^4.2.2":
+  "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
+  "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+  "version" "4.4.1"
+  dependencies:
+    "punycode" "^2.1.0"
+
+"util-deprecate@~1.0.1":
+  "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+  "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+  "version" "1.0.2"
+
+"uuid@^3.3.2":
+  "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+  "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz"
+  "version" "3.4.0"
+
+"validate-npm-package-license@^3.0.1":
+  "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="
+  "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
+  "version" "3.0.4"
+  dependencies:
+    "spdx-correct" "^3.0.0"
+    "spdx-expression-parse" "^3.0.0"
+
+"verror@1.10.0":
+  "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA="
+  "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"
+  "version" "1.10.0"
+  dependencies:
+    "assert-plus" "^1.0.0"
+    "core-util-is" "1.0.2"
+    "extsprintf" "^1.2.0"
+
+"vuex@^3.6.0":
+  "integrity" "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw=="
+  "resolved" "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz"
+  "version" "3.6.2"
+
+"which-module@^2.0.0":
+  "integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+  "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
+  "version" "2.0.0"
+
+"which@^2.0.1", "which@^2.0.2":
+  "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
+  "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+  "version" "2.0.2"
+  dependencies:
+    "isexe" "^2.0.0"
+
+"wide-align@^1.1.0":
+  "integrity" "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="
+  "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"
+  "version" "1.1.3"
+  dependencies:
+    "string-width" "^1.0.2 || 2"
+
+"wrap-ansi@^5.1.0":
+  "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q=="
+  "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
+  "version" "5.1.0"
+  dependencies:
+    "ansi-styles" "^3.2.0"
+    "string-width" "^3.0.0"
+    "strip-ansi" "^5.0.0"
+
+"wrappy@1":
+  "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+  "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+  "version" "1.0.2"
+
+"y18n@^4.0.0":
+  "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+  "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz"
+  "version" "4.0.3"
+
+"yallist@^4.0.0":
+  "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+  "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+  "version" "4.0.0"
+
+"yargs-parser@^13.1.2":
+  "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg=="
+  "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz"
+  "version" "13.1.2"
+  dependencies:
+    "camelcase" "^5.0.0"
+    "decamelize" "^1.2.0"
+
+"yargs-parser@^20.2.3":
+  "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
+  "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
+  "version" "20.2.9"
+
+"yargs@^13.3.2":
+  "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw=="
+  "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"
+  "version" "13.3.2"
+  dependencies:
+    "cliui" "^5.0.0"
+    "find-up" "^3.0.0"
+    "get-caller-file" "^2.0.1"
+    "require-directory" "^2.1.1"
+    "require-main-filename" "^2.0.0"
+    "set-blocking" "^2.0.0"
+    "string-width" "^3.0.0"
+    "which-module" "^2.0.0"
+    "y18n" "^4.0.0"
+    "yargs-parser" "^13.1.2"

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