lhl před 16 hodinami
rodič
revize
e3e885b9e8

+ 28 - 0
api/model.js

@@ -138,3 +138,31 @@ export function BookmarkList(data) {
 	});
 	});
 }
 }
 
 
+//获取合同列表
+export function getHtList(data) {
+	return request({
+		url: '/api/Education/getContractTemplateList',
+		method: 'post',
+		data
+	});
+}
+
+
+// 获取合同模板详情
+export function getHdDetail(data) {
+	return request({
+		url: '/api/Education/getContractTemplatInfo',
+		method: 'post',
+		data
+	});
+}
+
+
+//获取预约详情
+export function getYyDetail(data) {
+	return request({
+		url: '/api/Education/getContractRecordInfo',
+		method: 'post',
+		data
+	});
+}

+ 8 - 0
api/signing.js

@@ -70,4 +70,12 @@ export function getClockList(data) {
 		method: 'get',
 		method: 'get',
 		data
 		data
 	});
 	});
+}
+
+export function getPlList(data) {
+	return request({
+		url: '/api/Education/getCommentList',
+		method: 'get',
+		data
+	});
 }
 }

+ 12 - 0
pages.json

@@ -211,6 +211,12 @@
 					"navigationBarTitleText": "签约"
 					"navigationBarTitleText": "签约"
 				}
 				}
 			},
 			},
+			{
+				"path": "signing/ht",
+				"style": {
+					"navigationBarTitleText": "合同详情"
+				}
+			},
 			{
 			{
 				"path": "signing/dk",
 				"path": "signing/dk",
 				"style": {
 				"style": {
@@ -223,6 +229,12 @@
 					"navigationBarTitleText": "打卡历史"
 					"navigationBarTitleText": "打卡历史"
 				}
 				}
 			},
 			},
+			{
+				"path": "signing/plhis",
+				"style": {
+					"navigationBarTitleText": "评价"
+				}
+			},
 			{
 			{
 				"path": "signing/mySig",
 				"path": "signing/mySig",
 				"style": {
 				"style": {

+ 1 - 1
pages/index/index.vue

@@ -533,7 +533,7 @@
 		border-top: #f2f2f2 1px solid;
 		border-top: #f2f2f2 1px solid;
 		flex-direction: column;
 		flex-direction: column;
 		width: 330rpx;
 		width: 330rpx;
-		height: 520rpx;
+		height: 630rpx;
 
 
 		&:first-of-type {
 		&:first-of-type {
 			border-top: none;
 			border-top: none;

+ 7 - 1
pages/modelData/modeltemplate/model_1.vue

@@ -16,7 +16,6 @@
 				浏览:{{shareNumber}}
 				浏览:{{shareNumber}}
 			</view>
 			</view>
 			<image v-if="baseURL" :src="baseURL + '/resource/model/model1/hua7.png'"  class="top-bg"></image>
 			<image v-if="baseURL" :src="baseURL + '/resource/model/model1/hua7.png'"  class="top-bg"></image>
-			
 		</view>
 		</view>
 		<view class="m-body gr">
 		<view class="m-body gr">
 			<!-- 个人信息 -->
 			<!-- 个人信息 -->
@@ -160,6 +159,10 @@
 				type: Number,
 				type: Number,
 				default:0
 				default:0
 			},
 			},
+			dkNumber: {
+				type: Number,
+				default:0
+			},
 			// 是否显示默认数据
 			// 是否显示默认数据
 			isDefault: {
 			isDefault: {
 				type: Boolean,
 				type: Boolean,
@@ -346,6 +349,9 @@
 				line-height: 48rpx;
 				line-height: 48rpx;
 				font-size: 24rpx;
 				font-size: 24rpx;
 			}
 			}
+			.top-btns {
+				top: 170rpx;
+			}
 
 
 			.visit {
 			.visit {
 				border-radius: 24rpx 0 0 24rpx;
 				border-radius: 24rpx 0 0 24rpx;

+ 15 - 2
pages/user/model/model.vue

@@ -81,6 +81,14 @@
 			<view class="ScNum">
 			<view class="ScNum">
 				{{userTemplate.bookmark_count||0}}
 				{{userTemplate.bookmark_count||0}}
 			</view>
 			</view>
+			<view class="Sc" @click="goPl">
+				<uni-icons class="icon" color="#FFF" size='80rpx'
+					type="chat-filled"></uni-icons>
+			</view>
+			<view class="ScNum">
+				{{userTemplate.comment_num||0}}
+			</view>
+			<!--  -->
 		</view>
 		</view>
 		<image src="/static/image/qy.png" mode="widthFix" class="qianyue" @click="goQy" v-if="userInfo.uid && userInfo.uid != uid"></image>
 		<image src="/static/image/qy.png" mode="widthFix" class="qianyue" @click="goQy" v-if="userInfo.uid && userInfo.uid != uid"></image>
 	</view>
 	</view>
@@ -307,6 +315,12 @@
 					console.log(err)
 					console.log(err)
 				})
 				})
 			},
 			},
