소스 검색

添加注册和审核弹窗协议

chenxiong 3 년 전
부모
커밋
914b77164a
3개의 변경된 파일135개의 추가작업 그리고 9개의 파일을 삭제
  1. 8 5
      common/signature.js
  2. 16 2
      pages2/register/register.vue
  3. 111 2
      pages2/verify/input.vue

+ 8 - 5
common/signature.js

@@ -36,11 +36,14 @@ class Handwriting {
 		this.ctx = uni.createCanvasContext(this.canvasName)
 		var query = uni.createSelectorQuery();
 		query.select('.handCenter').boundingClientRect(rect => {
-			if (rect.width) {
-				this.canvasWidth = rect.width;
-			}
-			if (rect.height) {
-				this.canvasHeight = rect.height;
+			if(rect) {
+				
+				if (rect.width) {
+					this.canvasWidth = rect.width;
+				}
+				if (rect.height) {
+					this.canvasHeight = rect.height;
+				}
 			}
 		}).exec();
 		this.selectSlideValue(this.slideValue);

+ 16 - 2
pages2/register/register.vue

@@ -293,9 +293,9 @@
 					</scroll-view>
 				</view>
 				<view class="footer">
-					<view v-if="isAgree" class="btn cancel" @click="agreementModal = false">关闭</view>
+					<view v-if="isAgree" class="btn close" @click="agreementModal = false">关闭</view>
 					<view v-if="!isAgree" class="btn cancel" @click="refuseAgreement">取消</view>
-					<view v-if="!isAgree" class="btn ok" @click="agreementModal = false;isAgree = true;">确定</view>
+					<view v-if="!isAgree" class="btn ok" @click="agree">确定</view>
 				</view>
 			</view>
 		</u-popup>
@@ -356,6 +356,12 @@ export default {
 	},
 	mounted() {},
 	methods: {
+		agree() {
+			this.agreementModal = false;
+			setTimeout(() => {
+				this.isAgree = true;
+			},500)
+		},
 		canRegister() {
 			if(this.form.tel && this.form.code && this.form.pwd && this.read) {
 				return true;
@@ -663,6 +669,14 @@ export default {
 					background: #007AFF;
 					color:#fff;
 				}
+				
+				&.close {
+					color:#fff;
+					width: 560rpx;
+					height: 80rpx;
+					background: #007AFF;
+					border-radius: 40rpx 40rpx 40rpx 40rpx;
+				}
 			}
 		}
 	}

+ 111 - 2
pages2/verify/input.vue

@@ -268,6 +268,26 @@
 			</u-form>
 		</view>
 		<view @click="submits" class="submit_btn">提交资料</view>
+		
+		<u-popup class="modal" v-model="agreementModal" mode="center" border-radius="24" :mask-close-able="false">
+			<view class="agreement">
+				<view class="body">
+					<scroll-view scroll-y="true" style="height:600rpx">
+						<view class="content">
+							<view>本产品(或服务)提供【{{goodsData.goodsName}}】课程的在线学习功能,为使用这些功能,我们需要使用您设备上的摄像头,并收集以下个人信息:
+								<text v-for="item in listData">{{item.fieldName}}、</text>
+								<!-- 姓名、性别、身份证号码、移动电话号码、身份证照片、一寸照、证书名称/岗位、证书编号、有效期、人脸照片(每节课随机拍摄三张)、 -->
+							学习详细记录。</view>
+							<view>我们会将上述信息提供至广东省建设执业注册管理中心等第三方组织使用,用于继续教育备案等。如果您拒绝,将导致这些功能无法实现,但不影响您使用本产品(或服务)的其他业务功能。</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="footer">
+					<view class="btn cancel" @click="refuseAgreement">取消</view>
+					<view class="btn ok" @click="agree">同意并继续</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -278,6 +298,8 @@ import Handwriting from '@/common/signature.js';
 export default {
 	data() {
 		return {
+			agreementModal:true,
+			goodsData:{},
 			itemStyle: {
 				marginTop: '20px',
 				backgroundColor: '#fff',
@@ -476,8 +498,9 @@ export default {
 	created() {
 		this.$store.getters.dictObj;
 	},
-	onLoad(option) {
+	async onLoad(option) {
 		this.goodsId = Number(option.id);
+		await this.getGoodsDetail()
 		this.getInfo();
 	},
 	onReady(res) {
@@ -490,6 +513,23 @@ export default {
 	},
 	computed: { ...mapGetters(['dictObj']) },
 	methods: {
+		getGoodsDetail() {
+			return new Promise(resolve => {
+				
+				this.$api.goodsDetail(this.goodsId).then(res => {
+					this.goodsData = res.data.data;
+					resolve()
+				})
+			})
+		},
+		agree() {
+			this.agreementModal = false;
+		},
+		refuseAgreement() {
+			uni.navigateBack({
+				delta:1
+			})
+		},
 		clearFun(key) {
 			this.form[key] = '';
 		},
@@ -734,6 +774,9 @@ export default {
 				self.isRequired = self.listData.every(ims => {
 					return ims.required === false;
 				});
+				this.$nextTick(() => {
+					this.agreementModal = true;
+				})
 				self.$api.getbaseprofiletpgetInfo({ goodsId: self.goodsId }).then(result => {
 					if (result.data.code === 200) {
 						if (!result.data.data) {
@@ -901,7 +944,7 @@ page {
 	background: #eaeef1;
 }
 </style>
-<style scope>
+<style scope lang="scss">
 .ctoples {
 	position: absolute;
 	top: 0;
@@ -994,4 +1037,70 @@ input {
 	padding: 0 20rpx;
 	font-size: 24rpx;
 }
+
+.modal {
+	.agreement {
+		width: 640rpx;
+		height: 740rpx;
+		background: #FFFFFF;
+		display: flex;
+		flex-direction: column;
+		
+		.body {
+			flex:1;
+			
+			.content {
+				padding:30rpx 40rpx 28rpx;
+				line-height: 40rpx;
+				font-size: 26rpx;
+				color:#666;
+				
+				.bold {
+					color:#333;
+					font-size: 26rpx;
+					font-weight: bold;
+				}
+				
+				.center {
+					text-align: center;
+				}
+			}
+		}
+		
+		.footer {
+			height:140rpx;
+			border-top:1px solid #EEEEEE;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			
+			.btn {
+				margin:0 12rpx;
+				width: 200rpx;
+				height: 80rpx;
+				color:#007AFF;
+				font-size: 30rpx;
+				text-align: center;
+				line-height: 80rpx;
+				background: #F5F5F5;
+				border-radius: 40rpx 40rpx 40rpx 40rpx;
+				
+				&.ok {
+					width: 336rpx;
+					height: 80rpx;
+					background: #007AFF;
+					color:#fff;
+				}
+				
+				&.close {
+					color:#fff;
+					width: 560rpx;
+					height: 80rpx;
+					background: #007AFF;
+					border-radius: 40rpx 40rpx 40rpx 40rpx;
+				}
+			}
+		}
+	}
+}
 </style>