Tang %!s(int64=3) %!d(string=hai) anos
pai
achega
4e0d987f99

+ 4 - 1
common/api.js

@@ -19,6 +19,8 @@ import profileTp from './httpList/profileTp.js'
 import answer from './httpList/answer.js'
 import note from './httpList/note.js'
 import exam from './httpList/exam.js'
+import profileStamp from './httpList/profileStamp.js'
+
 export default {
 	...login,
 	...polyvVideo,
@@ -40,5 +42,6 @@ export default {
 	...profileTp,
 	...answer,
 	...note,
-	...exam
+	...exam,
+	...profileStamp,
 }

+ 38 - 0
common/httpList/profileStamp.js

@@ -0,0 +1,38 @@
+import {
+	myRequest
+} from '../request.js'
+export default {
+	//新增填写盖章审核
+	addbaseprofileStamp(data) {
+		return myRequest({
+			url: '/base/profileStamp',
+			method: 'post',
+			data: data
+		})
+	},
+	//导出盖章word
+	addWordbaseprofileStamp(data) {
+		return myRequest({
+			url: '/base/profileStamp/addWord',
+			method: 'post',
+			data: data
+		})
+	},
+	//修改填写盖章审核
+	editbaseprofileStamp(data) {
+		return myRequest({
+			url: '/base/profileStamp/edit',
+			method: 'post',
+			data: data
+		})
+	},
+	//获取填写盖章审核详细信息
+	getbaseprofileStampgetInfo(data) {
+		return myRequest({
+			url: '/base/profileStamp/getInfo',
+			method: 'get',
+			data: data
+		})
+	},
+
+}

+ 8 - 0
common/httpList/profileTp.js

@@ -26,6 +26,14 @@ export default {
 			data: data
 		})
 	},