+			goPl() {
+				console.log(this.userTemplate,'this.userTemplate');
+				uni.navigateTo({
+					url:'/pages/user/signing/plhis?id=' + this.uid
+				})
+			},
 			payPhone() {
 			payPhone() {
 				uni.makePhoneCall({
 				uni.makePhoneCall({
 					phoneNumber: this.userTemplate.mobile
 					phoneNumber: this.userTemplate.mobile
@@ -637,7 +651,6 @@
 		right: 20rpx;
 		right: 20rpx;
 		// top:300rpx;
 		// top:300rpx;
 		bottom: 0;
 		bottom: 0;
-		top: 0;
-		margin: auto;
+		top:500rpx;
 	}
 	}
 </style>
 </style>

+ 7 - 1
pages/user/signing/dk.vue

@@ -10,6 +10,10 @@
 		<view class="info">
 		<view class="info">
 			<text class="info-tit">打卡地点</text> <text class="info-val">{{address}}</text>
 			<text class="info-tit">打卡地点</text> <text class="info-val">{{address}}</text>
 		</view>
 		</view>
+		<view class="info flex" style="align-items: flex-start;	padding-right: 20rpx;">
+			<text class="info-tit">工作内容</text> 
+			<textarea placeholder="请输入工作内容" v-model="content" name="" id="" cols="30" rows="10" style="border-radius: 20rpx;border: 1px solid #999;padding: 20rpx;"></textarea>
+		</view>
 		<view class="info" v-for="(item, index) in list">
 		<view class="info" v-for="(item, index) in list">
 			<text class="info-tit">打卡记录({{index + 1}})</text> <text class="info-val">{{item.create_time}}</text>
 			<text class="info-tit">打卡记录({{index + 1}})</text> <text class="info-val">{{item.create_time}}</text>
 		</view>
 		</view>
@@ -37,6 +41,7 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
+				content: '',
 				loading: false,
 				loading: false,
 				id: 0,
 				id: 0,
 				today: date,
 				today: date,
@@ -112,7 +117,8 @@
 				goDk({
 				goDk({
 					contract_id: this.id,
 					contract_id: this.id,
 					latitude: this.latitudes,
 					latitude: this.latitudes,
-					longitude: this.longitudes
+					longitude: this.longitudes,
+					content: this.content
 				}).then(res => {
 				}).then(res => {
 					this.getDkHis()
 					this.getDkHis()
 					uni.showToast({
 					uni.showToast({

+ 3 - 0
pages/user/signing/dkhis.vue

@@ -10,6 +10,9 @@
 			<view class="his-info">
 			<view class="his-info">
 				打卡时间:{{item.create_time.split(' ')[1]}}
 				打卡时间:{{item.create_time.split(' ')[1]}}
 			</view>
 			</view>
+			<view class="his-info" v-if="item.content">
+				工作记录:{{item.content}}
+			</view>
 		</view>
 		</view>
 		<empty v-if="list.length == 0 && loaded"></empty>
 		<empty v-if="list.length == 0 && loaded"></empty>
 		<uni-load-more v-else :status="loading"></uni-load-more>
 		<uni-load-more v-else :status="loading"></uni-load-more>

+ 414 - 0
pages/user/signing/ht.vue

@@ -0,0 +1,414 @@
+<template>
+	<view class="content">
+		<image v-if="!showcanvas" :src="img" mode="widthFix" style="width: 750rpx;"></image>
+		<view @click="savePic" class="btn">保存</view>
+		<view class="" style="height: 100rpx;">
+			
+		</view>
+		<canvas canvas-id="firstCanvas" id="firstCanvas" class="htDetail"
+			:style="{height: (cHeight + 'px'),width:(cWidth + 'px')}"></canvas>
+	</view>
+</template>
+
+<script>
+	import {
+		getYyDetail
+	} from '@/api/model.js'
+	export default {
+		data() {
+			return {
+				content: {},
+				showcanvas: true,
+				cWidth: '',
+				cHeight: '',
+				imgs: [],
+				img: '',
+				htDetail: {},
+				id: 0,
+				hid: 0,
+				contents: {}
+			}
+		},
+		onLoad(opt) {
+			
+			if(opt.id) {
+				this.id = opt.id
+				this.getYyDetail()
+				this.htDetail = uni.getStorageSync('htDetail') || {}
+			}
+			if(opt.hid) {
+				this.hid = opt.hid
+				this.setDetail()
+			}
+		},
+		onShow() {
+			// this.SystemInfo = await this.getSystemInfo();
+		},
+		onReachBottom() {
+
+		},
+		onReady() {
+
+		},
+		methods: {
+			savePic() {
+				uni.getSetting({
+					//获取用户的当前设置
+					success: res => {
+						if (res.authSetting['scope.writePhotosAlbum']) {
+							//验证用户是否授权可以访问相册
+							uni.saveImageToPhotosAlbum({
+								filePath: this.img,
+								success: function(res2) {
+									uni.hideLoading();
+									uni.showToast({
+										title: '保存成功,请从相册选择再分享',
+										icon: 'none',
+										duration: 2000
+									});
+								},
+								fail: function(err) {
+									uni.hideLoading();
+									uni.showToast({
+										title: '保存失败',
+										icon: 'none',
+										duration: 2000
+									});
+								}
+							});
+						} else {
+							uni.authorize({
+								//如果没有授权,向用户发起请求
+								scope: 'scope.writePhotosAlbum',
+								success: () => {
+									this.saveImageToPhotosAlbum();
+								},
+								fail: () => {
+									uni.showToast({
+										title: '请打开保存相册权限,再点击保存相册分享',
+										icon: 'none',
+										duration: 2000
+									});
+									setTimeout(() => {
+										uni.openSetting({
+											//调起客户端小程序设置界面,让用户开启访问相册
+											success: res2 => {
+												// console.log(res2.authSetting)
+											}
+										});
+
+									}, 2000);
+								}
+							});
+						}
+					}
+				});
+			},
+			getSystemInfo() {
+				return new Promise((req, rej) => {
+					console.log('zheli');
+					// wx.getWindowInfo({
+					// 	success: function(res) {
+					// 		console.log(res,'wind');
+					// 		req(res)
+					// 	}
+					// });
+					let win = wx.getWindowInfo()
+					console.log(win);
+					req(win)
+				})
+			},
+			getImageInfo(image) {
+				return new Promise((req, rej) => {
+					uni.getImageInfo({
+						src: image,
+						success: function(res) {
+							req(res)
+						},
+					});
+				})
+			},
+			async downloadAndProcessFile(url) {
+				return new Promise((resolve, reject) => {
+					uni.downloadFile({
+						url: url,
+						success: (res) => {
+							if (res.statusCode === 200) {
+								console.log(res.tempFilePath, 'res.tempFilePath');
+								resolve(res.tempFilePath);
+							} else {
+								reject(new Error('File download failed'));
+							}
+						},
+						fail: (error) => {
+							console.log(error, 'tupianerro',url);
+							reject(error);
+						}
+					});
+				});
+			},
+			// 绘制
+			async showCanvas() {
+				let that = this
+				try {
+					let SystemInfo = await this.getSystemInfo();
+					var context = uni.createCanvasContext('firstCanvas')
+					let cheight = 0;
+					let heightList = [0]
+					const pjWidht = that.imgs.reduce((sum, item) => sum + item.width, 0) / that.imgs.length;
+					for (let i = 0; i < that.imgs.length;) {
+						console.log(that.imgs[i].width, 'that.imgs[i].width');
+						let mheight = that.imgs[i].height * (that.imgs[i].width / pjWidht);
+						console.log(that.imgs[i].height, 'that.imgs[i].height');
+						that.imgs[i].height = mheight
+						cheight += mheight;
+						heightList.push(cheight)
+						i++
+					}
+					console.log(heightList, 'heightList');
+					//设置画布宽高
+					that.cHeight = cheight
+					that.cWidth = pjWidht
+					context.fillRect(0, 0, that.cWidth, that.cHeigh);
+					context.setFillStyle('#000000');
+					let height = 0
+					// 绘制底图
+					for (let i = 0; i < that.imgs.length;) {
+						console.log('that.imgs[i].src',that.imgs[i].src);
+						const avatarImagePath = await that.downloadAndProcessFile(that.imgs[i].src);
+						console.log(avatarImagePath, 'avatarImagePath');
+						context.drawImage(avatarImagePath, 0, height, pjWidht, that.imgs[i].height)
+						height += that.imgs[i].height
+						i++
+					}
+					// 绘制甲方数据
+					console.log(that.htDetail.content.jsonAr,'that.htDetail.content.jsonAr');
+					await that.setFont(that.htDetail.content.jsonAr, context)
+
+					// 计算图像变形率
+					let bl = that.cWidth / 750
+					console.log(bl);
+					// 绘制甲方数据
+
+
+					// 绘制乙方数据
+					console.log(that.htDetail.content.jsonBr,'that.htDetail.content.jsonBr');
+					await that.setFont(that.htDetail.content.jsonBr, context)
+
+					context.draw(false, e => {
+						console.log('wancheng');
+						setTimeout(() => {
+							console.log(that.cWidth, that.cHeight);
+							uni.canvasToTempFilePath({
+								x: 0,
+								y: 0,
+								width: that.cWidth,
+								height: that.cHeight,
+								destWidth: that.cWidth,
+								destHeight: that.cHeight,
+								canvasId: 'firstCanvas',
+								success: function(res) {
+									console.log(333, res);
+									// 在H5平台下,tempFilePath 为 base64
+									that.showcanvas = false;
+									that.img = res.tempFilePath;
+								}
+							});
+						}, 500)
+
+					});
+				} catch (error) {
+					console.log(error, 'error');
+					//TODO handle the exception
+				}
+
+
+			},
+			async setFont(array, context) {
+				let that = this
+				// 计算图像变形率
+				let bl = that.cWidth / 750
+				for (let j = 0; j < array.length;) {
+					let item = array[j]
+					let x = item.left * bl;
+					// 文字大小
+					let fontSize = item.fontSize * bl
+					// 处理文字基准线问题
+					let y = item.top * bl + fontSize;
+					if (item.value) {
+						if (item.type == 'text' || item.type == 'number') {
+							context.setFontSize(fontSize);
+							context.fillText(item.value, x, y);
+						}
+						if (item.type == 'date') {
+							let arr = item.value.split('-')
+							let val = ''
+							if (item.dateType) {
+								if (item.dateType == 'xxxx年xx月xx日') {
+									val = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
+								} else if (item.dateType == 'xxxx-xx-xx') {
+									val = item.value
+								}
+							} else {
+								val = arr[0] + ' ' + arr[1] + ' ' + arr[2] + ' '
+							}
+							context.setFontSize(fontSize);
+							context.fillText(val, x, y);
+							console.log(x, y, '时间');
+						}
+						// 处理地址换行
+						if (item.type == 'address') {
+							that.setAddress(x, y, item.value, that.cWidth - 30, context, fontSize)
+						}
+						if (item.type == 'langtext') {
+							that.setAddress(x, y, item.value, x + item.width * bl, context, fontSize)
+						}
+						console.log(item.code);
+						if (item.type == 'img') {
+							if(item.value && item.value != '1') {
+								let path = await that.downloadAndProcessFile(item.value)
+								context.drawImage(path, item.left * 1 * bl, item.top * 1 * bl, item.width * bl,
+									item.height * bl)
+							}else if(that.contents[item.code]) {
+								console.log('zhe');
+								let path = await that.downloadAndProcessFile(that.contents[item.code])
+								context.drawImage(path, item.left * 1 * bl, item.top * 1 * bl, item.width * bl,
+									item.height * bl)
+							}
+							
+						}
+					}else {
+						if (item.type == 'date' && item.code == 'to_check_time' && that.contents[item.code]) {
+							
+							let date = new Date(that.contents[item.code] * 1000)
+							const year = date.getFullYear();
+							const month = String(date.getMonth() + 1).padStart(2, '0');
+							const day = String(date.getDate()).padStart(2, '0');
+							let val = `${year} ${month} ${day}`;
+							context.setFontSize(fontSize);
+							context.fillText(val, x, y);
+							console.log(x, y, '时间');
+						}
+						if (item.type == 'img') {
+							if(that.contents[item.code]) {
+								console.log('zhe');
+								let path = await that.downloadAndProcessFile(that.contents[item.code])
+								context.drawImage(path, item.left * 1 * bl, item.top * 1 * bl, item.width * bl,
+									item.height * bl)
+							}
+							
+						}
+					}
+					j++
+
+				}
+			},
+			setAddress(x, y, text, maxWidth, context, fontSize) {
+				let that = this
+				// let text = item.value
+				let words = text.split('');
+				let line = '';
+				// let maxWidth = that.cWidth - 30
+				for (let n = 0; n < words.length; n++) {
+					let testLine = line + words[n] + ' ';
+					let metrics = context.measureText(testLine);
+					let testWidth = metrics.width + x;
+					if (testWidth > maxWidth && n > 0) {
+						console.log(line);
+						context.fillText(line, x, y);
+						line = words[n] + ' ';
+						y += fontSize * 1.5; // 移动到下一行
+					} else {
+						line = testLine;
+					}
+				}
+				context.fillText(line, x, y);
+			},
+			getHtDetail() {
+
+			},
+			setDetail() {
+				let that = this
+				that.htDetail = uni.getStorageSync('htDetails') || {}
+				let lens = 0
+				let width = 0;
+				let height = 0;
+				console.log();
+				let len = that.htDetail.imgs.length
+				that.htDetail.imgs.forEach(async (item, index) => {
+					let data = await uni.getImageInfo({
+						src: item,
+						success(ress) {
+							that.$set(that.imgs, index, {
+								src: item,
+								width: ress.width,
+								height: ress.height
+							})
+							lens++;
+							if (lens == len) {
+								that.cHeight = height;
+								console.log(that.cHeight, 'heigh');
+								that.showCanvas()
+							}
+						}
+					})
+				
+				})
+			},
+			getYyDetail() {
+				let that = this
+				getYyDetail({
+					id: this.id
+				}).then(res => {
+					console.log(res,'resssssss');
+					let width = 0;
+					let height = 0;
+					let len = res.data.imgs.length
+					that.content = JSON.parse(res.data.content)
+					console.log(that.content,'that.content--------------------------------------------------');
+					that.contents = res.data
+					let lens = 0
+					res.data.imgs.forEach(async (item, index) => {
+						let data = await uni.getImageInfo({
+							src: item,
+							success(ress) {
+								that.$set(that.imgs, index, {
+									src: item,
+									width: ress.width,
+									height: ress.height
+								})
+								lens++;
+								if (lens == len) {
+									that.cHeight = height;
+									console.log(that.cHeight, 'heigh');
+									that.showCanvas()
+								}
+							}
+						})
+
+					})
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.htDetail {
+		width: 750rpx;
+		position: fixed;
+		top: -999999px;
+		z-index: 0;
+
+	}
+	.btn {
+		position: fixed;
+		bottom: 0;
+		width: 750rpx;
+		height: 100rpx;
+		text-align: center;
+		line-height: 100rpx;
+		color: #fff;
+		background-color: $base-color;
+	}
+</style>

+ 420 - 147
pages/user/signing/mySig.vue

@@ -8,67 +8,104 @@
 		</view>
 		</view>
 		<scroll-view scroll-y="true" class="good-content" :style="{'height': height}" @scrolltolower="getList">
 		<scroll-view scroll-y="true" class="good-content" :style="{'height': height}" @scrolltolower="getList">
 			<view>
 			<view>
-				
+
 				<view class="sig" v-for="item in navList[current].list" @click="check(item)">
 				<view class="sig" v-for="item in navList[current].list" @click="check(item)">
-					<view class="sig-status" :style="{backgroundColor: item.status == 1 ? '#ff6e15': ( item.status == 2 ? '#31c98f': '#fd4664')}">
+					<view class="sig-status"
+						:style="{backgroundColor: item.status == 1 ? '#ff6e15': ( item.status == 2 ? '#31c98f': '#fd4664')}">
 						{{showStatus(item)}}
 						{{showStatus(item)}}
 					</view>
 					</view>
 					<view class="sig-tit">
 					<view class="sig-tit">
 						服务预约
 						服务预约
 					</view>
 					</view>
+					<template v-if="item.content &&item.content.jsonAr && item.content.jsonAr.length > 0">
+						<template v-for="items in item.content.jsonAr">
+							<view class="sig-info" v-if="items.code == 'name'">
+								<text class="sig-info-tit">客户姓名</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+							<view class="sig-info" v-if="items.code == 'phone'">
+								<text class="sig-info-tit">联系方式</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+							<view class="sig-info" v-if="items.code == 'address'">
+								<text class="sig-info-tit">地址</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+
+							<view class="sig-info" v-if="items.code == 'price'">
+								<text class="sig-info-tit">服务费</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+							<view class="sig-info" v-if="items.code == 'deposit'">
+								<text class="sig-info-tit">定金</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+						</template>
+						<template v-for="items in item.content.jsonBr">
+							<view class="sig-info" v-if="items.code == 'name'">
+								<text class="sig-info-tit">母婴师</text><text class="sig-info-val">{{items.value}}</text>
+							</view>
+						</template>
+					</template>
+					<template v-else>
+						<view class="sig-info">
+							<text class="sig-info-tit">客户姓名</text><text class="sig-info-val">{{item.name}}</text>
+						</view>
+						<view class="sig-info">
+							<text class="sig-info-tit">联系方式</text><text class="sig-info-val">{{item.phone}}</text>
+						</view>
+						<view class="sig-info">
+							<text class="sig-info-tit">地址</text><text class="sig-info-val">{{item.address}}</text>
+						</view>
+						<view class="sig-info">
+							<text class="sig-info-tit">母婴师</text><text class="sig-info-val">{{item.to_name}}</text>
+						</view>
+						<view class="sig-info">
+							<text class="sig-info-tit">服务费</text><text class="sig-info-val">{{item.price}}</text>
+						</view>
+						<view class="sig-info">
+							<text class="sig-info-tit">定金</text><text class="sig-info-val">{{item.deposit}}</text>
+						</view>
+					</template>
 					<view class="sig-info">
 					<view class="sig-info">
-						<text class="sig-info-tit">客户姓名</text><text class="sig-info-val">{{item.name}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">联系方式</text><text class="sig-info-val">{{item.phone}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">地址</text><text class="sig-info-val">{{item.address}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">母婴师</text><text class="sig-info-val">{{item.to_name}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">服务费</text><text class="sig-info-val">{{item.price}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">定金</text><text class="sig-info-val">{{item.deposit}}</text>
-					</view>
-					<view class="sig-info">
-						<text class="sig-info-tit">开始时间</text><text class="sig-info-val">{{item.start_time | showTime}}</text>
+						<text class="sig-info-tit">开始时间</text><text
+							class="sig-info-val">{{item.start_time | showTime}}</text>
 					</view>
 					</view>
 					<view class="sig-info">
 					<view class="sig-info">
-						<text class="sig-info-tit">结束时间</text><text class="sig-info-val">{{item.end_time | showTime}}</text>
+						<text class="sig-info-tit">结束时间</text><text
+							class="sig-info-val">{{item.end_time | showTime}}</text>
 					</view>
 					</view>
 					<view class="sig-btn">
 					<view class="sig-btn">
-						<signInput
-							v-if="!item.uid_img && userInfo.uid == item.uid && item.status == 0"
-							:ref="'sign' + index" :canvasId="'twoDrowCanvas' + index"
-							:type="1"
+						<!-- 甲方签约 -->
+						<signInput v-if="!item.uid_img && userInfo.uid == item.uid && item.status == 0"
+							:ref="'sign' + index" :canvasId="'twoDrowCanvas' + index" :type="1"
 							:canvasIds="'twoRotateCanvas' + index" :header="header" :action="action"
 							:canvasIds="'twoRotateCanvas' + index" :header="header" :action="action"
 							@signToUrl="signToUrl">
 							@signToUrl="signToUrl">
 							<view class="sig-btn-base">
 							<view class="sig-btn-base">
 								签约
 								签约
 							</view>
 							</view>
 						</signInput>
 						</signInput>
-						<view class="sig-btn-base" v-if="!item.to_uid_img && userInfo.uid == item.to_uid && item.status == 0" @click="openY(item)">
+						<view v-if="!item.to_uid_img && userInfo.uid == item.to_uid && item.status == 0"
+							class="sig-btn-base" @click="openY(item)">
 							签约
 							签约
 						</view>
 						</view>
-						<view class="sig-btn-base sig-btn-cancel"
-							v-if="item.status == 0" @click="cancelSig(item)">
-							取消
-						</view>
-						<!--  -->
-						
-						<view class="sig-btn-base" v-if="userInfo.uid == item.uid && item.status == 1 && !item.comment"  @click="pj(item)">
+						<view class="sig-btn-base" v-if="userInfo.uid == item.uid && item.status == 1 && !item.comment"
+							@click="pj(item)">
 							评价
 							评价
 						</view>
 						</view>
-						<view class="sig-btn-base" v-if="userInfo.uid == item.to_uid && item.status == 1"  @click="dk(item)">
+						<view class="sig-btn-base" v-if="userInfo.uid == item.to_uid && item.status == 1"
+							@click="dk(item)">
 							打卡
 							打卡
 						</view>
 						</view>
-						<view class="sig-btn-base sig-btn-cancel" v-if="item.comment && item.comment.id"  @click="lookPj(item)">
+						<view class="sig-btn-base sig-btn-cancel" v-if="userInfo.uid != item.to_uid && item.status != 0"
+							@click="lookdk(item)">
+							查看打卡
+						</view>
+						<view class="sig-btn-base sig-btn-cancel" v-if="item.comment && item.comment.id"
+							@click="lookPj(item)">
 							查看评价
 							查看评价
 						</view>
 						</view>
+						<view class="sig-btn-base sig-btn-cancel" @click.stop="lookHt(item)">
+							查看合同
+						</view>
+						<view class="sig-btn-base sig-btn-cancel" v-if="item.status == 0" @click="cancelSig(item)">
+							取消
+						</view>
 					</view>
 					</view>
 				</view>
 				</view>
 				<empty v-if="navList[current].list.length == 0 && navList[current].loaded"></empty>
 				<empty v-if="navList[current].list.length == 0 && navList[current].loaded"></empty>
@@ -77,61 +114,110 @@
 		</scroll-view>
 		</scroll-view>
 		<uni-popup ref="popup" type="center">
 		<uni-popup ref="popup" type="center">
 			<view class="listBox">
 			<view class="listBox">
-				<view class="list">
-					<view class="flex listItem">
-						<view class="flex titleBox">
-							<text class="font-color-red font-size-sm">✲</text> <text class="title">联系方式</text>
+				<template v-if="checkItem.content && checkItem.content.jsonBr.length > 0">
+					<template v-for="item in checkItem.content.jsonBr">
+						<view class="list" v-if="item.type != 'img' && item.type != 'date'">
+							<view class="flex listItem">
+								<view class="flex titleBox">
+									<text class="font-color-red font-size-sm">✲</text> <text
+										class="title">{{item.name}}</text>
+								</view>
+								<view class="right flex">
+									<input class="input" v-model="item.value" type="number"
+										:placeholder="'请填写' + item.name" placeholder-class="placeholder" />
+								</view>
+							</view>
 						</view>
 						</view>
-						<view class="right flex">
-							<input class="input" v-model="partyB.phone" type="number" placeholder="请填写联系电话"
-								placeholder-class="placeholder" />
+						<template v-if="item.type == 'img'">
+							<view class="list">
+								<view class="flex listItem" style="border-bottom: none;">
+									<view class="flex titleBox">
+										<text class="font-color-red font-size-sm">✲</text> <text
+											class="title">{{item.name}}</text>
+									</view>
+								</view>
+							</view>
+							<view class=" qm-wrap">
+								<signInput ref="sign" canvasId="twoDrowCanvas" canvasIds="twoRotateCanvas"
+									:header="header" :action="action" @signToUrl="signToUrl">
+								</signInput>
+							</view>
+						</template>
+					</template>
+
+				</template>
+				<template v-else>
+					<view class="list">
+						<view class="flex listItem">
+							<view class="flex titleBox">
+								<text class="font-color-red font-size-sm">✲</text> <text class="title">姓名</text>
+							</view>
+							<view class="right flex">
+								<input class="input" v-model="partyB.name" type="text" placeholder="请填写姓名"
+									placeholder-class="placeholder" />
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
-				</view>
-				<view class="list">
-					<view class="flex listItem">
-						<view class="flex titleBox">
-							<text class="font-color-red font-size-sm">✲</text> <text class="title">地址</text>
-						</view>
-						<view class="right flex">
-							<input class="input" v-model="partyB.address" type="text" placeholder="请填写地址"
-								placeholder-class="placeholder" />
+					<view class="list">
+						<view class="flex listItem">
+							<view class="flex titleBox">
+								<text class="font-color-red font-size-sm">✲</text> <text class="title">联系电话</text>
+							</view>
+							<view class="right flex">
+								<input class="input" v-model="partyB.phone" type="text" placeholder="请填写联系电话"
+									placeholder-class="placeholder" />
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
-				</view>
-				<view class="list">
-					<view class="flex listItem">
-						<view class="flex titleBox">
-							<text class="font-color-red font-size-sm">✲</text> <text class="title">身份证号</text>
+					<view class="list">
+						<view class="flex listItem">
+							<view class="flex titleBox">
+								<text class="font-color-red font-size-sm">✲</text> <text class="title">地址</text>
+							</view>
+							<view class="right flex">
+								<input class="input" v-model="partyB.address" type="text" placeholder="请填写地址"
+									placeholder-class="placeholder" />
+							</view>
 						</view>
 						</view>
-						<view class="right flex">
-							<input class="input" v-model="partyB.idcard" type="idcard" placeholder="请填写身份证号"
-								placeholder-class="placeholder" />
+					</view>
+					<view class="list">
+						<view class="flex listItem">
+							<view class="flex titleBox">
+								<text class="font-color-red font-size-sm">✲</text> <text class="title">身份证号</text>
+							</view>
+							<view class="right flex">
+								<input class="input" v-model="partyB.idcard" type="idcard" placeholder="请填写身份证号"
+									placeholder-class="placeholder" />
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
-				</view>
-				<view class="list">
-					<view class="flex listItem" style="border-bottom: none;">
-						<view class="flex titleBox">
-							<text class="font-color-red font-size-sm">✲</text> <text class="title">电子签名</text>
+					<view class="list">
+						<view class="flex listItem" style="border-bottom: none;">
+							<view class="flex titleBox">
+								<text class="font-color-red font-size-sm">✲</text> <text class="title">电子签名</text>
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
-				</view>
-				<view class=" qm-wrap">
-					<signInput
-						ref="sign" canvasId="twoDrowCanvas"
-						canvasIds="twoRotateCanvas" :header="header" :action="action"
-						@signToUrl="signToUrl">
-					</signInput>
-				</view>
-				<view class="btn" @click="goYqy"> 
+					<view class=" qm-wrap">
+						<signInput ref="sign" canvasId="twoDrowCanvas" canvasIds="twoRotateCanvas" :header="header"
+							:action="action" @signToUrl="signToUrl">
+						</signInput>
+					</view>
+				</template>
+
+
+				<view class="btn" @click="goYqy">
 					提交
 					提交
 				</view>
 				</view>
+				<view class="btn-s" @click="closeYq">
+					取消
+				</view>
 			</view>
 			</view>
 		</uni-popup>
 		</uni-popup>
 		<uni-popup ref="pjPopup" type="center">
 		<uni-popup ref="pjPopup" type="center">
 			<view class="listBox" style="padding-top: 40rpx;">
 			<view class="listBox" style="padding-top: 40rpx;">
-				<textarea name="" id="" cols="30" rows="10" placeholder="请输入您的评价" v-model="pjs" maxlength="200" class="pj-wrap"></textarea>
+				<textarea name="" id="" cols="30" rows="10" placeholder="请输入您的评价" v-model="pjs" maxlength="200"
+					class="pj-wrap"></textarea>
 				<view class="btn" @click="goPj">
 				<view class="btn" @click="goPj">
 					提交
 					提交
 				</view>
 				</view>
@@ -142,7 +228,8 @@
 				<view class="pj-tit">
 				<view class="pj-tit">
 					客户评价
 					客户评价
 				</view>
 				</view>
-				<textarea name="" id="" cols="30" rows="10"  v-model="checkItem.comment.content" maxlength="200" class="pj-wrap" disabled></textarea>
+				<textarea name="" id="" cols="30" rows="10" v-model="checkItem.comment.content" maxlength="200"
+					class="pj-wrap" disabled></textarea>
 			</view>
 			</view>
 		</uni-popup>
 		</uni-popup>
 	</view>
 	</view>
@@ -160,12 +247,16 @@
 		Jcheck,
 		Jcheck,
 		tjCheck,
 		tjCheck,
 		cancelSig,
 		cancelSig,
-		goPj
+		goPj,
+
 	} from '@/api/signing.js'
 	} from '@/api/signing.js'
+	import {
+		getHdDetail
+	} from '@/api/model.js';
 	export default {
 	export default {
 		components: {
 		components: {
 			signInput,
 			signInput,
-			empty
+			empty,
 		},
 		},
 		computed: {
 		computed: {
 			// #ifdef H5
 			// #ifdef H5
@@ -238,7 +329,7 @@
 		},
 		},
 		filters: {
 		filters: {
 			showTime(val) {
 			showTime(val) {
-				let date = new Date(val*1000)
+				let date = new Date(val * 1000)
 				const year = date.getFullYear();
 				const year = date.getFullYear();
 				const month = String(date.getMonth() + 1).padStart(2, '0');
 				const month = String(date.getMonth() + 1).padStart(2, '0');
 				const day = String(date.getDate()).padStart(2, '0');
 				const day = String(date.getDate()).padStart(2, '0');
@@ -246,29 +337,98 @@
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
+			showTimes(val) {
+				let date = new Date(val * 1000)
+				const year = date.getFullYear();
+				const month = String(date.getMonth() + 1).padStart(2, '0');
+				const day = String(date.getDate()).padStart(2, '0');
+				return `${year}-${month}-${day}`;
+			},
+			closeYq() {
+				this.$refs.popup.close()
+			},
+			lookHt(item) {
+				let that= this
+				console.log(item,'item----------------------------');
+				// return
+				console.log('item.template_iditem.template_iditem.template_id',item.template_id);
+				if (item.template_id && item.template_id > 1) {
+					uni.setStorageSync('htDetail', item)
+					uni.navigateTo({
+						url: '/pages/user/signing/ht?id=' + item.id
+					})
+				} else {
+					getHdDetail({
+						id: 2
+					}).then(res => {
+						let jsonAr = res.data.content.jsonAr.map(i => {
+							i.value = item[i.code] || ''
+							if(i.type == 'date') {
+								i.value = that.showTimes(i.value)
+							}
+							return i
+						})
+						let jsonBr = res.data.content.jsonBr.map(j => {
+							if (j.code.indexOf('to_') != -1) {
+								console.log(item[j.code],j.code);
+								j.value = item[j.code]
+							} else {
+								j.value = item['to_' + j.code]
+							}
+							if(j.type == 'date') {
+								j.value = that.showTimes(item[j.code])
+							}
+							return j
+						})
+						console.log(jsonBr,'jsonBr');
+						uni.setStorageSync('htDetails', {
+							imgs: res.data.imgs,
+							content: {
+							jsonAr,
+							jsonBr
+						}
+						})
+						uni.navigateTo({
+							url: '/pages/user/signing/ht?hid=2'
+						})
+					})
+					
+				}
+
+			},
 			dk(item) {
 			dk(item) {
+				let addr = {value: ''}
+				if(item.content && item.content.jsonAr) {
+					addr = item.content.jsonAr.find(i => i.code == 'address')
+				}
 				uni.navigateTo({
 				uni.navigateTo({
-					url:'/pages/user/signing/dk?id=' + item.id + '&latitude=' + item.latitude + '&longitude=' + item.longitude + '&address=' + item.address
+					url: '/pages/user/signing/dk?id=' + item.id + '&latitude=' + item.latitude + '&longitude=' +
+						item.longitude + '&address=' + (item.address || addr.value)
+				})
+			},
+			lookdk(item) {
+				uni.navigateTo({
+					url: '/pages/user/signing/dkhis?id=' + item.id
 				})
 				})
 			},
 			},
 			showStatus(item) {
 			showStatus(item) {
-				if(item.status == 0) {
-					if(this.userInfo.uid == item.uid) {
-						if(!item.uid_img) {
+				if (item.status == 0) {
+					if (this.userInfo.uid == item.uid) {
+						if (!item.uid_img) {
 							return '待签约'
 							return '待签约'
-						}else {
+						} else {
 							return '待乙方签约'
 							return '待乙方签约'
 						}
 						}
-					}else {
-						if(!item.to_uid_img) {
+					} else {
+						if (!item.to_uid_img) {
 							return '待签约'
 							return '待签约'
-						}else {
+						} else {
 							return '待甲方签约'
 							return '待甲方签约'
 						}
 						}
 					}
 					}
-				}else if(item.status == 1){
+				} else if (item.status == 1) {
 					return '进行中'
 					return '进行中'
-				}else if(item.status == 2) {
+				} else if (item.status == 2) {
 					return '已完成'
 					return '已完成'
 				}
 				}
 			},
 			},
@@ -285,37 +445,67 @@
 			},
 			},
 			goYqy() {
 			goYqy() {
 				let that = this
 				let that = this
-				if (!that.partyB.phone) {
-					return uni.showModal({
-						title: '温馨提醒',
-						content: '请输入联系电话',
-						showCancel: false,
-					});
-					
-				}
-				if (!that.partyB.address) {
-					return uni.showModal({
-						title: '温馨提醒',
-						content: '请输入地址',
-						showCancel: false,
-					});
-					
-				}
-				if (!that.partyB.idcard) {
-					return uni.showModal({
-						title: '温馨提醒',
-						content: '请输入身份证号',
-						showCancel: false,
-					});
-					
-				}
-				if(!that.qm) {
-					return uni.showModal({
-						title: '温馨提醒',
-						content: '请完成电子签名',
-						showCancel: false,
-					});
+				let re = true
+				if (that.checkItem.content && that.checkItem.content.jsonBr.length > 0) {
+					//自动校验
+					for (let i = 0; i < that.checkItem.content.jsonBr.length; i++) {
+						if (that.checkItem.content.jsonBr[i].type != 'img' && that.checkItem.content.jsonBr[i].name !=
+							'签约时间' && that.checkItem.content.jsonBr[i].verify == 1 && !that.checkItem.content.jsonBr[i]
+							.value) {
+							uni.showModal({
+								title: '温馨提醒',
+								content: '请完善' + that.checkItem.content.jsonBr[i].name,
+								showCancel: false,
+							});
+							re = false;
+							break;
+						}
+						// 其他操作
+					}
+					if (!that.qm) {
+						uni.showModal({
+							title: '温馨提醒',
+							content: '请完善电子签名',
+							showCancel: false,
+						});
+						return;
+					}
+					if (!re) return;
+
+				} else {
+					if (!that.partyB.phone) {
+						return uni.showModal({
+							title: '温馨提醒',
+							content: '请输入联系电话',
+							showCancel: false,
+						});
+
+					}
+					if (!that.partyB.address) {
+						return uni.showModal({
+							title: '温馨提醒',
+							content: '请输入地址',
+							showCancel: false,
+						});
+
+					}
+					if (!that.partyB.idcard) {
+						return uni.showModal({
+							title: '温馨提醒',
+							content: '请输入身份证号',
+							showCancel: false,
+						});
+
+					}
+					if (!that.qm) {
+						return uni.showModal({
+							title: '温馨提醒',
+							content: '请完成电子签名',
+							showCancel: false,
+						});
+					}
 				}
 				}
+				console.log('去执行');
 				this.goQy()
 				this.goQy()
 			},
 			},
 			pj(item) {
 			pj(item) {
@@ -327,20 +517,20 @@
 				this.$refs.lookPjPopup.open()
 				this.$refs.lookPjPopup.open()
 			},
 			},
 			goPj() {
 			goPj() {
-				if(!this.pjs) {
+				if (!this.pjs) {
 					return uni.showModal({
 					return uni.showModal({
 						title: '温馨提醒',
 						title: '温馨提醒',
 						content: '请填写评价',
 						content: '请填写评价',
 						showCancel: false,
 						showCancel: false,
 					});
 					});
 				}
 				}
-				if(this.loading) return;
+				if (this.loading) return;
 				this.loading = true
 				this.loading = true
 				goPj({
 				goPj({
 					contract_id: this.checkItem.id,
 					contract_id: this.checkItem.id,
 					content: this.pjs
 					content: this.pjs
 				}).then(res => {
 				}).then(res => {
-					
+
 					this.$refs.pjPopup.close()
 					this.$refs.pjPopup.close()
 					uni.showToast({
 					uni.showToast({
 						title: '评价成功',
 						title: '评价成功',
@@ -379,33 +569,85 @@
 				const month = String(today.getMonth() + 1).padStart(2, '0');
 				const month = String(today.getMonth() + 1).padStart(2, '0');
 				const day = String(today.getDate()).padStart(2, '0');
 				const day = String(today.getDate()).padStart(2, '0');
 				date = `${year}-${month}-${day}`;
 				date = `${year}-${month}-${day}`;
-
+				console.log(that.loading, 'that.loading');
 				if (that.loading) return;
 				if (that.loading) return;
 				that.loading = true
 				that.loading = true
 				let qy = null;
 				let qy = null;
 				let data = {}
 				let data = {}
+				let content = that.checkItem.content || {}
+
 				if (that.userInfo.uid == that.checkItem.uid) {
 				if (that.userInfo.uid == that.checkItem.uid) {
+				// if (that.userInfo.uid != that.checkItem.uid) {
+					console.log('jiafang');
 					qy = Jcheck
 					qy = Jcheck
 					data = {
 					data = {
 						id: that.checkItem.id,
 						id: that.checkItem.id,
 						uid_img: that.qm,
 						uid_img: that.qm,
-						check_time: date
+						check_time: date,
+						content: ''
+					}
+					if (content.jsonAr && content.jsonAr.length > 0) {
+						content.jsonAr = content.jsonAr.map(item => {
+							if (item.code == 'check_time') {
+								item.value = data.check_time
+							}
+							if (item.code == 'uid_img') {
+								item.value = data.uid_img
+							}
+							return item
+						})
 					}
 					}
+					data.content = JSON.stringify(content)
 				} else {
 				} else {
+					console.log('yifang');
 					qy = tjCheck
 					qy = tjCheck
-					data = {
-						to_uid_img: that.qm,
-						to_check_time: date,
-						id: that.checkItem.id,
-						to_phone: that.partyB.phone,
-						to_address: that.partyB.phone,
-						to_card: that.partyB.idcard
+
+					console.log(content.jsonBr, 'JSON.stringify(content)');
+
+					if (content.jsonBr && content.jsonBr.length > 0) {
+						data = {
+							to_uid_img: that.qm,
+							to_check_time: date,
+							id: that.checkItem.id,
+						}
+						content.jsonBr = content.jsonBr.map(item => {
+							if (item.code == 'to_check_time') {
+								item.value = date
+							}
+							if (item.code == 'to_uid_img') {
+								item.value = that.qm
+							}
+							if (item.code == 'phone') {
+								data.to_phone = item.value
+							}
+							if (item.code == 'address') {
+								data.to_address = item.value
+							}
+							if (item.code == 'card') {
+								data.to_card = item.value
+							}
+							return item
+						})
+						console.log(content.jsonBr,'content.jsonBr---------------------------------');
+						data.content = JSON.stringify(content)
+						console.log(data, '结束data');
+					} else {
+						data = {
+							to_uid_img: that.qm,
+							to_check_time: date,
+							id: that.checkItem.id,
+							to_phone: that.partyB.phone,
+							to_address: that.partyB.phone,
+							to_card: that.partyB.idcard
+						}
+
+						data.content = JSON.stringify(content)
 					}
 					}
-					
+
 				}
 				}
 				qy(data).then(res => {
 				qy(data).then(res => {
 					that.qm = ''
 					that.qm = ''
-					if(that.checkItem.to_uid == that.userInfo.uid) {
+					if (that.checkItem.to_uid == that.userInfo.uid) {
 						this.$refs.popup.close()
 						this.$refs.popup.close()
 					}
 					}
 					that.checkItem = {}
 					that.checkItem = {}
@@ -415,7 +657,7 @@
 					});
 					});
 					that.getList('re')
 					that.getList('re')
 					that.loading = false
 					that.loading = false
-					
+
 				}).catch(err => {
 				}).catch(err => {
 					this.loading = false
 					this.loading = false
 				})
 				})
@@ -442,7 +684,18 @@
 					status: item.status,
 					status: item.status,
 					uid: that.userInfo.uid
 					uid: that.userInfo.uid
 				}).then(res => {
 				}).then(res => {
-					let arr = res.data.list
+					let arr = res.data.list.map(item => {
+						if (item.content) {
+							try {
+								item.content = JSON.parse(JSON.parse(item.content))
+							} catch (error) {
+								item.content = JSON.parse(item.content)
+								//TODO handle the exception
+							}
+						}
+						return item
+					})
+					console.log(arr);
 					item.list = item.list.concat(arr)
 					item.list = item.list.concat(arr)
 					item.page++
 					item.page++
 					if (arr.length == item.limit) {
 					if (arr.length == item.limit) {
@@ -508,6 +761,7 @@
 		padding: 35rpx;
 		padding: 35rpx;
 		padding-bottom: 20rpx;
 		padding-bottom: 20rpx;
 		position: relative;
 		position: relative;
+
 		&-status {
 		&-status {
 			position: absolute;
 			position: absolute;
 			right: 0;
 			right: 0;
@@ -522,6 +776,7 @@
 			line-height: 40rpx;
 			line-height: 40rpx;
 			color: #fff;
 			color: #fff;
 		}
 		}
+
 		&-tit {
 		&-tit {
 			font-weight: bold;
 			font-weight: bold;
 			font-size: 32rpx;
 			font-size: 32rpx;
@@ -577,6 +832,7 @@
 			}
 			}
 		}
 		}
 	}
 	}
+
 	.listBox {
 	.listBox {
 		width: 690rpx;
 		width: 690rpx;
 		// margin: $page-row-spacing;
 		// margin: $page-row-spacing;
@@ -585,6 +841,7 @@
 		overflow: hidden;
 		overflow: hidden;
 		background-color: #FFFFFF;
 		background-color: #FFFFFF;
 		padding-bottom: 40rpx;
 		padding-bottom: 40rpx;
+
 		.btn {
 		.btn {
 			margin: 20rpx auto 0;
 			margin: 20rpx auto 0;
 			width: 400rpx;
 			width: 400rpx;
@@ -596,25 +853,38 @@
 			height: 58rpx;
 			height: 58rpx;
 			line-height: 58rpx;
 			line-height: 58rpx;
 		}
 		}
+
+		.btn-s {
+			margin: 20rpx auto 0;
+			width: 400rpx;
+			background: #FFFFFF;
+			border-radius: 10rpx 10rpx 10rpx 10rpx;
+			font-size: 26rpx;
+			color: #FC4564;
+			border: #FC4564 1px solid;
+			text-align: center;
+			height: 58rpx;
+			line-height: 58rpx;
+		}
 	}
 	}
-	
+
 	.list {
 	.list {
-		
+
 		.input {
 		.input {
 			text-align: right;
 			text-align: right;
 			font-size: $font-base;
 			font-size: $font-base;
 			color: $color-gray;
 			color: $color-gray;
 			width: 100%;
 			width: 100%;
 		}
 		}
-	
+
 		.listItem {
 		.listItem {
 			padding: 35rpx 40rpx;
 			padding: 35rpx 40rpx;
 			border-bottom: 1px solid $page-color-light;
 			border-bottom: 1px solid $page-color-light;
-	
+
 			.ql-editor.ql-blank:before {
 			.ql-editor.ql-blank:before {
 				font-style: normal;
 				font-style: normal;
 			}
 			}
-	
+
 			.textarea {
 			.textarea {
 				font-size: $font-base;
 				font-size: $font-base;
 				width: 100%;
 				width: 100%;
@@ -623,22 +893,22 @@
 				min-height: 9rem;
 				min-height: 9rem;
 			}
 			}
 		}
 		}
-	
+
 		.listIconImg {
 		.listIconImg {
 			width: 36rpx;
 			width: 36rpx;
 		}
 		}
-	
+
 		.right {
 		.right {
 			color: $font-color-light;
 			color: $font-color-light;
 			font-size: $font-base;
 			font-size: $font-base;
 			flex-grow: 1;
 			flex-grow: 1;
 			justify-content: flex-end;
 			justify-content: flex-end;
-	
+
 			.timetype {
 			.timetype {
 				width: 100%;
 				width: 100%;
 				justify-content: flex-end;
 				justify-content: flex-end;
 			}
 			}
-	
+
 			.citylist {
 			.citylist {
 				.del {
 				.del {
 					color: $color-red;
 					color: $color-red;
@@ -649,11 +919,11 @@
 					padding: 5rpx 15rpx;
 					padding: 5rpx 15rpx;
 				}
 				}
 			}
 			}
-	
+
 			.img {
 			.img {
 				width: 26rpx;
 				width: 26rpx;
 			}
 			}
-	
+
 			.buttom {
 			.buttom {
 				color: $base-color;
 				color: $base-color;
 				border: 1px solid $base-color;
 				border: 1px solid $base-color;
@@ -662,7 +932,7 @@
 				padding: 10rpx 20rpx;
 				padding: 10rpx 20rpx;
 			}
 			}
 		}
 		}
-	
+
 		.titleBox {
 		.titleBox {
 			.title {
 			.title {
 				color: $font-color-base;
 				color: $font-color-base;
@@ -670,6 +940,7 @@
 			}
 			}
 		}
 		}
 	}
 	}
+
 	.qm-wrap {
 	.qm-wrap {
 		position: relative;
 		position: relative;
 		// width: 100%;
 		// width: 100%;
@@ -679,6 +950,7 @@
 		border-bottom: 1px solid $page-color-light;
 		border-bottom: 1px solid $page-color-light;
 		margin: auto;
 		margin: auto;
 	}
 	}
+
 	.pj-wrap {
 	.pj-wrap {
 		width: 600rpx;
 		width: 600rpx;
 		height: 300rpx;
 		height: 300rpx;
@@ -687,6 +959,7 @@
 		margin: auto;
 		margin: auto;
 		padding: 20rpx;
 		padding: 20rpx;
 	}
 	}
+
 	.pj-tit {
 	.pj-tit {
 		text-align: center;
 		text-align: center;
 		padding: 10rpx 0 30rpx;
 		padding: 10rpx 0 30rpx;

+ 107 - 0
pages/user/signing/plhis.vue

@@ -0,0 +1,107 @@
+<template>
+	<view class="content">
+		<view class="his" v-for="item in list">
+			<view class="flex user">
+				<image :src="item.uid_avatar" mode="" class="u-avt"></image>
+				<view class="u-nickname clamp">
+					{{item.uid_nickname}}
+				</view>
+			</view>
+			<view class="pl">
+				{{item.content}}
+			</view>
+		</view>
+		<empty v-if="list.length == 0 && loaded"></empty>
+		<uni-load-more v-else :status="loading"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import empty from '@/components/empty/empty.vue'
+	import { getPlList } from '@/api/signing.js'
+	export default {
+		components: {
+			empty
+		},
+		data() {
+			return {
+				loaded: false,
+				list: [],
+				loading: 'more',
+				id: 0,
+				page: 1,
+				limit: 10
+			}
+		},
+		methods: {
+			getList() {
+				if(this.loading == 'loading' || this.loading == 'noMore') return;
+				this.loading = 'loading'
+				getPlList({
+					to_uid: this.id,
+					page: this.page,
+					limit: this.limit
+				}).then(res => {
+					// console.log(res);
+					this.list = this.list.concat(res.data.list)
+					if(res.data.list.length == this.limit) {
+						this.loading = 'more'
+					}else {
+						this.loading = 'noMore'
+					}
+					this.loaded = true
+				})
+			},
+		},
+		onLoad(opt) {
+			this.id = opt.id
+			this.getList()
+		},
+		onReachBottom() {
+			this.getList()
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.user {
+		justify-content: flex-start;
+		.u-avt {
+			width:60rpx;
+			height: 60rpx;
+			border-radius: 50%;
+		}
+		.u-nickname {
+			font-size: 30rpx;
+			font-weight: bold;
+			margin-left: 15rpx;
+		}
+	}
+	.pl {
+		font-size: 26rpx;
+		padding:10rpx 0 10rpx 70rpx;
+	}
+	.content {
+		height: 100vh;
+		background-color: #fff;
+	}
+	.his {
+		padding: 20rpx;
+		border-bottom: 1px dashed #eee;
+		&-tit {
+			padding-left: 28rpx;
+			height: 68rpx;
+			line-height: 68rpx;
+			background: #EDF8FE;
+			font-size: 32rpx;
+			color: #000000;
+		}
+		&-info {
+			padding-left: 28rpx;
+			font-size: 28rpx;
+			color: #000000;
+			line-height: 55rpx;
+			margin: 20rpx 0;
+		}
+	}
+</style>

+ 178 - 235
pages/user/signing/signing.vue

@@ -1,6 +1,20 @@
 <template>
 <template>
 	<view class="content ">
 	<view class="content ">
-<!-- 		<view class="errorIf" v-if="dataInitError">
+		<view class="item-name">
+			选择合同
+		</view>
+		<view class="ht-title flex">
+			<picker @change="bindPickerChange" :value="0" :range="htList" range-key="title">
+				<view class="clamp">
+					{{htDetail.title}}
+				</view>
+			</picker>
+
+			<view class="look" @click="lookMore">
+				查看
+			</view>
+		</view>
+		<!-- 		<view class="errorIf" v-if="dataInitError">
 			初始化数据失败请重新填写数据
 			初始化数据失败请重新填写数据
 		</view> -->
 		</view> -->
 		<!-- <view class="table flex" v-if="showModelType">
 		<!-- <view class="table flex" v-if="showModelType">
@@ -29,50 +43,32 @@
 			甲方
 			甲方
 		</view>
 		</view>
 		<view class="listBox">
 		<view class="listBox">
-			<view class="list">
-				<view class="flex listItem">
+			<view class="list" v-for="item in jsonAr" :key="item.code">
+				<view class="flex listItem"
+					v-if="item.type != 'langtext' && item.type != 'img' && item.code != 'check_time'">
 					<view class="flex titleBox">
 					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">姓名</text>
+						<text class="font-color-red font-size-sm" v-if="item.verify == 1">✲</text> <text
+							class="title">{{item.name}}</text>
 					</view>
 					</view>
 					<view class="right flex">
 					<view class="right flex">
-						<input class="input" v-model="partyA.name" type="text" placeholder="请填写姓名"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">联系电话</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="partyA.mobile" type="number" placeholder="请填写联系电话"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">身份证号</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="partyA.idcard" type="idcard" placeholder="请填写身份证号"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">地址</text>
-					</view>
-					<view class="right flex"  @click="chooseAddress">
-							<input class="input" v-model="partyA.address" type="textg" placeholder="请选择地址"
-								placeholder-class="placeholder" disabled/>
+						<input class="input" v-model="item.value" v-if="item.type == 'text'" type="text"
+							:placeholder="'请填写' + item.name" placeholder-class="placeholder" />
+						<input class="input" v-model="item.value" v-if="item.type == 'number'" type="number"
+							:placeholder="'请填写' + item.name" placeholder-class="placeholder" />
+						<view class="input clamp" @click="chooseAddress(item)" v-if="item.type == 'address'">
+							{{item.value || ('请选择' + item.name)}}
+						</view>
+						<picker mode="date" :value="item.value" @change="bindDateChange($event,item)"
+							v-if="item.type == 'date'">
+							<input class="input" v-model="item.value" disabled type="text"
+								:placeholder="'请选择' + item.name" placeholder-class="placeholder" />
+						</picker>
 					</view>
 					</view>
 				</view>
 				</view>
+
 			</view>
 			</view>
+			<!-- chooseAddress -->
+
 		</view>
 		</view>
 		<view class="item-name">
 		<view class="item-name">
 			乙方
 			乙方
@@ -126,96 +122,16 @@
 			</template>
 			</template>
 
 
 		</view>
 		</view>
-		<view class="item-name">
-			合同明细
-		</view>
-		<view class="listBox">
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">服务周期</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="contract.day" type="text" placeholder="请填写服务周期"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
+		<template v-for="item in jsonAr" v-if="item.type == 'langtext'">
+			<view class="item-name">
+				{{item.name}}
 			</view>
 			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">开始日期</text>
-					</view>
-					<view class="right flex">
-						<picker mode="date" :value="contract.start_time"  @change="bindDateChange">
-							<input class="input" v-model="contract.start_time" disabled type="text" placeholder="请选择开始日期"
-								placeholder-class="placeholder" />
-						</picker>
-
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">结束日期</text>
-					</view>
-					<view class="right flex">
-						<picker mode="date" :value="contract.end_time"  @change="bindDateChanges">
-							<input class="input" v-model="contract.end_time" disabled type="text" placeholder="请选择结束日期"
-								placeholder-class="placeholder" />
-						</picker>
-						
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">服务费</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="contract.money" type="text" placeholder="请填写服务费"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
-			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">定金</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="contract.deposit" type="text" placeholder="请填写定金"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
+			<view class="listBox " style="padding: 20rpx;">
+				<textarea name="fujia" id="" cols="30" rows="30" maxlength="300" v-model="item.value"
+					:placeholder="'请输入' + item.name " style="width: 100%;height: 200rpx;"></textarea>
 			</view>
 			</view>
-			<view class="list">
-				<view class="flex listItem">
-					<view class="flex titleBox">
-						<text class="font-color-red font-size-sm">✲</text> <text class="title">余款</text>
-					</view>
-					<view class="right flex">
-						<input class="input" v-model="contract.balance" type="text" placeholder="请填写余款"
-							placeholder-class="placeholder" />
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="item-name">
-			附加条款
-		</view>
-		<view class="listBox " style="padding: 20rpx;">
-			<textarea name="fujia" id="" cols="30" rows="30" maxlength="300" v-model="fujia" placeholder="请输入附加条款"
-				style="width: 100%;height: 200rpx;"></textarea>
-		</view>
-		<view class="item-name">
-			合同模板
-		</view>
-		<view class="ht-title" @click="lookMore">
-			{{htModel.title}}
-		</view>
+		</template>
+
 		<!-- <view class="item-name">
 		<!-- <view class="item-name">
 			电子签名
 			电子签名
 		</view>
 		</view>
@@ -229,14 +145,12 @@
 				提交
 				提交
 			</view>
 			</view>
 		</view>
 		</view>
-		<uni-popup ref="popup" type="center">
-				<scroll-view scroll-y="true" class="ht-detail">
-					<view class="" v-html="htModel.content">
-					
-					</view>
-				</scroll-view>
-				
-		</uni-popup>
+		<!-- <uni-popup ref="popup" type="center">
+			<scroll-view scroll-y="true" class="ht-detail">
+				<image v-for="item in htDetail.imgs" :src="item" mode=""></image>
+			</scroll-view>
+
+		</uni-popup> -->
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -254,7 +168,9 @@
 		getServiceTypeList,
 		getServiceTypeList,
 		subInfoAudit,
 		subInfoAudit,
 		getUserWorkTypeList,
 		getUserWorkTypeList,
-		getUserCardInfo
+		getUserCardInfo,
+		getHtList,
+		getHdDetail
 	} from '@/api/model.js';
 	} from '@/api/model.js';
 	import {
 	import {
 		isCardNo
 		isCardNo
@@ -280,6 +196,7 @@
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
+				htList: [],
 				loding: false,
 				loding: false,
 				fujia: '',
 				fujia: '',
 				header: {
 				header: {
@@ -305,6 +222,9 @@
 				partyB: {},
 				partyB: {},
 				uid: '', //乙方uid,
 				uid: '', //乙方uid,
 				type: 0,
 				type: 0,
+				htDetail: {},
+				jsonAr: [],
+				jsonBr: []
 			};
 			};
 		},
 		},
 		onLoad(options) {
 		onLoad(options) {
@@ -331,37 +251,103 @@
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
-			chooseAddress() {
+
+			bindPickerChange(e) {
+				let id = this.htList[e.detail.value].id
+				console.log(id);
+				if (id != this.htDetail.id) {
+					this.getHdDetail(this.htList[e.detail.value].id)
+				}
+			},
+			getHtList() {
+				getHtList({
+					page: 1,
+					limit: 100
+				}).then(res => {
+					this.htList = res.data.list
+					this.getHdDetail(this.htList[0].id)
+				})
+			},
+			getHdDetail(hid) {
+				getHdDetail({
+					id: hid
+				}).then(res => {
+					this.htDetail = res.data
+					this.jsonAr = this.htDetail.content.jsonAr.map(item => {
+						item.value = ''
+						return item
+					})
+					this.jsonBr = this.htDetail.content.jsonBr.map(item => {
+						item.value = ''
+						return item
+					})
+					this.setBInfo()
+					// this.htDetail = res.data
+				})
+			},
+			// 设置乙方默认值
+			setBInfo() {
+				this.jsonBr = this.jsonBr.map(item => {
+					if (item.code == 'name') {
+						item.value = this.partyB.name
+					} else if (item.code == 'card') {
+						item.value = this.partyB.idcard
+					} else if (item.code == 'address') {
+						item.value = this.partyB.ancestral_place
+					} else if (item.code == 'phone') {
+						item.value = this.partyB.mobile
+					}
+					return item
+				})
+			},
+			chooseAddress(item) {
 				console.log('zhe');
 				console.log('zhe');
 				let that = this
 				let that = this
 				uni.chooseLocation({
 				uni.chooseLocation({
 					success(res) {
 					success(res) {
 						console.log(res)
 						console.log(res)
-						if(res.errMsg == 'chooseLocation:ok') {
-						that.partyA.address = res.address
-						that.partyA.latitude = res.latitude
-						that.partyA.longitude = res.longitude	
+						if (res.errMsg == 'chooseLocation:ok') {
+							// that.partyA.address = res.address
+							// that.partyA.latitude = res.latitude
+							// that.partyA.longitude = res.longitude
+							// item.value = res.address
+							let index = that.jsonAr.findIndex(i => i.name == item.name)
+							item.value = res.address
+							that.$set(that.jsonAr, index, item)
+							console.log(index, that.jsonAr[index])
+							that.partyA.latitude = res.latitude
+							that.partyA.longitude = res.longitude
 						}
 						}
-							
-							
-							console.log(that.partyA.address,res.address);
-						
+
+
+						console.log(that.partyA.address, res.address);
+
 					},
 					},
 					fail(err) {
 					fail(err) {
 						console.log(err);
 						console.log(err);
 					}
 					}
 				})
 				})
 			},
 			},
-			bindDateChange(e) {
-				console.log(e);
-				this.contract.start_time = e.detail.value
+			bindDateChange(e, item) {
+				console.log(e, item);
+				let index = this.jsonAr.findIndex(i => i.name == item.name)
+				item.value = e.detail.value
+				this.$set(this.jsonAr, index, item)
+				// this.contract.start_time = e.detail.value
 			},
 			},
 			bindDateChanges(e) {
 			bindDateChanges(e) {
 				console.log(e);
 				console.log(e);
 				this.contract.end_time = e.detail.value
 				this.contract.end_time = e.detail.value
 			},
 			},
 			lookMore() {
 			lookMore() {
-				this.$refs.popup.open()
+				// this.$refs.popup.open()
+				uni.previewImage({
+					urls: this.htDetail.imgs, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
 			},
 			},
 			getHtModel() {
 			getHtModel() {
 				try {
 				try {
@@ -384,6 +370,7 @@
 					uid: this.uid
 					uid: this.uid
 				}).then(res => {
 				}).then(res => {
 					this.partyB = res.data
 					this.partyB = res.data
+					this.getHtList()
 				})
 				})
 			},
 			},
 			confirm(e) {
 			confirm(e) {
@@ -391,34 +378,43 @@
 				if (!that.rendl()) {
 				if (!that.rendl()) {
 					return
 					return
 				}
 				}
+				let start_time_item = this.jsonAr.find(item => item.code == 'start_time')
+				let end_time_item = this.jsonAr.find(item => item.code == 'end_time')
 				that.loding = true;
 				that.loding = true;
 				createSigning({
 				createSigning({
 						id: 0,
 						id: 0,
 						to_name: that.partyB.name,
 						to_name: that.partyB.name,
-						name: that.partyA.name,
+						// name: that.partyA.name,
 						uid: that.userInfo.uid,
 						uid: that.userInfo.uid,
-						phone: that.partyA.mobile,
-						address: that.partyA.address,
-						card: that.partyA.idcard,
+						// phone: that.partyA.mobile,
+						// address: that.partyA.address,
+						// card: that.partyA.idcard,
 						to_uid: that.uid,
 						to_uid: that.uid,
-						price: that.contract.money,
-						deposit: that.contract.deposit,
-						balance: that.contract.balance,
-						period: that.contract.day,
-						start_time: that.contract.start_time,
-						end_time: that.contract.end_time,
-						mark: that.fujia,
+						// price: that.contract.money,
+						// deposit: that.contract.deposit,
+						// balance: that.contract.balance,
+						// period: that.contract.day,
+						start_time: start_time_item.value,
+						end_time: end_time_item.value,
+						// mark: that.fujia,
 						latitude: that.partyA.latitude,
 						latitude: that.partyA.latitude,
-						longitude: that.partyA.longitude
+						longitude: that.partyA.longitude,
+						template_id: that.htDetail.id,
+						content: JSON.stringify({
+							id: that.htDetail.id,
+							title: that.htDetail.title,
+							jsonAr: that.jsonAr,
+							jsonBr: that.jsonBr
+						})
 					})
 					})
 					.then((e) => {
 					.then((e) => {
 						uni.showModal({
 						uni.showModal({
 							title: '温馨提醒',
 							title: '温馨提醒',
 							content: '成功创建合同,是否立即签约',
 							content: '成功创建合同,是否立即签约',
 							complete(res) {
 							complete(res) {
-								if(res.confirm) {
+								if (res.confirm) {
 									uni.navigateTo({
 									uni.navigateTo({
-										url:'/pages/user/signing/mySig'
+										url: '/pages/user/signing/mySig'
 									})
 									})
 								}
 								}
 							}
 							}
@@ -434,84 +430,26 @@
 			rendl() {
 			rendl() {
 				const that = this;
 				const that = this;
 				//
 				//
-				if (that.type == 0) {
-					if (!that.partyA.mobile) {
+				let re = true
+				for (let i = 0; i < that.jsonAr.length; i++) {
+					if (that.jsonAr[i].type != 'img' && that.jsonAr[i].name != '签约时间' && that.jsonAr[i].verify == 1 && !
+						that.jsonAr[i].value) {
 						uni.showModal({
 						uni.showModal({
 							title: '温馨提醒',
 							title: '温馨提醒',
-							content: '请输入联系电话',
+							content: '请完善' + that.jsonAr[i].name,
 							showCancel: false,
 							showCancel: false,
 						});
 						});
-						return false
+						re = false;
+						break;
 					}
 					}
-					if (!that.partyA.address) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入地址',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.partyA.idcard) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入身份证号',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.money) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入服务费',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.deposit) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入定金',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.balance) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入余款',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.day) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请输入周期天数',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.start_time) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请选择开始日期',
-							showCancel: false,
-						});
-						return false
-					}
-					if (!that.contract.end_time) {
-						uni.showModal({
-							title: '温馨提醒',
-							content: '请选择结束日期',
-							showCancel: false,
-						});
-						return false
-					}
-
-				} else {
-
+					// 其他操作
 				}
 				}
-				return true
+				// uni.showModal({
+				// 	title: '温馨提醒',
+				// 	content: '请选择结束日期',
+				// 	showCancel: false,
+				// });
+				return re
 			}
 			}
 		}
 		}
 	};
 	};
@@ -715,4 +653,9 @@
 		display: flex;
 		display: flex;
 		justify-content: center;
 		justify-content: center;
 	}
 	}
+
+	.look {
+		font-size: 26rpx;
+		color: $base-color;
+	}
 </style>
 </style>

+ 1 - 1
uni_modules/cmy-mys-list/components/cmy-mys-list/cmy-mys-list.vue

@@ -114,7 +114,7 @@
 			}
 			}
 			.item-img {
 			.item-img {
 				width: 330rpx;
 				width: 330rpx;
-				height: 330rpx;
+				height: 440rpx;
 			}
 			}
 		
 		
 		}
 		}