+	//获取填写资料审核详细信息
+	getbaseprofiletpgetInfo(data) {
+		return myRequest({
+			url: '/base/profile/tp/getInfo',
+			method: 'get',
+			data: data
+		})
+	},
 	//查询资料模板列表
 	getbaseprofiletplists(data) {
 		return myRequest({

+ 2 - 1
common/methodTool.js

@@ -145,8 +145,9 @@ export default {
 	uploadFile(options, int) {
 		return new Promise((resolve, reject) => {
 			var self = this;
-			if (options.indexOf('http://tmp/') === -1) {
+			if (options.indexOf('//tmp/') === -1) {
 				resolve(options)
+				return
 			}
 			var data = {
 				imageStatus: int

+ 0 - 4
pages2/bank/questionBank.vue

@@ -554,7 +554,6 @@ export default {
 					}
 				} else if (item.type == 4) {
 					//案例题
-					console.log(item.jsonStr)
 					let isOver = item.jsonStr.every(jsonItem => {
 						if (jsonItem.type == 1 || jsonItem.type == 2 || jsonItem.type == 3) {
 							if (jsonItem.ques) {
@@ -802,10 +801,8 @@ export default {
 								let ansArr = [];
 								item.jsonStr.forEach((json, index) => {
 									if (json.type == 1) {
-										json.ques = []
 										ansArr[index] = json.answerQuestion;
 									} else if (json.type == 2) {
-										json.ques = []
 										json.optionsList.forEach(str => {
 											str.optionsId = '' + str.optionsId;
 										});
@@ -815,7 +812,6 @@ export default {
 										});
 										ansArr[index] = arr;
 									} else if (json.type == 3) {
-										json.ques = []
 										ansArr[index] = json.answerQuestion;
 									} else if (json.type == 5) {
 										ansArr[index] = {

+ 365 - 344
pages2/class/detail.vue

@@ -35,9 +35,7 @@
 			</view>
 			<u-line color="#D6D6DB" />
 			<view style="display: flex;justify-content: center;">
-				<view style="width: 280px;">
-					<u-tabs :list="list"  font-size="24" bar-width="80" :current="current" @change="change" active-color="#007AFF"></u-tabs>
-				</view>
+				<view style="width: 280px;"><u-tabs :list="list" font-size="24" bar-width="80" :current="current" @change="change" active-color="#007AFF"></u-tabs></view>
 			</view>
 			<u-line color="#D6D6DB" />
 		</view>
@@ -48,25 +46,29 @@
 					<!--模块 -->
 					<view v-if="item.type == 1"><courseModule :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="item.menuId"></courseModule></view>
 					<!--章 -->
-					<view v-if="item.type == 2"><courseChapter :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="'0-'+item.menuId"></courseChapter></view>
+					<view v-if="item.type == 2">
+						<courseChapter :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="'0-' + item.menuId"></courseChapter>
+					</view>
 					<!--节 -->
-					<view v-if="item.type == 3"><courseSection :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="'0-0-'+item.menuId"></courseSection></view>
+					<view v-if="item.type == 3">
+						<courseSection :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="'0-0-' + item.menuId"></courseSection>
+					</view>
 				</view>
 			</view>
 			<!--目录 -->
 			<view v-show="current == 1">
 				<view class="menuBox" v-for="(item, index) in menuList">
 					<!--模块 -->
-					<view v-if="item.type == 1"><courseModule :gradeId="gradeId"  :isBuy="true" :menuItem="item" :levelId="item.menuId"></courseModule></view>
+					<view v-if="item.type == 1"><courseModule :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="item.menuId"></courseModule></view>
 					<!--章 -->
-					<view v-if="item.type == 2"><courseChapter :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-'+item.menuId"></courseChapter></view>
+					<view v-if="item.type == 2"><courseChapter :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-' + item.menuId"></courseChapter></view>
 					<!--节 -->
-					<view v-if="item.type == 3"><courseSection :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-0-'+item.menuId"></courseSection></view>
+					<view v-if="item.type == 3"><courseSection :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-0-' + item.menuId"></courseSection></view>
 				</view>
 			</view>
 			<!--笔记 -->
 			<view v-show="current == 2">
-				<view v-if="noteList.length==0" style="text-align: center;">暂无笔记</view>
+				<view v-if="noteList.length == 0" style="text-align: center;">暂无笔记</view>
 				<view class="inputBottom">
 					<view style="width: 10%;"><image src="/static/icon/note3.png" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image></view>
 					<view style="width: 73%;height: 88rpx;margin-bottom: 15rpx;">
@@ -74,88 +76,71 @@
 					</view>
 					<view style="color: #007AFF;font-size: 30rpx;font-weight: bold;width: 15%;text-align: center;" @click="postNote">提交</view>
 				</view>
-				<view v-for="(item, index) in noteList" >
-					<view class="dateBox">{{$method.timestampToTime(item.dateNote)}}</view>
+				<view v-for="(item, index) in noteList">
+					<view class="dateBox">{{ $method.timestampToTime(item.dateNote) }}</view>
 					<view class="noteBox">
-						<view  v-for="(item1, index1) in item.userNotes" style="margin-top: 30rpx;" @click="jumpNote(item1)">
+						<view v-for="(item1, index1) in item.userNotes" style="margin-top: 30rpx;" @click="jumpNote(item1)">
 							<view style="display: flex;">
 								<view>
-									<view  >
-										<image src="/static/icon/note2.png" v-if="noteId!=item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
-										<image src="/static/icon/note1.png" v-if="noteId==item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
+									<view>
+										<image src="/static/icon/note2.png" v-if="noteId != item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
+										<image src="/static/icon/note1.png" v-if="noteId == item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
 									</view>
-									<view class="title" style="width: 39rpx;height: 39rpx;margin:0 29rpx;">{{$method.secondToDate(item1.noteSecond)}}</view>			
+									<view class="title" style="width: 39rpx;height: 39rpx;margin:0 29rpx;">{{ $method.secondToDate(item1.noteSecond) }}</view>
 								</view>
 								<view style="margin-left: 10rpx;">
-									<view class="t2Content leftPadding">{{item1.sectionName}}</view>
-									<view class="tBox2">
-										{{item1.noteText}}
-										
-									</view>
+									<view class="t2Content leftPadding">{{ item1.sectionName }}</view>
+									<view class="tBox2">{{ item1.noteText }}</view>
 								</view>
 							</view>
-							
 						</view>
 					</view>
-
-
 				</view>
 			</view>
 			<!--答疑 -->
 			<view v-show="current == 3">
 				<view class="inputBottom">
 					<view style="width: 73%;height: 88rpx;margin-bottom: 15rpx;margin-left: 10% ;">
-						<u-input height="78" fixed="true"   :placeholder="placeholder" type="textarea" :custom-style="inputStyle" v-model="ctxValue" />
+						<u-input height="78" fixed="true" :placeholder="placeholder" type="textarea" :custom-style="inputStyle" v-model="ctxValue" />
 					</view>
 					<view style="color: #007AFF;font-size: 30rpx;font-weight: bold;width: 15%;text-align: center;" @click="postContent">提交</view>
 				</view>
 				<view v-for="(item, index) in answerList" style="background-color: #FFFFFF;margin-bottom: 20rpx;">
 					<view class="chat_box" @click.stop="clearCtx">
-						<view style="display: flex;" >
+						<view style="display: flex;">
 							<view><image :src="$method.splitImgHost(item.avatar)" style="width: 64rpx;height: 64rpx;"></image></view>
 							<view style="margin-left: 15rpx;">
-								<view class="chat1">{{item.realname}}</view>
-								<view class="chat2">{{$method.timestampToTime(item.createTime)}}</view>
+								<view class="chat1">{{ item.realname }}</view>
+								<view class="chat2">{{ $method.timestampToTime(item.createTime) }}</view>
 								<view class="chat3">
-									<text v-if="item.assignUserId>0">回复</text>
-									<text v-if="item.assignUserId>0" style="color: #007AFF;">@{{item.assignRealname}}</text>
-									{{item.answerText}}</view>
+									<text v-if="item.assignUserId > 0">回复</text>
+									<text v-if="item.assignUserId > 0" style="color: #007AFF;">@{{ item.assignRealname }}</text>
+									{{ item.answerText }}
+								</view>
 							</view>
 						</view>
-						<view class="btnReply" @click.stop="replyContent(item)" v-if="item.userId!=userInfo.userId">回复</view>
+						<view class="btnReply" @click.stop="replyContent(item)" v-if="item.userId != userInfo.userId">回复</view>
 						<view v-else class="btnDel" @click.stop="delContent(item)">删除</view>
 					</view>
 					<u-line color="#D6D6DB" />
 				</view>
-				<view v-if="answerList.length==0" style="text-align: center;">
-					暂无记录
-				</view>
+				<view v-if="answerList.length == 0" style="text-align: center;">暂无记录</view>
 			</view>
 		</view>
 		<!-- 播放前拍照start -->
 		<u-popup v-model="photoPopup" mode="bottom" border-radius="32" :mask-close-able="false">
-					<view class="photoBox">
-						<view class="photoTop">
-							<view class="sqzz" v-if="true">
-								<u-icon name="close" color="#333333" size="30" @click="closePhoto"></u-icon>
-							</view>
-							<view class="centersq">
-								请正视手机屏幕
-							</view>
-							<view class="sqzz">
-								
-							</view>
-						</view>
-						<view class="photoCenter">
-							<camera device-position="front" flash="off" @error="error" style="width: 100%; height: 100%" v-if="photoPopup"></camera>
-							<view class="custom">
-								<image src="@/pages2/static/zhezhao.png" mode=""></image>
-							</view>
-						</view>
-						<view class="btnResult" @click="takePhoto">
-							拍照
-						</view>
-					</view>
+			<view class="photoBox">
+				<view class="photoTop">
+					<view class="sqzz" v-if="true"><u-icon name="close" color="#333333" size="30" @click="closePhoto"></u-icon></view>
+					<view class="centersq">请正视手机屏幕</view>
+					<view class="sqzz"></view>
+				</view>
+				<view class="photoCenter">
+					<camera device-position="front" flash="off" @error="error" style="width: 100%; height: 100%" v-if="photoPopup"></camera>
+					<view class="custom"><image src="@/pages2/static/zhezhao.png" mode=""></image></view>
+				</view>
+				<view class="btnResult" @click="takePhoto">拍照</view>
+			</view>
 		</u-popup>
 		<!-- 播放前拍照end -->
 	</view>
@@ -200,159 +185,199 @@ export default {
 					name: '答疑'
 				}
 			],
-			menuList: [
-			],
+			menuList: [],
 			current: 1,
-			vid:'',
-			goodsId:0,
-			goodsData:{},
-			photoPopup:false,
-			goodsPlayConfig:null,
-			autoplay:false,
-			isAllowSeek:'no',
+			vid: '',
+			goodsId: 0,
+			goodsData: {},
+			photoPopup: false,
+			goodsPlayConfig: null,
+			autoplay: false,
+			isAllowSeek: 'no',
 			playbackRate: [1.0],
-			timer:null,
-			goodsPhotographConfig:null,
-			intervalTimeList:[],// 间隔拍照时长
-			intervalTimeIndex:0 ,//当前处于哪个时间段拍照
-			playTime:0 ,//页面播放时长,不含暂停
-			currentTime:0,
-			avatarUrl:'',
-			ossAvatarUrl:'',
-			studyDuration:0, // 当前视频时长
-			gradeId:0,
-			chapterId:0,
-			moduleId:0,
+			timer: null,
+			goodsPhotographConfig: null,
+			intervalTimeList: [], // 间隔拍照时长
+			intervalTimeIndex: 0, //当前处于哪个时间段拍照
+			playTime: 0, //页面播放时长,不含暂停
+			currentTime: 0,
+			avatarUrl: '',
+			ossAvatarUrl: '',
+			studyDuration: 0, // 当前视频时长
+			gradeId: 0,
+			chapterId: 0,
+			moduleId: 0,
 			reMenuList: [],
 			answerList: [],
-			assignUserId:0,
-			placeholder:'您可以在这里输入答疑内容',
-			ctxValue:'',
-			noteList:[],
-			noteValue:'',
-			noteId:0,
-			recordObj:0,
-			needSeek:false  //第一次播放是否需要跳转
+			assignUserId: 0,
+			placeholder: '您可以在这里输入答疑内容',
+			ctxValue: '',
+			noteList: [],
+			noteValue: '',
+			noteId: 0,
+			recordObj: 0,
+			needSeek: false //第一次播放是否需要跳转
 		};
 	},
 	onUnload() {},
-	computed: { ...mapGetters(['userInfo','playSectionId']) },
+	computed: { ...mapGetters(['userInfo', 'playSectionId']) },
 	onLoad(option) {
-		this.courseId = option.id;
-		this.goodsId = uni.getStorageSync('courseGoodsId');
+		this.courseId = Number(option.id);
+		this.goodsId = Number(option.goodsId);
 		this.courseDetail();
-		this.getGoodsDetail()
-		this.getAnswerList()
-		
+		this.getGoodsDetail();
+		this.getAnswerList();
+	},
+	onShow() {
+		var self = this;
+		this.$api.getbaseprofiletplists({ goodsId: self.goodsId }).then(res => {
+			if (res.data.code === 200 && res.data.rows.length) {
+				if (res.data.rows[0].keyValue) {
+					self.$api.getbaseprofiletpgetInfo({ goodsId: self.goodsId }).then(result => {
+						if (result.data.code === 200) {
+							if (!result.data.data || result.data.data.status === 3 && result.data.data.changeStatus === 0) {
+								uni.showModal({
+									showCancel: false,
+									content: '资料审核不通过,请前往重新填写',
+									success: function(resultst) {
+										if (resultst.confirm) {
+											self.$navTo.togo('/pages2/verify/input', {
+												id: self.goodsId
+											});
+										}
+									}
+								});
+							} else if (result.data.data.status === 1 && res.data.rows[0].keyValue2) {
+								self.$api.getbaseprofileStampgetInfo({ goodsId: self.goodsId }).then(k => {
+									if(k.data.code === 200){
+										if(!k.data.data || k.data.data.status === 3 && k.data.data.changeStatus === 0){
+											uni.showModal({
+												showCancel: false,
+												content: '资料盖章审核不通过,请前往重新填写',
+												success: function(resultst) {
+													if (resultst.confirm) {
+														self.$navTo.togo('/pages2/verify/input2', {
+															id: self.goodsId
+														});
+													}
+												}
+											});
+										}
+									}
+								});
+							}
+						}
+					});
+				}
+			}
+		});
 	},
-	onShow() {},
 	onUnload() {
-		if(this.playSectionId>0){
+		if (this.playSectionId > 0) {
 			//退出提交记录
-			this.ossAvatarUrl = ""
-			this.postStudyRecord()
+			this.ossAvatarUrl = '';
+			this.postStudyRecord();
 			//清除正在播放的节ID
-			this.$store.commit('setPlaySectionId', {playSectionId  :0});
+			this.$store.commit('setPlaySectionId', { playSectionId: 0 });
 		}
-		
 	},
 	mounted() {
 		eventHub.$on('changeSection', oldSectionId => {
-			this.ossAvatarUrl = ""
-			this.postStudyRecord(0,oldSectionId)
+			this.ossAvatarUrl = '';
+			this.postStudyRecord(0, oldSectionId);
 		});
 		eventHub.$on('getSection', item => {
-			this.playVideo(item)
+			this.playVideo(item);
 		});
 		eventHub.$on('levelId', item => {
-			let arr = item.split('-')
+			let arr = item.split('-');
 			//点击节获取的各层级ID
-			this.moduleId = arr[0]
-			this.chapterId = arr[1]
-			console.log(item,99)
+			this.moduleId = arr[0];
+			this.chapterId = arr[1];
+			console.log(item, 99);
 		});
 	},
 	methods: {
-		async playVideo(item){
-			if(this.timer){
+		async playVideo(item) {
+			if (this.timer) {
 				clearInterval(this.timer);
 			}
-			 if(this.vid){
-				 //切换视频
-				 var polyvPlayerContext = this.selectComponent('#playerVideo');
-				 polyvPlayerContext.changeVid(item.recordingUrl)
-			 }else{
-				 this.vid = item.recordingUrl
-			 }
-			 this.recordObj = await this.getRecordLast();
-			 if(this.recordObj.studyDuration){
-				this.needSeek = true //需要跳转到播放记录
-			 }
-			 console.log(this.startTime,789)
-			this.startStatus = true
-			
+			if (this.vid) {
+				//切换视频
+				var polyvPlayerContext = this.selectComponent('#playerVideo');
+				polyvPlayerContext.changeVid(item.recordingUrl);
+			} else {
+				this.vid = item.recordingUrl;
+			}
+			this.recordObj = await this.getRecordLast();
+			if (this.recordObj.studyDuration) {
+				this.needSeek = true; //需要跳转到播放记录
+			}
+			console.log(this.startTime, 789);
+			this.startStatus = true;
+
 			//获取节笔记
-			this.getNoteList()
+			this.getNoteList();
 		},
-		getRecordLast(){
-			let self = this
-			return new Promise(resolve=>{
+		getRecordLast() {
+			let self = this;
+			return new Promise(resolve => {
 				let data = {
-						gradeId:self.gradeId,
-						goodsId:self.goodsId,
-						sectionId:self.playSectionId,
-						courseId: self.courseId,
-					}
-					self.$api.recordLast(data).then(res => {
-						resolve(res.data.data)
-					});
-			})
-			
+					gradeId: self.gradeId,
+					goodsId: self.goodsId,
+					sectionId: self.playSectionId,
+					courseId: self.courseId
+				};
+				self.$api.recordLast(data).then(res => {
+					resolve(res.data.data);
+				});
+			});
 		},
-		jumpNote(item){
-			this.noteId = item.noteId
+		jumpNote(item) {
+			this.noteId = item.noteId;
 			this.$u.toast('即将跳到笔记位置');
 			//跳到笔记时刻
-			 var polyvPlayerContext = this.selectComponent('#playerVideo');
-			 polyvPlayerContext.seek(item.noteSecond)
-			 polyvPlayerContext.play()
+			var polyvPlayerContext = this.selectComponent('#playerVideo');
+			polyvPlayerContext.seek(item.noteSecond);
+			polyvPlayerContext.play();
 		},
 		postNote() {
 			let self = this;
-			if(!(this.playSectionId>0)){
+			if (!(this.playSectionId > 0)) {
 				this.$u.toast('目前无播放视频');
-				retun
+				retun;
 			}
-			if(!this.noteValue){
+			if (!this.noteValue) {
 				this.$u.toast('请输入内容');
-				retun
+				retun;
 			}
 			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			let noteDate = this.$method.getZeroTime()
-			let noteSecond= polyvPlayerContext.getCurrentTime()
-			if(!noteSecond){
+			let noteDate = this.$method.getZeroTime();
+			let noteSecond = polyvPlayerContext.getCurrentTime();
+			if (!noteSecond) {
 				this.$u.toast('视频暂未开始');
-				retun
+				retun;
 			}
-			let data = { 
-				gradeId:this.gradeId,
-				goodsId:this.goodsId,
-				sectionId:this.playSectionId,
+			let data = {
+				gradeId: this.gradeId,
+				goodsId: this.goodsId,
+				sectionId: this.playSectionId,
 				courseId: this.courseId,
-				noteText:this.noteValue,
-				noteDate:noteDate,
-				noteSecond:noteSecond}
+				noteText: this.noteValue,
+				noteDate: noteDate,
+				noteSecond: noteSecond
+			};
 			this.$api.postNote(data).then(res => {
 				if (res.data.code == 200) {
 					this.$u.toast('发布成功');
-					self.getNoteList()
-					this.noteValue = ''
+					self.getNoteList();
+					this.noteValue = '';
 				}
 			});
 		},
 		getNoteList() {
 			let self = this;
-			this.$api.noteList({ sectionId:this.playSectionId,courseId: this.courseId,gradeId:this.gradeId,goodsId:this.goodsId }).then(res => {
+			this.$api.noteList({ sectionId: this.playSectionId, courseId: this.courseId, gradeId: this.gradeId, goodsId: this.goodsId }).then(res => {
 				if (res.data.code == 200) {
 					self.noteList = res.data.rows;
 				}
@@ -360,71 +385,71 @@ export default {
 		},
 		delAnswer(answerId) {
 			let self = this;
-			let data = { answerId: answerId,status:-1 }
+			let data = { answerId: answerId, status: -1 };
 			this.$api.delAnswer(data).then(res => {
 				if (res.data.code == 200) {
-					self.getAnswerList()
+					self.getAnswerList();
 				}
 			});
 		},
-		clearCtx(){
-			console.log(4234)
-			this.placeholder ='您可以在这里输入答疑内容'
-			this.ctxValue = ''
-			this.assignUserId=0
+		clearCtx() {
+			console.log(4234);
+			this.placeholder = '您可以在这里输入答疑内容';
+			this.ctxValue = '';
+			this.assignUserId = 0;
 		},
-		replyContent(item){
-			this.assignUserId = item.userId
-			this.placeholder = '@'+item.realname
+		replyContent(item) {
+			this.assignUserId = item.userId;
+			this.placeholder = '@' + item.realname;
 		},
-		delContent(item){
-			this.delAnswer(item.answerId)
+		delContent(item) {
+			this.delAnswer(item.answerId);
 		},
 		postAnswer() {
 			let self = this;
-			let data = { courseId: this.courseId,answerText:this.ctxValue }
-			if(this.assignUserId>0){
-				data.assignUserId = this.assignUserId
+			let data = { courseId: this.courseId, answerText: this.ctxValue };
+			if (this.assignUserId > 0) {
+				data.assignUserId = this.assignUserId;
 			}
 			this.$api.postAnswer(data).then(res => {
 				if (res.data.code == 200) {
 					this.$u.toast('发布成功');
-					self.getAnswerList()
-					this.placeholder ='您可以在这里输入答疑内容'
-					this.ctxValue = ''
-					this.assignUserId=0
+					self.getAnswerList();
+					this.placeholder = '您可以在这里输入答疑内容';
+					this.ctxValue = '';
+					this.assignUserId = 0;
 				}
 			});
 		},
-		postContent(){
-			if(!this.ctxValue){
+		postContent() {
+			if (!this.ctxValue) {
 				this.$u.toast('请输入内容');
 			}
-			this.postAnswer()
+			this.postAnswer();
 		},
-		postStudyRecord(status=0,sectionId=self.playSectionId) {
-			let currentTime = 0
-			 var polyvPlayerContext = this.selectComponent('#playerVideo');
-			 if(polyvPlayerContext){
-				  currentTime =polyvPlayerContext.getCurrentTime() 
-			 }
+		postStudyRecord(status = 0, sectionId = self.playSectionId) {
+			let currentTime = 0;
+			var polyvPlayerContext = this.selectComponent('#playerVideo');
+			if (polyvPlayerContext) {
+				currentTime = polyvPlayerContext.getCurrentTime();
+			}
 			let self = this;
 			let data = {
-				photo:self.ossAvatarUrl,
-				sectionId:parseInt(sectionId),
-				goodsId:parseInt(self.goodsId),
-				courseId:parseInt(self.courseId),
-				studyDuration:parseInt(currentTime>0?currentTime:self.studyDuration),
-				gradeId:parseInt(self.gradeId),
-				chapterId:parseInt(self.chapterId),
-				moduleId:parseInt(self.moduleId)
-			}
-			if(status>0){
-				data.status = status
+				photo: self.ossAvatarUrl,
+				sectionId: parseInt(sectionId),
+				goodsId: parseInt(self.goodsId),
+				courseId: parseInt(self.courseId),
+				studyDuration: parseInt(currentTime > 0 ? currentTime : self.studyDuration),
+				gradeId: parseInt(self.gradeId),
+				chapterId: parseInt(self.chapterId),
+				moduleId: parseInt(self.moduleId)
+			};
+			if (status > 0) {
+				data.status = status;
 			}
-			console.log("提交接口",data)
+			console.log('提交接口', data);
 			this.$api.studyRecord(data).then(res => {
-				console.log(res)
+				console.log(res);
 			});
 		},
 		uploadFile(options, int) {
@@ -434,15 +459,14 @@ export default {
 					imageStatus: int
 				};
 				self.$api.aliyunpolicy(data).then(res => {
-
-					if(res.data.code!=200){
-						self.$method.showToast('签名错误'+JSON.stringify(res.data))
-						return
+					if (res.data.code != 200) {
+						self.$method.showToast('签名错误' + JSON.stringify(res.data));
+						return;
 					}
 					var ossToken = res.data.data.resultContent;
-					if(ossToken.host==null||ossToken.host==undefined){
-						self.$method.showToast('上传路径报错'+JSON.stringify(res.data))
-						return
+					if (ossToken.host == null || ossToken.host == undefined) {
+						self.$method.showToast('上传路径报错' + JSON.stringify(res.data));
+						return;
 					}
 					uni.uploadFile({
 						url: ossToken.host,
@@ -474,7 +498,7 @@ export default {
 						},
 						fail: error => {
 							uni.showToast({
-								title: '上传接口报错'+error,
+								title: '上传接口报错' + error,
 								icon: 'none'
 							});
 							return;
@@ -483,8 +507,8 @@ export default {
 				});
 			});
 		},
-		imageInfos(){
-			var self = this
+		imageInfos() {
+			var self = this;
 			return new Promise((resolve, reject) => {
 				uni.getImageInfo({
 					src: self.avatarUrl,
@@ -499,59 +523,58 @@ export default {
 								height: '50%',
 								success: async rest => {
 									const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
-									resolve()
-								} 
+									resolve();
+								}
 							});
 						} else {
 							console.log('无需压缩');
 							const waitUpload = await self.uploadFile(self.avatarUrl, 0);
-							resolve()
+							resolve();
 						}
 					}
 				});
 			});
 		},
 		timeEvent() {
-			let self = this
-		        var polyvPlayerContext = this.selectComponent('#playerVideo');
-				if (polyvPlayerContext != null) {
-					let PlayCurrentTime = polyvPlayerContext.getVideoPlayDuration();
-					this.studyDuration = PlayCurrentTime
-					if(this.currentTime<PlayCurrentTime){
-						this.playTime+=(PlayCurrentTime-this.currentTime)
-						this.currentTime = PlayCurrentTime
-					}else{
-						this.currentTime = PlayCurrentTime
-					}
-					//判断是否需要拍照
-					if(this.intervalTimeList.length>this.intervalTimeIndex){
-						let photoTime = Number(this.intervalTimeList[this.intervalTimeIndex]) * 60 //获取拍照秒数
-						if(photoTime<this.playTime){
-							//启动拍照
-							//暂停
-							polyvPlayerContext.exitFullScreen()
-							polyvPlayerContext.pause()
-							this.openPhoto();
-							this.intervalTimeIndex++
-						}
+			let self = this;
+			var polyvPlayerContext = this.selectComponent('#playerVideo');
+			if (polyvPlayerContext != null) {
+				let PlayCurrentTime = polyvPlayerContext.getVideoPlayDuration();
+				this.studyDuration = PlayCurrentTime;
+				if (this.currentTime < PlayCurrentTime) {
+					this.playTime += PlayCurrentTime - this.currentTime;
+					this.currentTime = PlayCurrentTime;
+				} else {
+					this.currentTime = PlayCurrentTime;
+				}
+				//判断是否需要拍照
+				if (this.intervalTimeList.length > this.intervalTimeIndex) {
+					let photoTime = Number(this.intervalTimeList[this.intervalTimeIndex]) * 60; //获取拍照秒数
+					if (photoTime < this.playTime) {
+						//启动拍照
+						//暂停
+						polyvPlayerContext.exitFullScreen();
+						polyvPlayerContext.pause();
+						this.openPhoto();
+						this.intervalTimeIndex++;
 					}
-				
 				}
+			}
 		},
 		onStateChange(newstate, oldstate) {
-			console.log(newstate,6989)
+			console.log(newstate, 6989);
 			if (newstate.detail.newstate == 'playing') {
-				if(this.needSeek){
+				if (this.needSeek) {
 					var polyvPlayerContext = this.selectComponent('#playerVideo');
-					polyvPlayerContext.seek(this.recordObj.studyDuration)
-					polyvPlayerContext.play()
-					this.needSeek = false
+					polyvPlayerContext.seek(this.recordObj.studyDuration);
+					polyvPlayerContext.play();
+					this.needSeek = false;
 				}
 				//开始播放
-				if(this.timer){
+				if (this.timer) {
 					clearInterval(this.timer);
 				}
-				this.timer = setInterval(this.timeEvent, 1500);//定时器
+				this.timer = setInterval(this.timeEvent, 1500); //定时器
 			}
 			if (newstate.detail.newstate == 'pause') {
 				//暂停提交记录
@@ -559,41 +582,39 @@ export default {
 				this.postStudyRecord() */
 			}
 			if (newstate.detail.newstate == 'ended') {
-				this.ossAvatarUrl = ""
-				this.postStudyRecord(1)
+				this.ossAvatarUrl = '';
+				this.postStudyRecord(1);
 			}
-			
-			
 		},
 		//拍照
-		openPhoto(){
-			this.photoPopup = true
+		openPhoto() {
+			this.photoPopup = true;
 		},
-		async submit(){
+		async submit() {
 			const waitYS = await this.imageInfos();
-			this.postStudyRecord()//提交记录
+			this.postStudyRecord(); //提交记录
 			//恢复播放
 			var polyvPlayerContext = this.selectComponent('#playerVideo');
 			if (polyvPlayerContext != null) {
 				polyvPlayerContext.play();
 			}
-			console.log(this.ossAvatarUrl,"拍照完成456")
+			console.log(this.ossAvatarUrl, '拍照完成456');
 		},
 		//确认拍照
 		takePhoto() {
-			var self = this
+			var self = this;
 			const ctx = uni.createCameraContext();
 			ctx.takePhoto({
 				quality: 'high',
 				success: res => {
-					console.log(res.tempImagePath)
-					self.avatarUrl = res.tempImagePath
-					self.submit()
-					
-					self.photoPopup = false
+					console.log(res.tempImagePath);
+					self.avatarUrl = res.tempImagePath;
+					self.submit();
+
+					self.photoPopup = false;
 				},
 				fail: err => {
-					console.log(err)
+					console.log(err);
 				}
 			});
 		},
@@ -602,37 +623,37 @@ export default {
 			console.log(e.detail);
 		},
 		//关闭相机
-		closePhoto(){
-			this.photoPopup = false
+		closePhoto() {
+			this.photoPopup = false;
 		},
-		getGoodsDetail(){
-			let self = this
+		getGoodsDetail() {
+			let self = this;
 			this.$api.goodsDetail(this.goodsId).then(res => {
 				self.goodsData = res.data.data;
-				self.gradeId = self.goodsData.gradeId
-				console.log(self.gradeId,698)
+				self.gradeId = self.goodsData.gradeId;
+				console.log(self.gradeId, 698);
 				self.getMenuList();
-				self.getReMenuList() //获取重修目录
-				
-				if(self.goodsData.goodsPlayConfig){
+				self.getReMenuList(); //获取重修目录
+
+				if (self.goodsData.goodsPlayConfig) {
 					self.goodsPlayConfig = JSON.parse(self.goodsData.goodsPlayConfig);
-					if(self.goodsPlayConfig.autoPlay>0){
-						self.autoplay = true
+					if (self.goodsPlayConfig.autoPlay > 0) {
+						self.autoplay = true;
 					}
-					if(self.goodsPlayConfig.drag>0){
-						self.isAllowSeek = "yes"
+					if (self.goodsPlayConfig.drag > 0) {
+						self.isAllowSeek = 'yes';
 					}
-					if(self.goodsPlayConfig.speed>0){
-						self.playbackRate = [0.5,0.8,1.0,1.25,1.5,2.0]
+					if (self.goodsPlayConfig.speed > 0) {
+						self.playbackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0];
 					}
 				}
-				if(self.goodsData.goodsPhotographConfig){
+				if (self.goodsData.goodsPhotographConfig) {
 					self.goodsPhotographConfig = JSON.parse(self.goodsData.goodsPhotographConfig);
-					if(self.goodsPhotographConfig.intervalTime){
-						self.intervalTimeList = self.goodsPhotographConfig.intervalTime.split(',')
+					if (self.goodsPhotographConfig.intervalTime) {
+						self.intervalTimeList = self.goodsPhotographConfig.intervalTime.split(',');
 					}
 				}
-			})
+			});
 		},
 		startVideo() {
 			this.startStatus = true;
@@ -647,7 +668,7 @@ export default {
 		},
 		getReMenuList() {
 			let self = this;
-			this.$api.reMenuList({ courseId: this.courseId,rebuild:1,gradeId:this.gradeId }).then(res => {
+			this.$api.reMenuList({ courseId: this.courseId, rebuild: 1, gradeId: this.gradeId }).then(res => {
 				if (res.data.code == 200) {
 					for (let i = 0; i < res.data.rows.length; i++) {
 						let item = res.data.rows[i];
@@ -661,7 +682,7 @@ export default {
 		},
 		getMenuList() {
 			let self = this;
-			this.$api.reMenuList({ courseId: this.courseId,gradeId:this.gradeId }).then(res => {
+			this.$api.reMenuList({ courseId: this.courseId, gradeId: this.gradeId }).then(res => {
 				if (res.data.code == 200) {
 					for (let i = 0; i < res.data.rows.length; i++) {
 						let item = res.data.rows[i];
@@ -678,7 +699,7 @@ export default {
 			this.$api.courseDetail(this.courseId).then(res => {
 				if (res.data.code == 200) {
 					self.detail = res.data.data;
-					self.gradeId = self.detail.gradeId
+					self.gradeId = self.detail.gradeId;
 				}
 			});
 		},
@@ -692,77 +713,77 @@ export default {
 };
 </script>
 
-<style  lang="scss" scope>
-	.btnReply{
-		width: 80rpx;
-		height: 40rpx;
-		background: #E3F0FF;
-		border-radius: 16rpx;
-		text-align: center;
-		color: #007AFF;
-	}
-	.btnDel{
-		width: 80rpx;
-		height: 40rpx;
-		background: #FFEDF0;
-		border-radius: 16rpx;
-		text-align: center;
-		color: #FF2D55;
-	}
-	.btnReply{
-		width: 80rpx;
-		height: 40rpx;
-		background: #E3F0FF;
-		border-radius: 16rpx;
-		font-size: 24rpx;
-	}
-	.photoBox{
-		.photoTop{
-			height: 74upx;
+<style lang="scss" scope>
+.btnReply {
+	width: 80rpx;
+	height: 40rpx;
+	background: #e3f0ff;
+	border-radius: 16rpx;
+	text-align: center;
+	color: #007aff;
+}
+.btnDel {
+	width: 80rpx;
+	height: 40rpx;
+	background: #ffedf0;
+	border-radius: 16rpx;
+	text-align: center;
+	color: #ff2d55;
+}
+.btnReply {
+	width: 80rpx;
+	height: 40rpx;
+	background: #e3f0ff;
+	border-radius: 16rpx;
+	font-size: 24rpx;
+}
+.photoBox {
+	.photoTop {
+		height: 74upx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 0upx 38upx;
+		.sqzz {
+			width: 28upx;
+			height: 28upx;
 			display: flex;
 			align-items: center;
-			justify-content: space-between;
-			padding: 0upx 38upx;
-			.sqzz{
-				width: 28upx;
-				height: 28upx;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-			}
-			.centersq{
-				color: #333;
-				font-size: 30upx;
-				font-weight: 500;
-			}
+			justify-content: center;
+		}
+		.centersq {
+			color: #333;
+			font-size: 30upx;
+			font-weight: 500;
 		}
-		.photoCenter{
+	}
+	.photoCenter {
+		width: 750upx;
+		height: 979upx;
+		position: relative;
+		.custom {
 			width: 750upx;
 			height: 979upx;
-			position: relative;
-			.custom{
-				width: 750upx;
-				height: 979upx;
-				position: absolute;
-				top: 0;
-				left: 0;
-				image{
-					width: 100%;
-					height: 100%;
-				}
+			position: absolute;
+			top: 0;
+			left: 0;
+			image {
+				width: 100%;
+				height: 100%;
 			}
 		}
-		.btnResult{
-			height: 100upx;
-			width: 100%;
-			background-color: #07c160;
-			text-align: center;
-			line-height: 100upx;
-			color: #fff;
-			font-size: 32upx;
-			font-weight: bold;
-		}
 	}
+	.btnResult {
+		height: 100upx;
+		width: 100%;
+		background-color: #07c160;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		font-size: 32upx;
+		font-weight: bold;
+	}
+}
 .chat_box {
 	display: flex;
 	padding: 20rpx;
@@ -1163,7 +1184,7 @@ page {
 	font-weight: bold;
 	color: #333333;
 	overflow: hidden;
-	text-overflow:ellipsis;
+	text-overflow: ellipsis;
 	white-space: nowrap;
 }
 .video_t1_t {

+ 695 - 0
pages2/verify/input - 副本.vue

@@ -0,0 +1,695 @@
+<template>
+	<view style="padding: 30rpx;">
+		<view class="topBox">
+			<view>
+				<u-icon name="error-circle-fill" color="#FF3B30" size="28"></u-icon>
+				<text style="color: #FF3B30;margin-left: 10rpx;">学习前请提交完整审核资料</text>
+			</view>
+			<view style="color: #007AFF;">稍后再填</view>
+		</view>
+		<u-collapse v-if="remarkStatus" :item-style="itemStyle" event-type="close">
+			<u-collapse-item title="审核结果反馈">
+				<view style="padding-bottom: 30rpx;">
+					<text class="collapse-item">{{ remark }}</text>
+				</view>
+			</u-collapse-item>
+		</u-collapse>
+		<view class="submit_btn" @click="cahngeText">
+			改变值
+		</view>
+		<view class="bodyBox" style="margin-top: 30rpx;padding:0 20rpx;">
+			<u-form :model="form" ref="uForm">
+				<template v-for="(item, index) in listData">
+					<u-form-item
+						:key="index"
+						v-if="item.inputType == 1"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form[item.fieldKey]" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.inputType == 2"
+						:label="item.fieldName"
+						:label-width="auto"
+						:required="item.required"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<picker @change="bindPickerChange(item.fieldKey, $event)" :value="form[item.fieldKey]" :range="getarrays(item.fieldKey)">
+							<view class="picker">{{ returnName(item.fieldKey) }}</view>
+						</picker>
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.inputType == 5"
+						:label="item.fieldName"
+						:label-width="auto"
+						:required="item.required"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<picker mode="date" :value="form[item.fieldKey]" @change="bindDateChange(item.fieldKey, $event)">
+							<view class="picker">{{ getTimes(item.fieldKey) }}</view>
+						</picker>
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.inputType == 3 && item.fieldKey !== 'commitment_electr_signature'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						label-position="top"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<text v-if="item.fieldKey === 'recent_photos'" style="color: #999999;position: absolute;top: 20rpx;left: 130rpx;">竖向证件照 文件大小≤2M</text>
+						<text
+							v-if="item.fieldKey === 'idcard_face_photo' || item.fieldKey === 'idcard_national_photo'"
+							style="color: #999999;position: absolute;top: 20rpx;left: 180rpx;"
+						>
+							文件大小≤2M
+						</text>
+						<u-upload
+							:max-size="2097152"
+							@on-list-change="
+								item.fieldKey === 'recent_photos'
+									? changePhotoListHeader1($event)
+									: item.fieldKey === 'idcard_face_photo'
+									? changePhotoListHeader2($event)
+									: item.fieldKey === 'idcard_national_photo'
+									? changePhotoListHeader3($event)
+									: ''
+							"
+							:auto-upload="false"
+							custom-btn="true"
+							:action="action"
+							:file-list="
+								item.fieldKey === 'recent_photos'
+									? fileList1
+									: item.fieldKey === 'idcard_face_photo'
+									? fileList2
+									: item.fieldKey === 'idcard_national_photo'
+									? fileList3
+									: ''
+							"
+							width="120"
+							height="120"
+							size-type="['compressed']"
+							max-count="1"
+						>
+							<template v-slot:addBtn>
+								<image
+									:src="
+										item.fieldKey === 'recent_photos'
+											? '/static/info_1.png'
+											: item.fieldKey === 'idcard_face_photo'
+											? '/static/info_2.png'
+											: item.fieldKey === 'idcard_national_photo'
+											? '/static/info_3.png'
+											: ''
+									"
+									:style="
+										item.fieldKey === 'recent_photos'
+											? 'width: 120rpx; height: 169rpx;'
+											: item.fieldKey === 'idcard_face_photo'
+											? 'width: 120rpx; height: 82rpx;'
+											: item.fieldKey === 'idcard_national_photo'
+											? 'width: 120rpx; height: 82rpx;'
+											: ''
+									"
+								></image>
+							</template>
+						</u-upload>
+					</u-form-item>
+					<view :key="index" v-if="item.inputType == 3 && item.fieldKey === 'commitment_electr_signature'">
+						<u-form-item
+							v-if="item.inputType == 3 && item.fieldKey === 'commitment_electr_signature'"
+							label="承诺书"
+							:required="true"
+							:label-width="auto"
+							label-position="top"
+						>
+							<view style="line-height: 40rpx;text-indent:2em">
+								<text>
+									本人自愿做出如下承诺:本人己仔细阅读《广东省住房和城乡建设厅关于推进住房和城乡建设领域施工现场专业人员职业培训工作的通知》
+									全部内容并知晓和理解,本人的学历证书、身份证、工作年限、相片等所有资料完全真实、符合报名条件、资格审查要求和相关规定,本人在报名、审查、培训、测试等有关的事项中会严格道守相关规定和要求,如有虛假或与实际规定不符等情况造成的一切后果由本人承担。
+								</text>
+								<view style="line-height: 40rpx;text-indent:2em"><text>特此承诺!</text></view>
+							</view>
+						</u-form-item>
+						<u-form-item
+							v-if="item.inputType == 3 && item.fieldKey === 'commitment_electr_signature'"
+							label="签名板"
+							:required="true"
+							:label-width="auto"
+							label-position="top"
+							:prop="item.required ? item.fieldKey : ''"
+						>
+							<view class="dis_stys">
+								<text style="color: #999999;">请在下方签名区进行签名</text>
+								<text @click="retDraw" mode="">清空</text>
+							</view>
+							<view class="handCenter">
+								<canvas
+									class="handWriting"
+									disable-scroll="true"
+									@touchstart="uploadScaleStart"
+									@touchmove="uploadScaleMove"
+									@touchend="uploadScaleEnd"
+									@tap="mouseDown"
+									canvas-id="handWriting"
+								></canvas>
+							</view>
+						</u-form-item>
+					</view>
+				</template>
+			</u-form>
+		</view>
+		<view @click="submits" class="submit_btn">提交资料</view>
+	</view>
+</template>
+
+<script>
+import { mapGetters } from 'vuex';
+import Handwriting from '@/common/signature.js';
+export default {
+	data() {
+		return {
+			itemStyle: {
+				marginTop: '20px',
+				backgroundColor: '#fff',
+				borderRadius: '24rpx',
+				padding: '0rpx 20rpx'
+			},
+			form: {
+				name: '',
+				sex: '',
+				idcard: '',
+				telphone: '',
+				education: '',
+				school: '',
+				graduation_time: '',
+				work_unit: '',
+				unit_contact: '',
+				unit_tel: '',
+				apply_post: '',
+				major: '',
+				working_years: '',
+				recent_photos: '',
+				idcard_face_photo: '',
+				idcard_national_photo: '',
+				commitment_electr_signature: ''
+			},
+			lineColor: 'black',
+			slideValue: 50,
+			handwriting: '',
+			goodsId: null,
+			listData: [], //页面数据
+			fileList1: [], //个人近照
+			fileList2: [], //人像
+			fileList3: [], //国徽
+			openVerify: false, // 控制是否手动验证
+			remark: '', //反馈文本
+			remarkStatus: false, //是否存在审核结果反馈
+			// nextStatus: false, //是否有下一步
+			rules: {
+				name: [
+					{
+						required: true,
+						message: '请输入姓名',
+						trigger: ['change', 'blur']
+					}
+				],
+				sex: [
+					{
+						required: true,
+						message: '请选择性别',
+						trigger: 'change'
+					}
+				],
+				idcard: [
+					{
+						required: true,
+						message: '请输入身份证号',
+						trigger: ['change', 'blur']
+					},
+					{
+						validator: (rule, value, callback) => {
+							return this.$u.test.idCard(value);
+						},
+						message: '身份证号不正确',
+						trigger: ['change', 'blur']
+					}
+				],
+				telphone: [
+					{
+						required: true,
+						message: '请输入手机号码',
+						trigger: ['change', 'blur']
+					},
+					{
+						validator: (rule, value, callback) => {
+							return this.$u.test.mobile(value);
+						},
+						message: '手机号码不正确',
+						trigger: ['change', 'blur']
+					}
+				],
+				education: [
+					{
+						required: true,
+						message: '请选择学历',
+						trigger: 'change'
+					}
+				],
+				school: [
+					{
+						required: true,
+						message: '请输入毕业院校',
+						trigger: ['change', 'blur']
+					}
+				],
+				graduation_time: [
+					{
+						required: true,
+						message: '请选择毕业时间',
+						trigger: 'change'
+					}
+				],
+				work_unit: [
+					{
+						required: true,
+						message: '请输入工作单位',
+						trigger: ['change', 'blur']
+					}
+				],
+				unit_contact: [
+					{
+						required: true,
+						message: '请输入单位联系人',
+						trigger: ['change', 'blur']
+					}
+				],
+				unit_tel: [
+					{
+						required: true,
+						message: '请输入单位联系电话',
+						trigger: ['change', 'blur']
+					},
+					{
+						validator: (rule, value, callback) => {
+							return this.$u.test.mobile(value);
+						},
+						message: '单位联系电话不正确',
+						trigger: ['change', 'blur']
+					}
+				],
+				apply_post: [
+					{
+						required: true,
+						message: '请输入报名岗位',
+						trigger: ['change', 'blur']
+					}
+				],
+				major: [
+					{
+						required: true,
+						message: '请输入所学专业',
+						trigger: ['change', 'blur']
+					}
+				],
+				working_years: [
+					{
+						required: true,
+						message: '请选择工作年限',
+						trigger: 'change'
+					}
+				],
+				recent_photos: [
+					{
+						required: true,
+						message: '请上传个人近照',
+						trigger: ['change', 'blur']
+					}
+				],
+				idcard_face_photo: [
+					{
+						required: true,
+						message: '请上传身份证正面照',
+						trigger: ['change', 'blur']
+					}
+				],
+				idcard_national_photo: [
+					{
+						required: true,
+						message: '请上传身份证国徽照',
+						trigger: ['change', 'blur']
+					}
+				],
+				commitment_electr_signature: [
+					{
+						required: true,
+						message: '请签写承诺书电子签',
+						trigger: ['change', 'blur']
+					}
+				]
+			}
+		};
+	},
+	onLoad(option) {
+		this.goodsId = Number(option.id);
+		this.getInfo();
+	},
+	onReady(res) {
+		this.handwriting = new Handwriting({
+			lineColor: this.lineColor,
+			slideValue: this.slideValue, // 0, 25, 50, 75, 100
+			canvasName: 'handWriting'
+		});
+		this.$refs.uForm.setRules(this.rules);
+	},
+	computed: { ...mapGetters(['dictObj']) },
+	methods: {
+		cahngeText(){
+			this.$set(this.form,'name','唐')
+			console.log(this.form.name,123)
+		},
+		uploadDatas(data) {
+			var self = this;
+			var objs = {};
+			for (let k in data) {
+				objs[k] = {
+					fieldKey: k,
+					value: data[k],
+					fieldName: (function() {
+						for (let i = 0; i < self.listData.length; i++) {
+							if (self.listData[i].fieldKey == k) {
+								return self.listData[i].fieldName;
+							}
+						}
+					})(),
+					status: 0
+				};
+			}
+			var datas = {
+				goodsId: this.goodsId,
+				keyValue: JSON.stringify(objs)
+			};
+			this.$api.addbaseprofiletp(datas).then(res => {
+				if (res.data.code === 200) {
+					this.$method.showToast('提交成功');
+				}
+			});
+		},
+		//提交表单
+		async submitApi() {
+			var data = JSON.parse(JSON.stringify(this.form));
+			if (data['sex']) {
+				data.sex = this.dictObj['sys_user_sex'][Number(data.sex)];
+			}
+			if (data['education']) {
+				data.education = this.dictObj['edu_level'][Number(data.education)];
+			}
+			if (data['working_years']) {
+				data.working_years = this.dictObj['working_years'][Number(data.working_years)];
+			}
+			if (data['recent_photos']) {
+				data.recent_photos = await this.$method.uploadFile(data.recent_photos, 0);
+			}
+			if (data['idcard_face_photo']) {
+				data.idcard_face_photo = await this.$method.uploadFile(data.idcard_face_photo, 0);
+			}
+			if (data['idcard_national_photo']) {
+				data.idcard_national_photo = await this.$method.uploadFile(data.idcard_national_photo, 0);
+			}
+			if (data['commitment_electr_signature']) {
+				data.commitment_electr_signature = await this.$method.uploadFile(data.commitment_electr_signature, 0);
+			}
+			// if (this.nextStatus) {
+			// 	this.$store.commit('updataCopyData', data);
+			// 	this.$navTo.togo('/pages2/verify/input2', {
+			// 		id: this.goodsId
+			// 	});
+			// } else {
+			this.uploadDatas(data);
+			// }
+		},
+		//验证表单
+		resultForm(int) {
+			if (this.openVerify) {
+				this.$refs.uForm.validate(valid => {
+					if (valid) {
+						if (int === 1) {
+							this.submitApi();
+						}
+					} else {
+						console.log('验证失败');
+					}
+				});
+			}
+		},
+		async submits() {
+			await this.subCanvas();
+			this.openVerify = true;
+			this.resultForm(1);
+		},
+		async changePhotoListHeader1(lists, name) {
+			if (lists.length) {
+				this.fileList1 = lists;
+				this.form.recent_photos = await this.$method.imageInfos(lists[0].url);
+			} else {
+				this.fileList1 = [];
+				this.$set(this.form, 'recent_photos', '');
+			}
+			this.$nextTick(function() {
+				this.resultForm();
+			});
+		},
+		async changePhotoListHeader2(lists, name) {
+			if (lists.length) {
+				this.fileList2 = lists;
+				this.form.idcard_face_photo = await this.$method.imageInfos(lists[0].url);
+			} else {
+				this.fileList2 = [];
+				this.$set(this.form, 'idcard_face_photo', '');
+			}
+			this.$nextTick(function() {
+				this.resultForm();
+			});
+		},
+		async changePhotoListHeader3(lists, name) {
+			if (lists.length) {
+				this.fileList3 = lists;
+				this.form.idcard_national_photo = await this.$method.imageInfos(lists[0].url);
+			} else {
+				this.fileList3 = [];
+				this.$set(this.form, 'idcard_national_photo', '');
+			}
+			this.$nextTick(function() {
+				this.resultForm();
+			});
+		},
+		getTimes(key) {
+			if (this.form[key]) {
+				return this.form[key];
+			} else {
+				return '请选择时间';
+			}
+		},
+		getarrays(key) {
+			if (key === 'sex') {
+				return this.dictObj['sys_user_sex'];
+			}
+			if (key === 'education') {
+				return this.dictObj['edu_level'];
+			}
+			if (key === 'working_years') {
+				return this.dictObj['working_years'];
+			}
+		},
+		returnName(key) {
+			if (key === 'sex') {
+				if (this.form[key]) {
+					return this.dictObj['sys_user_sex'][Number(this.form[key])];
+				} else {
+					return '请选择性别';
+				}
+			}
+			if (key === 'education') {
+				if (this.form[key]) {
+					return this.dictObj['edu_level'][Number(this.form[key])];
+				} else {
+					return '请选择学历';
+				}
+			}
+			if (key === 'working_years') {
+				if (this.form[key]) {
+					return this.dictObj['working_years'][Number(this.form[key])];
+				} else {
+					return '请选择工作年限';
+				}
+			}
+		},
+		getInfo() {
+			var self = this;
+			this.$api.getbaseprofiletpId(this.goodsId).then(res => {
+				self.listData = JSON.parse(res.data.data.keyValue);
+				self.$api.getbaseprofiletpgetInfo({ goodsId: self.goodsId }).then(result => {
+					if (result.data.code === 200) {
+						if (result.data.data && result.data.data.status === 3) {
+							self.remark = result.data.data.text;
+							self.remarkStatus = true;
+							self.id = result.data.data.id;
+							var arrays = JSON.parse(result.data.data.keyValue);
+							for (let k in arrays) {
+									self.$set(self.form, k, arrays[k].value);
+							}
+						} else if (result.data.data && (result.data.data.status === 1 || result.data.data.status === 2)) {
+							uni.showModal({
+								showCancel: false,
+								content:
+									result.data.data.status === 1
+										? '该商品审核资料已通过,不可重复提交资料'
+										: result.data.data.status === 2
+										? '该商品审核资料处于待审核状态,不可重复提交资料'
+										: '请联系管理员',
+								success: function(k) {
+									if (k.confirm) {
+										uni.navigateBack();
+									}
+								}
+							});
+						}
+					}
+				});
+			});
+		},
+		bindPickerChange(key, e) {
+			this.$set(this.form, key, e.detail.value);
+			this.$nextTick(function() {
+				this.resultForm();
+			});
+		},
+		bindDateChange(key, e) {
+			this.form[key] = e.detail.value;
+		},
+		retDraw() {
+			this.handwriting.retDraw();
+			this.$set(this.form, 'commitment_electr_signature', '');
+			this.$nextTick(function() {
+				this.resultForm();
+			});
+		},
+		uploadScaleStart(event) {
+			this.handwriting.uploadScaleStart(event);
+		},
+		uploadScaleMove(event) {
+			this.handwriting.uploadScaleMove(event);
+		},
+		uploadScaleEnd(event) {
+			this.handwriting.uploadScaleEnd(event);
+		},
+		subCanvas() {
+			return new Promise((resolve, reject) => {
+				var self = this;
+				self.handwriting
+					.saveCanvas()
+					.then(res => {
+						if (this.handwriting.linePrack.length) {
+							this.$set(this.form, 'commitment_electr_signature', res);
+						}
+						resolve(res);
+					})
+					.catch(err => {
+						uni.showToast({
+							title: '签名上传失败',
+							icon: 'error'
+						});
+					});
+			});
+		}
+	}
+};
+</script>
+<style>
+page {
+	background: #eaeef1;
+}
+</style>
+<style scope>
+/deep/ .u-collapse-title {
+	color: red;
+	font-size: 24rpx;
+}
+.collapse-item {
+	color: #666;
+	font-size: 24rpx;
+	padding-bottom: 30rpx;
+}
+.dis_stys {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+.handCenter {
+	background: #f7f7f7;
+	border: 2rpx solid #eeeeee;
+	border-radius: 24rpx;
+}
+.headerSDels {
+	height: 58rpx;
+	padding: 0rpx 24rpx;
+	font-weight: bold;
+	display: flex;
+	align-items: center;
+	flex-direction: row-reverse;
+}
+.listBox {
+	margin: 24rpx 32rpx 0rpx;
+	box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
+	border-radius: 32rpx;
+	background-color: #fff;
+	overflow: hidden;
+}
+.imgBoxs {
+	width: 156rpx;
+	height: 203rpx;
+}
+.imgBoxs2 {
+	width: 171rpx;
+	height: 108rpx;
+}
+.submit_btn {
+	width: 526rpx;
+	height: 80rpx;
+	background: #007aff;
+	border-radius: 40rpx;
+	text-align: center;
+	line-height: 80rpx;
+	color: #ffffff;
+	margin: 30rpx auto;
+}
+.picker {
+	text-align: right;
+}
+input {
+	text-align: right;
+}
+.bodyBox {
+	background: #ffffff;
+	border-radius: 24rpx;
+	width: 100%;
+}
+.topBox {
+	height: 80rpx;
+	background: #ffffff;
+	border-radius: 24rpx;
+	width: 100%;
+	display: flex;
+	justify-content: space-between;
+	line-height: 80rpx;
+	padding: 0 20rpx;
+	font-size: 24rpx;
+}
+</style>

+ 281 - 48
pages2/verify/input.vue

@@ -5,21 +5,117 @@
 				<u-icon name="error-circle-fill" color="#FF3B30" size="28"></u-icon>
 				<text style="color: #FF3B30;margin-left: 10rpx;">学习前请提交完整审核资料</text>
 			</view>
-
-			<view style="color: #007AFF;">稍后再填</view>
+			<view style="color: #007AFF;" @click="backPage">稍后再填</view>
 		</view>
+		<u-collapse v-if="remarkStatus" :item-style="itemStyle" event-type="close">
+			<u-collapse-item title="审核结果反馈">
+				<view style="padding-bottom: 30rpx;">
+					<text class="collapse-item">{{ remark }}</text>
+				</view>
+			</u-collapse-item>
+		</u-collapse>
 		<view class="bodyBox" style="margin-top: 30rpx;padding:0 20rpx;">
 			<u-form :model="form" ref="uForm">
 				<template v-for="(item, index) in listData">
 					<u-form-item
 						:key="index"
-						v-if="item.inputType == 1"
+						v-if="item.fieldKey == 'name'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.name" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'idcard'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.idcard" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'telphone'"
 						:label="item.fieldName"
 						:required="item.required"
 						:label-width="auto"
 						:prop="item.required ? item.fieldKey : ''"
 					>
-						<u-input v-model="form[item.fieldKey]" :placeholder="`请输入${item.fieldName}`" />
+						<u-input v-model="form.telphone" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'school'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.school" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'work_unit'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.work_unit" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'unit_contact'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.unit_contact" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'unit_tel'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.unit_tel" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'apply_post'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.apply_post" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'major'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.major" :placeholder="`请输入${item.fieldName}`" />
+					</u-form-item>
+					<u-form-item
+						:key="index"
+						v-if="item.fieldKey == 'apply_post'"
+						:label="item.fieldName"
+						:required="item.required"
+						:label-width="auto"
+						:prop="item.required ? item.fieldKey : ''"
+					>
+						<u-input v-model="form.apply_post" :placeholder="`请输入${item.fieldName}`" />
 					</u-form-item>
 					<u-form-item
 						:key="index"
@@ -62,6 +158,7 @@
 							文件大小≤2M
 						</text>
 						<u-upload
+							:show-progress="false"
 							:max-size="2097152"
 							@on-list-change="
 								item.fieldKey === 'recent_photos'
@@ -143,6 +240,7 @@
 							</view>
 							<view class="handCenter">
 								<canvas
+									v-if="!form[item.fieldKey]"
 									class="handWriting"
 									disable-scroll="true"
 									@touchstart="uploadScaleStart"
@@ -151,6 +249,7 @@
 									@tap="mouseDown"
 									canvas-id="handWriting"
 								></canvas>
+								<image v-else style="width:100%;height:100%;" :src="$method.splitImgHost(form[item.fieldKey])" mode=""></image>
 							</view>
 						</u-form-item>
 					</view>
@@ -162,11 +261,18 @@
 </template>
 
 <script>
+import * as baseUrls from '@/common/request.js';
 import { mapGetters } from 'vuex';
 import Handwriting from '@/common/signature.js';
 export default {
 	data() {
 		return {
+			itemStyle: {
+				marginTop: '20px',
+				backgroundColor: '#fff',
+				borderRadius: '24rpx',
+				padding: '0rpx 20rpx'
+			},
 			form: {
 				name: '',
 				sex: '',
@@ -186,8 +292,6 @@ export default {
 				idcard_national_photo: '',
 				commitment_electr_signature: ''
 			},
-			array_sex: ['男', '女'],
-			pageInfo: {},
 			lineColor: 'black',
 			slideValue: 50,
 			handwriting: '',
@@ -197,7 +301,11 @@ export default {
 			fileList2: [], //人像
 			fileList3: [], //国徽
 			openVerify: false, // 控制是否手动验证
+			id: null, //获取修改ID内容
+			remark: '', //反馈文本
+			remarkStatus: false, //是否存在审核结果反馈
 			// nextStatus: false, //是否有下一步
+			copyData: [], //备份数据
 			rules: {
 				name: [
 					{
@@ -356,32 +464,88 @@ export default {
 	},
 	computed: { ...mapGetters(['dictObj']) },
 	methods: {
+		cahngeText() {
+			this.$set(this.form, 'name', '唐');
+			console.log(this.form.name, 123);
+		},
 		uploadDatas(data) {
-			var self= this
-			var objs = {};
-			for (let k in data) {
-				objs[k] = {
-					fieldKey: k,
-					value: data[k],
-					fieldName:function(){
-						for(let i = 0; i < self.listData.length;i++){
-							if(self.listData[i].fieldKey == k){
-								return self.listData[i].fieldName
+			var self = this;
+			if (self.remarkStatus) {
+				var arsty = {};
+				for (let k in data) {
+					for (let j in self.copyData) {
+						if (k === j) {
+							if (self.copyData[j].value === data[k]) {
+								arsty[k] = {
+									fieldKey: k,
+									value: data[k],
+									fieldName: (function() {
+										for (let i = 0; i < self.listData.length; i++) {
+											if (self.listData[i].fieldKey == k) {
+												return self.listData[i].fieldName;
+											}
+										}
+									})(),
+									status: 0
+								};
+							} else {
+								arsty[k] = {
+									fieldKey: k,
+									value: data[k],
+									fieldName: (function() {
+										for (let i = 0; i < self.listData.length; i++) {
+											if (self.listData[i].fieldKey == k) {
+												return self.listData[i].fieldName;
+											}
+										}
+									})(),
+									status: 1
+								};
 							}
 						}
-					}(),
-					status: 0
+					}
+				}
+				var datas = {
+					id: this.id,
+					goodsId: this.goodsId,
+					keyValue: JSON.stringify(arsty)
 				};
-			}
-			var datas = {
-				goodsId:this.goodsId,
-				keyValue:JSON.stringify(objs)
-			}
-			this.$api.addbaseprofiletp(datas).then(res => {
-				if(res.data.code === 200){
-					this.$method.showToast("提交成功")
+				this.$api.editbaseprofiletp(datas).then(res => {
+					if (res.data.code === 200) {
+						this.$method.showToast('提交成功');
+						uni.navigateBack();
+					}
+				});
+			} else {
+				var objs = {};
+				for (let k in data) {
+					objs[k] = {
+						fieldKey: k,
+						value: data[k],
+						fieldName: (function() {
+							for (let i = 0; i < self.listData.length; i++) {
+								if (self.listData[i].fieldKey == k) {
+									return self.listData[i].fieldName;
+								}
+							}
+						})(),
+						status: 0
+					};
 				}
-			})
+				var datas = {
+					goodsId: this.goodsId,
+					keyValue: JSON.stringify(objs)
+				};
+				this.$api.addbaseprofiletp(datas).then(res => {
+					if (res.data.code === 200) {
+						this.$method.showToast('提交成功');
+						uni.navigateBack();
+					}
+				});
+			}
+		},
+		backPage() {
+			uni.navigateBack();
 		},
 		//提交表单
 		async submitApi() {
@@ -407,15 +571,7 @@ export default {
 			if (data['commitment_electr_signature']) {
 				data.commitment_electr_signature = await this.$method.uploadFile(data.commitment_electr_signature, 0);
 			}
-			// if (this.nextStatus) {
-			// 	this.$store.commit('updataCopyData', data);
-			// 	this.$navTo.togo('/pages2/verify/input2', {
-			// 		id: this.goodsId
-			// 	});
-			// } else {
-				this.uploadDatas(data)
-			console.log(data);
-			// }
+			this.uploadDatas(data);
 		},
 		//验证表单
 		resultForm(int) {
@@ -439,7 +595,9 @@ export default {
 		async changePhotoListHeader1(lists, name) {
 			if (lists.length) {
 				this.fileList1 = lists;
-				this.form.recent_photos = await this.$method.imageInfos(lists[0].url);
+				if (lists[0].url.indexOf('//tmp/') !== -1) {
+					this.form.recent_photos = await this.$method.imageInfos(lists[0].url);
+				}
 			} else {
 				this.fileList1 = [];
 				this.$set(this.form, 'recent_photos', '');
@@ -451,7 +609,9 @@ export default {
 		async changePhotoListHeader2(lists, name) {
 			if (lists.length) {
 				this.fileList2 = lists;
-				this.form.idcard_face_photo = await this.$method.imageInfos(lists[0].url);
+				if (lists[0].url.indexOf('//tmp/') !== -1) {
+					this.form.idcard_face_photo = await this.$method.imageInfos(lists[0].url);
+				}
 			} else {
 				this.fileList2 = [];
 				this.$set(this.form, 'idcard_face_photo', '');
@@ -463,7 +623,9 @@ export default {
 		async changePhotoListHeader3(lists, name) {
 			if (lists.length) {
 				this.fileList3 = lists;
-				this.form.idcard_national_photo = await this.$method.imageInfos(lists[0].url);
+				if (lists[0].url.indexOf('//tmp/') !== -1) {
+					this.form.idcard_national_photo = await this.$method.imageInfos(lists[0].url);
+				}
 			} else {
 				this.fileList3 = [];
 				this.$set(this.form, 'idcard_national_photo', '');
@@ -514,18 +676,70 @@ export default {
 			}
 		},
 		getInfo() {
+			var self = this;
 			this.$api.getbaseprofiletpId(this.goodsId).then(res => {
-				var ast = JSON.parse(res.data.data.keyValue);
-				// const key2 = JSON.parse(res.data.data.keyValue2);
-				// if (key2.length) {
-				// 	this.nextStatus = true;
-				// }
-				ast.forEach(item => {
-					if (item.fieldKey === 'school' || item.fieldKey === 'major') {
-						item.inputType = 1;
+				self.listData = JSON.parse(res.data.data.keyValue);
+				self.$api.getbaseprofiletpgetInfo({ goodsId: self.goodsId }).then(result => {
+					if (result.data.code === 200) {
+						if (result.data.data && result.data.data.status === 3) {
+							self.remark = result.data.data.text;
+							self.remarkStatus = true;
+							self.id = result.data.data.id;
+							var arrays = JSON.parse(result.data.data.keyValue);
+							self.copyData = JSON.parse(JSON.stringify(arrays));
+							for (let k in arrays) {
+								if (k === 'sex') {
+									if (arrays[k].value) {
+										const sexIndex = self.dictObj['sys_user_sex'].indexOf(arrays[k].value) + '';
+										self.$set(self.form, k, sexIndex);
+									}
+								} else if (k === 'education') {
+									if (arrays[k].value) {
+										const sexIndex = self.dictObj['edu_level'].indexOf(arrays[k].value) + '';
+										self.$set(self.form, k, sexIndex);
+									}
+								} else if (k === 'working_years') {
+									if (arrays[k].value) {
+										const sexIndex = self.dictObj['working_years'].indexOf(arrays[k].value) + '';
+										self.$set(self.form, k, sexIndex);
+									}
+								} else if (k === 'recent_photos') {
+									self.$set(self.form, k, arrays[k].value);
+									if (arrays[k].value) {
+										self.fileList1 = [{ url: baseUrls.BASE_IMG_URL + arrays[k].value }];
+									}
+								} else if (k === 'idcard_face_photo') {
+									self.$set(self.form, k, arrays[k].value);
+									if (arrays[k].value) {
+										self.fileList2 = [{ url: baseUrls.BASE_IMG_URL + arrays[k].value }];
+									}
+								} else if (k === 'idcard_national_photo') {
+									self.$set(self.form, k, arrays[k].value);
+									if (arrays[k].value) {
+										self.fileList3 = [{ url: baseUrls.BASE_IMG_URL + arrays[k].value }];
+									}
+								} else {
+									self.$set(self.form, k, arrays[k].value);
+								}
+							}
+						} else if (result.data.data && (result.data.data.status === 1 || result.data.data.status === 2)) {
+							uni.showModal({
+								showCancel: false,
+								content:
+									result.data.data.status === 1
+										? '该商品审核资料已通过,不可重复提交资料'
+										: result.data.data.status === 2
+										? '该商品审核资料处于待审核状态,不可重复提交资料'
+										: '请联系管理员',
+								success: function(k) {
+									if (k.confirm) {
+										uni.navigateBack();
+									}
+								}
+							});
+						}
 					}
 				});
-				this.listData = ast;
 			});
 		},
 		bindPickerChange(key, e) {
@@ -556,6 +770,10 @@ export default {
 		subCanvas() {
 			return new Promise((resolve, reject) => {
 				var self = this;
+				if (self.form.commitment_electr_signature) {
+					resolve();
+					return;
+				}
 				self.handwriting
 					.saveCanvas()
 					.then(res => {
@@ -581,6 +799,19 @@ page {
 }
 </style>
 <style scope>
+.handWriting {
+	width: 100%;
+	height: 100%;
+}
+/deep/ .u-collapse-title {
+	color: red;
+	font-size: 24rpx;
+}
+.collapse-item {
+	color: #666;
+	font-size: 24rpx;
+	padding-bottom: 30rpx;
+}
 .dis_stys {
 	display: flex;
 	align-items: center;
@@ -590,6 +821,8 @@ page {
 	background: #f7f7f7;
 	border: 2rpx solid #eeeeee;
 	border-radius: 24rpx;
+	width: 100%;
+	height: 300rpx;
 }
 .headerSDels {
 	height: 58rpx;

+ 104 - 23
pages2/verify/input2.vue

@@ -5,9 +5,15 @@
 				<u-icon name="error-circle-fill" color="#FF3B30" size="28"></u-icon>
 				<text style="color: #FF3B30;margin-left: 10rpx;">学习前请提交完整审核资料</text>
 			</view>
-
-			<view style="color: #007AFF;">稍后再填</view>
+			<view style="color: #007AFF;" @click="backPage">稍后再填</view>
 		</view>
+		<u-collapse v-if="remarkStatus" :item-style="itemStyle" event-type="close">
+			<u-collapse-item title="审核结果反馈">
+				<view style="padding-bottom: 30rpx;">
+				<text class="collapse-item">{{ remark }}</text>
+				</view>
+			</u-collapse-item>
+		</u-collapse>
 		<view class="bodyBox" style="margin-top: 30rpx;padding:0 20rpx;">
 			<u-form :model="form" ref="uForm">
 				<template v-for="(item, index) in listData">
@@ -43,16 +49,24 @@
 export default {
 	data() {
 		return {
+			itemStyle: {
+				marginTop: '20px',
+				backgroundColor: '#fff',
+				borderRadius: '24rpx',
+				padding: '0rpx 20rpx'
+			},
 			form: {
 				commitment_seal: ''
 			},
 			goodsId: null,
 			fileList1: [],
+			id:null,//id有值的话就是修改页面
 			listData: {}, //页面数据
 			openVerify: false, // 控制是否手动验证
 			nextStatus: false, //是否有下一步
-			copyData: null,
 			titleName: '文件名称居中对齐过长换行', //word名称
+			remark: '', //反馈文本
+			remarkStatus: false, //是否存在审核结果反馈
 			rules: {
 				commitment_seal: [
 					{
@@ -73,21 +87,26 @@ export default {
 		this.$refs.uForm.setRules(this.rules);
 	},
 	methods: {
+		backPage(){
+			uni.navigateBack()
+		},
 		seePhotos(url) {
 			uni.previewImage({
 				urls: [url]
 			});
 		},
 		downDocx(url) {
-			uni.downloadFile({
-				url: this.$method.splitImgHost(url),
-				success: res => {
-					if (res.statusCode === 200) {
-						console.log(this.$method.splitImgHost(url));
-						this.$method.showToast('下载成功');
+			this.$api.addWordbaseprofileStamp({goodsId:this.goodsId}).then(res => {
+				uni.downloadFile({
+					url: this.$method.splitImgHost(res.data.msg),
+					success: result => {
+						if (result.statusCode === 200) {
+							console.log(this.$method.splitImgHost(res.data.msg));
+							this.$method.showToast('下载成功');
+						}
 					}
-				}
-			});
+				});
+			})
 		},
 		clearWord() {
 			this.$set(this.form, 'commitment_seal', '');
@@ -122,14 +141,47 @@ export default {
 		async submitApi() {
 			var data = JSON.parse(JSON.stringify(this.form));
 			if (data['commitment_seal']) {
-				console.log(123);
 				data.commitment_seal = await this.$method.uploadFile(data.commitment_seal, 0);
-			} else {
-				console.log(456);
 			}
-			var concatData = {};
-			Object.assign(concatData, this.copyData, data);
-			console.log(concatData);
+			this.optionChanges(data);
+		},
+		optionChanges(data) {
+			var self = this;
+			var objs = {};
+			for (let k in data) {
+				objs[k] = {
+					fieldKey: k,
+					value: data[k],
+					fieldName: (function() {
+						for (let i = 0; i < self.listData.length; i++) {
+							if (self.listData[i].fieldKey == k) {
+								return self.listData[i].fieldName;
+							}
+						}
+					})(),
+					status: self.remarkStatus?1:0
+				};
+			}
+			var datas = {
+				goodsId: self.goodsId,
+				keyValue: JSON.stringify(objs)
+			};
+			if(self.remarkStatus){
+				data.id = self.id
+				self.$api.editbaseprofileStamp(datas).then(res => {
+					if (res.data.code === 200) {
+						self.$method.showToast('提交成功');
+						uni.navigateBack()
+					}
+				});
+			}else{
+				self.$api.addbaseprofileStamp(datas).then(res => {
+					if (res.data.code === 200) {
+						self.$method.showToast('提交成功');
+						uni.navigateBack()
+					}
+				});
+			}
 		},
 		//验证表单
 		resultForm(int) {
@@ -169,14 +221,34 @@ export default {
 		},
 
 		getInfo() {
-			// this.copyData = this.$store.getters.getCopyData
-			this.copyData = {
-				name: '唐立安',
-				sex: '男'
-			};
+			var self = this;
 			this.$api.getbaseprofiletpId(this.goodsId).then(res => {
 				var ast = JSON.parse(res.data.data.keyValue2);
-				this.listData = ast;
+				self.listData = ast;
+				self.$api.getbaseprofileStampgetInfo({goodsId:self.goodsId}).then(result => {
+					if (result.data.code === 200) {
+						if (result.data.data && result.data.data.status === 3) {
+							self.remark = result.data.data.text;
+							self.remarkStatus = true;
+							self.id = result.data.data.id
+						} else if (result.data.data && (result.data.data.status === 1 || result.data.data.status === 2)) {
+							uni.showModal({
+								showCancel: false,
+								content:
+									result.data.data.status === 1
+										? '该商品审核资料已通过,不可重复提交资料'
+										: result.data.data.status === 2
+										? '该商品审核资料处于待审核状态,不可重复提交资料'
+										: '请联系管理员',
+								success: function(k) {
+									if (k.confirm) {
+										uni.navigateBack();
+									}
+								}
+							});
+						}
+					}
+				});
 			});
 		}
 	}
@@ -188,6 +260,15 @@ page {
 }
 </style>
 <style scope>
+/deep/ .u-collapse-title {
+	color: red;
+	font-size: 24rpx;
+}
+.collapse-item{
+	color: #666;
+	font-size: 24rpx;
+	padding-bottom: 30rpx;
+}
 .quzw {
 	width: 638rpx;
 	height: 638rpx;

+ 83 - 94
pages2/wd/course.vue

@@ -1,120 +1,109 @@
 <template>
 	<view style="padding: 30rpx;">
-		<view @click="jump(item)"  v-for="(item, index) in courseList" :key="index" style="margin-bottom: 30rpx;">
+		<view @click="jump(item)" v-for="(item, index) in courseList" :key="index" style="margin-bottom: 30rpx;">
 			<view class="class_item">
 				<image :src="$method.splitImgHost(item.coverUrl, true)" style="height: 316rpx;width: 100%;border-radius: 24rpx;"></image>
-				<view style="color: #333333;font-weight: bold;font-size: 32rpx;">
-					{{item.courseName}}
-				</view>
+				<view style="color: #333333;font-weight: bold;font-size: 32rpx;">{{ item.courseName }}</view>
 			</view>
 			<view class="bottomBox">
 				<view class=".content_box">
 					<image src="/static/icon/wk_icon3.png" class="wk_icon"></image>
-					学习进度:{{item.stuAllNum}}/{{item.secAllNum}}
+					学习进度:{{ item.stuAllNum }}/{{ item.secAllNum }}
 				</view>
 				<view class="box_progress">
-					<view style="width: 60%;">
-						<u-line-progress active-color="#ff9900" :percent="(item.stuAllNum / item.secAllNum) * 100"></u-line-progress>
-					</view>
-					<view>
-						<u-button type="warning" size="mini" @click.stop="studyIn(item)">进入学习</u-button>
-					</view>
+					<view style="width: 60%;"><u-line-progress active-color="#ff9900" :percent="(item.stuAllNum / item.secAllNum) * 100"></u-line-progress></view>
+					<view><u-button type="warning" size="mini" @click.stop="studyIn(item)">进入学习</u-button></view>
 				</view>
-				
 			</view>
-			
 		</view>
 	</view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				goodsId:0,
-				courseList:[]
-				
-			}
-		},
-		onLoad(option) {
-			this.goodsId = option.id
-			uni.setStorageSync('courseGoodsId', this.goodsId);
-			this.courseCourseList()
+export default {
+	data() {
+		return {
+			goodsId: 0,
+			courseList: []
+		};
+	},
+	onLoad(option) {
+		this.goodsId = Number(option.id);
+		// uni.setStorageSync('courseGoodsId', this.goodsId);
+		this.courseCourseList();
+	},
+	onShow() {},
+	methods: {
+		jump(item) {
+			this.$navTo.togo('/pages2/class/detail', {
+				id: item.courseId,
+				goodsId: this.goodsId
+			});
 		},
-		onShow(){
-			
+		studyIn(item) {
+			this.$navTo.togo('/pages2/class/detail', {
+				id: item.courseId,
+				goodsId: this.goodsId
+			});
+			// this.$navTo.togo('/pages2/verify/input');
 		},
-		methods: {
-			jump(item){
-				this.$navTo.togo('/pages2/class/detail', {
-					id: item.courseId
-				});
-			},
-			courseCourseList() {
-				let self = this
-				this.$api.courseCourseList({goodsId:this.goodsId}).then(res => {
-					if(res.data.code==200){
-						self.courseList = res.data.rows
-					}
-				});
-			},
-			studyIn(item){
-				this.$navTo.togo('/pages2/class/detail', {
-					id: item.courseId
-				});
-				// this.$navTo.togo('/pages2/verify/input');
-			},
-			appointment(){
-				this.$navTo.togo('/pages2/appointment/index');
-			}
+		courseCourseList() {
+			let self = this;
+			this.$api.courseCourseList({ goodsId: this.goodsId }).then(res => {
+				if (res.data.code == 200) {
+					self.courseList = res.data.rows;
+				}
+			});
 		},
-		
+		appointment() {
+			this.$navTo.togo('/pages2/appointment/index');
+		}
 	}
+};
 </script>
-<style >
-	page {
-			background: #EAEEF1;
-		}
+<style>
+page {
+	background: #eaeef1;
+}
 </style>
 <style scope>
-	
-	.box_progress{
-		display: flex;
-		justify-content:space-between;
-		align-items: center;
-		margin-top: 20rpx;
-	}
-	.bottomBox{
-		background: #FFFFFF;
-		width: 94%;
-		border-bottom-left-radius: 24rpx;
-		border-bottom-right-radius: 24rpx;
-		margin: 0 auto;
-		padding: 20rpx;
-	}
-	.content_box{
-		display: flex;
-		align-items: center;
-		color: #999999;
-		margin-top: 8rpx;
-	}
-	.content{
-		color: #000000;
-		margin: 0 8rpx;
-	}
-	.wk_icon{
-		width: 24rpx;
-		height: 24rpx;
-		margin-right: 8rpx;
-	}
+.box_progress {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	margin-top: 20rpx;
+}
+.bottomBox {
+	background: #ffffff;
+	width: 94%;
+	border-bottom-left-radius: 24rpx;
+	border-bottom-right-radius: 24rpx;
+	margin: 0 auto;
+	padding: 20rpx;
+}
+.content_box {
+	display: flex;
+	align-items: center;
+	color: #999999;
+	margin-top: 8rpx;
+}
+.content {
+	color: #000000;
+	margin: 0 8rpx;
+}
+.wk_icon {
+	width: 24rpx;
+	height: 24rpx;
+	margin-right: 8rpx;
+}
 
-	.class_item{
-		width: 100%;
-		background: #FFFFFF;
-		box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
-		border-radius: 24rpx;
-		padding: 20rpx;
-		z-index: 999;
-		position: relative;
-	}
+.class_item {
+	width: 100%;
+	background: #ffffff;
+	box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
+	border-radius: 24rpx;
+	padding: 20rpx;
+	z-index: 999;
+	position: relative;
+}
 </style>